教你如何在樹莓派上實現(xiàn)深度學(xué)習目標檢測
這個現(xiàn)實世界造成了很多挑戰(zhàn),比如數(shù)據(jù)有限、只有微型的計算機硬件(像手機、樹莓派)所造成的無法運行復(fù)雜深度學(xué)習模型等。這篇文章演示了如何使用樹莓派來進行目標檢測。就像路上行駛的汽車,冰箱里的橘子,文件上的簽名和太空中的特斯拉。
免責聲明:我正在建設(shè)?nanonets.com 來幫助使用很少的數(shù)據(jù)和沒有計算機硬件的情況下構(gòu)建機器學(xué)習模型。
如果你很迫切,請直接下拉到這篇文章的底部進入Github的倉庫。
在孟買的公路上檢測車輛
為什么是目標檢測?為什么是樹莓派?
樹莓派是一款靈活的計算機硬件,它以1500萬臺的銷量已經(jīng)吸引了一代消費者的心,并且黑客們也在樹莓派上構(gòu)建了很多很酷的項目??紤]到深度學(xué)習和樹莓派相機的的流行,我們認為如果能在樹莓派上使用深度學(xué)習來檢測任意的物體那就非常棒了。
現(xiàn)在你可以檢測到你的自拍照里的照片炸彈,有人進入到Harambe的籠子里,哪里有辣椒醬或者亞馬遜的快遞員進入到你的房子里。
什么是目標檢測?
2000萬年的進化使得人類的視覺系統(tǒng)有了相當高的進化。人腦有30%的神經(jīng)元負責處理視覺信息(相對比只有8%處理觸覺和3%處理聽覺)。與機器相比,人類有兩個主要的優(yōu)勢。一是立體視覺,二是訓(xùn)練數(shù)據(jù)集的供應(yīng)幾乎是無限的(一個五歲的嬰兒可以大約在30fps的采樣間隔獲得2.7B的圖像數(shù)據(jù))。
為了模仿人類水平的表現(xiàn),科學(xué)家將視覺感知任務(wù)分解為四個不同的類別。
1.分類,為圖像指定一個標簽。
2.定位,對特定的標簽指定一個邊框。
3.物體檢測,在圖像中繪制多個邊框。
4.圖像分割,得到物體在圖像中的精確位置區(qū)域。
物體檢測對于很多應(yīng)用已經(jīng)足夠好(圖像分割是更精確的結(jié)果,它受到了創(chuàng)建訓(xùn)練數(shù)據(jù)復(fù)雜性的影響。相比于畫邊框它通常花費人類標注者12倍的時間去分割圖像。)此外,在檢測物體之后,可以將物體在邊框中單獨分割出來。
使用物體檢測:
目標檢測具有重要的現(xiàn)實意義,已經(jīng)在各行各業(yè)得到了廣泛應(yīng)用。下面列舉了一些例子:
我怎樣使用物體檢測解決自己的問題?
物體檢測可以用于解決各種各樣的問題。這些是一個概括的分類:
1.物體是不是出現(xiàn)在我的圖像中?比如在我的房子有一個入侵者。
2.在圖像中的一個物體在哪個位置?比如一個汽車試圖在世界各地導(dǎo)航時,知道物體的位置就很重要。
3.圖像中有多少個物體?物體檢測是計算物體數(shù)目最有效的方法之一。比如倉庫的貨架上有多少個盒子。
4.圖像中有哪些不同類型的物體?比如動物園的哪些區(qū)域有哪些動物?
5.物體的尺寸有多大?特別是使用靜態(tài)的相機,很容易計算出物體的大小。比如芒果的大小是多少。
6.物體之間是如何相互作用的?比如在足球場上的隊形是如何影響比賽結(jié)果的?
7.物體在不同時間的位置(跟蹤一個物體)?比如跟蹤一個像火車一樣的物體并且計算它的速度。
在 20 行代碼內(nèi)完成物體檢測
YOLO算法的可視化
有多種用于物體檢測的模型或結(jié)構(gòu)。每一個都在速度、尺寸和精確度之間權(quán)衡。我們選擇了最流行的一個:YOLO(You only look once),并且展示它如何以20行代碼(忽略注釋)進行工作。
注意:這是偽代碼,不是一個可直接工作的實例。它有一個非常標準的CNN構(gòu)成的黑箱,如下圖所示:
YOLO中使用卷積神經(jīng)網(wǎng)絡(luò)的體系結(jié)構(gòu)代碼小于20行,如下:
如何建立目標檢測的深度學(xué)習模型?
深度學(xué)習的工作流程有6個基本步驟,分為了三個部分:
1. 收集訓(xùn)練集
2. 訓(xùn)練模型
3. 預(yù)測新圖像