滴,技術貼~~~基於keras的yolov3的應用(非訓練篇)
我覺得最最最重要的是一定不要偷懶!
一定要用python3,一定要用python3,一定要用python3。
一定要基於python3,這是我的親身體驗,淚的教訓~~~基於python2.7跑基於keras的yolo3,到input image filename ,一直報錯,百度了各種錯誤,都沒解決,到現在也不知道該如何解決。這個問題卡了3小時,然後我就換成python3運行了,根本沒出錯,奧,我的天,兩分鐘的事兒,非要用3小時來明白。還偷懶麼~~~哭泣
1 基於darknet
這個實現起來比較容易,但是測試圖片時速度比較慢,可能我電腦配置不行,然後大概一張圖片30s的樣子。
這個博主寫的特別好,直接甩連結。基於darknet的yolov3安裝 這個跑到2.2.2都沒出錯。
終端命令
./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg
或者
./darknet detector test cfg/coco.data cfg/yolov3.cfg yolov3.weights data/dog.jpg
放一張我實現的圖片~
2.基於keras的yolo3網路
yoloV3主頁:https://pjreddie.com/darknet/yolo/
keras-yolo3程式碼:
1 安裝tensorflow,安裝keras。(詳細步驟百度吧,不推薦偷懶安裝法)
偷懶安裝法不可取。
安裝我就直接 在終端
sudo pip3 tensorflow
sudo pip3 keras
//有速度比較快的安裝命令,在我的另一篇博文中有提到。
這裡是用了源的,把命令列的最後 opencv-python 分別換成 tensorflow和keras就行。
2 下載權重引數,官網下載引數
或者直接在終端輸入
wget https://pjreddie.com/media/files/yolov3.weights
3 下載keras-yolov3
4 將第二步下載好的權重引數yolov3.weights放入到第三步下載的keras-yolov包中。
5 將.weights轉換為.h5檔案,輸入命令
python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5
在model_data資料夾中得到yolo.h5。
6.這樣就可以對自己的圖片 或視訊進行測試啦。
圖片測試,需要將yolo_video裡的第50行,把Faulse改成True。
輸入命令
python yolo_video.py
ps 帶python的命令得再.py檔案所在路徑中進行,找到檔案所在位置,右擊,open in the terminal。
因為在終端裡預設是用的python2.7,所以,出錯了。
然後,在輸入時應該加上' ',也就是'timg.jpeg' 這個問題解決了,但是會一直出另一個錯,不知道怎麼解決。
ValueError: height and width must be > 0(這個錯誤沒有百度到答案,花費了3小時,請各位道友繞坑而行,如果解決了,麻煩告訴我一下)
正確方式:然後我就在pycharm裡,執行yolo_video.py。把編譯器換成了python3。成功!
在這裡注意的是,輸入時只需要輸入 timg.jpeg 就行,不用加' '。
得到圖片效果:(測試這張圖片運行了4.29s)
這個圖片好搞笑,明明是四隻狗狗,愣是給識別出來了3只鳥。哈哈哈。
這個圖片效果還不錯~~~美滋滋~~~
視訊:(ps這個視訊我只是把方法放上了,還沒有試錯,因為opencv加視訊也容易因為格式問題什麼的出錯,手邊沒有.avi格式視訊,等我試成功,我會再編輯)
就把第50行,True改成False,預設就是False。
在終端執行命令:(或者直接在yolo_video.py 把視訊預設路經改成自己視訊路經,用pycharm python3 執行)
python yolo_video.py [video_path] [output_path(optional)]
錯誤總結:(在python2.7遇到的,也羅列一下,這裡是解決了的問題)
1 問題如圖:
解決辦法:在最上方加入
from _future_ import print_function
2 問題如圖:unicode argument expected ,got 'str'
解決辦法:
在游標所在處把StringIo 換成 BytesIo
不要問我為什麼,我也不知道~~~