OpenCV4.0 Mask RCNN 實例分割示例 C++/Python實現

2022-01-12 我愛計算機視覺

收錄於話題 #圖像分割 18個

點擊我愛計算機視覺標星,更快獲取CVML新技術

前幾天OpenCV4.0-Alpha發布,其中新增實例分割Mask RCNN模型是這次發布的亮點之一。

圖像實例分割即將圖像中目標檢測出來並進行像素級分割。

昨天learnopencv.com博主Satya Mallick發表博文,詳述了使用新版OpenCV加載TensorFlow Object Detection Model Zone中的Mask RCNN模型實現目標檢測與實例分割的應用。使用C++/Python實現的代碼示例,都開源了。
先來看看作者發布的結果視頻:

從視頻可以看出,2.5GHZ i7 處理器每幀推斷時間大約幾百到2000毫秒
TensorFlow Object Detection Model Zone中現在有四個使用不同骨幹網(InceptionV2, ResNet50, ResNet101 和 Inception-ResnetV2)的Mask RCNN模型,這些模型都是在MSCOCO 資料庫上訓練出來的,其中使用Inception的模型是這四個中最快的。Satya Mallick博文中正是使用了該模型。

Mask RCNN網絡架構

OpenCV使用Mask RCNN目標檢測與實例分割流程:
1)下載模型。
地址:
http://download.tensorflow.org/models/object_detection/
現有的四個模型:
 2)參數初始化。

設置目標檢測的置信度閾值和Mask二值化分割閾值。
3)加載Mask RCNN模型、類名稱與可視化顏色值。
mscoco_labels.names包含MSCOCO所有標註對象的類名稱。
colors.txt是在圖像上標出某實例時其所屬類顯示的顏色值。
frozen_inference_graph.pb模型權重。
mask_rcnn_inception_v2_coco_2018_01_28.pbtxt文本圖文件,告訴OpenCV如何加載模型權重。
OpenCV已經給定工具可以從給定模型權重提取出文本圖文件。詳見:
https://github.com/opencv/opencv/wiki/TensorFlow-Object-Detection-API


OpenCV支持CPU和OpenCL推斷,但OpenCL只支持Intel自家GPU,Satya設置了CPU推斷模式(cv.dnn.DNN_TARGET_CPU)。
4)讀取圖像、視頻或者攝像頭數據。
5)對每一幀數據計算處理。
主要步驟如圖:

6)提取目標包圍框和Mask,並繪製結果。

C++/Python代碼下載:
https://github.com/spmallick/learnopencv/tree/master/Mask-RCNN

原博文地址:

https://www.learnopencv.com/deep-learning-based-object-detection-and-instance-segmentation-using-mask-r-cnn-in-opencv-python-c/

長按關注我愛計算機視覺

【點讚與轉發】就是一種鼓勵

相關焦點

  • 愷明大神 Mask R-CNN 超實用教程
    對象檢測器,如yolo、faster r-cnn和ssd,生成四組(x,y)坐標,表示圖像中對象的邊界框。從獲取對象的邊界框開始挺好的,但是邊界框本身並不能告訴我們(1)哪些像素屬於前景對象,(2)哪些像素屬於背景。是否可以為圖像中的每個對象生成一個MASK,從而允許我們從背景分割前景對象?
  • 愷明大神 Mask R-CNN 超實用教程
    在上周的博客文章中,你學習了如何使用Yolo物體探測器來檢測圖像中物體(https://www.pyimagesearch.com/2018/11/12/yolo-object-detection-with-opencv/)。對象檢測器,如yolo、faster r-cnn和ssd,生成四組(x,y)坐標,表示圖像中對象的邊界框。
  • Mask R-CNN
    Mask R-CNN是一種在有效檢測目標的同時輸出高質量的實例分割mask。是對faster r-cnn的擴展,與bbox識別並行的增加一個預測分割mask的分支。Mask R-CNN 可以應用到人體姿勢識別。並且在實例分割、目標檢測、人體關鍵點檢測三個任務都取得了現在最好的效果。
  • 【從零開始學Mask RCNN】一,原理回顧&&項目文檔翻譯
    算法總覽Mask-RCNN是一個實例分割(Instance segmentation)框架,通過增加不同的分支可以完成目標分類,目標檢測,語義分割,實例分割,人體姿態估計等多種任務。用於目標檢測和語義分割的Mask RCNN這是Mask RCNN使用Python3,Keras,TensorFlow的實現。該模型為圖像中的每個實例物體生成邊界框和掩膜。它基於特徵金字塔網絡(FPN)和ResNet101骨幹網絡。
  • 使用PixelLib來實現圖像分割
    圖像分割的一些主要應用包括:語義分割:使用相同類別的對象使用相同的顏色映射進行分割。實例分割:它不同於語義分割,它會對同一對象的不同實例用不同的顏色映射來進行分割。PixelLib:是為了在現實生活中更容易實現圖像分割而構建的庫。PixelLib是一個靈活的庫,可以集成到需要應用圖像分割的軟體解決方案中。
  • 經典目標檢測方法Faster R-CNN和Mask R-CNN|基於PaddlePaddle深度...
    Mask R-CNN 可以應用到人體姿勢識別,並且在實例分割、目標檢測、人體關鍵點檢測三個任務都取得了很好的效果。因此,百度深度學習框架 PaddlePaddle 開源了用於目標檢測的 RCNN 模型,從而可以快速構建強大的應用,滿足各種場景的應用,包括但不僅限於安防監控、醫學圖像識別、交通車輛檢測、信號燈識別、食品檢測等等。
  • 基於OpenCV的圖像分割處理!
    ,因其實現簡單、計算量小、性能較穩定而成為圖像分割中最基本和應用最廣泛的分割技術。基於OpenCV的實現c++實現1.OTSU處理在OpenCV中,設定參數type為「THRESH_OTSU」即可實現OTSU方式的閾值分割。且設定閾值thresh為0。
  • 實例分割算法之Mask RCNN
    這裡之所以單獨成文是因為Mask RCNN不僅僅用於目標檢測,還用於實例分割。目標檢測和實例分割的區別在於,實例分割不僅僅需要將目標識別,還需要將它的輪廓繪出。這意味著需要對每一個像素進行分類。這麼說也不嚴謹,因為容易跟語義分割混淆。我們還是統一區別一下目標檢測,語義分割,實例分割這三者。
  • OpenCV DNN模塊教程(四)Mask-RCNN實例分割
    #include <fstream>#include <sstream>#include <iostream>#include <string.h>#include <opencv2/dnn.hpp>#include <opencv2/imgproc.hpp>#include
  • 何愷明團隊:從特徵金字塔網絡、Mask R-CNN到學習分割一切
    Mask R-CNN用於目標實例分割。簡單來說,目標實例分割基本上就是對象檢測,但不是使用邊界框,它的任務是給出對象的精確分割圖!TL;DR :如果你已經了解Faster R-CNN,那麼Mask R-CNN就很好理解了,就是為分割增加另一個head(branch)。
  • 用於圖像分割的卷積神經網絡:從R-CNN到Mask R-CNN
    在本文中,我們將看到卷積神經網絡(CNN)如何在圖像實例分割任務中提升其結果。自從 Alex Krizhevsky、Geoff Hinton 和 Ilya Sutskever 在 2012 年贏得了 ImageNet 的冠軍,卷積神經網絡就成為了分割圖像的黃金準則。事實上,從那時起,卷積神經網絡不斷獲得完善,並已在 ImageNet 挑戰上超越人類。
  • CondInst:性能和速度均超越Mask RCNN的實例分割模型
    目前基於one-stage的物體檢測模型已經在速度和性能上超越two-stage模型,同樣地,大家也希望能找到one-stage的實例分割模型來替換Mask RCNN。分離檢測和分割:將檢測和分割分離成兩個部分這樣可以並行化,如YOLACT在檢測模型基礎上額外預測了一系列prototype masks,然後檢測部分每個instance會預測mask coeffs來組合masks來產生instance mask,BlendMask是對這一工作的進一步改進;不依賴檢測的實例分割:不依賴檢測框架直接進行實例分割,TensorMask
  • 5行Python代碼實現圖像分割
    眾所周知圖像是由若干有意義的像素組成的,圖像分割作為計算機視覺的基礎,對具有現有目標和較精確邊界的圖像進行分割
  • python利用opencv實現證件照換底
    opencv今天就給大家介紹一下python利用opencv庫進行藍底換紅底或者白底照片的操作。1.強大的opencv庫說到圖像處理,不得不提opencv庫。它是一個跨平臺的計算機視覺庫,可以運行在不同作業系統上,它由一些列c函數和少量c++函數組成,並提供python,matlab等語言的接口,實現了圖像處理和計算機視覺方面的很多通用算法。我們這裡用的opencv-python 就是opencv的python API接口。
  • 從零開始 Mask RCNN 實戰:基於 Win10 + Anaconda 的 Mask RCNN 環境搭建
    Mask RCNN 是何愷明基於以往的 Faster RCNN 架構提出的新的卷積網絡,實現高效地檢測圖中的物體,並同時生成一張高質量的每個個體的分割掩碼,即有效地目標的同時完成了高質量的語義分割。同時下載 Mask RCNN 的預訓練模型 「mask_rcnn_coco.h5」,放置於本地 Mask_RCNN 開源庫的根目錄下。
  • 算法| 超Mask RCNN速度4倍,僅在單個GPU訓練的實時實例分割算法
    在論文《YOLACT:Real-time Instance Segmentation》中,作者提出了一種簡潔的實時實例分割全卷積模型,僅使用單個 Titan Xp,以 33 fps 在MS COCO 上實現了 29.8 的 mAP,速度明顯優於以往已有的算法。而且,這個結果是就在一個 GPU 上訓練取得的!
  • 「python opencv視覺零基礎實戰」七邏輯運算應用
    一、學習目標了解opencv中圖像的邏輯運算了解opencv中邏輯運算的應用如有錯誤歡迎指出~目錄「python opencv 計算機視覺零基礎實戰」 第一節「python opencv視覺入門到實戰」二、格式與攝像頭「python opencv 視覺入門到實戰」 三、圖像編輯「python
  • 【論文解讀】Facebook 何凱明 Mask R-CNN 狙擊目標實例分割
    Mask R-CNN,該方法能有效地在每個實例中探測同時出現的目標,並對每個實例生成一個高質量的分割掩碼(segmentation mask)。圖 1用於實例分割的Mask R-CNN框架實例分割工作之所以很難,是因為它要求對同一圖像中的多個對象進行精確的探測和分割,這樣的工作需要結合經典經算計視覺的目標探測任務(tasks of object detection)中的多個元素,目標探測任務需要將每個個體實例進行分類,並在邊界框內進行定位,最後進行語義分割(將每個像素進行分類的工作)。
  • Facebook 最新論文:Mask R-CNN實例分割通用框架,檢測,分割和特徵...
    近日, FAIR部門的研究人員在這一領域又有了新的突破——他們提出一種目標實例分割(object instance segmentation)框架Mask R-CNN,該框架較傳統方法操作更簡單、更靈活。研究人員把實驗成果《Mask R-CNN》發布在了arXiv上,並表示之後會開源相關代碼。以下為AI科技評論據論文內容進行的部分編譯。
  • FAIR最新視覺論文集錦:FPN,RetinaNet,Mask 和 Mask-X RCNN(含代碼...
    之後會講實例分割的創新。最後聊聊依靠弱半監督模型來擴展實例分割。   FPN   特徵金字塔網絡 (FPN) [1] 發表在 2017 年的 CVPR 上。如果你關注最近兩年計算機視覺的發展,就知道冥冥之中存在著那樣一些優秀的算法,而你要做的,就是等著大神們把它寫出來、訓練好、再公開源碼。