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
长按图片,识别二维码