Last Updated on 2021-05-12 by Clay
需要事先聲明,這篇文章的教學是從: https://towardsdatascience.com/object-detection-with-10-lines-of-code-d6cb4d86f606 這個網站所學習的。大家也可以直接去那個網站學習。
另外,這裡是開發員的 Github,我已經非常敬仰地獻上我的 Star XD
https://github.com/OlafenwaMoses/ImageAI?source=post_page-----d6cb4d86f606----------------------
由於這個工具實在是太好用了,故我還是寫下了這篇心得,來闡述該怎麼使用這個 Python 的套件。
基本上就像原文所宣傳的一樣,只要安裝好基本的相關套件,接下來呼叫 ImageAI 進行影像辨識的程式碼幾乎不到十行。
而這個套件最棒的是,它的運算速度非常、非常地快。以往我對影像處理當中物體辨識的部份有印象的便是 Yolov3、SSD 這些經典的模型。而這些模型想當然都必須要使用 GPU,只使用 CPU 運算的速度,天哪,簡直無法想像。
但 ImageAI 只用 CPU 運算卻很快、非常快。(當然,可能是因為我們直接使用他們訓練好的模型,後面它還有另外一個章節告訴我們,要重新訓練他們的模型進行物體辨識,還是需要使用 GPU,並且我似乎有看到 Yolov3 的字樣 XD)
那麼,以下開始說明我怎麼使用這個方便的套件。
下載 Dependencies
需要事先注意的是, Tensorflow 裝 1.4 (含以後) 的版本比較好,不需要升級到 2.0,不過開發者有提到 2.0 的支援 Coming Soon,值得期待。
sudo pip3 install opencv-python
sudo pip3 install pillow
sudo pip3 install numpy
sudo pip3 install scipy
sudo pip3 install matplotlib
sudo pip3 install h5py
sudo pip3 install tensorflow==1.14
sudo pip3 install keras
最後,當然還要安裝最重要的:
sudo pip3 install imageai
如果有沒辦法運行 ImageAI 這個套件的時候,還請去開發者的 Github 或是 Medium 上的教學文確認版本,我想應該能順利解決掉問題。
另外,我們還要下載開發者提供的 pre-trained 模型。將模型儲存到程式要運行的地方吧。
為了測試模型的效果,故不打算使用開發者提供的圖片,我便隨便 Google 找到了這張圖片。(抱歉我人比較機車 XDD)
我也將這張圖片儲存在程式碼的同一層資料夾中,取名為 test.jpg
程式碼
# -*- coding: utf-8 -*- import os from imageai.Detection import ObjectDetection detector = ObjectDetection() detector.setModelTypeAsRetinaNet() detector.setModelPath('resnet50_coco_best_v2.0.1.h5') detector.loadModel() detections = detector.detectObjectsFromImage(input_image='test.jpg', output_image_path='test_new.jpg') for eachObject in detections: print('{}:{}'.format(eachObject['name'], eachObject['percentage_probability']))
Output:
car:54.42100763320923
car:61.10377311706543
person:58.36105942726135
motorcycle:54.96629476547241
motorcycle:50.44354200363159
person:57.037585973739624
bus:66.54394865036011
car:65.67930579185486
car:54.16930913925171
car:56.64970874786377
car:72.12932705879211
car:68.234783411026
car:64.10300731658936
car:58.10954570770264
car:63.097649812698364
car:53.60064506530762
car:64.27150964736938
car:66.74740314483643
car:58.199405670166016
car:58.271121978759766
person:63.879597187042236
person:59.48329567909241
car:76.3867735862732
car:80.26036024093628
car:84.88558530807495
car:81.44459128379822
car:86.51140332221985
person:54.11458611488342
car:96.40277624130249
person:50.599128007888794
motorcycle:54.92902398109436
person:66.21726155281067
car:92.68029928207397
car:95.23538947105408
car:67.5695538520813
car:89.36827182769775
car:97.36456871032715
car:99.09504652023315
Before:
After:
速度非常快!程式碼也相當精簡,強力向各位有這種需求的開發員推薦這個 RetinaNet 封裝的 Python Package。
請問嘗試在Python IDLE上運行程式碼的時候
出現using tensorflow backend 的一系列error
這種情況該怎麼解決
上網找過很多資料了
請問您的報錯訊息是什麼?方便貼上來看看嗎?
您好 謝謝回覆
以下是我的報錯訊息 已截圖上傳imgur
https://imgur.com/yIhTEKM
如果網址不能用請再告訴我
謝謝
嗯…抱歉,像這樣的錯誤我也沒有經驗。
不過在 StackOverflow 上有找到一個推薦的作法: https://stackoverflow.com/questions/60157335/cant-pip-install-tensorflow-msvcp140-1-dll-missing
不知道您的 Python 版本是否為 3.7 呢?StackOverflow 上有個建議為將 Python 改裝為 3.6 版本,並在 3.6 上安裝 Tensorflow。
雖然我聽聞了 Tensorflow 現在也已經支持了 3.7 的版本,不過一直以來,我確實都是使用 3.6 版本的 Python 在撰寫程式的,體感上大部分的套件都是在 Python 3.6 比較穩定。
謝謝 我試著用連結裡的方法把msvcp140_1.dll弄好了
雖然還是有錯誤 但錯誤變少了
https://imgur.com/oTpUQAV
我的python版本是3.8
我會再嘗試看看3.6版
哈哈,恭喜。
現在這個報錯我想我大概知道是什麼意思 —— 這個套件 imageai 目前還是不支援 tensorflow 2.0 以後的版本的,而您的 tensorflow 看起來似乎是 2.0 的版本。
以下是 ImageAI Github 上的說法。
可以考慮先移除現有的 tensorflow 版本,使用 “pip3 install tensorflow==1.14.0” 來安裝 1.14 版本的 tensorflow。
謝謝 目前已全部解決了
python 3.8 不讓我安裝舊版tensorflow
我依照建議安裝了3.6版的python就可以正常運行了
測試結果
https://imgur.com/Nw0DvX6
真的非常感謝
哈哈,那太好了。
再次恭喜囉。
您好! 想請問 他說我的 tensorflow could not find a version that satisfies the requirement
想請問是怎麼回事呢?
我已經將我的python 改裝成3.6的版本了
還是說是Anaconda的版本 也有關係呢?
你好。
除了 Python 版本之外也要注意 tensorflow 的版本哦。
不知道是否方便提供更多資訊呢?