一、项目工程
- 下载所需要的数据
- labeling编译器
- yolov4-pytorch-master
- 将找好的数据集图片存储到文件夹中,确保格式正确
- 用labeling编译器对图片进行标注,对识别的物体就行名称输入标注,熟知labeling的功能区域
2.数据量如果不够多,修改voc _annotation.py文件,将300改为100
3.更改训练次数,调整学习率、批次大小、训练轮数等超参数
UnFreeze_Epoch = 10
二、训练模型
1.修改coco_classes.txt,voc_classes.txt,predefined_classes.txt文件
2.运行voc_annotation.py,然后训练train.py 文件,进行标注的数据加载,训练参数等等,再运行yolo.py文件,检查类别所对应的txt文件,最后运行get_map文件,显示运行的类别比例。
三、评估性能
通过predict.py评估模型性能。predict.py 是在使用 YOLOv4 利用训练好的模型对新的、未见过的数据进行预测,并输出目标的位置和类别信息。
1.加载训练好的模型
2.配置预测参数
3.读取输入数据,可以读取批量图像,作为模型的输入。
4.进行前向传播:将输入数据通过模型进行前向传播,得到预测结果。这些预测结果通常包括目标的边界框坐标、类别以及对应的置信度。
5.对预测结果进行后处理
6.输出预测结果
四、实验中出现的报错问题
1.数据集存放的文件夹路径中不能存在空格,否则会影响模型训练,数据集标注的过程中,使用合适的标注工具,对图像中的目标进行边界框标注。确保每个目标都有一个准确的边界框,并标注其类别。将标注信息保存为YOLO格式
2.处理数据集格式转换:
如果你的标注工具输出的格式不是YOLO格式,需要进行数据集格式转换,需要编写一个脚本来转换标注数据,读取原始标注文件,并生成符合YOLO格式的文本文件。
3.检查是否存在同名文件,需更改
4.CUDA相关报错:
TypeError: can’t convert cuda:0 device type tensor to numpy:
这通常发生在尝试将CUDA设备上的张量直接转换为numpy数组时。解决方法是在转换之前,先将张量从CUDA设备转移到CPU上。可以在相应的函数中添加.cpu()调用,如tensor.cpu().numpy()。
5.路径或文件不存在:
确保所有使用的文件和路径都是存在的,并且具有正确的权限。
6.类别数据量要大,不能太少,否则难以识别,以下就是其原因