當前位置:
首頁 > 新聞 > 可應用的目標檢測代碼來了,一秒鎖定你

可應用的目標檢測代碼來了,一秒鎖定你

雷鋒網按:本文為雷鋒字幕組編譯的技術博客,原標題 Object Detection with 10 lines of code ,作者為 Moses Olafenwa 。

翻譯 | 於志鵬    校對 |  陳濤    整理 |  MY

計算機視覺是人工智慧的一個重要領域。計算機視覺是一門關於計算機和軟體系統的科學,可以讓計算機對圖像及場景進行識別和理解。計算機視覺還包括圖像識別、目標檢測、圖像生成、圖像超解析度重建等分支領域。因為有眾多的現實需求,目標檢測可能是計算機視覺中最有價值的的領域。在本教程中,我會簡要介紹目標檢測的概念、開發者面臨的挑戰和我們提供的解決方案包括高效率的目標檢測代碼。

在應用內或者系統中使用最新的目標檢測演算法很困難,同樣基於這些演算法構建新的應用也並非易事。早期的目標檢測使用的是傳統演算法,如 OpenCV(主流的計算機視覺庫)中提供的演算法,但是這些經典演算法在不同場景下表現的不是很穩定。

2012 年深度學習的突破和快速普及,為我們帶來了全新的高精確的目標檢測演算法和方法,如 R-CNN、Fast-RCNN、Faster-RCNN、RetinaNet 以及 SSD 和 YOLO 等快速而高度精確的目標檢測演算法。使用這些基於深度學習(同時也是基於機器學習)的演算法和方法,需要一定的數學及深度學習框架的基礎。目前有數百萬程序員和軟體開發人員致力於整合和開發使用目標檢測技術的新產品。不過由於這項技術過於複雜和艱深,你很難將演算法直接應用到實際開發中。

我們的團隊在幾個月前注意到了這個問題,所以我們和 John Olafenwa 共同開發了ImageAI,這是一個 python 庫,它允許程序員和軟體開發人員只用幾行代碼就能將最新的目標檢測演算法整合到自己的項目中。

使用 ImageAI 進行目標檢測時,需要以下步驟:

在當前系統上安裝 Python

安裝 ImageAI 和相關依賴包

下載目標檢測模型文件

運行樣例代碼 (只需 10 行)

讓我們開始開始吧。

在官方網站下載 Python3

https://python.org

2.用 pip 命令安裝以下依賴包:

i. Tensorflow

pip install tensorflow

ii. Numpy

pip install numpy

iii. SciPy

pip install scipy

iv. OpenCV

pip install opencv-python

v. Pillow

pip install pillow

vi. Matplotlib

pip install matplotlib

vii. H5py

pip install h5py

viii. Keras

pip install keras

ix. ImageAI

pip install

https://github.com/OlafenwaMoses/ImageAI/releases/download/2.0.1/imageai-2.0.1-py3-none-any.whl

 3. 下載目標檢測要用到的 RetinaNet 模型文件 link 。

很好!現在您已經安裝了依賴包,可以開始編寫第一個目標檢測的代碼了。創建一個 Python 文件並命名(例如 FirstDetection.py),然後將下面的代碼寫入其中。將 RetinaNet 模型文件和要檢測的圖像複製到包含 python 文件的文件夾。

FirstDetection.py

然後運行代碼並等待結果輸出到控制台。在結果顯示後,轉到 FirstDetection.py 所在的文件夾,您將找到保存的新圖像。請看下面的 2 個圖像樣例,代碼運行後將保存新圖像。

運行代碼前:

圖片來源:alzheimers.co.uk

圖片來源:Wikicommons

運行代碼後:

上圖的控制台結果:

person : 55.8402955532074

person : 53.21805477142334

person : 69.25139427185059

person : 76.41745209693909

bicycle : 80.30363917350769

person : 83.58567953109741

person : 89.06581997871399

truck : 63.10953497886658

person : 69.82483863830566

person : 77.11606621742249

bus : 98.00949096679688

truck : 84.02870297431946

car : 71.98476791381836

上圖的控制台結果:

person : 71.10445499420166

person : 59.28672552108765

person : 59.61582064628601

person : 75.86382627487183

motorcycle : 60.1050078868866

bus : 99.39600229263306

car : 74.05484318733215

person : 67.31776595115662

person : 63.53200078010559

person : 78.2265305519104

person : 62.880998849868774

person : 72.93365597724915

person : 60.01397967338562

person : 81.05944991111755

motorcycle : 50.591760873794556

motorcycle : 58.719027042388916

person : 71.69321775436401

bicycle : 91.86570048332214

motorcycle : 85.38855314254761

現在我來解釋一下這 10 行代碼是如何工作的。

在上面的 3 行代碼中,我們在第一行導入了 ImageAI 的目標檢測類,在第二行導入了 python 的 os 類。然後在第三行定義了一個變數來保存文件夾的路徑地址,該文件夾是我們用來保存 python 文件、RetinaNet 模型文件和圖像的。

在上面的 5 行代碼中,我們在第一行定義了一個目標檢測類的實例,在第二行將實例的模型類型設置為 RetinaNet,在第三行將實例的模型路徑設置為我們的 RetinaNet 模型文件所在的路徑,第四行將模型載入到目標檢測類的實例中,第五行我們調用檢測函數,並將文件輸入輸出路徑作為參數傳入。

在上面兩行代碼中,第一行用來對 detector.detectObjectsFromImage 函數返回的所有結果進行迭代,第二行用來輸出圖片中檢測到的每個目標的名字和概率。

ImageAI 還有很多強大的自定義功能。比如,可以將圖片中被檢測到的每個對象提取出來。只需要將參數 extract_detected_objects = True 傳入到 detectObjectsFromImage 函數中就可以實現,如下所示,目標檢測類將為圖像對象創建一個文件夾,提取每個檢測到的子圖像,將每個子圖像保存到創建的新文件夾中,並返回包含每個圖像路徑的數組。

我們將這個方法應用於第一張圖片,一些提取到的子圖如下:

所有行人的圖片都很好的提取了出來。為了節約空間這裡只顯示了一部分。

ImageAI 提供了許多有用的功能,可用於自定義的目標檢測任務和部署項目。支持的一些功能包括:

- 調整最小概率:默認情況下,檢測到概率百分比小於 50 的對象將不會顯示。你可以在需要高精度的場景提高此值,或者在需要檢測所有可能目標時減小此值。

- 自定義目標檢測:使用 CustomObject 類,您可以告訴檢測類檢測一個或多個獨立目標。

- 檢測速度:可以將檢測速度設置為「fast」,「faster」和「fastest」,來縮短檢測時間。

- 輸入類型:可以將輸入參數指定為圖像路徑,Numpy 數組或圖像文件流的類型。

- 輸出類型:可以指定 detectObjectsFromImage 函數返回圖像的方式是文件還是 Numpy 數組。

你可以在官方 GitHub 庫中找到上述功能以及 ImageAI 中其他計算機視覺功能的詳細信息和文檔。

https://github.com/OlafenwaMoses/ImageAI

如果你覺得這篇文章對你有所幫助或者你也對它感興趣的話,請點個贊。歡迎隨時與朋友同事分享。

如果您有任何疑問、建議、或想與我聯繫。請發送電子郵件至 guymodscientist@gmail.com。也可以通過我的 Twitter 賬號 @OlafenwaMoses 和 Facebook https://www.facebook.com/moses.olafenwa 與我聯繫。

原文鏈接:https://towardsdatascience.com/object-detection-with-10-lines-of-code-d6cb4d86f606

雷鋒網雷鋒網


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

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


請您繼續閱讀更多來自 雷鋒網 的精彩文章:

網速逆天,但5G面臨的安全壓力有多大你知道嗎?
傳統藍牙音箱舞台謝幕,超級藍牙音箱強勢破局

TAG:雷鋒網 |