首页 > 其他分享 >跑通SOLOV1-V2实例分割代码,并训练自己的数据集

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

时间:2022-11-03 11:00:14浏览次数:51  
标签:box 文件 分割 solo 跑通 V2 实例 bounding SOLOV1

人工智能大数据与深度学习  公众号:datayx

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

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



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

  • 速度太慢了,比如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实例分割代码,并训练自己的数据集_深度学习

跑通SOLOV1-V2实例分割代码


系统平台:Ubuntu18.04  

硬件平台:RTX2080 super

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

pytorch版本:pytorch1.2.0


环境安装:


跑通SOLOV1-V2实例分割代码,并训练自己的数据集_特征工程_02


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


跑通SOLOV1-V2实例分割代码,并训练自己的数据集_特征工程_03



跑通SOLOV1-V2实例分割代码,并训练自己的数据集_特征工程_04



  • 代码 获取方式:

  • 分享本文到朋友圈

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


数据集准备:

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


跑通SOLOV1-V2实例分割代码,并训练自己的数据集_特征工程_05



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


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


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


跑通SOLOV1-V2实例分割代码,并训练自己的数据集_特征工程_07


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


跑通SOLOV1-V2实例分割代码,并训练自己的数据集_深度学习_08


修改训练文件:

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

跑通SOLOV1-V2实例分割代码,并训练自己的数据集_深度学习_09

跑通SOLOV1-V2实例分割代码,并训练自己的数据集_特征工程_10

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

跑通SOLOV1-V2实例分割代码,并训练自己的数据集_深度学习_12

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


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



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

 搜索公众号添加: datanlp

跑通SOLOV1-V2实例分割代码,并训练自己的数据集_特征工程_14

长按图片,识别二维码




不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  

跑通SOLOV1-V2实例分割代码,并训练自己的数据集_特征工程_15


标签:box,文件,分割,solo,跑通,V2,实例,bounding,SOLOV1
From: https://blog.51cto.com/u_15404184/5819230

相关文章