TensorFlow in 5 Minutes
leiphone 作者:图普科技
最近,TensorFlow 的「物體檢測 API」有了一個新功能,它能根據目標對象的像素位置,來確定該對象的像素。換句話來說,TensorFlow 的物體檢測,從原來的圖像級別,成功上升到了像素級別。
使用 TensorFlow 的「物體檢測 API」圖片中的物體進行辨識,最後的結果是圖片中一個個,將不同物體框起來的方框。最近,這個「物體檢測 API」有了一個新功能,它能根據目標對象的像素位置,確定該對象的像素,實現物體的像素分類。
TensorFlow 的物體檢測 API 模型——Mask-RCNN
分割
「實例分割」是物體檢測的延伸,它能讓我們在普通的物體檢測的基礎上,獲取關於該對象更加精確、全面的資訊。
在什麼情況下,我們才需要這樣精確的資訊呢?
- 無人駕駛汽車為了確保安全,無人駕駛汽車需要精確定位,道路上其他車輛和行人。
- 機器人系統機器人在連接兩個部件時,如果知道這兩個部件的確切位置,那麼機器人的操作就會更加高效、準確。
「實例分割」的方法有很多,TensorFlow 進行「實例分割」使用的是 Mask RCNN 算法。
Mask R-CNN 算法概述
- 無人駕駛汽車為了確保安全,無人駕駛汽車需要精確定位,道路上其他車輛和行人。
- 機器人系統機器人在連接兩個部件時,如果知道這兩個部件的確切位置,那麼機器人的操作就會更加高效、準確。
「實例分割」的方法有很多,TensorFlow 進行「實例分割」使用的是 Mask RCNN 算法。
Mask R-CNN 算法概述
Mask RCNN 算法架構
在介紹 Mask RCNN 之前,我們先來認識一下 Faster R-CNN。
Faster-RCNN 是一個用於物體檢測的算法,它被分為兩個階段:第一階段被稱為「候選區域生成網路」(RPN),即生成候選物體的邊框;第二階段本質上是 Fast R-CNN 算法,即利用 RolPool 從每個候選邊框獲取對象特徵,並執行分類和邊框回歸。這兩個階段所使用的特徵可以共享,以更快地獲得圖像推算結果。
Faster R-CNN 對每個候選對象都有兩個輸出,一個是分類標籤,另一個是對象邊框。而 Mask-RCNN 就是在 Faster R-CNN 的兩個輸出的基礎上,添加一個掩碼的輸出,該掩碼是一個表示,對象在邊框中像素的二元掩碼。
但是這個新添加的掩碼輸出,與原來的分類和邊框輸出不同,它需要物體更加精細的空間佈局和位置資訊。因此,Mask R-CNN 需要使用「全卷積神經網路」(FCN)。
全卷積神經網絡(FCN)的算法架構
「全卷積神經網路」是「語義分割」中十分常見的算法,它利用了不同區塊的卷積和池化層,首先將一張圖片,解壓至它原本大小的三十二分之一,然後在這種粒度水平下,進行預測分類,最後使用向上採樣,和反卷積層,將圖片還原到原來的尺寸。
因此,Mask RCNN 可以說是將 Faster RCNN 和「全卷積神經網路」這兩個網路合併起來,形成的一個龐大的網路架構。
實操 Mask-RCNN
.圖片測試
- 你可以利用 TensorFlow 網站上的共享代碼來對 Mask RCNN 進行圖片測試。以下是我的測試結果:
Mask RCNN on Kites Image
- 視訊測試
- 測試一個精確度更高的模型,觀察兩次測試結果的區別;
- 使用 TensorFlow 的物體檢測 API ,在訂製的數據集上,對 Mask RCNN 進行測試。
對我來說,最有意思的是用 YouTube 視訊來測試這個模型。我從 YouTube 上下載了好幾條視訊,開始了視訊測試。
視訊測試的主要步驟:
1. 使用 VideoFileClip 功能從視訊中提取出每個幀;
2. 使用 fl_image 功能對視訊中,截取的每張圖片,進行物體檢測,然後用修改後的視訊圖片替換原本的視訊圖片;
3. 最後,將修改後的視訊圖像合併成一個新的視訊。
GitHub地址為:https://github.com/priya-dwivedi/Deep-Learning/blob/master/Mask_RCNN/Mask_RCNN_Videos.ipynb
Mask RCNN 的深入研究
下一步的探索包括:
沒有留言:
張貼留言