當前位置:
首頁 > 最新 > 如何使用Tensorflow對象檢測進行像素級分類?

如何使用Tensorflow對象檢測進行像素級分類?

最近,Tensorflow添加了一些新的功能,現在我們可以擴展API來確定感興趣的對象的像素和像素位置。請參見下面的例子:

GIF

代碼的部分就不在這裡贅述,詳情可以參見(https://github.com/priya-dwivedi/Deep-Learning/blob/master/Mask_RCNN/Mask_RCNN_Videos.ipynb)

實例分割

實例分割是對象檢測的一個擴展,其中一個二進位掩碼(即對象和背景)與每個邊界框關聯。這允許對框內對象的範圍進行更細粒度的信息。

那麼我們什麼時候會需要這種額外的粒度呢?我想到的一些例子是:

1.自動駕駛汽車——它的使用需要知道其他的車輛的在行駛過程中、停靠在路邊時等等的確切的位置,或者是一個人過馬路的地點、行駛的路徑等。

2.機器人系統——如果機器人知道兩個部件的準確位置,它們的行為就會表現的更好。

有幾種演算法實現了實例分割,但Tensorflow對象檢測API所使用的演算法是掩碼RCNN。

Mask RCNN

讓我們先從比較簡單的地方說起。

Mask RCNN 架構

Faster RCNN是一個非常好的演算法,用於對象檢測。Faster RCNN由兩個階段組成。第一階段,稱為區域提案網路(RPN),提出候選對象邊界框。第二階段,在本質上是Faster RCNN,從每個候選框中提取出使用RoIPool的特性,並進行分類和邊界框的回歸。兩個階段使用的特性可以共享,以獲得更快的推理。

Mask R-CNN在概念上很簡單:Faster RCNN對每個候選對象有兩個輸出,一個類標籤和一個邊界框偏移。為此,我們添加了輸出對象掩碼的第三個分支——這是一個二進位掩碼,表示對象在邊界框中的像素。但是額外的掩碼輸出與類和框輸出不同,需要提取更精細的物體空間布局。為此,RCNN使用了下面描述的全卷積網路掩碼RCNN文件(FCN)。

全卷積網路體系結構

FCN是一種常用的語義分割演算法。這個模型使用了不同的卷積和最大池化層,首先將圖像解壓到原始大小的1/32。然後在這個粒度級別上進行類別預測。最後,它使用了採樣和反褶積來調整圖像的大小。

因此,簡而言之,我們可以說,Mask RCNN結合了兩個網路——Faster RCNN和一個大型架構中的FCN。該模型的損失函數是在進行分類、生成邊界框和生成掩碼時的總損失。

Mask RCNN有一些額外的改進,使得它比FCN更加精確。你可以在他們的論文中了解更多。

實現

測試圖像

要在圖像上測試這個模型,你可以利用在Tensorflow網站上共享的代碼。我測試了他們最輕量級的模型mask_rcnn_inception_v2_coco。只需下載模型並升級到tensorflow 1.5(這很重要!)請參閱下面的示例結果:

在風箏圖像上的Mask RCNN

測試視頻

對我來說,更有趣的練習是在You tube上運行這個模型。我用keepvid從你的tube上下載了一些視頻。而且我喜歡看圖書館的電影,因為它可以操縱視頻文件。

主要步驟是:

·使用VideoFileClip函數從視頻中提取每個幀。

·fl_image函數是一個非常棒的函數,它可以接收圖像並將其替換為修改後的圖像。用它來對從視頻中提取的每個圖像進行對象檢測。

·最後將所有修改後的剪輯圖像合併到一個新的視頻中。

下一個步驟

關於這個API的進一步探索,還有一些其他的想法:

·嘗試更精確但高負荷的模型,看看他們有多大的不同。

·使用API在自定義數據集上訓練掩碼RCNN。接下來準備要做的事情。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 AI全球動態 的精彩文章:

2018年6大BI與數據可視化工具的比較分析
「鏈」上AI才是2018年的正確打開方式?

TAG:AI全球動態 |