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
長按圖片,識別二維碼