跑通SOLOV1-V2实例分割代码,并训练自己的数据集

SOLOv 2:实例分割(动态、更快、更强)

 

论文链接:https://arxiv.org/abs/1912.04488

 

论文解读博文

https://blog.csdn.net/sanshibayuan/article/details/103895058

 

 

就目前来讲,很多实例分割算法存在的问题弊端主要是:

  • 速度太慢了,比如Maskrcnn,虽然声名远扬,但是要把它部署到realtime,还是很困难的;

  • 精度不够,比如Yolact,即便是Yolact++,其精度其实也只能说差强人意,连MaskRCNN都比不上的实力分割,速度再快,也会限制它的使用场景;

  • BlendMask,CenterMask这类的算法,都差不多,基于FCOS构建,本质上没啥区别,还是和MaskRCNN整体流程差不多,只不过检测器变了而已,对于部署来说依旧很麻烦。

 

对于许多二阶段的实例分割算法,转换到另一个推理平台很麻烦,主要是这里面存在RPN的一些操作,即便是类似于CenterMask这样的模型,也需要先获取box,然后经过ROIAlign和ROIPool来得到需要的mask,这个过程不仅计算繁琐,而且很难导出到我们想要的模型格式,比如ONNX就不支持这里面的很多op。SOLOV2的性能似乎比maskrcnn差不多,推理速度只要一半,并且速度和精确度都超过了BlendMask。

 

通过改进,SOLOv2的AP性能比SOLOv1高出1.9%,而速度提高了33%。Res-50-FPN SOLOv2在具有挑战性的MS-COCO数据集上以18 FPS的速度实现38.8%的掩模AP,在单个V100 GPU卡上进行评估。一个轻量级版本的SOLOv2以31.3FPS的速度执行,产生37.1%的掩模AP。有趣的是,虽然本文的方法彻底消除了bounding box的概念,但是本文的bounding box的副产品,即直接将预测的掩模转换为bounding box,产生42.4%的AP用于bounding box对象检测,它甚至超过了许多最先进、高度工程化的目标检测方法。

 

图片

 

跑通SOLOV1-V2实例分割代码

 

系统平台:Ubuntu18.04  

硬件平台:RTX2080 super

cuda和cudnn版本:cuda10.0   cudnn:7.5.6

pytorch版本:pytorch1.2.0

 

环境安装:

 

图片

 

完成上面操作就可以跑demo了,但是solo只给了单张图片的预测,摄像头预测是无法运行的,下面的代码是摄像头实时检测的代码,大家可以试一下:

 

图片

 

 

图片

 

 

 

 


代码 获取方式:

分享本文到朋友圈

关注微信公众号 datayx  然后回复 实例分割 即可获取。

AI项目体验地址 https://loveai.tech

 

 

店铺地址:

https://shop585613237.taobao.com

图片

 

 

数据集准备:

我们标注数据集使用的是labelme来标注,每一个图片会生成一个json标注文件,标注完成后我们需要将我们所有json文件合并为一个json文件。代码如下:

 

图片

 

 

转换完之后,我们需要生成如下几个文件夹。annotations存储的是我们上面转换的json文件。train2017和val2017存储的是训练和测试的图片。

 

图片

 

创建我们自己的数据集。在SOLO/mmdet/datasets文件夹下面创建我们自己的数据集,我创建的是pig_data.py文件:

 

图片

 

修改SOLO/mmdet/datasets/__init__.py文件,将我们的数据集加进去。

 

图片

 

修改训练文件:

模型训练文件在SOLO/configs/solo文件夹下,我修改的是solo_r50_fpn_8gpu_3x.py。你想要训练哪个就修改哪个。

图片

图片

图片

图片

这样就可以完成solo训练自己的数据集了,经过测试分割效果很出色,边缘信息也比较好。

 

图片

 

 

机器学习算法AI大数据技术

 搜索公众号添加: datanlp

图片

长按图片,识别二维码

 

posted @ 2021-05-25 12:04  水木清扬  阅读(1950)  评论(0编辑  收藏  举报