littlebot
Published on 2025-04-11 / 0 Visits
0

【源码】基于OneFlow框架的YOLOv3目标检测算法

项目简介

本项目基于OneFlow框架实现了YOLOv3目标检测算法。YOLO(You Only Look Once)是单阶段目标检测算法的代表,以速度快、准确率高著称。YOLOv3融合了残差网络Darknet - 53作为骨干网络,具备多尺度、多输出的feature map和上采样等特点,大幅提升了模型精度和小目标检测能力。本项目将Yolov3输出特征的nms过程写进C++代码,通过自定义user op调用,同时支持用Python代码处理nms。

项目的主要特性和功能

  • 高效的目标检测:基于YOLOv3算法,可快速且准确地进行目标检测。
  • 多尺度特征融合:采用Darknet - 53骨干网络,支持多尺度特征融合,增强小目标检测能力。
  • C++与Python混合实现:nms过程用C++代码实现以提高性能,同时支持Python代码处理nms,方便灵活使用。
  • 预训练模型支持:提供预训练模型,便于用户快速进行预测和推理。
  • 数据集支持:支持COCO、PASCAL VOC等多种目标检测数据集,也允许用户自定义数据集。

安装使用步骤

1. 安装环境

2. 下载项目源码

shell

3. 安装依赖库

shell pip install -r requirements.txt

4. 编译C++代码

shell ./scripts/build.sh

5. 数据集准备

参考数据集制作部分,准备训练和验证所需的数据集。

6. 训练模型

shell sh yolo_train.sh

7. 预测/推理

shell sh yolo_predict.shshell sh yolo_predict_python_data_preprocess.sh

数据集制作

YoloV3支持任意目标检测数据集,以COCO2014为例: 1. 下载COCO2014训练集和验证集图片,将解压后的train2014和val2014放在data/COCO/images目录下。 2. 准备资源文件:labels,5k.part,trainvalno5k.part。 shell wget -c https://pjreddie.com/media/files/coco/5k.part wget -c https://pjreddie.com/media/files/coco/trainvalno5k.part wget -c https://pjreddie.com/media/files/coco/labels.tgz 3. 在data/COCO目录下执行脚本: ```shell tar xzf labels.tgz

paste <(awk "{print \"$PWD\"}" <5k.part) 5k.part | tr -d '\t' > 5k.txt paste <(awk "{print \"$PWD\"}" trainvalno5k.txt

find labels/train2014/ -name ".txt" | xargs -i cp {} images/train2014/ find labels/val2014/ -name ".txt" | xargs -i cp {} images/val2014/ ```

训练

准备好数据集后,执行: shell sh yolo_train.sh 详细参数介绍: - --gpu_num_per_node:每台机器使用的GPU数量 - --batch_size:批大小 - --base_lr:初始学习率 - --classes:目标类别数量 - --model_save_dir:模型存放文件夹路径 - --dataset_dir:训练/验证集文件夹路径 - --num_epoch:迭代总轮数 - --save_frequency:指定模型保存的epoch间隔

预测/推理

步骤如下: 1. 修改yolo_predict.shyolo_predict_python_data_preprocess.sh脚本中的参数,指定预训练模型路径、类别标签路径、输入图片文件夹路径和输出文件夹路径等。 2. 执行脚本: shell sh yolo_predict.shshell sh yolo_predict_python_data_preprocess.sh 执行后,将在data/result下生成检测后带bbox标记框的图片。

支持的数据格式

  1. 如果网络初始化前可以确定要做推理的图片,可将文件路径写入一个文件filename中,配置image_list_path参数执行。
  2. 如果网络初始化前不能确定推理的图片,每次执行时传入图片路径执行。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】