YOLOv3目标检测有了TensorFlow实现,可用自己的数据来训练

2019 年 1 月 12 日 量子位
方栗子 发自 凹非寺 
量子位 报道 | 公众号 QbitAI

 来自YOLOv3原作者

YOLOv3,快如闪电,可称目标检测之光。

PyTorch实现教程去年4月就出现了,TensorFlow实现一直零零星星。

现在,有位热心公益的程序猿 (Yunyang1994) ,为它做了纯TensorFlow代码实现。

这份实现,支持用自己的数据训练模型。

介绍一下

TensorFlow实现,包含了以下部分:

· YOLOv3架构

· 权重转换器 (Weight Converter)

· 基础版Demo

· GPU和CPU上都支持非极大抑制 (Non-Maximum Suppression)

· 训练pipeline

· COCO mAP计算

 来自YOLOv3原作者

快速开始

四个步骤,速速上车。

1.复制这个文件:

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

2.在食用代码前,先安装一些依赖项:

1$ cd tensorflow-yolov3
2$ pip install -r ./docs/requirements.txt

3.把加载好的COCO权重导出为TF checkpoint (yolov3.ckpt) 和 frozen graph (yolov3_gpu_nms.pb) 。

如果你没有yolov3.weights的话,去下载,然后放到./checkpoint目录下。下载地址是:

https://github.com/YunYang1994/tensorflow-yolov3/releases/download/v1.0/yolov3.weights

1$ python convert_weight.py --convert --freeze

4.然后,./checkpoint目录下就会出现一些.pb文件。现在可以跑Demo脚本了:

1$ python nms_demo.py
2$ python video_demo.py # if use camera, set video_path = 0

 来自YOLOv3原作者

拿自己的数据集训练

快速训练

这个Demo就是给大家一个粗略的感受,感受YOLOv3的训练过程到底是怎样的。

python core/convert_tfrecord.py把你的图集转成TFRecords。

1$ python core/convert_tfrecord.py --dataset /data/train_data/quick_train_data/quick_train_data.txt  --tfrecord_path_prefix /data/train_data/quick_train_data/tfrecords/quick_train_data
2$ python quick_train.py  # start training

训练COCO数据集

如果还没下载COCO2017数据集,请前往:

http://cocodataset.org/

再把数据集放到./data/train_data/COCO里面。

1$ cd data/train_data/COCO
2$ wget http://images.cocodataset.org/zips/train2017.zip
3$ unzip train2017.zip
4$ wget http://images.cocodataset.org/annotations/annotations_trainval2017.zip
5$ unzip annotations_trainval2017.zip

然后,就要从数据集里提取一些有用的信息了,比如边界框,拿这些信息生成你自己的.txt文件。

1$ python core/extract_coco.py --dataset_info_path ./data/train_data/COCO/train2017.txt

 来自YOLOv3原作者

上面这步得到的文件是./data/train_data/COCO/train2017.txt。拿一张图举栗,应该长这样:

1As a result, you will get ./data/train_data/COCO/train2017.txt. Here is an example row for one image:
2
3/home/yang/test/tensorflow-yolov3/data/train_data/train2017/000000458533.jpg 20 18.19 6.32 424.13 421.83 20 323.86 2.65 640.0 421.94
4/home/yang/test/tensorflow-yolov3/data/train_data/train2017/000000514915.jpg 16 55.38 132.63 519.84 380.4
5# image_path, category_id, x_min, y_min, x_max, y_max, category_id, x_min, y_min, ...

接下来,要把图像数据集转成.tfrecord,就是用二进制来保存数据。最后,可以训练啦。

1$ python core/convert_tfrecord.py --dataset ./data/train_data/COCO/train2017.txt  --tfrecord_path_prefix ./data/train_data/COCO/tfrecords/coco --num_tfrecords 100
2$ python train.py

COCO评估

如果要看一下模型在COCO上的表现,就这样做:

1$ cd data/train_data/COCO
2$ wget http://images.cocodataset.org/zips/test2017.zip
3$ wget http://images.cocodataset.org/annotations/image_info_test2017.zip 
4$ unzip test2017.zip
5$ unzip image_info_test2017.zip

 来自YOLOv3原作者

“我今年没干啥”

YOLO系列的作者,是华盛顿大学两位画风奇崛的研究人员,一个叫Joseph Redmon,一个叫Ali Farhadi。

去年3月YOLOv3发布,两位在论文里是这样描述这项成果的:

我今年基本没做啥研究,净刷推特了,也玩了一小会儿GAN。去年还剩一点动力没用完,就给YOLO更了个新。没什么特别有意思的东西,一些细小的改动而已。

 Introduction满分

但严肃地说,速度是v3最主要的提升。一般来讲,YOLOv3比R-CNN快1000倍,比Fast R-CNN快100倍。

有一些人啊,看起来常年不做正事,但还是能拿出精彩的成果。

还有一些人呢……

YOLOv3 TensorFlow实现传送门:
https://github.com/YunYang1994/tensorflow-yolov3

(早就出了的) YOLO v3 PyTorch教程传送门:
https://github.com/ayooshkathuria/YOLO_v3_tutorial_from_scratch

加入社群

量子位AI社群开始招募啦,欢迎对AI感兴趣的同学,在量子位公众号(QbitAI)对话界面回复关键字“交流群”,获取入群方式;


此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。


进专业群请在量子位公众号(QbitAI)对话界面回复关键字“专业群”,获取入群方式。(专业群审核较严,敬请谅解)

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

喜欢就点「好看」吧 !



登录查看更多
19

相关内容

YOLO是快速的端到端的目标检测深度网络

知识荟萃

精品入门和进阶教程、论文和代码整理等

更多

查看相关VIP内容、论文、资讯等
专知会员服务
53+阅读 · 2020年3月16日
《强化学习—使用 Open AI、TensorFlow和Keras实现》174页pdf
专知会员服务
136+阅读 · 2020年3月1日
一网打尽!100+深度学习模型TensorFlow与Pytorch代码实现集合
TensorFlow 2.0 学习资源汇总
专知会员服务
66+阅读 · 2019年10月9日
Opencv+TF-Slim实现图像分类及深度特征提取
极市平台
16+阅读 · 2019年8月19日
训练目标检测模型只需要这 6 行代码
AI科技评论
8+阅读 · 2019年8月19日
用PyTorch做物体检测和追踪
AI研习社
12+阅读 · 2019年1月6日
Github 项目推荐 | 用 PyTorch 0.4 实现的 YoloV3
AI研习社
9+阅读 · 2018年8月11日
Github 项目推荐 | YOLOv3 的最小化 PyTorch 实现
AI研习社
25+阅读 · 2018年5月31日
风格迁移原理及tensorflow实现-附代码
机器学习研究会
19+阅读 · 2018年3月25日
如何用TensorFlow和TF-Slim实现图像标注、分类与分割
北京思腾合力科技有限公司
21+阅读 · 2017年11月24日
深度学习入门篇--手把手教你用 TensorFlow 训练模型
全球人工智能
4+阅读 · 2017年10月21日
Arxiv
7+阅读 · 2020年3月1日
Mesh R-CNN
Arxiv
4+阅读 · 2019年6月6日
Arxiv
7+阅读 · 2018年1月24日
Arxiv
4+阅读 · 2016年12月29日
VIP会员
相关资讯
Opencv+TF-Slim实现图像分类及深度特征提取
极市平台
16+阅读 · 2019年8月19日
训练目标检测模型只需要这 6 行代码
AI科技评论
8+阅读 · 2019年8月19日
用PyTorch做物体检测和追踪
AI研习社
12+阅读 · 2019年1月6日
Github 项目推荐 | 用 PyTorch 0.4 实现的 YoloV3
AI研习社
9+阅读 · 2018年8月11日
Github 项目推荐 | YOLOv3 的最小化 PyTorch 实现
AI研习社
25+阅读 · 2018年5月31日
风格迁移原理及tensorflow实现-附代码
机器学习研究会
19+阅读 · 2018年3月25日
如何用TensorFlow和TF-Slim实现图像标注、分类与分割
北京思腾合力科技有限公司
21+阅读 · 2017年11月24日
深度学习入门篇--手把手教你用 TensorFlow 训练模型
全球人工智能
4+阅读 · 2017年10月21日
相关论文
Arxiv
7+阅读 · 2020年3月1日
Mesh R-CNN
Arxiv
4+阅读 · 2019年6月6日
Arxiv
7+阅读 · 2018年1月24日
Arxiv
4+阅读 · 2016年12月29日
Top
微信扫码咨询专知VIP会员