用TensorFlow實現物體檢測的像素級分類

2021-01-05 雷鋒網

雷鋒網 AI 科技評論按:本文由「圖普科技」編譯自Using Tensorflow Object Detection to Do Pixel Wise Classification。

最近,TensorFlow 的「物體檢測 API」有了一個新功能,它能根據目標對象的像素位置來確定該對象的像素。換句話來說,TensorFlow 的物體檢測從原來的圖像級別成功上升到了像素級別。

使用 TensorFlow 的「物體檢測 API」圖片中的物體進行識別,最後的結果是圖片中一個個將不同物體框起來的方框。最近,這個「物體檢測 API」有了一個新功能,它能根據目標對象的像素位置確定該對象的像素,實現物體的像素分類。

TensorFlow 的物體檢測 API 模型——Mask-RCNN

實例分割

「實例分割」是物體檢測的延伸,它能讓我們在普通的物體檢測的基礎上獲取關於該對象更加精確、全面的信息。

在什麼情況下我們才需要這樣精確的信息呢?

無人駕駛汽車為了確保安全,無人駕駛汽車需要精確定位道路上其他車輛和行人。機器人系統機器人在連接兩個部件時,如果知道這兩個部件的確切位置,那麼機器人的操作就會更加高效、準確。

「實例分割」的方法有很多,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

視頻測試

對我來說,最有意思的是用 YouTube 視頻來測試這個模型。我從 YouTube 上下載了好幾條視頻,開始了視頻測試。

視頻測試的主要步驟:

1. 使用 VideoFileClip 功能從視頻中提取出每個幀;2. 使用 fl_image 功能對視頻中截取的每張圖片進行物體檢測,然後用修改後的視頻圖片替換原本的視頻圖片;3. 最後,將修改後的視頻圖像合併成一個新的視頻。

GitHub地址為:

Mask RCNN 的深入研究

下一步的探索包括:

測試一個精確度更高的模型,觀察兩次測試結果的區別;使用 TensorFlow 的物體檢測 API 在定製的數據集上對 Mask RCNN 進行測試。

本文由雷鋒網專欄作者編譯,轉載需經雷鋒網許可。

via kdnuggets

相關焦點

  • 如何用Tensorflow對象檢測進行像素級分類
    【IT168 資訊】最近,Tensorflow添加了一些新的功能,現在我們可以擴展API來確定感興趣的對象的像素和像素位置。請參見下面的例子:  有幾種算法實現了實例分割,但Tensorflow對象檢測API所使用的算法是掩碼RCNN。  Mask RCNN  讓我們先從比較簡單的地方說起。
  • 用Tensorflow和FastAPI構建圖像分類API
    這個類有一些有用的參數,比如我們可以傳遞swaggerui的標題和描述。from fastapi import FastAPIapp = FastAPI(title='Hello world')我們定義一個函數並用@app.get. 這意味著我們的API/index支持GET方法。
  • Tensorflow(入門)——Mnist分類問題
    最近開始向深度學習發展,學習深度學習自然要學習Tensorflow,而且它的中文社區非常活躍,課程強烈推薦龍龍老師的課。要學習深度學習,先從分類問題開始入門吧。在Tensorflow社區中,有個入門級的問題,就是Mnist數據集的分類問題。
  • TensorFlow推出新接口,簡化 ML移動端開發流程
    Task Library 支持主流的機器學習任務,包括圖像分類與分割、目標檢測和自然語言處理。模型接口針對每個任務進行過專門設計,可實現最佳性能和易用性——現在,只需 5 行代碼就可以在受支持任務的預訓練和自定義模型上執行推理!
  • 未探索的TensorFlow庫
    但是,這在桌面上不太好用,因為它是為ARM neon優化的。這篇問題對此進行了解釋(https://github.com/tensorflow/tensorflow/issues/35380),否則我們需要進一步優化模型。模型優化工具箱可以幫助我們完成這些任務。根據其主頁,它可以用於:減少雲和邊緣設備(如行動裝置、物聯網)的延遲和推理成本。
  • 手把手教你用 TensorFlow 實現文本分類(上)
    利用空閒時間,想用神經網絡做一個文本分類的應用, 目的是從頭到尾完成一次機器學習的應用,學習模型的優化方法,同時學會使用主流的深度學習框架(這裡選擇tensorflow)。文章分為兩部分,本文僅實現流程,用簡單的softmax回歸對文本進行分類,後面一篇文章再從流程的各個方面對模型進行優化,達到比較好的效果。
  • 如何在PyTorch和TensorFlow中訓練圖像分類模型
    介紹圖像分類是計算機視覺的最重要應用之一。它的應用範圍包括從自動駕駛汽車中的物體分類到醫療行業中的血細胞識別,從製造業中的缺陷物品識別到建立可以對戴口罩與否的人進行分類的系統。在所有這些行業中,圖像分類都以一種或另一種方式使用。他們是如何做到的呢?他們使用哪個框架?
  • 谷歌開源TensorFlow Object Detection API物體識別系統
    創造能夠在同一張圖片裡定位和識別多種物體的機器學習模型一直是業內的核心挑戰之一,谷歌宣稱自己已投入大量時間訓練和實驗此類系統。其中一個模型在示例圖片中(來自 COCO 數據集)對象識別的效果2016 年 10 月,谷歌內部的物體識別系統達到了業內最佳水平,在 COCO 識別挑戰中名列第一。
  • 圖像分類任務中,Tensorflow 與 Keras 到底哪個更厲害?
    讓我們看看這個問題在圖像分類的實際應用中的答案。 在此之前,先介紹Keras和Tensorflow這兩個術語,幫助你在10分鐘內構建強大的圖像分類器。   Tensorflow: Tensorflow是開發深度學習模型最常用的庫。它是有史以來最好的庫,在日常實驗中被許多極客選擇。
  • tensorflow深度學習SSD模型識別物體
    安裝labview2019 vision,自帶深度學習推理工具,支持tensorflow模型。配置好python下tensorflow環境配置好object_detection API下載SSD模型文件調用labview深度學習推理函數完成識別
  • 教程| 如何用TensorFlow在安卓設備上實現深度學習推斷
    她在 Insight 工作的時候,在安卓系統上用 TensorFlow 部署了一個 WaveNet 模型。本文詳細介紹了部署和實現過程。對於個人和公司來說,存在許多狀況是更希望在本地設備上做深度學習推斷的:想像一下當你在旅行途中沒有可靠的網際網路連結時,或是要處理傳輸數據到雲服務的隱私問題和延遲問題時。
  • 計算機圖形學遇上深度學習,針對3D圖像的TensorFlowGraphics面世
    地址 https://colab.sandbox.google.com/github/tensorflow/graphics/blob/master/tensorflow_graphics/notebooks/6dof_alignment.ipynb這項任務是很多應用的核心,包括聚焦於與其環境進行交互的機器人。
  • 基於TensorFlow 、OpenCV 和 Docker 的實時視頻目標檢測
    Docker在數據科學中的應用我不在這裡描述 Tensorflow 目標檢測 API 的實現,因為相關的文檔很多。我將展示數據科學家在日常工作中如何使用 Docker。注意,我會使用 Tensorflow 的經典 ssd_mobilenet_v2_coco 模型來提高性能。先將模型文件(.pb 文件)和相應的標籤映射文件複製到本地,後面可能會用到。
  • TensorFlow 實現流行的機器學習算法的教程匯集
    一種用於 MNIST 分類任務的多層感知實現: https://github.com/tflearn/tflearn/blob/master/examples/images/dnn.py卷積網絡。使用 RNN(在像素的序列上)分類圖像: https://github.com/tflearn/tflearn/blob/master/examples/images/rnn_pixels.pyHighway Network。
  • 手把手教你如何用TensorFlow實現基於DNN的文本分類
    至於算法和函數內部的實現機制,可以等了解整個流程之後,在實踐中進行更深入的學習和掌握。那麼問題來了,既然作為初學者不需要掌握算法細節,但實現模型的過程中又必須用到相關算法,怎麼辦呢?答案是藉助於網際網路上已經實現好的函數庫,例如 TensorFlow。在本文中,我們將利用 TensorFlow 實現一個基於深度神經網絡(DNN)的文本分類模型,希望對各位初學者有所幫助。
  • 谷歌重磅推出TensorFlow Graphics:為3D圖像任務打造的深度學習利器
    更多信息可以訪問GitHub:https://github.com/tensorflow/graphics/變換(Transformations)物體變換(Object transformations)功能能夠控制物體在空間中的位置。如下圖所示,利用軸角度可以將立方體旋轉起來。旋轉軸指向上方,角度為正,則使立方體逆時針旋轉。
  • TensorFlow極速入門
    一、前言目前,深度學習已經廣泛應用於各個領域,比如圖像識別,圖形定位與檢測,語音識別,機器翻譯等等,對於這個神奇的領域,很多童鞋想要一探究竟,這裡拋磚引玉的簡單介紹下最火的深度學習開源框架 tensorflow。
  • tensorflow極速入門
    一、前言目前,深度學習已經廣泛應用於各個領域,比如圖像識別,圖形定位與檢測,語音識別,機器翻譯等等,對於這個神奇的領域,很多童鞋想要一探究竟,這裡拋磚引玉的簡單介紹下最火的深度學習開源框架 tensorflow。本教程不是 cookbook,所以不會將所有的東西都事無巨細的講到,所有的示例都將使用 python。那麼本篇教程會講到什麼?
  • tensorflow和python的關係_tensorflow與pytorch的區別
    打開APP tensorflow和python的關係_tensorflow與pytorch的區別 網絡整理 發表於 2020-12-04 14:54:47
  • 社交距離檢測器——Tensorflow檢測模型設計
    在隔離期間,我花時間在github上探索Tensorflow的大量預訓練模型。這樣做時,我偶然發現了一個包含25 個帶有性能和速度指標的預訓練對象檢測模型的存儲庫。擁有一些計算機視覺知識並給出了實際的背景知識,我認為使用其中之一來構建社交隔離應用程式可能會很有趣。