基于EasyDL的小麦检测任务
一、EasyDL简介
EasyDL是百度自研的一套深度学习开发工具,旨在为没有AI基础的个人或企业赋予AI开发能力,最大的特点是操作简便、易于上手,详细介绍请参见:EasyDL官方平台。
二、全球小麦检测
2020年,Kaggle发布竞赛Global Wheat Detection,目的是通过图像检测技术对从全球各地采集的小麦图片进行麦穗检测,实现小麦产量的自动评估,减少人力成本。
训练数据包含3400张图片,其中有标注的图片是417张,测试集有10张图片(没有标注)。数据特征方面,未成熟、成熟、高度成熟的小麦图片均有,麦穗稠密、稀疏的小麦图片均有,大小、明暗等特征的小麦图片均有,可以说样本采集分布还是非常广泛的。竞赛的评估指标是mAP。
大赛的top10排名如下:
三、数据预处理
想要在EasyDL上训练小麦检测模型,需要将训练数据和打标信息以压缩包的形式上传到EasyDL平台。其中,每张图片的打标信息需要按如下格式封装。
{"labels": [{"y1": 478, "x2": 252, "x1": 192, "y2": 548, "name": "aircraft"},{"y1": 434, "x2": 381, "x1": 319, "y2": 499, "name": "aircraft"}]}
列表中的每个元素表示一个Box的标注信息,包含:左上角坐标(x1,y1)、右下角坐标(x2,y2),对象类别。同时,为每张图片生成一个以.json后缀结尾的文件,连同图像文件打包到一个压缩文件,以便后续进行平台上传。
但是,Kaggle平台提供的标注信息和EasyDL平台约定的有出入,平台提供的Box标注信息格式是:左上角坐标,宽度,高度,如[834.0, 222.0, 56.0, 36.0]。所以,需要适配脚本对格式进行转换。
import xlrd
import os
import json
import sysbook = xlrd.open_workbook("D:/train.xls")
sheet = book.sheet_by_index(0)nrows = sheet.nrows
ncols = sheet.ncols
print("row num: %d" % nrows)
print("col num: %d" % ncols)# 生成EasyDL订制的标记信息
labels_dict = {}
for i in range(1,nrows): # 跳过第一行img_id = sheet.cell_value(i,0)box = eval(sheet.cell_value(i,3))x_left_up = int(box[0])y_left_up = int(box[1])w = int(box[2])h = int(box[3])box_new = {}box_new["x1"] = x_left_upbox_new["y1"] = y_left_upbox_new["x2"] = x_left_up + wbox_new["y2"] = y_left_up + hbox_new["name"] = "wheat"if img_id in labels_dict:labels_dict[img_id].append(box_new)else:labels_dict[img_id] = [box_new]# 为每个图片生成打标文件,内容格式如下:
# {"labels": [{"y1": 478, "x2": 252, "x1": 192, "y2": 548, "name": "aircraft"},{"y1": 434, "x2": 381, "x1": 319, "y2": 499, "name": "aircraft"}]}
path = "D:\easydl_wheat_detection_data"
for img_id in labels_dict.keys():box = {}box["labels"] = labels_dict[img_id]content = json.dumps(box)with open("%s\%s.json" % (path,img_id), "w") as f:f.write(content)
四、创建模型
参见EasyDL官方平台。
五、训练模型
在EasyDL官方平台上,可以选择部署方法、部署设备、数据增强配置等。大部分选项可以默认,平台会自动根据任务进行优化。针对小麦检测任务,为便于调试,选择了本地部署。测试集只有10张图,通过平台进行了手工标注,并上传到平台作为自定义测试集。模型分为超高精度、高精度、均衡和高性能四种,训练结果以评估报告的方式进行展示。
cla confidence: 分类阈值,0.5
Match IoU:TP、FP计算所匹配阈值,0.5
NMS IoU:NMS抑制的IoU阈值,0.7
5.1、高性能模型评估报告
图 1 是训练集上给出的评估结果,包括mAP,精确率和召回率。同时给出了不同阈值下的F1-scoer。图 2 是在测试集上的评估结果。其他三种模型的评估指标类似。
![](/assets/blank.gif)
![](/assets/blank.gif)
5.2、均衡模型评估报告
图 3 和图 4是模型分别在训练集和测试集上的评估结果。
![](/assets/blank.gif)
![](/assets/blank.gif)
5.3、高精度模型评估报告
图 5 和图 6 分别是模型在训练集和测试集上的评估结果。
![](/assets/blank.gif)
![](/assets/blank.gif)
5.4、超高精度模型评估报告
图 7 和图 8 分别是模型在训练集和测试集上的评估报告。
![](/assets/blank.gif)
![](/assets/blank.gif)
六、总结分析
训练集 | 测试集 | ||||||||||
模型 | 耗时(min) | Epoch | 大小(M) | mAP | 精度 | 召回率 | 阈值 | mAP | 精度 | 召回率 | 阈值 |
高性能 | 171 | 481 | 21 | 82.5 | 89.0 | 76.0 | 0.2 | 86.1 | 85.8 | 84.6 | 0.2 |
均衡 | 144 | 376 | 92 | 87.2 | 88.8 | 84.7 | 0.2 | 84.1 | 84.4 | 83.3 | 0.2 |
高精度 | 281 | 389 | 234 | 88.9 | 89.0 | 87.2 | 0.2 | 91.2 | 91.3 | 87.7 | 0.3 |
超高精度 | 35 | 18 | 157 | 87.5 | 89.3 | 88.0 | 0.2 | 89.3 | 91.1 | 81.1 | 0.4 |
训练耗时分析: 超高精度 < 均衡 < 高性能 < 高精度。从Epoches和耗时的大小差异上可以看出,高性能模型的结构可能较高精度模型要简单。
泛化性分析(横向): 除均衡模型外,其他三种模型在测试集上的表现均优于训练时的表现。
七、模型发布
模型发布选择在小型通用设备(本机)上发布,以基础版和压缩加速版SDK的方式下载到本地,并申请对应的SDK类型的序列号进行SDK激活。
- 基础版序列号:2220-DCC0-EF22-1815,8B05-F3A6-BB7B-5979
- 加速版序列号:4CE3-B761-0318-36E9,0574-F946-6848-02C9
基于EasyDL的小麦检测任务相关推荐
- 《基于Easydl的虎狮检测》计算机新技术讲座 课程设计
** <基于Easydl的虎狮检测>计算机新技术讲座 课程设计 ** 一.问题背景与意义 生活在地球上的数以百万. 千万计的动物.植物和微生物,由于人类人口的迅猛增长以及伴随而来的自然栖息 ...
- YOLOv5被禁用!Kaggle全球小麦检测竞赛结果惹争议
作者:Amusi Date:2020-08-06 来源:CVer微信公众号 链接:YOLOv5被禁用!Kaggle全球小麦检测竞赛结果惹争议 前言 昨天(2020.08.05) Kaggle 全球小麦 ...
- 2020年AI竞赛获奖方案复盘系列(三) 目标检测竞赛trick-kaggle小麦检测1st2nd Place solution
前言 这是2020年博主参加的第一个竞赛,kaggle上面的小麦检测.这场比赛是对小麦头进行目标识别,kaggle大赛官方说是意义重大,可以更好的评估粮食产量,为全人类做贡献,简直是厉害了.这个比赛结 ...
- 10分钟内基于gpu的目标检测
10分钟内基于gpu的目标检测 Object Detection on GPUs in 10 Minutes 目标检测仍然是自动驾驶和智能视频分析等应用的主要驱动力.目标检测应用程序需要使用大量数据集 ...
- 基于YOLO的目标检测界面化部署实现(支持yolov1-yolov5、yolop、yolox)
基于YOLO的目标检测界面化部署实现(支持yolov1-yolov5.yolop.yolox) 代码下载地址:下载地址 安装 操作系统:Win10.Win7.Ubuntu16.04(其他操作系统没有测 ...
- 基于YOLO的手部检测和计数实现(课程设计,训练和测试)(1)
基于YOLO的手部检测和计数实现(课程设计)支持YOLOV3和YOLOV3-TINY 训练测试代码.数据集.测试视频下载地址:下载地址 环境要求: * Python 3.7 * PyTorch > ...
- 连通域最小外接矩形算法原理_基于分割的文本检测算法之PSENet/PAN/DBNet
1. 文本检测难点 文本内包含文本,艺术字体,任意方向 ,曲线文字 ,多语言,其他环境因素等是文本检测中的难点 2. 分割 问题1: 语义分割模型是对pixel进行分类,所以理论上讲,可以检测不规则的 ...
- 视觉SLAM如何基于深度学习闭环检测?
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:计算机视觉life 请问有做视觉SLAM基于深度学习闭环 ...
- 基于机器学习的入侵检测系统
导 语 在过去十年中,机器学习技术取得了快速进步,实现了以前从未想象过的自动化和预测能力.随着这一技术的发展促使研究人员和工程师为这些美妙的技术构思新的应用.不久,机器学习技术被用于加强网络安全系统. ...
最新文章
- mySQL_connect怎么调用_Mysql ConnectC/C++使用
- 《Saas模式云原生数据仓库应用场景实践》激活数据生产力,让分析产生价值
- GStreamer 的调试工具
- 20145217《网络对抗》 恶意代码分析
- Java 深copy 浅copy 引用copy
- Android学习笔记----ArcGIS在线地图服务(Android API)坐标纠偏
- MySQL笔记-事务理论及并发存在的三个问题(脏读、不可重复读、幻读)演示
- 自定义初学5——自定义View显示图片
- idea mysql做登录界面_IDEA下创建SpringBoot+MyBatis+MySql项目实现动态登录与注册功能...
- [转] 串、并行加法器
- BS架构和CS架构的区别
- 计算机开机跳过硬盘检查,怎样取消电脑开机磁盘自检 关闭硬盘自检方法全析...
- 安焦删除贴 牛人纷纷出现(2)
- 顶级摄影师镜头下的世界美景(组图)
- 天蝎座2006年运程
- 01章 象数易理篇之一
- Java实现简易计算器
- 漏洞复现-网康下一代防火墙 RCE
- 使用OpenCV滑动条写成的简单调色器,实时输出RGB值
- Python 操作数据库