【人工智能】使用yolov7和youlov8以及re-detr模型实现安全帽检测

该博客围绕目标检测展开实验,使用PaddleX库对yolov3、yolov7、yolov8、rt - detr四种模型训练。yolov7和yolov8效果不佳放弃,rt - detr表现较好但分数仍不高,yolov3初步训练效果好。后续以yolov3为基础优化,通过骨干网络替换、图像缩放等操作提升了模型精度。

1 问题描述

数据集共包括40000张训练图像和1000张测试图像,每张训练图像对应 xml标注文件:
在这里插入图片描述

共包含3类:0:‘head’, 1:‘helmet’, 2:‘person’ 提交格式要求,提交名为pred_result.txt的文件:每一行代表一个目标,每一行内容分别表示 图像名 置信度 xmin ymin xmax ymax 类别
![[Pasted image 20240113144435.png]]

2 数据准备

2.1 数据加载

解压项目提供的数据:

!unzip  /home/aistudio/data/data126280/HelmetDetection.zip -d /home/aistudio

更改文件位置:

%cd /home/aistudio
%mv data/data126280/helmet/train/annotations work/dataset/Annotations
%mv data/data126280/helmet/train/images work/dataset/JPEGImages

文件目录结构如下:

dataset/                          dataset/
  ├── annotations/      -->         ├── Annotations/
  ├── images/                       ├── JPEGImages/

2.2 数据预处理

训练数据预处理和增强操作:

  1. MixupImage:
    • mixup_epoch=-1:应用 Mixup 数据增强,这是一种通过混合两个图像来生成新的训练样本的技术。mixup_epoch=-1 表示在所有训练周期中都应用 Mixup。
  2. RandomDistort:
    • 随机扭曲图像,增加训练数据的多样性。
  3. RandomExpand:
    • 随机扩展图像,通过填充值 [123.675, 116.28, 103.53] 进行填充。有助于增加模型对输入图像边界的鲁棒性。
  4. RandomCrop:
    • 随机裁剪图像,增加训练数据的多样性。
  5. RandomHorizontalFlip:
    • 随机水平翻转图像,增加训练数据的多样性。
  6. BatchRandomResize:
    • 随机调整图像尺寸,可选择多个目标尺寸 [320, 352, 384, 416, 448, 480, 512, 544, 576, 608],并使用随机的插值方法。
  7. Normalize:
    • 将图像进行标准化,使用均值 [0.485, 0.456, 0.406] 和标准差 [0.229, 0.224, 0.225] 进行归一化。
train_transforms = T.Compose([
    T.MixupImage(mixup_epoch=-1), T.RandomDistort(),
    T.RandomExpand(im_padding_value=[123.675, 116.28, 103.53]), T.RandomCrop(),
    T.RandomHorizontalFlip(), T.BatchRandomResize(
        target_sizes=[320, 352, 384, 416, 448, 480, 512, 544, 576, 608],
        interp='RANDOM'), T.Normalize(
            mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])

eval_transforms = T.Compose([
    T.Resize(
        target_size=480, interp='CUBIC'), T.Normalize(
            mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])
])

划分训练集和验证集的比例为:0.85:0.15

!paddlex --split_dataset --format voc --dataset_dir /home/aistudio/work/dataset --val_value 0.15

得到文件:
labels.txt,val_list.txt,train_list.txt
定义训练集和验证集:

train_dataset = pdx.datasets.VOCDetection(
    data_dir='/home/aistudio/work/dataset',
    file_list='/home/aistudio/work/dataset/train_list.txt',
    label_list='/home/aistudio/work/dataset/labels.txt',
    transforms=train_transforms
### 模型结合原理 将 YOLOv8n RT-DETR 模型进行结合是一种创新性的技术融合,旨在提升目标检测的性能与灵活性。YOLOv8n 以其高效的实时检测能力著称,而 RT-DETR 作为一种基于 Transformer 的检测方法,提供了更为全面深入的特征理解能力。通过将 RT-DETR检测头集成到 YOLOv8n 中,可以结合两者的优势,从而在目标检测任务中实现更高的精度鲁棒性[^2]。 ### 具体实现步骤 1. **准备环境**:确保已经安装了必要的深度学习框架库,如 PyTorch Ultralytics 库。 2. **配置文件修改**:创建一个新的配置文件 `yolov8_RT-DETR.yaml`,在这个文件中定义模型结构,特别是将 YOLOv8n 的检测头替换为 RT-DETR检测头。 3. **编写训练脚本**:创建一个名为 `rtDetr_run.py` 的文件,用于加载模型、配置训练参数并启动训练过程。示例代码如下: ```python from ultralytics import RTDETR if __name__ == '__main__': model = RTDETR('cfg/models/v8/yolov8_RT-DETR.yaml') model.train(data='cfg/datasets/coco128.yaml', imgsz=640, epochs=300, batch=16, workers=0, device="cpu", optimizer='SGD', project="yolov8") ``` 4. **数据集配置**:确保数据集的配置文件 `coco128.yaml` 正确无误,包括数据集路径、类别数等信息。 5. **模型训练**:运行 `rtDetr_run.py` 脚本,开始训练过程。根据需要调整训练参数,如学习率、批大小等。 6. **评估与优化**:训练完成后,使用验证集评估模型性能,并根据结果进行必要的调优。 ### 应用场景 - **自动驾驶**:在自动驾驶系统中部署 YOLOv8+RT-DETR 模型,可以提高目标检测的精度鲁棒性,从而使自动驾驶更加安全可靠。 - **医学图像分析**:在医学图像分析系统中部署 YOLOv8+RT-DETR 模型,可以提高病灶检测的精度效率,从而辅助医生进行诊断。 - **安防监控**:在安防监控系统中部署 YOLOv8+RT-DETR 模型,可以提高目标检测的精度实时性,从而更好地保障公共安全[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值