YOLOv5全面解析教程如何制作训练效果更好的数据集
撰文Fengwen,BBuf
本文主要介绍OneYOLOv5使用的数据集格式以及如何制作一个可以获得更好训练效果的数据集。本节教程的数据集标准部分翻译了UltralyticsYOLOv5wiki中对数据集相关的描述(https:github。comultralyticsyolov5wikiTipsforBestTrainingResults)。
代码仓库地址:
https:github。comOneflowInconeyolov5
本系列教程原文点击
https:start。oneflow。orgoneflowyolodoc可达(保持动态更新教程和源码解读和修复一些bug)。
1数据集结构解读
1。创建dataset。yaml
COCO128是官方给的一个小的数据集由COCO(https:cocodataset。orghome)数据集前128张图片组成。这128幅图像用于训练和验证,判断YOLOv5脚本是否能够过正常进行。
数据集配置文件coco128。yaml
(https:github。comOneflowInconeyolov5blobmasterdatacoco128。yaml)定义了如下的配置选项:YOLOv5byUltralytics,GPL3。0licenseCOCO128datasethttps:www。kaggle。comultralyticscoco128(first128imagesfromCOCOtrain2017)byUltralyticsExampleusage:pythontrain。pydatacoco128。yamlparentoneyolov5datasetscoco128downloadshere(7MB)trainandvaldataas1)directory:pathimages,2)file:pathimages。txt,or3)list:〔path1images,path2images〕训练和验证图像的路径相同train:。。coco128imagestrain2017val:。。coco128imagestrain2017numberofclassesnc:80类别数classnames类名列表names:〔person,bicycle,car,motorcycle,airplane,bus,train,truck,boat,trafficlight,firehydrant,stopsign,parkingmeter,bench,bird,cat,dog,horse,sheep,cow,elephant,bear,zebra,giraffe,backpack,umbrella,handbag,tie,suitcase,frisbee,skis,snowboard,sportsball,kite,baseballbat,baseballglove,skateboard,surfboard,tennisracket,bottle,wineglass,cup,fork,knife,spoon,bowl,banana,apple,sandwich,orange,broccoli,carrot,hotdog,pizza,donut,cake,chair,couch,pottedplant,bed,diningtable,toilet,tv,laptop,mouse,remote,keyboard,cellphone,microwave,oven,toaster,sink,refrigerator,book,clock,vase,scissors,teddybear,hairdrier,toothbrush〕DownloadscriptURL(optional)用于自动下载的可选下载命令URL。download:https:ultralytics。comassetscoco128。zip
注意:如果是自定义数据集的话按自己需求修改这个yaml文件。主要修改以下两点。修改训练和验证图像的路径为自定义数据集路径修改类别数和类名列表
再展示一下coco。yaml的数据集路径配置,这里的训练和验证图像的路径就是直接用txt表示:
2。创建Labels
使用工具例如CVAT(https:github。comopencvcvat),makesense。ai(https:www。makesense。ai),Labelbox(https:labelbox。com),LabelImg(在下一节制作数据集中介绍LabelImg工具使用)等,在你自己的数据集提供的图片上做目标框的标注,将标注信息导出为一个txt后缀结尾的文件。(如果图像中没有目标,则不需要。txt文件)。
。txt文件规范如下所示:每一行一个目标。每一行是classxcenterycenterwidthheight格式。框坐标必须采用标准化xywh格式(从0到1)。如果框以像素为单位,则将xcenter和width除以图像宽度,将ycentre和height除以图像高度。类号为零索引的编号(从0开始计数)。
这里假设以COCO数据集的目标类别约定来标注
与上述图像相对应的标签文件包含2个人(class0)和一个领带(class27):
3。COCO128数据集目录结构组织
在本例中,我们的coco128是位于YOLOv5目录附近。YOLOv5通过将每个图像路径xximagesxx。jpg替换为xxlabelsxx。txt来自动定位每个图像的标签。例如:datasetimagesim0。jpgimagedatasetlabelsim0。txtlabel
coco和coco128数据集组织结构
2制作数据集
1。数据集标注工具
这里主要介绍LabelImg是一种矩形标注工具,常用于目标识别和目标检测,可直接生成YOLOv5读取的txt标签格式,但其只能进行矩形框标注(当然也可以选用其它的工具进行标注并且网上都有大量关于标注工具的教程。)
首先labelimg的安装十分简单,直接使用cmd中的pip进行安装,在cmd中输入命令行:pipinstalllabelimg
安装后直接输入命令:labelimg
即可打开运行。
点击OpenDir选择数据集文件夹,再点击CreateRectBox进行标注。
当你绘制框结束就会弹出标签选择框,然后标注类别。这个类别编辑更改在Labelimg文件里,里面有classes。txt文档,打开手动更改类别即可(当出现新类别时也可在标签选择框里输入点OK就自动添加类别了)。
标注好后选择yolo格式,点击Save保存。标注结果保存在图片名。txt文件中,txt文件和图片名称一致,内容如下:
3一个好的数据集标准?每个类的图像。1500张图片。每个类的实例。建议每个类10000个实例(标记对象)图片形象多样。必须代表已部署的环境。对于现实世界的使用案例,我们推荐来自一天中不同时间、不同季节、不同天气、不同照明、不同角度、不同来源(在线采集、本地采集、不同摄像机)等的图像。标签一致性。必须标记所有图像中所有类的所有实例。部分标记将不起作用。标签准确性。标签必须紧密地包围每个对象。对象与其边界框之间不应存在任何空间。任何对象都不应缺少标签。标签验证。查看trainbatch。jpg在训练开始验证标签是否正确,即参见mosaic(在YOLOv5的训练日志runstrainexp文件夹里面可以看到)。背景图像。背景图像是没有添加到数据集以减少FalsePositives(FP)的对象的图像。我们建议使用大约010的背景图像来帮助减少FPs(COCO有1000个背景图像供参考,占总数的1)。背景图像不需要标签。
下图展示了多种数据集的标签特点:
其中:Instancespercategory表示每个类别的实例数Categoriesperimage表示每幅图像的类别(a)Instancesperimage表示每幅图像的实例数(b)Numberofcategoriesvs。numberofinstances表示类别数目vs实例数目(我们可以看到COCO数据集的类别和实例的数目达到了一个较好的平衡)(c)Instancesize表示实例个数(d)Numberofcategories表示类别数(e)Percentofimagesize表示图像大小百分比
4参考文章https:github。comultralyticsyolov5wikiTipsforBestTrainingResultshttps:docs。ultralytics。comtutorialstraincustomdatasetsweightsbiasesloggingnew
欢迎Star、试用OneFlow最新版本:
https:github。comOneflowInconeflow
雷锋渴望见到毛主席,离实现他的宏愿只差了45天1958年11月,雷锋去鞍钢的路上,要经过北京。他在北京下了火车,来到了天安门。他看到了天安门上的毛主席画像,便被毛主席吸引了。他越走越近,越走越近,最后到了……
郑和是一个什么样的人?他为什么七次下西洋?明朝时期最著名的除了大名鼎鼎的乞丐皇帝朱元璋,与他同样出名的还有明朝的太监。在大家的印象里,明朝的太监大多是大奸大恶之人,他们残害忠良,鱼肉百姓。可是,明朝还真有这么一个……
西乌审起义前后(七)奇玉山一直在策划杀害奇金山和奇国贤。1942年夏天,奇玉山要派奇国贤到重庆为他办事领枪,他打算派人在途中将奇国贤杀掉。奇国贤心有戒备,没有去。奇玉山又召集5人秘密会……
国军将领遭蒋介石追杀,毛主席下令救出,他曾救过10万红军毛主席文故渊说编辑故渊说1951年,有一位曾经的国军少将被押上刑场,此刻他就要被执行枪决,可就在命悬一线之际,叶剑英元帅却下令枪下留人,并声称这位国军少将是毛……
晚唐中兴的明君,唐宪宗缔造元和中兴唐宪宗李纯,是唐朝的第十二位皇帝。唐朝在经过安史之乱后,国力大大衰退,地方藩镇拥兵自重,国家四分五裂,曾经的盛唐一去不回,好不容易捱过动乱的唐帝国到了宪宗时期总算再次有了中兴迹……
来评评北宋第二任皇帝赵光义不知道大家怎么评说赵匡胤和赵光义两兄弟的?在历史上他们是很有争议的,究竟是不是赵光义为了抢班,谋害了大哥赵匡胤?还是因为时代的选择,民不聊生的五代十国,内乱不断,人……
朱元璋26子,为何没人敢跟朱标争太子位,就连朱棣只能隐忍?太子朱标,明太祖朱元璋的长子,也是朱元璋最喜欢的儿子。为了栽培朱标,朱元璋呕心沥血、想尽一切办法,让他能尽快成材,为此特意安排了大儒宋濂来教导治国之道。毫不夸张地说,朱标……
不结婚就能生娃引发争议,有网友觉得不能开这个头!最近,不结婚就能生娃的话题引发热议。这是一种新的生育理念,它把单身女性看作是生育孩子的主体。不少网友认为,不结婚就能生娃很荒唐,是对女性人权和生育权的践踏。但……
唐朝以胖为美,那杨玉环是胖子吗?不要被环肥燕瘦欺骗了为什么杨玉环是个胖子还让大家着迷,对于四大古美人,话题和争议最多的当属杨贵妃。石云:六宫无色,本王不早归。杨妃自然是德行。既然能得到一国太子的宠爱,一身霓裳羽衣,让当时天下无双……
1938潢川保卫战(下)编者手记:这篇《光州漫忆》节选自张锐强最新一部长篇小说《杜鹃握手》。这位1970年出生于信阳的作家,从军十一年,三十岁退役写小说,央视讲武堂名将传奇、书生点兵系列讲座主讲。著有……
史上真正的慈安太后无子无宠,仍旧让慈禧太后望而生畏在绝大多数的影视作品当中,慈安太后都是个软弱怯懦的样子,虽然贵为咸丰帝的正宫,但成为皇太后之后却处处受制于同治帝生母慈禧太后,前朝的事情她管不着,后宫的事情她也不太能做主,完全……
六旬男人晒白酒单,在朋友圈走红,酒友这才是普通人的生活许多人都觉得男人到了六十岁都是十分的悠闲,就像现在许多网友都是月入过万一样。其实撕下网络虚荣的外衣,普通六旬男人生活依旧艰辛,他们退休之后舍不得花钱,省下的钱想着能给自己……