什麼是 Tensorflow 的異議檢測? 以及它是如何工作的[示例]
已發表: 2021-06-18目錄
物體檢測——這是什麼意思?
對象檢測是通過計算機視覺在圖像或視頻中識別或定位對象的過程。 如果我們有一張包含貓和人的圖像,並且我們必須對圖像中的對象進行分類,那麼可以應用檢測對象的技術,即對象檢測,並且可以定位所需的對象,即貓和人。 這可以通過圍繞檢測到的對象繪製的邊界框來實現。 因此,所需對象的位置是已知的。
大多數人仍然對物體識別和圖像識別感到困惑。 兩者之間的區別在於,在圖像識別的情況下,整個圖像被標記,而在對象識別中,圖像中的對像被標記。
物體的類別,如人、桌子等,以及物體在給定圖像中的位置坐標,可以通過物體檢測技術來識別。 對象檢測算法的性能取決於其在圖像中定位對象的能力。 檢測對象的一個這樣的示例是面部檢測。
為什麼要進行物體檢測?
由於屬於對象檢測的獨特功能,該過程可以應用於許多重要任務,例如:
- 計算人群中的人數。
- 在自動駕駛汽車的情況下駕駛。
- 視頻監控。
- 人臉檢測。
- 異常檢測
對象檢測方法
用於對象檢測方法的算法可以在使用之前進行訓練,也可以在無監督的情況下進行。
兩種方法,即基於機器學習的方法和基於深度學習的方法用於檢測對象。
- 基於 ML 的方法正在研究圖像的各種特徵,例如顏色直方圖或邊緣等。 然後生成基於這些特徵的回歸模型並預測對象的位置。
- 卷積神經網絡 (CNN) 用於基於深度學習的方法,用於通過無監督方法檢測對象。
對象檢測方法的工作
目標檢測任務可以通過以下步驟進行:
- 輸入圖像被分解成幾個小片段。 在整個圖像中創建綁定在一起的框集。
- 每個分割區域都經過特徵提取的過程。 然後它預測框內是否存在有效對象。 該過程確定盒子中是否存在任何視覺特徵。
- 為重疊的盒子構造了一個盒子。
使用 TensorFlow 進行對象檢測
TensorFlow 可以定義為一個用於機器學習的開源庫,並已廣泛用於圖像識別、語音搜索、對象識別等多種應用中。Python 和 C++ API 均由 TensorFlow 提供。
- 深度學習算法和機器學習算法都存在於 TensorFlow 中。
- Python 被用作前端語言,也可以在 C++ 中高效運行。
- 開發人員使用 TensorFlow 創建計算圖。
- 數學運算由圖中的節點表示,數據通過連接表示。
TensorFlow 由 Google 機器智能研究組織內的 Google Brain 團隊開發,用於對機器學習和深度神經網絡進行研究。
API(應用程序編程接口)通過提供一組通用操作來防止開發人員從頭開始編寫代碼。 TensorFlow 對象檢測 API用於訓練對象檢測模型。 該框架建立在 TensorFlow 之上。 屬於對象檢測TensorFlow的特徵是:
- 已經訓練過的模型稱為“模型動物園”,可在框架中使用。
- 用於訓練各種訓練模型的數據集是:
- COCO 數據集。
- KITTI 數據集。
- 開放圖像數據集
對象檢測 TensorFlow框架由具有不同架構的各種模型組成,因此預測精度也不同。 已經訓練好的模型的架構類型有:
1. MobileNet-SSD
單卷積網絡一次識別邊界框的位置。 該架構由一個基礎層(MobileNet)和幾個卷積層組成。 通過對特徵圖的操作來預測邊界框的位置。 下面列出了每個邊界框的信息:
- 邊界框在四個角(cx、cy、w、h)中的偏移位置。
- C 類的概率 (c1, c2, ...cp)
SSD 不預測盒子的形狀,而是預測盒子的位置。 為每個特徵圖位置確定 K 個邊界框。 k個邊界框的形狀在實際訓練之前就已經設置好了。
以下等式計算損失。
L=1/N(L級+L箱)
其中,N:匹配框數,L 類:softmax loss,L 框:與匹配框相關的誤差。
2. 移動網絡
一個標準化的捲積被分解為一個卷積和一個逐點的捲積,即 1*1 的捲積。 通過因式分解減小模型大小,從而減少計算量。
3. Inception-SSD
Inception-SSD 與 MobileNet-SSD 具有相同的架構,但是,MobileNet-SSD 的架構基礎是 MobileNet,這裡是 Inception 模型。
4. 更快的 RCNN
目標位置的預測是基於區域提議算法。 通過 SSPnet 和 Fast R-CNN 的進步,檢測網絡減少了運行時間。 在 Faster RCNN 的情況下,當輸入圖像輸入神經網絡時,會生成捲積特徵圖。
然後通過卷積特徵圖識別區域提議並將其扭曲成正方形。 然後將正方形重新整形為通過 ROL 池化層(感興趣區域層)固定的大小。 然後將其用作完全連接的層的輸入。
softmax 層用於從 ROL 特徵向量預測區域建議類。 還預測邊界框偏移值。
對象檢測 TensorFlow 模型的選擇
可以根據用戶的具體要求從 TensorFlow API 中選擇合適的目標檢測 TensorFlow 模型。 如果用戶需要高速模型,可以使用單次檢測網絡,即SSD網絡。 該模型速度相當快,並且可以以高 fps 檢測視頻饋送。
但是,如果需要更高的精度,那麼 FasterRCNN 可能是更好的選擇,因為模型精度很高,但速度相對較慢。 因此,用戶可以根據自己的要求探索各種可用的機會。
用於對象檢測的 TensorFlow 示例
使用 TensorFlow API 進行對象檢測不需要機器學習或神經網絡的先驗知識。 API 提供的文件將主要使用。 唯一的要求是了解python的基礎知識。
1. 下載 TensorFlow
- TensorFlow 既可以通過 git 下載,也可以手動下載。
- 通過 git下載TensorFlow是最簡單的下載方式之一。 對於通過 git 下載,系統應該已經預先安裝了 git。 安裝 git 後,應在終端中鍵入以下命令。
- 必須訪問以下鏈接並單擊綠色按鈕。 必須下載並解壓縮壓縮文件。
- 該文件夾必須從 models-master 重命名為模型。
- 必須虛擬地創建一個環境。 創建 python 虛擬環境的主要目標之一是創建一個隔離的 python 環境。 它用於python下的項目。 因此,每個項目的依賴關係都會有所不同。
- 在 anaconda 的提示符下必須使用以下命令:
在這種情況下,虛擬環境被命名為 obj_detection
conda create -n obj_detection -> 用於虛擬設置環境
conda activate obj_detection -> 用於激活虛擬環境
2.安裝依賴
- API 所需的依賴項必須安裝在本地 PC 上。
- 激活虛擬環境後即可安裝依賴項。
- 應鍵入以下命令
點安裝張量流
- 如果存在 GPU,則需要以下命令
點安裝 tensorflow-gpu
- 其他依賴項將通過以下命令安裝
點安裝枕頭 Cython lxml jupyter matplotlib contextlib2 tf_slim
3. 下載協議緩衝區(Protobuff)
- 協議緩衝區是用於像 XML 一樣以串行方式構造數據的某些機制。
- 'Protobuff' 必須從鏈接下載。
- 提取文件並將文件複製到已下載的“models”文件夾中名為“research”的子文件夾中。
- 必須導航到包含 protobuf 文件的文件夾並運行以下命令
protoc object_detection/protos/*.proto –python_out=。
- 該命令的成功執行將針對模型文件夾中對象檢測下的 protos 文件夾中的每個 proto 文件創建一個 python 文件。
結論
目標檢測是一種廣泛應用於各種實時應用的技術。 我們了解到,該技術可以通過應用機器學習或深度學習算法來實現。
此外,隨著 API 的應用,即 TensorFlow,用戶需要具備 Python 編程概念的先驗知識。 只有這樣才能正確理解使用 TensorFlow API 的對象檢測方法。 TensorFlow 是一個用於機器學習的開源平台。 因此,要了解 TensorFlow 的工作機制及其應用,最好先了解機器學習的概念。
如果你是一名中級專業人士,想學習 Python 編程,部署 ML 模型和雲計算,可以查看upGrad提供的“機器學習與人工智能理學碩士”課程。 由IIIT Bangalore & LJMU聯合認證的課程將您的目標與專家培訓相結合,讓您為進入夢想中的公司做好準備。 你所需要的只是擁有學士學位。 如果對 upGrad 的課程有任何疑問,我們的協助團隊可以回复您。