1.总结一下
- 最开始为了检测不规则的麻包袋,所以采用了目标检测。yolov3,fasterrcnn,ssd。这种矩形框还是可以用。后面检测的物体变成了规则的纸箱,我们还用目标检测发现,没有旋转角度,因为箱子的摆放不是正的。只能通过opencv的minarea去找到最小矩形框去寻找角度。但是opencv的方式首先对物体要和背景颜色区分,其次不够优美,毕竟算是2步走。
- 后面又尝试多训练一个角度,也就是把角度分成180个类别去分类,这个方式及其不稳定,也可能是我代码写的不好,但是后面发现,有人在做旋转矩形检测
- 旋转矩形框检测, 说实话,我把杨雪提供的框架跑了一遍,效果很差,角度的回归就像没用一样,反正很不如意。
- 实在没辙,只好采用了实力分割,maskrcnn。这个是真好用,大概标定50个样本,训练100epoch效果就很棒了。我们一直采用这种方式大概用了2年。
- 但是从我测试了rotated_rtmdet后。我真的觉得醍醐灌顶的爽,一直采用实力分割去做箱子的识别,总让我感觉很别扭。现在终于有一个可以落地的旋转目标检测。我就觉得公司的3D拆垛已经终于走上正轨了。
- 后面yolo又推出了,v4v5v6v7 其中还有ppyolo,yolox,yoloe , 包括现在的v8。我也不断的尝试更新算法。但是说实话目标检测真的算是走到头了。当然也是我个人的最终版。因为公司原因,个人将不在做视觉类的项目了,所以视觉类的目标检测和实力分割或者分类也就不在继续研究了。
2.yolov8代码梳理
参考
说实话,我不太懂他们改变的原因,看代码而言并不困难。基本和v5差不多。而且解耦检测头也是和yolox一样的。
总体来说,这个模型的精度和速度是对做工程和做应用的非常友好,我用自己的数据集,训练50个epoch,没有修改任何东西,map都跑到了99.5.非常惊艳。
3. 训练自己的数据集
- 数据集还是yolo格式。如果是labelme标注的json格式,参考 修改json标注为txt文件。或者就直接采用labelImg标注,生成yolo格式的标注文件参考
- 修改数据配置文件,也就是复制一份coco.yaml 。修改路径为自己的数据集路径
文件放在G:\sick\SH_visionary-s\ultralytics\ultralytics\yolo\v8\detect\coco.yaml
-
下载yolov8n.pt 放在和train.py同目录下。
-
修改训练参数,路径在G:\sick\SH_visionary-s\ultralytics\ultralytics\yolo\cfg\default.yaml ,
我就修改了这些 -
执行train.py的文件就好