慣例先放效果
所有代碼包含訓練、測試圖片視頻打包在: 地址
下載代碼:
git clone https://github.com/YunYang1994/tensorflow-yolov3
或者點此下載壓縮包
環境配置:
配置了conda自然很方便
conda create -n yolov3 python=3.6
y
conda activate yolov3
cd 下載路徑/tensorflow-yolov3
pip install -r ./docs/requirements.txt
沒有也沒關係(只要你不怕環境亂)
cd tensorflow-yolov3
pip install -r ./docs/requirements.txt
測試環境是否正常(可跳過)
下載預訓練結果(coco)
下載,並解壓到checkpoint目錄
https://github.com/YunYang1994/tensorflow-yolov3/releases/download/v1.0/yolov3_coco.tar.gz
如果你用的linux,那也可以命令的方式
cd checkpoint
wget https://github.com/YunYang1994/tensorflow-yolov3/releases/download/v1.0/yolov3_coco.tar.gz
tar -xvf yolov3_coco.tar.gz
cd ..
轉化coco預訓練文件成pb文件
python convert_weight.py
python freeze_graph.py
運行看看(應該沒問題了)
python image_demo.py
python video_demo.py # if use camera, set video_path = 0
=======環境沒問題,下面正式開始訓練=====
數據準備:
一堆圖片(這裏只有五百張左右)
圖片對應的標籤:(可以考慮labelme之類的工具手動標註)
格式:圖片路徑(空格)矩形框左上和右下角座標(空格)標籤(空格)下一個矩形框位置+標籤
label.name裏存儲和標籤對應的名字,例如這裏就只有一個snowman,剛剛標籤裏也只有0
修改配置
修改./core/config.py裏的配置路徑
__C.YOLO.CLASSES = "./label.names"
__C.TRAIN.ANNOT_PATH = "./yolo_snowman_train.txt"
__C.TEST.ANNOT_PATH = "./yolo_snowman_test.txt"
顯存不夠的同學可以適當減少訓練batch大小(__C.TRAIN.BATCH_SIZE )
訓練
從coco數據集預訓練結果進行遷移學習:
python convert_weight.py --train_from_coco
python train.py
如果數據量夠,不想從頭訓練,直接
python train.py即可
開始訓練:
tensorboard看一下效果:
tensorboard --logdir=./data
瀏覽器打開 http://localhost:6006/#scalars
很穩妥
實測
挑選一個合適的訓練文件以及修改輸出pb文件名字運行freeze_graph.py
pb_file = "./snowman.pb"
ckpt_file = "./checkpoint/yolov3_test_loss=3.2343.ckpt-37"
python snowman_test.py
效果如圖:(沒錯,和一開始的不是同一段,哈哈哈)
提前祝大家聖誕節快樂,233
雪人數據來源:
https://www.learnopencv.com/training-yolov3-deep-learning-based-custom-object-detector/
代碼來源:
https://github.com/YunYang1994/tensorflow-yolov3