以下是根据文档分析得出的使用YOLO建立和实现识别数据的步骤:
1. 环境搭建
- 选择操作系统:使用CentOS 7.0系统,它是Linux发行版之一,具有稳定性高、免费等特点,适合本次项目。
- 安装OpenCV工具 :OpenCV是一个跨平台计算机视觉库,通过
sudo yum install opencv
命令进行安装,它提供了图像处理和计算机视觉方面的很多通用算法以及相关API。 - 安装CUDA开发环境
- 首先确认计算机有Nvidia显卡,然后查看系统内核版本、确认编译器
gcc
已安装,并安装Kernel-header
和kernel-devel
,且版本需和内核版本一致。 - 关闭开源的3D驱动Nouveau,创建
/etc/modprobe.d/blacklist - nouveau.conf
文件并写入相关内容,重新生成内核initramfs
,重启计算机后进入命令提示符模式,使用root
用户登录并进入多用户模式,然后执行./cuda_8.0.61_375.26_linux - run
命令安装CUDA(本次实验使用runfile安装方式),安装过程中选择安装CUDA工具箱、CUDA例子等,最后将CUDA加入到环境变量中并重启计算机。
- 首先确认计算机有Nvidia显卡,然后查看系统内核版本、确认编译器
- 项目目录结构及编译
- 使用
git clone https://github.com/pjreddie/darknet
下载项目源代码,然后进入项目目录cd darknet
并执行make
命令进行编译。编译完成后,项目包含cfg
配置文件存放目录、data
数据存放目录、examples
C语言测试用例、include
darknet头文件、python
Python测试用例、scripts
训练中用到的辅助脚本、src
项目源代码、darknet
编译后产生的可执行文件以及一些模块配置和函数文件。
- 使用
2. 训练数据采集与制作
- 训练数据采集
- 确定训练的目标种类,本次实验是水果识别,包括WaterMelon、StrawBerry、Orange、Pineapple、Apple共5种,每种收集约30 - 40张图片,总共171张,图片从百度图片下载,分辨率一般在400*300像素左右,按照5位数字从00000递增命名并放在一个文件夹中。
- 训练数据制作
- 下载并编译安装
LabelImg
软件,使用它给171张水果图片标记对象位置和名称,标记完成后每张图片会生成一个记录对象名称和位置的xml
文件。 - 按照VOC数据集的格式创建文件夹结构,包括
VOCdevkit
、VOC2017
、Annotations
(存放xml
文件)、ImageSets
(包含Main
文件夹,其中train.txt
保存全部图片位置信息)以及labels
文件夹。 - 使用项目自带的
voc_label.py
脚本将xml
格式转换成YOLO所需的label
文件,打开脚本修改数据集年份、要识别的对象种类名称以及xml
文件存放位置等信息,运行脚本后会生成labels
文件,其中每个文件内容第一项是水果编号,后面4项是标记对象在图片中的位置比例。
- 下载并编译安装
3. 训练配置
- 创建
cfg/myd.names
文件,包含5种水果的名称,每行一个,顺序需与前面python
脚本中配置的一致。 - 创建
cfg/myd.data
文件,包含要识别的对象的种类个数(5)、train.txt
文件位置、myd.names
文件位置以及生成的训练权重文件位置。 - 复制一份
cfg/yolo.cfg
文件,命名为yolo - myd.cfg
,编辑这个文件,主要修改文件末尾region
层中classes
为5,同时修改region
层上一层convolution
层的filters
值为50(根据公式(classes + coords + 1)* (NUM)
计算,此次试验中具体数据为(5 + 4 + 1)*5 = 50
)。
4. 训练过程
执行./darknet detector train./cfg/myd.data cfg/yolo - myd.cfg
命令开始训练,训练过程中会打印训练进度信息,包括加载时间、区域平均交并比(Region Avg IOU)、类别准确率(Class)、目标置信度(bj)、无目标置信度(No 0bj)、平均召回率(Avg Recall)等,并且每5分钟生成一次训练数据文件到backup_myd/yolo - myd.backup
,同时分阶段生成训练权重,如yolo - myd_100.weights
,yolo - myd_200.weights
等。
5. 测试训练效果
训练完成后,使用./darknet detector test cfg/myd.data cfg/yolo - myd.cfg backup_myd/yolo - myd_50000.weights testimg/apple.jpg
命令检测训练结果,查看识别的准确性。