YOLO代码解析(1)
YOLO (You Only Look Once:Unified,Real-Time Object Detection) 提出了一种实时端到端的目标检测算法,之前写过一份关于YOLO论文的解读,可供参考。本篇通过一个Tensorflow的例子对YOLO的实现源代码进行解析。下面所涉及到的相关完整代码放在github:YOLO代码解析完整代码。 本例的源代码来自github,对作者的开源分享表示感谢。
下面进入正题,本篇主要介绍代码的总览和使用。
其他相关的部分请见:
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) 数据处理
上一篇: android XML 解析代码
推荐阅读
-
php中使用parse_url对网址进行解析的实现代码parse_url详解
-
php xml分析函数代码第1/2页
-
【CloudXNS教您几招】如何让多ip域名配置游刃有余?(1) 域名解析智能dns线路多ip
-
通过dom4j解析xml字符串(示例代码)
-
Java实现SHA1加密代码实例
-
Discuz550代码高亮显示+运行代码框合成插件 下载第1/4页
-
ORA-00600: 内部错误代码, 参数: [evapls1], [], [], [], [], [], [], []
-
解析引起PHP代码错误的情况分析_PHP教程
-
MySQL (C API)VC实例及代码下载 (1)(2)
-
在java中使用dom4j解析xml(示例代码)