10行代碼讓你輕鬆搞定對象檢測

摘要: 十行代碼輕鬆搞定對象檢測?快來看看如何使用ImageAI。

clipboard.png

計算機視覺是人工智能領域中最重要的一個分支。計算機視覺是一門可以識別和理解圖像及其場景的計算機軟件系統的科學。計算機視覺包括圖像識別、對象檢測、圖像生成、圖像超分辨率等多個方面。這其中有衆多實際案例的就是對象檢測,所以,對象檢測多是計算機視覺最有影響力的一個分支。本教程將簡要介紹現代對象檢測的概念、軟件開發人員所面臨的挑戰、咱們團隊提供的解決方案以及高性能對象檢測的代碼教程。python

對象檢測是指計算機和軟件系統在圖像或場景中對目標對象進行定位和識別的能力。在實際應用中,目標檢測已普遍用於人臉識別、車輛檢測、行人計數、網絡圖像、安全系統和無人駕駛。而且,目前有不少種方法可用於對象檢測。和其餘任何計算機技術同樣,對象檢測的各類創造性和驚人的用途,來自於開發人員的不懈努力。git

使用現代對象檢測方法、以及基於這些方法構建新的應用程序並非一個簡單的任務。早期的對象檢測大多使用經典算法,如計算機視覺庫OpenCV中的算法。然而,在不一樣的環境中,這些經典算法的性能並無達到咱們所指望的性能。github

2012年,深度學習有了新的突破,並被開發者普遍使用,出現了R-CNN、Fast-RCNN、Faster-RCNN、RetinaNet等現代高精度對象檢測算法(方法),以及SSD和YOLO等快速高精度對象檢測算法(方法)。要想使用這些基於深度學習(同時也基於機器學習)的算法進行對象檢測,開發人員則須要掌握大量的數學和深度學習框架的相關知識。有數百萬計的開發人員想要使用對象檢測來建立新的產品。可是,因爲深度學習技術理解和使用起來比較複雜,所以,這項技術很難掌握。算法

幾個月前,咱們就意識到了這一問題,我和John Olafenwa共同構建了ImageAI這個Python庫,利用ImageAI,僅僅使用幾行代碼,開發人員就能夠輕鬆地將最新的計算機視覺技術集成到現有的新應用程序中。數組

使用ImageAI進行對象檢測的步驟以下:安全

1.在系統上安裝Python。網絡

2.安裝ImageAI及其依賴項。框架

3.下載對象檢測模型文件。機器學習

4.運行示例代碼(10行)。函數

詳細步驟以下:

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

2.使用pip命令安裝如下依賴項:

(1)Tensorflow

命令:pip install tensorflow

(2)Numpy

命令:pip install numpy

(3)SciPy

命令:pip install scipy

(4)OpenCV

命令:pip install opencv-python

(5)Pillow

命令:pip install pillow

(6)Matplotlib

命令:pip install matplotlib

(7)H5py

命令:pip install h5py

(8)Keras

命令:pip install keras

(9)ImageAI

命令:pip installhttps://github.com/OlafenwaMo...

3.下載用於對象檢測的RetinaNet模型文件。

安裝好了依賴項,如今就能夠編寫第一個對象檢測代碼了:建立一個Python文件併爲其命名(如:FirstDetection.py),而後寫入代碼(以下圖所示)。並將RetinaNet模型文件和要檢測的圖像複製到包含python文件的文件夾中。

FirstDetection.py

clipboard.png

運行代碼,並將結果打印到控制檯,在FirstDetection.py所在的文件夾內,你就能找到保存的新圖像。 看看下面的2個圖像樣本和檢測後保存的新圖像。

對象檢測前:

clipboard.png

clipboard.png

對象檢測後:

clipboard.png

控制檯輸出結果:

人 : 55.8402955532074

人 : 53.21805477142334

人: 69.25139427185059

人: 76.41745209693909

自行車: 80.30363917350769

人 : 83.58567953109741

人: 89.06581997871399

貨車 : 63.10953497886658

人: 69.82483863830566

人: 77.11606621742249

公交車: 98.00949096679688

貨車 : 84.02870297431946

小汽車: 71.98476791381836

clipboard.png

控制檯輸出結果:

人: 71.10445499420166

人: 59.28672552108765

人: 59.61582064628601

人: 75.86382627487183

摩托車: 60.1050078868866

公交車: 99.39600229263306

小汽車 : 74.05484318733215

人: 67.31776595115662

人 : 63.53200078010559

人: 78.2265305519104

人: 62.880998849868774

人: 72.93365597724915

人: 60.01397967338562

人: 81.05944991111755

摩托車: 50.591760873794556

摩托車: 58.719027042388916

人: 71.69321775436401

自行車: 91.86570048332214

摩托車: 85.38855314254761

如今,咱們來看一下這10行代碼是如何運行的。

clipboard.png

如上圖所示,第一行導入了ImageAI對象檢測類,第二行導入了python os類,第三行定義了一個變量來保存python文件、RetinaNet模型文件和圖像所在的文件夾的路徑 。

clipboard.png

在上圖中的5行代碼中,第一行中定義了對象檢測類,第二行將模型類型設置爲RetinaNet,第三行將模型路徑設置爲RetinaNet模型的路徑,第四行將模型加載到對象檢測類,第五行調用檢測函數,並在輸入和輸出圖像路徑中分別進行解析。

clipboard.png

在上面的兩行代碼中,第一行將detector.detectObjectsFromImage函數返回的全部結果進行迭代,第二行打印出模型在每一個圖像上檢測出來的對象名稱和機率。

ImageAI支持對象檢測過程的定製,其中之一就是可以提取圖像中檢測到的每一個對象。以下所示,經過簡單地將extra_detected_objects = True設置爲detectObjectsFromImage函數的參數,對象檢測模型將爲檢測到的對象建立建立一個文件夾,提取每一個圖像,並將每一個圖像都保存到新建立的文件夾中,並返回一個包含每一個對象的數組。

clipboard.png

讓咱們來看第一張圖片的輸出結果:

clipboard.png

全部照片中的行人也被提取出來了,這裏我並無列出全部提取的行人。

ImageAI提供了更多有用的功能,可用於對象檢測任務的定製和生產功能部署,它所支持的功能以下:

1.調整最小几率閾值:默認狀況下,檢測的機率百分比小於50%的對象將不會顯示或輸出。ImageAI能夠爲高肯定性案例中提升該機率閾值;或者在須要檢測全部可能對象的狀況降低低該閾值。

2.自定義對象檢測:使用ImageAI提供的CustomObject類,你能夠告訴檢測類對一個或幾個惟一對象的檢測結果進行輸出。

3.檢測速度:能夠將檢測速度設置爲「快速」、「更快」和「最快」,能夠縮短檢測對象所需的時間。

4.輸入類型:你能夠指定圖像的文件路徑,指定圖像的Numpy數組或文件流做爲輸入圖像

5.輸出類型:你能夠指定detectObjectsFromImage函數將圖像以文件仍是以Numpy數組的形式返回。

你能夠在GitHub官方存儲庫中找到有關如何使用上述功能以及ImageAI中包含的其餘計算機視覺功能的全部詳細信息和文檔。

本文做者:【方向】
閱讀原文本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索