現在網上能找到的博客我現在看起來很明白,雖然講的很詳細,但是對於幾天前的我真的看不明白,因爲新手會遇到各種各樣毫無徵兆的問題,所以我決定寫一篇面向新手的如何去使用 yolo 和如何去做自己的數據集來訓練屬於自己的模型。因爲我也是新手,所以不說原理,只談操作方法。
2020/5/30:
近日每天都有十幾個很明顯的小號加羣,而且有的大號進羣竟然打廣告和賣不良物品,經我和羣友討論後,加羣需要1元錢,但是進羣后我會將錢退還給大家,只是爲了過濾一些不好的人。
因爲東西很雜,我會把小東西分出去寫,並且在本文中附上鍊接。
一、準備工作
1、事件前言:
簡單介紹下情況,本人本科二年級,機器學習小白,操作系統:windows10
前陣子用 matlab 做圖像識別項目時發現了 yolov3 算法,覺得很有意思,但是無奈當時還沒有基於matlab 的版本(聽說現在有了),所以就用 python 運行,我的電腦裏有 python_3.7、anaconda_3.6、pycharm。
有心人應該可以發現我大概幾天前的博客都是在凌晨一點發的,當時幾乎每天都弄到凌晨三點多去配置環境(新手運行報錯的原因幾乎都是版本的兼容性問題)。
不過經過三天左右的時間,我解決了無窮多的報錯之後,終於把 yolo 在 anaconda 和 pycharm 中成功運行,而且在昨晚 10:30分 成功訓練出了自己標註的數據集的模型。
所以在接下來的幾天,我會站在新手的層面上解釋我使用 yolo 的過程。
2、需要的文件:
1、yolov3源代碼:github_keras-yolo3
2、權重文件:官網_yolov3.weights (點擊直接下載)或者 我的百度網盤文件 鏈接:
https://pan.baidu.com/s/1YD5dtSrEkcBO0PRHO7eLlw
提取碼:1uub
3、python 或 anaconda 或 pycharm
注意:版本需要在3.7以下,3.7版本不支持 tensflow 的庫
3、python的環境配置:
很多的庫之間都會存在兼容性問題,如果你運行中出現的報錯不常見,或者一個錯誤接着一個錯誤,那麼八成是配置的庫存在兼容性問題,把庫的版本換了就行
下面介紹一下重要的需要配置的庫的版本:
庫名稱 | 版本 |
---|---|
tensorflow-gpu | 2.1.0 |
keras | 2.2.4 |
tensorflow (可有可無) | 1.12.0 |
Pillow | 5.1.0 |
matplotlib | 2.2.2 |
ffmpeg | 1.4 |
opencv | opencv-contrib-python |
建議使用鏡像源下載,下載的方法可以參照我的這篇博文:
anaconda 配置 yolov3 環境(該文章中的版本也可以,但是最好換成我上面表格中寫的)
大家也可以看下我的 python 的各個庫的配置:python絕對兼容的庫配置——機器學習
(建議大家保留一份,萬一哪天不小心改了一個庫的版本,很可能就會導致一系列的問題,這裏的版本不存在兼容性問題)
.
.
二、正式開始yolo之旅
1、用官方權重識別圖像
接下來先教大家去用官方的權重文件 yolov3.weights
去識別圖像
先用 pycharm 或 spyder 打開 keras-yolo3 文件夾,用 pycharm 或 spyder 是爲了看文件夾更方便,直接在 anaconda 裏運行也是可以的
這裏用 pycharm 先演示一下:
打開文件後是這樣的。
1、我們將下載的 yolov3.weights 文件放在 keras-yolo3-master 文件夾下:
2、把 yolov3.weights 文件轉換成 keras 適用的 h5 文件
首先點擊左下方的 Terminal (和IDLE一個功能,就是命令行)
輸入 python convert.py yolov3.cfg yolov3.weights model_data/yolo.h5
等待一會。。。直到命令行顯示 Saved Keras model to model_data/yolo.h5
就可以看到文件夾的 model_data 中多了個 yolo.h5 文件
3、在文件夾下添加一個啓動 yolo 函數的代碼
在文件夾下新建一個py文件,我取名爲 yolostart.py
,代碼如下:
from yolo3.model import yolo_body
from keras.layers import Input
from yolo import YOLO
from PIL import Image
yolo = YOLO()
while True:
img = input('Input imagename:')
try:
image = Image.open(img)
except:
print('Open Error!')
continue
else:
rel_image = yolo.detect_image(image)
rel_image.show()
yolo.close_session()
4、在文件夾下新建名爲 img 的文件夾,裏面放想要進行識別的圖片
5、運行 yolostart.py
運行 yolostart.py 文件
提示:Input imagename:
現在輸入想要識別的圖片的文件路徑,這裏我輸入 img/q.jpg(識別 img 文件夾下名爲 q 的 jpg 格式的圖片)
成功識別出圖上人物
現在運行人數較多的圖片試一下:
2、訓練自己的數據集模型
time:3/22
這篇先發,我學校的作業還沒寫,
我先把作業寫了,再回來補下面的東西
。。。
見諒
Time:2020/3/23/22:19
我回來啦:
介於訓練自己的數據集模型比這篇文章的兩倍還要長,我就將它化爲一篇文章來寫了,很詳細,均是我剛剛親自一步步操作的,有任何問題均可以提出
文章鏈接:keras-yolov3目標檢測訓練自己的模型詳解
總結:
文章中有任何問題都可以直接評論,我一般都在
趁着我剛剛解決好多的報錯,腦子裏還有記憶的時候趕快問,我怕我時間久了沒法回答你們一些很生僻的報錯了。。。