tensorflow训练yolov3模型(检测雪人为例,自己的数据和标签,windows环境)

惯例先放效果

所有代码包含训练、测试图片视频打包在: 地址

 

下载代码:

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章