基于yolov5(v6.0分支)的多任务检测和分割模型。
之前很早就萌生idea在yolov5基础上添加一个分割头用于语义分割,近期正好也有论文YLOLOP是这么做的.
这里基于yolov5最新分支修改,主要改动如下:
1 . 解耦头:实验在小数据集上有一定效果(map 1%+ ),大数据集上提升不明显;
2. 类别权重:在长尾分布的数据集上提升较为明显.
3.添加分割头用于语义分割。
整体框架
上图是在yolop模型上修改的,侵删。
整个模型分为三个部分:
1) backbone:这里使用yolov5骨干;
2)neck: panet;
3)head:检测头+分割头
检测头参考了YOLOX进行了解耦;针对不同数据和任务可能会有一定提升。
这里使用VOC数据集进行训练,具体的,检测训练集为VOC07+12的训练集,测试集为VOC07的测试集;分割使用VOC12的分割训练集,测试集为其测试集,主要是方便和SSD进行对比:
使用yolov5s进行实验,输入也为512;设置训练300epoch;但是这里节省时间训练快到200 epoch停止:
model | VOC2007 test |
---|---|
SSD512 | 79.8 |
yolov5s+seghead(512) | 79.2 |
源码:https://github.com/midasklr/yolov5dshttps://github.com/midasklr/yolov5ds
参考:
1.[YOLOP: You Only Look Once for Panoptic Driving Perception](https://arxiv.org/abs/2108.11250)
2. GitHub - ultralytics/yolov5: YOLOv5 in PyTorch > ONNX > CoreML > TFLiteYOLOv5 in PyTorch > ONNX > CoreML > TFLite. Contribute to ultralytics/yolov5 development by creating an account on GitHub.https://github.com/ultralytics/yolov5