“Word is useless, show me the pic” -MR Lu
先看下原圖:
圖片表述的是一男一女在散步,后面有一輛車,現(xiàn)在來看下我們通過十行代碼實現(xiàn)的效果:
我們可以看到,在這幅圖中其實有三個“person”被識別出來,包括后面非常非常小的行人,還有一個“car”被識別出來,可以說模型能力基本達(dá)到了人眼的能力。現(xiàn)在就來介紹如何把這個識別結(jié)果用10行python代碼實現(xiàn)。
代碼
既然代碼用得少,必然是站在了巨人的肩膀上去做事,需要安裝大量第三方庫。
1.需要首先用pip3安裝以下庫:
pip3 install numpy、scipy、opencv-python、pillow、matplotlib、h5py、keras、
注意:用到的是python3,有一些庫在國內(nèi)安裝很慢,可以使用豆瓣源
pip3 install 第三方庫名 -i https://pypi.doubanio.com/simple/ --trusted-host pypi.doubanio.com
2.然后要安裝用到的識別庫,名字叫imageai:
pip3 install https://github.com/OlafenwaMoses/ImageAI/releases/download/2.0.1/imageai-2.0.1-py3-none-any.whl
3.接著要下載訓(xùn)練好的模型,我們直接使用現(xiàn)成的模型做預(yù)測,模型地址(145MB):
https://github.com/OlafenwaMoses/ImageAI/releases/download/1.0/resnet50_coco_best_v2.0.1.h5
4.后來看看代碼:
from imageai.Detection import ObjectDetection
import os
execution_path = os.getcwd()
detector = ObjectDetection()
detector.setModelTypeAsRetinaNet()
detector.setModelPath( os.path.join(execution_path , "resnet50_coco_best_v2.0.1.h5"))
detector.loadModel()
detections = detector.detectObjectsFromImage(input_image=os.path.join(execution_path , "image3.jpg"), output_image_path=os.path.join(execution_path , "image3new.jpg"))
for eachObject in detections:
print(eachObject["name"] + " : " + eachObject["percentage_probability"] )
print("--------------------------------")
-
1
-
2
-
3
-
4
-
5
-
6
-
7
-
8
-
9
-
10
-
11
-
12
-
13
-
14
-
15
-
16
-
17
-
18
clone代碼地址:https://github.com/OlafenwaMoses/ImageAI
其中模型要跟代碼放到統(tǒng)一路徑下,image2.jpg是輸入圖片,image2new.jpg是輸出圖片。一共有效行數(shù)為10。運(yùn)行這個文件就會生成標(biāo)記好的圖片。
本站文章版權(quán)歸原作者及原出處所有 。內(nèi)容為作者個人觀點(diǎn), 并不代表本站贊同其觀點(diǎn)和對其真實性負(fù)責(zé),本站只提供參考并不構(gòu)成任何投資及應(yīng)用建議。本站是一個個人學(xué)習(xí)交流的平臺,網(wǎng)站上部分文章為轉(zhuǎn)載,并不用于任何商業(yè)目的,我們已經(jīng)盡可能的對作者和來源進(jìn)行了通告,但是能力有限或疏忽,造成漏登,請及時聯(lián)系我們,我們將根據(jù)著作權(quán)人的要求,立即更正或者刪除有關(guān)內(nèi)容。本站擁有對此聲明的最終解釋權(quán)。