10行代码让你轻松搞定对象检测
摘要:??十行代碼輕松搞定對象檢測?快來看看如何使用ImageAI。
?
計算機視覺是人工智能領域中最重要的一個分支。計算機視覺是一門能夠識別和理解圖像及其場景的計算機軟件系統的科學。計算機視覺包括圖像識別、對象檢測、圖像生成、圖像超分辨率等多個方面。這其中有眾多實際案例的就是對象檢測,因此,對象檢測可能是計算機視覺最有影響力的一個分支。本教程將簡要介紹現代對象檢測的概念、軟件開發人員所面臨的挑戰、我們團隊提供的解決方案以及高性能對象檢測的代碼教程。
對象檢測是指計算機和軟件系統在圖像或場景中對目標對象進行定位和識別的能力。在實際應用中,目標檢測已廣泛用于人臉識別、車輛檢測、行人計數、網絡圖像、安全系統和無人駕駛。并且,目前有很多種方法可用于對象檢測。和其他任何計算機技術一樣,對象檢測的各種創造性和驚人的用途,來自于開發人員的不懈努力。
使用現代對象檢測方法、以及基于這些方法構建新的應用程序并不是一個簡單的任務。早期的對象檢測大多使用經典算法,如計算機視覺庫OpenCV中的算法。然而,在不同的環境中,這些經典算法的性能并沒有達到我們所期望的性能。
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/OlafenwaMoses/ImageAI/releases/download/2.0.1/imageai-2.0.1-py3-none-any.whl
3.下載用于對象檢測的RetinaNet模型文件。
安裝好了依賴項,現在就可以編寫第一個對象檢測代碼了:創建一個Python文件并為其命名(如:FirstDetection.py),然后寫入代碼(如下圖所示)。并將RetinaNet模型文件和要檢測的圖像復制到包含python文件的文件夾中。
FirstDetection.py
?
運行代碼,并將結果打印到控制臺,在FirstDetection.py所在的文件夾內,你就能找到保存的新圖像。 看看下面的2個圖像樣本和檢測后保存的新圖像。
對象檢測前:
?
?
對象檢測后:
?
控制臺輸出結果:
人?: 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
?
控制臺輸出結果:
人: 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行代碼是如何運行的。
?
如上圖所示,第一行導入了ImageAI對象檢測類,第二行導入了python os類,第三行定義了一個變量來保存python文件、RetinaNet模型文件和圖像所在的文件夾的路徑 。
?
在上圖中的5行代碼中,第一行中定義了對象檢測類,第二行將模型類型設置為RetinaNet,第三行將模型路徑設置為RetinaNet模型的路徑,第四行將模型加載到對象檢測類,第五行調用檢測函數,并在輸入和輸出圖像路徑中分別進行解析。
?
在上面的兩行代碼中,第一行將detector.detectObjectsFromImage函數返回的所有結果進行迭代,第二行打印出模型在每個圖像上檢測出來的對象名稱和概率。
ImageAI支持對象檢測過程的定制,其中之一就是能夠提取圖像中檢測到的每個對象。如下所示,通過簡單地將extra_detected_objects = True設置為detectObjectsFromImage函數的參數,對象檢測模型將為檢測到的對象創建創建一個文件夾,提取每個圖像,并將每個圖像都保存到新創建的文件夾中,并返回一個包含每個對象的數組。
?
讓我們來看第一張圖片的輸出結果:
?
?
所有照片中的行人也被提取出來了,這里我并沒有列出所有提取的行人。
ImageAI提供了更多有用的功能,可用于對象檢測任務的定制和生產功能部署,它所支持的功能如下:
1.調整最小概率閾值:默認情況下,檢測的概率百分比小于50%的對象將不會顯示或輸出。ImageAI可以為高確定性案例中提高該概率閾值;或者在需要檢測所有可能對象的情況下降低該閾值。
2.自定義對象檢測:使用ImageAI提供的CustomObject類,你可以告訴檢測類對一個或幾個唯一對象的檢測結果進行輸出。
3.檢測速度:可以將檢測速度設置為“快速”、“更快”和“最快”,可以縮短檢測對象所需的時間。
4.輸入類型:你可以指定圖像的文件路徑,指定圖像的Numpy數組或文件流作為輸入圖像
5.輸出類型:你可以指定detectObjectsFromImage函數將圖像以文件還是以Numpy數組的形式返回。
原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。
總結
以上是生活随笔為你收集整理的10行代码让你轻松搞定对象检测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 人工智能与大数据的完美结合
- 下一篇: NLP深度学习:近期趋势概述(一)