使用Python中的ImageAI進(jìn)行對象檢測
原文鏈接:http://tecdat.cn/?p=8578
?
介紹
對象檢測是一種屬于計算機(jī)視覺領(lǐng)域的技術(shù)。它處理識別和跟蹤圖像和視頻中存在的對象。物體檢測具有多種應(yīng)用,例如面部檢測,車輛檢測,行人計數(shù),自動駕駛汽車,安全系統(tǒng)等。
對象檢測的兩個主要目標(biāo)包括:
識別圖像中存在的所有對象
篩選出關(guān)注的對象
在本文中,您將看到如何在Python中執(zhí)行對象檢測。
用于對象檢測的深度學(xué)習(xí)
深度學(xué)習(xí)技術(shù)已被證明可解決各種物體檢測問題。
我們將了解ImageAI的確切含義以及如何使用它執(zhí)行對象檢測。
圖像AI
ImageAI是一個Python庫,旨在使開發(fā)人員能夠使用幾行簡單的代碼來構(gòu)建具有獨(dú)立的深度學(xué)習(xí)和計算機(jī)視覺功能的應(yīng)用程序和系統(tǒng)。ImageAI包含Python實現(xiàn)的幾乎所有最新的深度學(xué)習(xí)算法,例如TinyYOLOv3。
ImageAI利用了幾種脫機(jī)工作的API-它具有對象檢測,視頻檢測和對象跟蹤API,無需訪問互聯(lián)網(wǎng)即可調(diào)用它們。ImageAI利用了預(yù)先訓(xùn)練的模型,可以輕松地進(jìn)行定制。
設(shè)置環(huán)境
要使用ImageAI,您需要安裝一些依賴項。第一步是在計算機(jī)上安裝Python。
TensorFlow
pip install tensorflow
OpenCV
pip install opencv-python
pip install keras
pip install imageAI
現(xiàn)在下載TinyYOLOv3模型文件,該文件包含將用于對象檢測的分類模型。
使用ImageAI執(zhí)行對象檢測
現(xiàn)在,讓我們看看如何實際使用ImageAI庫。我將逐步解釋如何使用ImageAI構(gòu)建第一個對象檢測模型。
第1步
我們的第一個任務(wù)是創(chuàng)建必要的文件夾。對于本教程,我們需要以下文件夾:
對象檢測:根文件夾
模型:存儲預(yù)先訓(xùn)練的模型
輸入:存儲要在其上執(zhí)行對象檢測的圖像文件
輸出:存儲帶有檢測到的對象的圖像文件
創(chuàng)建文件夾后,Object detection
文件夾應(yīng)包含以下子文件夾:
├── input
├── models
└── output
3 directories, 0 files
第2步
打開用于編寫Python代碼的首選文本編輯器,然后創(chuàng)建一個新文件detector.py
。
第三步
ObjectDetection
從ImageAI庫導(dǎo)入類。
from imageai.Detection import ObjectDetection
第四步
現(xiàn)在,您已經(jīng)導(dǎo)入了imageAI庫和ObjectDetection
該類,下一步是創(chuàng)建該類的實例ObjectDetection
,如下所示:
detector = ObjectDetection()
第5步
讓我們從輸入圖像,輸出圖像和模型指定路徑。
model_path = "./models/yolo-tiny.h5"
input_path = "./input/test45.jpg"
output_path = "./output/newimage.jpg"
第6步
我們現(xiàn)在可以從該類中調(diào)用各種函數(shù)。該類包含以下功能調(diào)用預(yù)先訓(xùn)練模式:setModelTypeAsRetinaNet()
,setModelTypeAsYOLOv3()
,和setModelTypeAsTinyYOLOv3()
。
就本教程而言,我將使用預(yù)訓(xùn)練的TinyYOLOv3
模型,因此,我們將使用該setModelTypeAsTinyYOLOv3()
函數(shù)加載模型。
detector.setModelTypeAsTinyYOLOv3()
步驟7
接下來,我們將調(diào)用函數(shù)setModelPath()
。此函數(shù)接受一個字符串,其中包含預(yù)訓(xùn)練模型的路徑:
detector.setModelPath(model_path)
步驟8
此步驟loadModel()
從detector
實例中調(diào)用函數(shù)。它使用setModelPath()
類方法從上面指定的路徑加載模型。
detector.loadModel()
步驟9
要檢測圖像中的對象,我們需要detectObjectsFromImage
使用detector
在上一節(jié)中創(chuàng)建的對象來調(diào)用函數(shù)。
此函數(shù)需要兩個參數(shù):input_image
和output_image_path
。input_image
是我們正在檢測的圖像所在的路徑,而output_image_path
參數(shù)是將圖像與檢測到的對象一起存儲的路徑。此函數(shù)返回一個字典,其中包含圖像中檢測到的所有對象的名稱和百分比概率。
detection = detector.detectObjectsFromImage(input_image=input_path, output_image_path=output_path)
第10步
可以通過遍歷字典中的每個項目來訪問字典項目。
for eachItem in detection:
print(eachItem["name"] , " : ", eachItem["percentage_probability"])
?
在輸出中,您可以看到每個檢測到的對象的名稱及其百分比概率,如下所示:
輸出
car ?: ?54.72719073295593
car ?: ?58.94589424133301
car ?: ?62.59384751319885
car ?: ?74.07448291778564
car ?: ?91.10507369041443
car ?: ?97.26507663726807
car ?: ?97.55765795707703
person ?: ?53.6459743976593
person ?: ?56.59831762313843
person ?: ?72.28181958198547
原始圖片:
原始圖像“ test45”如下所示:

?
帶有對象檢測的圖像:
檢測到對象后,生成的圖像如下所示:

?
可以看到ImageAI在圖像中成功識別了汽車和人員。
結(jié)論
對象檢測是最常見的計算機(jī)視覺任務(wù)之一。本文通過示例說明如何使用ImageAI庫在Python中執(zhí)行對象檢測。
?

參考文獻(xiàn)
1.使用opencv在python中進(jìn)行圖像處理的簡介
2.matlab中的偏最小二乘回歸(plsr)和主成分回歸(pcr)
3.matlab中使用vmd變分模態(tài)分解
4.matlab使用hampel濾波去除異常值
5.matlab使用經(jīng)驗?zāi)J椒纸鈋md-對信號進(jìn)行去噪
6.matlab中的偏最小二乘回歸(plsr)和主成分回歸(pcr)
7.matlab使用copula仿真優(yōu)化市場風(fēng)險
8.r語言高級圖像處理
9.matlab實現(xiàn)mcmc的馬爾可夫切換arma-garch模型估計