以下内容为还没思路的小伙伴牵个头提供一个demo,大佬勿喷,线上成绩0.7+,留空间给小伙伴们发挥自己的力量
ps:markdown不怎么熟悉,代码中如有明显缩进问题,自行斟酌改正,编辑好几次都改不过来,请原谅....
数据分析
瑕疵大类:
瓶盖瑕疵、标贴瑕疵、喷码瑕疵、瓶身瑕疵、酒液瑕疵
瑕疵小类:
{ 0: '背景', 1: '瓶盖破损', 2: '瓶盖变形', 3: '瓶盖坏边', 4: '瓶盖打旋', 5: '瓶盖断点', 6: '标贴歪斜', 7: '标贴起皱', 8: '标贴气泡', 9: '喷码正常', 10: '喷码异常' }
背景图片说明(可直接去除背景图片训练):
"annotations"中的元素,"category_id":0对应的是背景。当且仅当一张图片对应的所有annotations中,"category_id"都为0,该图片为背景图片。
类别统计:
round1:
图片数量:4516
瑕疵个数(带背景):6945
瑕疵个数(不带背景):5775
图片大小: 除 6,7,8 外都为(492,658), 6 7 8为(3000,4096)
图一 带背景类类别统计图
图二 去除背景类短边统计图
分类图 | 统计图 |
---|---|
Demo | |
分析: |
此次任务是酒瓶上的瑕疵检测,类似于天池上一个布匹瑕疵检测,因此可以选取mmdetection目标检测框架,对于网络精度而言,首选是二阶段网络,比如fasterrcnn,cascade等,但是由于复赛会加入时间惩罚,因此对于网络前传速度也有很大的要求.参赛小伙伴们应充分考虑速度和精度的trade off. 比如对模型进行进行剪枝压缩,网络蒸馏等,或者考虑多进程或多batch测试,这些都需要尝试,这里我只是提供一个简单的demo给大家参考下.
模型选择:
backbone采用resnet50,检测器采用faster-rcnn
可优化点:
1.采用dcn减少不同尺度目标的差异性带来的影响,提高检测性能
2.本次比赛到目前位置提供的数据集目标尺寸小目标较多,同时存在几类大目标,可通过聚类设置合理的anchor
3.用roi align代替roi pooling
4.使用focalloss,ohem等trick平衡正负以及困难样本
等等
mmdetection编译:
1.对mmdetection进行安装编译
- git clone GitHub - open-mmlab/mmdetection: OpenMMLab Detection Toolbox and Benchmark
- cd mmdetection
- python setup.py develop (如果编译不成功,使用另一条命令 pip install -v -e .)
具体安装细节请参考官方Readme
2.数据准备
mmdetection默认输入的数据集格式是coco数据格式,这次官方提供的标注格式也是coco格式,无需转换,可直接使用,但需要注意的是将json中的背景类去除.
3.mmdetection简单介绍
4.修改配置文件
这里提供一份训练config,根据具体优化自行修改