Tensorflow YOLO代码解析(1)

YOLO (You Only Look Once:Unified,Real-Time Object Detection) 提出了一种实时端到端的目标检测算法,之前写过一份关于YOLO论文的解读,可供参考。本篇通过一个Tensorflow的例子对YOLO的实现源代码进行解析。下面所涉及到的相关完整代码放在github:YOLO代码解析完整代码。

下面进入正题,本篇主要介绍代码的总览和使用。
其他相关的部分请见:
YOLO代码解析(1) 代码总览与使用
YOLO代码解析(2) 数据处理
YOLO代码解析(3) 模型和损失函数
YOLO代码解析(4) 训练和测试代码

代码的目录结构如下:
tensorflow-yolo/
├── cat.jpg
├── conf/
│ └── train.cfg
├── data/
├── demo.py
├── demo_video.py
├── models/
│ ├── pretrain/
│ └── train/
├── README.md
├── tools/
│ ├── preprocess_pascal_voc.py
│ └── train.py
└── yolo/
├── dataset/
│ ├── dataset.py
│ ├── init.py
│ └── text_dataset.py
├── init.py
├── net/
│ ├── init.py
│ ├── net.py
│ ├── yolo_net.py
│ └── yolo_tiny_net.py
├── solver/
│ ├── init.py
│ ├── solver.py
│ └── yolo_solver.py
└── utils/
├── init.py
└── process_config.py

代码主要有五个文件夹 conf/, models/, data/, tools/, yolo/ ,主要内容和用途分别为:
conf: 用于存放模型训练相关的配置参数;
data: 用于存放训练数据;
models: 用于存放预训练的模型文件和训练产生的模型文件;
tools: 用于存放训练样本预处理脚本和模型训练脚本;
yolo: 主要代码存所在文件夹,包含dataset,net,utils和solver四个模块,分别用于数据集处理,网络和Loss定义,网络训练和配置文件解析功能。
demo.py和demo_video.py为分别使用图片和视频进行测试的demo脚本。

训练数据和预训练模型:
训练数据: PASCAL VOC2007
train_dev:http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtrainval_06-Nov-2007.tar
test:http://host.robots.ox.ac.uk/pascal/VOC/voc2007/VOCtest_06-Nov-2007.tar

预训练模型: yolo_tiny
https://drive.google.com/file/d/0B-yiAeTLLamRekxqVE01Yi1RRlk/view?usp=sharing

模型训练
1.下载训练数据,解压后到data文件夹,最终目录结构如下:
./data
└── VOCdevkit/
└── VOC2007/
├── Annotations/
├── ImageSets/
│ ├── Layout/
│ ├── Main/
│ └── Segmentation/
├── JPEGImages/
├── SegmentationClass/
└── SegmentationObject/
2.下载预训练模型,放置到models/pretrain/ 文件夹下
3. 对训练数据进行预处理

$python tools/preprocess_pascal_voc.py

执行完成后会在data/目录下生成一个pascal_voc.txt文件,每一行包含一条训练数据的图片存放路径,bbox坐标和类别id
4.执行训练脚本

$python tools/train.py -c conf/train.cfg

模型测试

$python demo.py

如果想要使用自己的图片制作训练数据,可以使用labelImage进行图片标注。

下一篇:YOLO代码解析(2) 数据处理

你可能感兴趣的:(Object,Detection)