一、数据集准备
在开始训练之前,需要先收集一些图片并标注一个适用于目标检测模型的数据集。
本次标注工具使用LabelImg。
先将需要训练的图片放入项目的文件夹里,如下所示。
我们可以使用一些标注工具手动绘制边界框并指定类别标签,确保每个目标类别都有准确的边界框标注,完成数据的标注工作。
标注实图所示:
完成一张图片的标注后,将标注信息保存为一个XML文件。存放地址如图所示。
二、环境搭建
由于训练数量大,训练速度非常慢,这里需要安装GPU加速库——CUDA。
将过程中所涉及到的相关教程放在下面。原教程以YOLOv5为例,本次是基于YOLOv4,就相应的改变一下即可。
ps:在我千辛万苦安好CUDA之后才发现学校的电脑没有GPU,全部作废。所以请在进行这一部之前检查你所使用的电脑是否有GPU。
三、代码准备
本次采用的代码为学校老师提供的代码。
对原始代码需要改动的地方如下:
改动1:根据自己需要训练的图片数量改动UnFreeze_Epoch的值,此处是训练100张即对应改成100即可。
改动2:
在model_data中的voc_classes.txt文件中加入标注的标签,如本次标注是eyebrow后面的。
ps:此处应该把其他的删除只留下自己的,不然出来的可能会有问题。
改动完后运行voc_annotation.py。
四、开始训练
上述操作结束完就可以开始训练了,允许train.py,这是一个很漫长的过程,本次训练了100张用了四个多小时,被锁在教学楼里面差点回不去...
最后得出结果:
研究过一些其他人的教程,多训练几次可以提高准确率,所以条件允许的情况下可以多训练几次提高准确率。