【全球人工智能技术创新大赛【热身赛一】CV异常检测
比赛地址:https://tianchi.aliyun.com/s/fed26b0e90c5776e6b3d61cd5912a423
baseline 开源内容:https://github.com/datawhalechina/team-learning-cv/tree/master/DefectDetection 重点看这个文档:docker提交教程.pdf
从0梳理1场CV缺陷检测赛事! https://mp.weixin.qq.com/s/-GpT6IBAYPMEUHmULis3rA
布匹瑕疵检测赛题理解及Baseline 视频讲解
布匹瑕疵检测赛题理解及Baseline
第一次使用yolov5代码来做图像异常检测,大佬提供的baseline代码是针对老版本的yolo5修改,不太清楚修改了哪些,在ubuntu18.04 上无法跑通,报各种错误,数据无法读取,格式不对等信息,索性既然知道主要是基于yolov5就找一个yolov5的官方docker镜像跑起来,然后在里面移植baseline的代码进去就肯定可以跑通,于是从目前最新的yolov5 release v4.0版本代码研究起走。终于跑通搞明白是怎么回事。
此次任务是布匹瑕疵检测,首先考虑的应该是目标检测框架。当前目标检测主要分为one-stage和two-stage两种类型,以YOLO,SSD等框架为代表的one-stage速度快,以Faster-RCNN为代表的two-stage框架精度高。基于本次任务时间有限制在1小时内,因此采用单阶段YOLOV5的方案。比赛时间很短,3月1号就截止提交了,还没成功提交过,但是大概理解yolov5和大佬写提交代码的关系。
yolov5的源码:https://github.com/ultralytics/yolov5/tree/v4.0 源码打包下载地址:最新yolov5 release版本 v4.0 yolov5-4.0.zip
如上图,其中主要是这三个文件起作用:
train.py 文件主要是训练文件,有几个重要参数
parser.add_argument('--weights', type=str, default='yolov5s.pt', help='initial weights path')
该参数指定要用到的预训练的模型文件(下载地址:https://download.csdn.net/download/jrckkyy/15506433),也可以为空不指定,用这个就是一种迁移学习(类似于增量学习),*.pt文件其实就是模型文件,训练出来的也是*.pt文件。如图下载好的:
parser.add_argument('--cfg', type=str, default='', help='model.yaml path')
该参数为 --weights 参数对应的模型结构,如果有的话,如果--weights为空就是重新训练模型的结构。路径是models里的文件,如图
parser.add_argument('--data', type=str, default='data/coco128.yaml', help='data.yaml path')
指定某个类型的训练数据下载,用于训练和测试用,可以把里面的换位本次比赛的数据的路径,如图yolov5 v4.0 版本的train代码里多了一个--data参数,默认是读取coco128.yaml里描述的训练数据来做训练,本比赛还需改造代码才行,这里指定了训练数据路径和标签信息(数量和具体的标签名字),大佬使用的yolov5 的代码不知道哪个版本的,还需要做改造才行。
data文件 样本 *.yaml 说明文件可以参考这个链接里的做法:具体可以参考
baseline版本是对某个yolov5版本做了修改,主要修改了以下几个部分:
detect.py文件对比左边是baseline的代码,需要在v4.0代码中加入模型识别出来的结果坐标,长宽位置的信息的转换,并记录下来
最后再存为要提交结果的 result.json 文件: