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]]
相关推荐
utmhikari16 小时前
【测试人生】变更规则校验Agent研发的一些思路
大数据·人工智能·llm·agent·变更风险·openclaw
code 小楊16 小时前
英伟达免费开源大参数模型 Nemotron 3 Super 全解析
人工智能·开源
AC赳赳老秦16 小时前
DeepSeek优化多智能体指令:避免协同冲突,提升自动化流程稳定性
android·大数据·运维·人工智能·自然语言处理·自动化·deepseek
Shining059616 小时前
AI编译器系列(二)《AI 编译器中的前端优化》
人工智能·学习·其他·学习方法·infinitensor
北京耐用通信16 小时前
耐达讯自动化CC-Link IE转DeviceNet网关:破解三菱与欧姆龙PLC协同壁垒的工业实践
人工智能·科技·物联网·网络协议·自动化
zhangshuang-peta17 小时前
安全地将人工智能助手与企业系统和数据集成
人工智能·安全·chatgpt·ai agent·mcp·peta
AI专业测评17 小时前
2026年全景基准测试:7款主流AI写小说工具底层架构与工程化实践对比
人工智能·架构
sbjdhjd17 小时前
一些感想 | AI:一场没有陨石的末日
人工智能
人工智能AI技术17 小时前
AWE2026现场直击:脑机接口、意念控无人机,中国家电正进入“物理AI“时代
人工智能
愈努力俞幸运17 小时前
llm+agent,使用与 OpenAI 兼容的 API 格式
人工智能