當前位置:
首頁 > 科技 > 10行代碼搞一個對象檢測系統!

10行代碼搞一個對象檢測系統!

作者簡介:Moses Olafenwa是AI Commons的深度學習和計算機視覺研究員及開發員。

計算機視覺是AI的重要領域之一。計算機視覺是指計算機和軟體系統可以識別並理解圖像和場景這門學科。計算機視覺還包括各個方面,比如圖像識別、對象檢測、圖像生成和圖像超解析度等。由於實際使用場景數量眾多,對象檢測可能是計算機視覺影響最深遠的一個方面。我在本文中將簡要介紹現代對象檢測這一概念、軟體開發人員面臨的挑戰、我的團隊提供的解決方案以及執行高性能對象檢測的代碼教程。

對象檢測是指計算機和軟體系統能夠確定圖像/場景中的對象,並識別每個對象。對象檢測已廣泛用於人臉檢測、車輛檢測、行人計數、互聯網圖像、安全系統和自動駕駛汽車。對象檢測應用於許多實際領域還有諸多方法。與另外每種計算機技術一樣,對象檢測的各種創造性、令人驚訝的用途肯定離不開計算機程序員和軟體開發人員的努力。

將現代對象檢測方法應用於應用程序和系統中,並且構建基於這些方法的新應用程序,這並非易事。對象檢測的早期實現需要使用經典演算法,比如OpenCV這種大受歡迎的計算機視覺庫中支持的演算法。然而,這些經典演算法無法獲得足以適用於不同情形的性能。

2012年深度學習迎來了突破,並迅速得到速採用,帶來了準確度很高的現代對象檢測演算法和方法(比如R-CNN、Fast-RCNN、Faster-RCNN和RetinaNet)以及速度快、準確度又高的演算法和方法(比如SSD和YOLO)。使用這些方法和演算法(它們基於深度學習,深度學習又基於機器學習),需要紮實的數學基礎,並且深入了解深度學習框架。數百萬的專家級計算機程序員和軟體開發人員想要集成和創建使用對象檢測的新產品。但由於了解並實際使用對象檢測很複雜,這項技術不在他們的享用範圍之內。

我的團隊幾個月前意識到了這個問題,這就是為什麼我和約翰?奧拉芬瓦(John Olafenwa)構建了ImageAI,這個Python庫讓程序員和軟體開發人員可以輕鬆地將最先進的計算機視覺技術集成到他們的新老應用程序中,只使用幾行代碼即可。

想使用ImageAI執行對象檢測,只需要做這幾步:

1.將Python安裝到你的計算機系統上。

2.安裝ImageAI及其依賴項。

3.下載對象檢測模型文件。

4.運行示例代碼(只有短短10行)。

現在咱們開始上手吧

1) 從Python官網下載並安裝Python 3。

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)通過該鏈接:https://github.com/OlafenwaMoses/ImageAI/releases/download/1.0/resnet50_coco_best_v2.0.1.h5

,下載將用於對象檢測的RetinaNet模型文件。

好了。你已安裝好了依賴項,可以準備編寫你的第一段對象檢測代碼了。創建一個Python文件,並取名(比如FirstDetection.py),然後往文件裡面編寫下列代碼。將RetinaNet模型文件和你想要檢測的圖像拷貝到含有python文件的文件夾。

FirstDetection.py

然後運行代碼,等結果在控制台輸出。一旦結果輸出到控制台,進入到你的FirstDetection.py所在的文件夾,會看到一個新的圖像已保存。看看下面2個圖像示例和檢測後保存的新圖像。

檢測前:

圖片來源:維基共享資源

檢測後:

上面圖像的控制台結果:

上面圖像的控制台結果:

人:63.53200078010559

現在不妨解釋這10行代碼是如何工作的。

在上面3行代碼中,我們在第一行導入了ImageAI對象檢測類,在第二行導入了python os類,在第三行定義了一個變數來保存python文件、RetinaNet模型文件和圖像所在的文件夾的路徑。

在上面2行代碼中,我們在第一行迭代detector.detectObjectsFromImage函數返回的所有結果,然後在第二行針對圖像中檢測到的每個對象,輸出對象的名稱和模型的百分比概率。在上面5行代碼中,我們在第一行中定義了對象檢測類,在第二行中將模型類型設置為RetinaNet,在第三行將模型路徑設置為RetinaNet模型的路徑,在第四行將模型載入到對象檢測類,然後在第五行調用檢測函數,並解析輸入圖像路徑和輸出圖像路徑。

ImageAI支持對象檢測過程的許多強大的定製。其中之一就是能夠提取圖像中檢測到的每個對象的圖像。只要將額外的參數extra_detected_objects = True解析到detectObjectsFromImage函數,如下所示,對象檢測類就可以為圖像對象創建一個文件夾,提取每個圖像,將每個圖像保存到新創建的文件夾,並返回含有每個圖像路徑的額外數組。

將它運用於第一個圖像,可以從結果看到一些圖像,如下所示:

所有行人的照片都被提取出來。我沒有包括所有照片,它們會佔用不必要的空間。

ImageAI為對象檢測任務提供了多得多的功能,可用於定製和生產級部署。一些支持的功能如下:

調整最小概率:默認情況下,檢測到概率百分比小於50的對象不會顯示或報告。你可以為很確定的情況提高該值,或者為需要檢測所有可能對象的情況降低該值。

自定義對象檢測:使用提供的CustomObject類,你可以讓檢測類報告針對一個或幾個獨特對象的檢測結果。

檢測速度:通過將檢測速度設置為「快速」、「更快」和「最快」,你可以縮短檢測圖像所花的時間。

輸入類型:你可以指定並解析圖像的文件路徑、Numpy數組或圖像的文件流作為輸入圖像。

輸出類型:你可以指定detectObjectsFromImage函數應該以文件或Numpy數組的形式返回圖像。

可以在官方GitHub代碼倉庫(https://github.com/OlafenwaMoses/ImageAI)上找到關於如何使用上述功能的詳細信息和說明文檔以及ImageAI所包含的其他計算機視覺功能。

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

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


請您繼續閱讀更多來自 雲頭條 的精彩文章:

Salesforce 開發出可同時執行 10 種任務的自然語言處理模型!
谷歌雲因重複分配 IP 地址……一大堆虛擬機癱瘓了

TAG:雲頭條 |