YOLOv3 -最小 PyTorch 实现-支持训练、推理和评估

yolov3能够更加便捷地进行目标检测的研究、开发以及应用落地工作。
  1. 核心功能

    • 训练(Training): 支持使用自定义数据集对 YOLOv3 模型进行训练,用户可以根据自己领域的具体需求调整数据集和网络参数。
    • 推理(Inference): 提供了将训练好的模型应用到新图像或视频流上进行实时目标检测的能力。
    • 评估(Evaluation): 包含对模型性能的评估模块,可以使用标准的数据集如 COCO 或 PASCAL VOC 进行精确度和召回率等方面的评估。
  2. 兼容性

    • 除了 YOLOv3,该项目还宣称兼容 YOLOv4 和 YOLOv7 的权重文件,这意味着用户可以直接加载这些更先进版本的预训练模型,在此基础上进行微调或进一步训练。
  3. 安装与使用

    • 项目推荐使用 Poetry 创建虚拟环境来进行安装,首先克隆 GitHub 上的项目仓库,然后在项目目录下使用 pip3 安装 Poetry,并通过 Poetry 来管理项目的依赖包。
    • 下载预训练权重:使用者可以从指定途径下载已经过训练并在大型数据集上取得良好效果的模型权重文件,这对于快速启动项目和避免从头开始训练模型非常有帮助。
  4. 作用

    • 对于研究者和开发者而言,该项目简化了在 PyTorch 框架下搭建和实验 YOLOv3 目标检测系统的流程,使得他们能够更加便捷地进行目标检测的研究、开发以及应用落地工作。
    • 在实际应用中,这种实现可以广泛应用于安防监控、自动驾驶、无人机导航、机器人视觉等领域,实现对图像或视频中的物体实时、准确的检测与定位。

总之,PyTorch-YOLOv3 项目是一个方便易用的 YOLOv3 开源实现,它不仅为研究者提供了深入理解和改进算法的机会,也为实际应用开发者提供了快速原型开发和产品化部署的基础工具。

安装:
cd PyTorch-YOLOv3/
pip3 install poetry --user
poetry install

您需要先通过在此目录中运行来加入虚拟环境,然后才能运行以下任何不带前缀的命令。 还要看看其他安装方法,如果你想在不打开诗歌外壳的情况下到处使用命令。poetry shell``poetry run

下载预训练权重
./weights/download_weights.sh
下载 COCO
./data/get_coco_dataset.sh

通过 pip 安装

如果要将此包用作另一个 python 项目中的依赖项,建议使用此安装方法。 此方法仅包含代码,隔离性较低,并且可能与其他包冲突。 权重和COCO数据集需要如上所述下载。 有关包 API 的更多信息,请参阅 API 。 它还支持 CLI 工具、 和任何地方,无需任何其他命令。yolo-detect``yolo-train``yolo-test

pip3 install pytorchyolo --user

测试

在 COCO 测试数据集上评估模型。 要下载此数据集以及权重,请参阅上文。

poetry run yolo-test --weights weights/yolov3.weights
推理

使用预训练的权重对图像进行预测。下表显示了使用缩放到 256x256 的图像作为输入时的推理时间。ResNet 主干测量值取自 YOLOv3 论文。标记的 Darknet-53 测量值在我的 1080ti 卡上显示了此实现的推理时间。

poetry run yolo-detect --images data/samples/
Train(训练)

有关参数描述,请查看poetry run yolo-train --help

示例 (COCO)

要使用 ImageNet 上预训练的 Darknet-53 后端在 COCO 上进行训练,请运行:

poetry run yolo-train --data config/coco.data  --pretrained_weights weights/darknet53.conv.74

在 Tensorboard 中跟踪训练进度:

  • 初始化训练

  • 运行以下命令

    poetry run tensorboard --logdir='logs' --port=6006

将日志存储在慢速驱动器上可能会导致训练速度显著降低。

您可以使用 when running 和 调整日志目录。--logdir <path>``tensorboard``yolo-train

在自定义数据集上训练

自定义模型

运行以下命令以创建自定义模型定义,并替换为数据集中的类数。<num-classes>

./config/create_custom_model.sh <num-classes>  # Will create custom model 'yolov3-custom.cfg'

将类名添加到 .此文件应为每个类名设置一行。data/custom/classes.names

图像文件夹

将数据集的图像移动到 。data/custom/images/

注释"文件夹

将批注移动到 。数据加载器期望与图像对应的注释文件具有路径 。注释文件中的每一行都应使用语法定义一个边界框。坐标应按比例缩放,并且应为零索引,并对应于类名的行号。data/custom/labels/``data/custom/images/train.jpg``data/custom/labels/train.txt``label_idx x_center y_center width height``[0, 1]``label_idx``data/custom/classes.names

定义训练集和验证集

在 和 中,向图像添加路径,这些路径将分别用作训练数据和验证数据。data/custom/train.txt``data/custom/valid.txt

训练:

若要在自定义数据集上进行训练,请运行

poetry run yolo-train --model config/yolov3-custom.cfg --data config/custom.data

使用在 ImageNet 上预训练的后端添加到训练中。--pretrained_weights weights/darknet53.conv.74

应用程序接口

如果您安装 pip 包,则可以将此存储库的模块导入到您自己的项目中。pytorchyolo

来自简单 OpenCV python 脚本的示例预测调用如下所示:

import cv2
from pytorchyolo import detect, models

# Load the YOLO model
model = models.load_model(
  "<PATH_TO_YOUR_CONFIG_FOLDER>/yolov3.cfg",
  "<PATH_TO_YOUR_WEIGHTS_FOLDER>/yolov3.weights")

# Load the image as a numpy array
img = cv2.imread("<PATH_TO_YOUR_IMAGE>")

# Convert OpenCV bgr to rgb
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

# Runs the YOLO model on the image
boxes = detect.detect_image(model, img)

print(boxes)
# Output will be a numpy array in the following format:
# [[x1, y1, x2, y2, confidence, class]]
相关推荐
SpikeKing10 分钟前
LLM - 使用 LLaMA-Factory 微调大模型 环境配置与训练推理 教程 (1)
人工智能·llm·大语言模型·llama·环境配置·llamafactory·训练框架
黄焖鸡能干四碗39 分钟前
信息化运维方案,实施方案,开发方案,信息中心安全运维资料(软件资料word)
大数据·人工智能·软件需求·设计规范·规格说明书
39 分钟前
开源竞争-数据驱动成长-11/05-大专生的思考
人工智能·笔记·学习·算法·机器学习
ctrey_1 小时前
2024-11-4 学习人工智能的Day21 openCV(3)
人工智能·opencv·学习
攻城狮_Dream1 小时前
“探索未来医疗:生成式人工智能在医疗领域的革命性应用“
人工智能·设计·医疗·毕业
学习前端的小z1 小时前
【AIGC】如何通过ChatGPT轻松制作个性化GPTs应用
人工智能·chatgpt·aigc
埃菲尔铁塔_CV算法2 小时前
人工智能图像算法:开启视觉新时代的钥匙
人工智能·算法
EasyCVR2 小时前
EHOME视频平台EasyCVR视频融合平台使用OBS进行RTMP推流,WebRTC播放出现抖动、卡顿如何解决?
人工智能·算法·ffmpeg·音视频·webrtc·监控视频接入
打羽毛球吗️2 小时前
机器学习中的两种主要思路:数据驱动与模型驱动
人工智能·机器学习
好喜欢吃红柚子2 小时前
万字长文解读空间、通道注意力机制机制和超详细代码逐行分析(SE,CBAM,SGE,CA,ECA,TA)
人工智能·pytorch·python·计算机视觉·cnn