yolo-v3 tensorflow object detection训练自己的数据


最近看tensorflow的目标检测的yolo-v3模型,没法儿使用自己的数据进行训练测试。从GitHub中发现一个现成的 tensorflow-yolov3,作者是YunYang。现通过此框架,训练水果数据。

1. 快速开始

1.1 下载源码

git clone https://github.com/YunYang1994/tensorflow-yolov3.git

1.2 依赖package安装

进入tensorflow-yolov3-master目录

pip install -r ./docs/requirements.txt

安装目录里,看tensorflow是gpu版本,本人的训练环境不支持,所以用默认的cpu 1.15版本。其他包如果已存在,忽略即可。

1.3 运行示例demo

cd checkpoint
wget https://github.com/YunYang1994/tensorflow-yolov3/releases/download/v1.0/yolov3_coco.tar.gz
tar -xvf yolov3_coco.tar.gz
cd ..
python convert_weight.py #有的包可能没有包含在requirements.txt,且开发者环境中没有安装。根据错误提示,进行pip安装即可;我的缺少easydict
python freeze_graph.py

1)运行convert_weight.py的打印截图
在这里插入图片描述

得到pb模型文件(存在项目根目录),测试给定的图片,验证效果:

python image_demo.py
python video_demo.py # if use camera, set video_path = 0

在这里插入图片描述
在这里插入图片描述
与我自己用tensorflow自带模型ssd_mobilenet_v1_coco训练的数据,测试结果比,好。
在这里插入图片描述

2. 训练自己的数据(还是原作者的例子)

需求如下两个文件:

  • dataset.txt
xxx/xxx.jpg 18.19,6.32,424.13,421.83,20 323.86,2.65,640.0,421.94,20 
xxx/xxx.jpg 48,240,195,371,11 8,12,352,498,14
# image_path x_min, y_min, x_max, y_max, class_id  x_min, y_min ,..., class_id 
# make sure that x_max < width and y_max < height
  • class.names
person
bicycle
car
...
toothbrush

2.1 训练VOC数据集

1) 下载VOC PASCAL 训练集和测试集

$ wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
$ wget http://host.robots.ox.ac.uk/pascal/VOC/voc2012/VOCtrainval_11-May-2012.tar
$ wget http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar

2) 解压上面三个压缩包到新建的目录,并且重命名,内容包含如下结构

VOC           # path:  /home/yang/dataset/VOC;这个改成自己的目录即可
├── test
 |    └──VOCdevkit
 |        └──VOC2007 (from VOCtest_06-Nov-2007.tar)
└── train
     └──VOCdevkit
         └──VOC2007 (from VOCtrainval_06-Nov-2007.tar)
         └──VOC2012 (from VOCtrainval_11-May-2012.tar)
                     
$ python scripts/voc_annotation.py --data_path /home/yang/test/VOC  #改成自己的目录

3) 编辑core/config.py文件,确保有如下必要的配置

__C.YOLO.CLASSES                = "./data/classes/voc.names"
__C.TRAIN.ANNOT_PATH            = "./data/dataset/voc_train.txt"
__C.TEST.ANNOT_PATH             = "./data/dataset/voc_test.txt"

作者提供了两种训练方式:
(1) train from scratch

$ python train.py
$ tensorboard --logdir ./data

(2) train from COCO weights(作者推荐)

$ cd checkpoint
$ wget https://github.com/YunYang1994/tensorflow-yolov3/releases/download/v1.0/yolov3_coco.tar.gz
$ tar -xvf yolov3_coco.tar.gz
$ cd ..
# 如果已经执行过,上面的可以略过,直接进行如下操作
$ python convert_weight.py --train_from_coco
$ python train.py

2.2 VOC 数据集评估

$ python evaluate.py
#评估前,需要修改已经训练的模型文件。core/config.py
#__C.TEST.WEIGHT_FILE            = "./checkpoint/yolov3_test_loss=7.7447.ckpt-32"
$ cd mAP
$ python main.py -na

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值