Yolov-1-TX2上用YOLOv3训练自己数据集的流程(VOC2007-TX2-GPU)
Yolov--3--TensorRT中yolov3性能优化加速(基于caffe)
yolov-5-目标检测:YOLOv2算法原理详解
yolov--9--YOLO v3的剪枝优化
yolov--10--目标检测模型的参数评估指标详解、概念解析
yolov--12--YOLOv3的原理深度剖析和关键点讲解
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
$ python convert_weight.py --convert --freeze
4.然后,./checkpoint目录下就会出现一些.pb文件。现在可以跑Demo脚本了:
$ python nms_demo.py
$ python video_demo.py # if use camera, set video_path = 0
输入python nms_demo.py 后有错误:
=> nms on gpu the number of boxes= 3 time=148777.94 ms
=> nms on gpu the number of boxes= 3 time=1442.57 ms
=> nms on gpu the number of boxes= 3 time=886.59 ms
=> nms on gpu the number of boxes= 3 time=889.83 ms
=> nms on gpu the number of boxes= 3 time=882.56 ms
Traceback (most recent call last):
File "nms_demo.py", line 40, in
image = utils.draw_boxes(img, boxes, scores, labels, classes, [IMAGE_H, IMAGE_W], show=True)
File "/home/qhy/tensorflow-yolov3/core/utils.py", line 167, in draw_boxes
font = ImageFont.truetype(font = font, size = np.floor(2e-2 * image.size[1]).astype('int32'))
File "/usr/local/lib/python3.6/dist-packages/PIL/ImageFont.py", line 280, in truetype
return FreeTypeFont(font, size, index, encoding, layout_engine)
File "/usr/local/lib/python3.6/dist-packages/PIL/ImageFont.py", line 136, in __init__
if core.HAVE_RAQM:
File "/usr/local/lib/python3.6/dist-packages/PIL/ImageFont.py", line 40, in __getattr__
raise ImportError("The _imagingft C module is not installed")
ImportError: The _imagingft C module is not installed
解决:
1 如果你的虚拟环境里安装了Pillow,最好先卸载掉
pip uninstall Pillow PIL
2 安装以下包(相关的就这几个包)
sudo apt-get install freetype-devel libjpeg-devel libpng-devel zlib1g-dev
或者
apt-get install libjpeg-dev
apt-get install libfreetype6-dev
apt-get install zlib1g-dev
apt-get install libpng12-dev
3 在虚拟环境里再安装Pillow
pip install Pillow
这个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
如果还没下载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文件。
$ python core/extract_coco.py --dataset_info_path ./data/train_data/COCO/train2017.txt
上面这步得到的文件是./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,就是用二进制来保存数据。最后,可以训练啦。
$ python core/convert_tfrecord.py --dataset ./data/train_data/COCO/train2017.txt --tfrecord_path_prefix ./data/train_data/COCO/tfrecords/coco --num_tfrecords 100
$ python train.py
如果要看一下模型在COCO上的表现,就这样做:
$cd data/train_data/COCO
$wget http://images.cocodataset.org/zips/test2017.zip
$wget http://images.cocodataset.org/annotations/image_info_test2017.zip
$unzip test2017.zip
$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原作者
YOLOv3 TensorFlow实现传送门:
https://github.com/YunYang1994/tensorflow-yolov3
(早就出了的) YOLO v3 PyTorch教程传送门:
https://github.com/ayooshkathuria/YOLO_v3_tutorial_from_scratch
参考:
https://mp.weixin.qq.com/s/cq7g1-4oFTftLbmKcpi_aQ
https://blog.csdn.net/dqchouyang/article/details/51490064
https://github.com/tensorflow/tensorboard/blob/master/README.md