源代码参见Github:https://github.com/jamie-ji/improved-YOLO-V3-Application-in-automatic-count-soybean
有帮助可以点个star,非常感谢!!

文章目录

  • 1 系统简介
    • 1.1 系统概要
    • 1.2 系统架构
    • 1.3 系统开发环境与工具
      • 1.3.1 开发环境
      • 1.3.2 开发工具
      • 1.3.3 实现技术
      • 1.3.4 实现功能
  • 2 系统特点
  • 3 使用说明
    • 3.1 系统安装
    • 3.2 系统使用
      • 3.2.1 使用前准备
      • 3.2.2 登陆注册
      • 3.2.3 大豆幼苗自动计数
      • 3.2.4 生长跟踪
      • 3.2.5 系统日志
  • License

1 系统简介

1.1 系统概要

本软件以大疆Mini型号的无人机采集的田间大豆RGB图像为分析对象,以统计大豆幼苗的出苗数快捷分析育种对象的优良为目的。致力于解决大豆遗传育种科研人员获取种子出苗率困难的问题,实现了田间图像的场景拼接、大豆幼苗株树自动计数以及田间育种对象标识二维码的生成与分析等核心功能。通过导入图片就能完成快速测量,基于改进的yolov3算法训练的专属模型,方便快捷。同时能够对不同拍摄时间,拍摄地点进行一定的管理,指导用户拍摄,为大豆精确育种工作的开展提供便捷。

1.2 系统架构

本系统以Visual Studio Code作为集成开发工具,采用Python作为开发语言,使用PyQt工具包创建GUI程序。以大豆种子为对象,采用面向对象的方法组织代码,利用Qt Designer设计图形界面。

1.3 系统开发环境与工具

1.3.1 开发环境

CPU:Intel® Core™ i7-8750H CPU @ 2.20GHz
内存:16GB
硬盘:1TB
操作系统:Windows 10

1.3.2 开发工具

集成开发环境:Visual Studio Code
语言:Python 3.6.10 64-bit

1.3.3 实现技术

YOLO V3,PyQT

1.3.4 实现功能

本软件实现了田间大豆幼苗RGB图片的自动计数、田间管理、拍摄方案定制以及大豆育种材料的二维码智慧管理等功能。

2 系统特点

本系统为图形化简易操作界面,设计按照操作流程安排,轻松上手。
具备如下技术特点:
(1)用户输入少,只需输入图片,以及带有种子信息的Excel表格即可使用。
(2)鲁棒性好,即使出现重复品种的二维码也能够识别,方便进行三次重复实验。
(3)导出友好,方便用户查看结果和使用过程。

3 使用说明

3.1 系统安装

(1)系统要求
Windows 10
(2)软件运行
在命令行终端定位到文件夹,键入pip install -r requirements.txt安装所需的库函数依赖,接着键入python main.py即可运行。弹出登录框即代表成功运行。

3.2 系统使用

通过本系统的使用可以实现基于Mini无人机拍摄的田间大豆幼苗RGB图像的精确幼苗计数、RGB图像的场景拼接以及田间管理等功能。下图1为登陆后的系统主界面,菜单栏提供了功能性栏目的选择以及帮助信息。在菜单栏下方是各个城市实时的天气信息。再下面为功能性栏目,通过点击不同的按钮可以切换成不同的功能,功能按照常规田间实验顺序编排,使用简单。

3.2.1 使用前准备

介绍:
用户定位到程序所在位置,下载所需的Python第三方库,只需在命令提示行中键入pip install -r requirements.txt,即可一次性下载好全部依赖环境。并且在当前位置运行脚本程序,键入python main.py即可运行,弹出登录框。实现步骤如下所示。
实现:
Step1:定位到程序的文件夹,以D盘D:\SRT\software位置为例

Step2:安装所需库环境

Step3:安装完成后,键入python main.py即可运行,弹出登录框。

当出现如下提示符表示运行成功。

3.2.2 登陆注册

系统提供登陆注册,能够做到新用户注册,以及忘记密码的功能。系统目前拥有一个用户,用户名:001,密码123456作为测试用户。

3.2.3 大豆幼苗自动计数

作为本软件的核心功能,由主界面的两个功能栏组成。

分别为种植管理模块和出芽率生成模块。

下文按照如(1)(2)(3)。。。数字序号来表示业务流程,每一个关键步骤都会分为介绍实现两个部分来介绍。

设计的核心业务流程
(1) 遗传育种科研人员获取了一批大豆种子,想要测量其田间实际生长情况,采用出苗率做指标。(产生计数需求)

(2) 用户在系统给定格式的EXCEL表格中完善种子的相关信息,以此信息生成二维码,用于智慧管理品种。

(2)步的介绍:
本系统提供了从EXCEL信息到二维码信息的转换方法,用户需要填写带有育种材料相关信息的EXCEL表格,基于此生成每个品种的标识二维码,以实现智慧管理。

EXCEL信息为标准格式,用户可以在程序的文件夹中找到,按照规范填写种子的具体信息。以下图为例子,品种WY001到品种WY020的20个品种的信息,基于此能够生成20个二维码,每个二维码对应一个品种的详细信息。


识别任意一个二维码(可以使用微信快捷识别),即可看到大豆育种材料的详细信息。

二维码的作用在于插在田间作为标识,能够快速地区分出育种群体,方便实现智慧化管理。

(2)步的实现:
Step1:在软件文件夹中找到info.xlsx,按照要求规范填写信息。


Step2:填写完成后,导入到系统中

选择“种植管理”功能栏,点击生成二维码进入生成界面

确定好文件路径名即可开始生成。
Step3:稍等片刻,即可在刚刚选择的保存路径中找到二维码图片。

(3) 用户带着生成的二维码标识以及大豆种子去田间播种,播种时测量出田块的大小。在系统中输入田块的信息即可进行田块管理,并生成专属田块的拍摄方案,不同尺寸的田块需要按照不同的飞行路径。
(3)步的介绍:
在得到二维码之后,用户开始进行田间育种实验,在播种的同时根据品种在每一垄上插入二维码标识牌并且丈量田块得到长和宽,并且记录下播种的方式。如下图所示。

根据所丈量的田块大小以及播种方式,系统会生成拍摄方案以txt文本形式保存在桌面,用于7-10天后进行幼苗的拍摄。
(3)步的实现:
Step1:选择“种植管理”功能栏,根据田间实际情况填写如田块名,田块长、宽以及播种方式等信息。

术语解释:
行播: 一垄均为同一个品种,一般来说垄长会超过无人机视野范围。
块播: 在田间继续划分田块,一块为一个品种,一般来说长和宽相当,近似于正方形田块,不会超过无人机视野范围。

Step2:以田块名为001,长度为5m,宽度为3m,进行行播,一行长度为2.5m,行间距为1m为例,系统根据mini型号的无人机视野换算公式得到方案。


并且以txt形式保存在文件目录下,方便用户管理查看。

(4) 在种子播种后7-10天,大豆处于V1期之前,均可进行拍摄。
(4)步的介绍: 大豆V1期指的是在大豆芯未抽出新芽之前的时期,由两个子叶组成。


拍摄的注意事项:
(i)需要注意无人机的使用,大疆mini型无人机最大特点在于轻,便携,因此需要注意避开强风天气以免影响拍摄活动。
(ii)如果田垄超过了无人机的拍摄视野,需要进行场景拼接,为了确保算法的准确性,拍摄时需要进行有重复的场景拍摄。示意图如下:


左边两张图需要带有约30%-40%的重叠场景,才能确保右边拼接图象的正确性。
(iii)按照上文给的方案进行拍摄,S型拍摄即为了适应复杂田间情况,需要多段拍摄,呈S型飞行轨迹。
(iv)拍摄完成后及时导出,防止数据丢失。

(5) 根据飞行方案,用户利用大疆Mini型无人机,获取田间的数据集图像,导入到系统,系统对文件进行自动整理。
(5)步的介绍:
由于大疆mini型号无人机的文件命名格式为DJI+编号的形式,为了方便用户在庞大的数据中加以区分,需要对文件名进行重命名。该工作在导入前完成。
(5)步的实现:
Step1:在“种植管理”功能栏下方找到数据集管理

Step2:首先需要选择飞行的轨迹是直飞还是S型飞行。
直飞:表示无人机笔直地飞行,一般情况为田垄长度不超过无人机的视野范围。
S型飞行:表示无人机需要频繁调整位置,一般情况为田垄长度超过无人机视野范围。

Step3:为了确保新文件名的准确性填写拍摄细节,点击修改文件名,即跳出文件姐选择界面。

选中原始的图片,等待片刻即可完成。

Step4:此时原文件夹中的文件名都发生了变化,更加清晰。



文件名解释: 以1-2_1为例,表示第一行到第二行植株的1号图片,反应了一张图片中有两行植株,并且采用了S型飞行的飞行方案,需要两次才能拍摄满整个田垄。

(6) 如果用户飞行方案为S型飞行,还需要对图像进行批量场景拼接。
(6)步的介绍:
如果用户田垄超过无人机视野范围,无法一张图片拍摄完整的信息,此时需要进行场景拼接来确保正确性,否则会将重复的幼苗计入从而影响结果。

(6)步的实现:
Step1:选择“出芽率生成”功能栏,在上方有专门的场景拼接模块。按照顺序以此选择文件路径即可完成操作。

Step2:以刚刚进行完重命名的20张图片为例,假设规定两两拼接,得到10张场景拼接完成的图片。


单张效果如下:

结果在保存路径的文件夹下查看。

(7) 目标检测,结果导出到初始的EXCEL表格。

(7)步的介绍:
所有的前期准备工作就绪,开始进行目标检测。此时应该向系统导入完整场景的并且带有二维码标记的RGB图片。系统先进行二维码的识别,定位是哪一品种的植株,并将计数结果统计在该品种下。为了提高鲁棒性,系统能够识别多个二维码的情况以及出现重复二维码的情况。
(7)步的实现:
Step1:选择“出苗率生成”功能栏目,下方有目标检测模块,第一行为模型的选择意义在于用户可以将自己训练的模型导入到系统中,剩下从左往右依次实现即可完成本操作。

Step2:以第一个模型为例,

选择保存路径,将每张图的详细信息保存在该路径,点击开始。示例如下:


Step3:检测结果自动导入到数据库中,用户也可以将数据导出到EXCEL表格,方便后续的研究。
选择EXCEL路径,导出完成后,查看选中的EXCEL。

3.2.4 生长跟踪

介绍:
如果用户对同一品种的植株进行过多次拍摄,那么系统会记录每一次的文件位置,用户可以根据需要查看不同时期的品种图片,而不用单独检索,提高了效率。
实现:
Step1:点选“品种管理“功能栏,位于下方有生长跟踪模块。

Step2:输入品种名,即可查询不同时期的图片。以WY001为例

3.2.5 系统日志

介绍:
为了提高安全性,防止数据被恶意篡改,每一项操作都会在后台进行记录。用户可以输入操作执行的实际来查看当天的操作信息。
实现:
Step1:点选“系统日志“功能模块
Step2:输入想要查询的日期,以2021/6/1为例,可以看到当天的各项操作信息。

License

本软件在Github开源,欢迎学习交流使用,严禁商业用途!
受到中国版权中心以及学校保护

开发文档以及实现的伪代码细节等暂不公开,如确有需求请联系:
jamieji0615@gmail.com

基于Mini无人机与改进损失函数的YOLO V3的大豆幼苗自动计数系统V1.0-使用手册相关推荐

  1. 最新织音QQ助手全新秒赞系统V1.0源码 基于TP5开发

    介绍: 灵感来源开源项目天高云淡V5,部分代码来自天高云淡V5,在此感谢. 本人在此保证,本程序绝无后门 关于我开源程序的种种问题  1.程序被人加授权的问题 2.版权问题 3.更可恶的改版权倒卖行为 ...

  2. 全网呕血整理:关于YOLO v3原理分析

    摘要:YOLO系列的目标检测算法可以说是目标检测史上的宏篇巨作,接下来我们来详细介绍一下YOLO v3算法内容. 算法基本思想 首先通过特征提取网络对输入特征提取特征,得到特定大小的特征图输出.输入图 ...

  3. yolov3损失函数改进_基于改进损失函数的YOLOv3网络

    目标检测具有广阔的发展前景和巨大的商业价值, 已经成为国内外相关从业者的研究热点, 在智能安防.自动驾驶等领域具有广泛应用. 经典的目标检测方法有Dalal于2005年提出的基于HOG特征的检测方法[ ...

  4. 基于改进YOLO v3网络的夜间环境柑橘识别方法

    基于改进YOLO v3网络的夜间环境柑橘识别方法 人工智能技术与咨询 本文来自<农业机械学报>,作者熊俊涛等 关注微信公众号:人工智能技术与咨询.了解更多咨询!

  5. YOLO V3基于Tensorflow 2.0的完整实现

    如果对Tensorflow实现最新的Yolo v7算法感兴趣的朋友,可以参见我最新发布的文章,Yolo v7的最简TensorFlow实现_gzroy的博客-CSDN博客 YOLO V3版本是一个强大 ...

  6. 【camera】基于YOLO的车辆多维特征识别系统(车色,车品牌,车标,车型)与PYQT实现(课程设计)

    基于YOLO的车辆多维特征识别系统(车色,车品牌,车标,车型)与PYQT实现(课程设计) 代码下载地址:下载地址 DEMO get started: PyQt5, 3.3以上的cv2 ,hyperlp ...

  7. sklearn基于make_scorer函数构建自定义损失函数或者评估指标

    sklearn基于make_scorer函数构建自定义损失函数或者评估指标 # 导入需要的包和库 # Load libraries from sklearn.metrics import make_s ...

  8. 【笔记】基于低空无人机影像和 YOLOv3 实现棉田杂草检测

    <基于低空无人机影像和 YOLOv3 实现棉田杂草检测> 单位:石河子大学信息科学与技术学院 作者:薛金利 数据获取 设备:大疆 DJI 四旋翼无人机悟 Inspire l PRO 相机: ...

  9. k均值的损失函数_一种基于均值不等式的Listwise损失函数

    1 前言 1.1 Learning to Rank 简介 Learning to Rank (LTR) , 也被叫做排序学习, 是搜索中的重要技术, 其目的是根据候选文档和查询语句的相关性对候选文档进 ...

最新文章

  1. 太棒啦!PyCharm与Jupyter完美融合,Jupytext来啦!
  2. 解决git did not exit cleanly (exit code 128)
  3. 你所需要的MySQL检索语句(DQL)都在这儿(小白都能懂的哦)
  4. @Deprecated使用技巧
  5. DatagramSocket总是发送UDP数据后无法接收数据
  6. Spring MVC集成测试:断言给定的模型属性有全局错误
  7. nyoj 题目5 Binary String Matching
  8. centos7手动更新、每天自动更新
  9. 翼虎 android,福特翼虎成首款同时兼容CarPlay和Android Auto的车型
  10. 指针的指针(二级指针)本质
  11. 项目管理流程图模板分享
  12. 冰河在大学是如何度过的?
  13. 实名认证API“智慧数据”打造企业服务新入口
  14. 本题要求对两个整数a和b,输出其中较大的数。
  15. Clickhouse入门学习、单机、集群安装部署
  16. frame组件+pack()来布局定位组件,实例讲解
  17. python面试常问
  18. linux网络流量走高,linux-流量异常高怎么处理
  19. SpringBoot+vue前后端分离博客项目
  20. 根据身份证地址拆分省市区

热门文章

  1. 花开不败——复旦中文系女生的高三笔记
  2. 飞利浦与联合利华签署2021年度战略合作备忘录;3M推出全新即时除菌擦拭布 | 美通企业日报...
  3. Ubuntu20.04安装vivado2018.2过程中卡在generating installed device list的解决办法
  4. 实现 element ui 走马灯图片插入与自适应大小
  5. sklearn.metrics中的评估方法介绍(accuracy_score, recall_score, roc_curve, roc_auc_score, confusion_matrix)
  6. css设置1.5倍行高,CSS怎么控制行高?
  7. MCU DC-DC数控电源
  8. 大数据进阶之路——Spark SQL 之 DataFrameDataset
  9. java money_Java Money与Currency API浅谈
  10. Revit 浏览器组织