欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

YOLO代码解析(1)

程序员文章站 2022-06-21 16:25:48
...

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) 数据处理