背景
本文原先基于百度的AIstudio训练,但是五月份的时候百度停止了对tensorflow框架的支持,所以以下仅作为参考。
百度AiStudio训练yolov3模型
AiStudio分为work和data两个文件夹,work保留永久文件,data每次重启都不会保存
因此将我们需要的代码、数据集和安装包都先打包成数据集上传,启动项目前添加数据集。
以下是我的使用步骤:
本教程前置工作
需要安装好Anaconda、tensorflow-gpu、keras、keras-yolo3目录和keras-yolo3目录下的VOCdevkit目录和logs/000目录。
安装Anaconda
这里选用miniconda,因为每次重启系统都要解压文件,原版太大了不好。在官网上下载Linux64位的版本。启动系统后,从/data/dataXXX目录中复制到/work/conda3目录,用bash miniconda.sh安装。路径不要选择默认路径,选择~/work下的目录。
bash ~/work/Miniconda3.sh
source ~/work/conda3/bin/activate
安装tensorflow-gpu
注意这里不要换用清华源,清华的cuda最高版本为8.0,而我们需要10.0
conda install python=3.6
conda insntall tensorflow-gpu==1.14.0
pip install keras==2.1.5
pip install Pillow
pip install matplotlib
conda install ffmpeg
pip install opencv-contrib-python
建立VOC格式目录
VOCdevkit
└── VOC2007
├── Annotations
├── ImageSets
│ ├── Layout
│ ├── Main
│ └── Segmentation
├── JPEGImages
└── labels
上传数据集
这里把kears-yolo3代码和自己处理好的jpeg图片以及xml上传为数据集,并在自己的项目中选择这个数据集。
PS.可以提前将jpeg图片文件夹名字改为JPEGImages,xml文件夹名称改为Annotations,使用时直接复制过去就好。
- 从/data/dataXXX目录中解压到/data目录
cp ~/data/dataxxx/data.zip ~/data
ls
unzip data.zip
- 移动到keras-yolo3/VOCdevkit对应子目录下
cd ~/data
mv JPEGImage ~/work/keras-yolo3/VOCdevkit/VOC2007/
mv Annotations ~/work/keras-yolo3/VOCdevkit/VOC2007/
数据集划分
在VOC2007目录内新建python脚本,将数据集划分为训练集和测试集。
代码见从零开始配置yolov3(keras)训练测试自己的数据中的第三节。
cd ~/work/keras-yolo3/VOCdevkit/VOC2007
python create_ImageSets.py
生成2017train等文件
运行keras-yolo3下的voc_annotation.py文件,这时主目录下会出现2007为前缀的几个文件。
cd ~/work/keras-yolo3
python voc_annotation.py
修改anchors
运行kmeans.py文件,将model_data中的yolo_anchors.txt文件修改成刚才输出的数据。
修改bacth
修改train.py中的batch_size。总共有两处,最好改成2,过大可能会报错。epoch按需修改,大概loss可以降至17到30。
运行代码
python train.py
使用训练后的模型
将/logs/000下的trained_weights_final.h5
移动到model_data下,修改名字成yolo.h5
文件画图导出
修改yolo.py和yolo_vedio.py文件,改成下面github仓库里对应的文件。代码见下:keras-yolo3
运行下面的代码可以生成图片对应的txt预测结果,去掉--txt则生成识别的图片。
python yolo_video.py --imgdir ~/work/keras-yolo3/imagetest --txt
最后从指定的文件夹中,使用左边的可视界面下载到本机即可。
查看训练过程
本机安装Anaconda和tensorflow,使用命令tensorboard --logdir=C:UsersXXXDesktoplogs
,
在浏览器上运行http://localhost:6006/
即可查看