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]]
相关推荐
不去幼儿园42 分钟前
【MARL】深入理解多智能体近端策略优化(MAPPO)算法与调参
人工智能·python·算法·机器学习·强化学习
想成为高手4991 小时前
生成式AI在教育技术中的应用:变革与创新
人工智能·aigc
YSGZJJ2 小时前
股指期货的套保策略如何精准选择和规避风险?
人工智能·区块链
无脑敲代码,bug漫天飞2 小时前
COR 损失函数
人工智能·机器学习
HPC_fac130520678163 小时前
以科学计算为切入点:剖析英伟达服务器过热难题
服务器·人工智能·深度学习·机器学习·计算机视觉·数据挖掘·gpu算力
小陈phd5 小时前
OpenCV从入门到精通实战(九)——基于dlib的疲劳监测 ear计算
人工智能·opencv·计算机视觉
Guofu_Liao6 小时前
大语言模型---LoRA简介;LoRA的优势;LoRA训练步骤;总结
人工智能·语言模型·自然语言处理·矩阵·llama
ZHOU_WUYI10 小时前
3.langchain中的prompt模板 (few shot examples in chat models)
人工智能·langchain·prompt
如若12310 小时前
主要用于图像的颜色提取、替换以及区域修改
人工智能·opencv·计算机视觉
老艾的AI世界11 小时前
AI翻唱神器,一键用你喜欢的歌手翻唱他人的曲目(附下载链接)
人工智能·深度学习·神经网络·机器学习·ai·ai翻唱·ai唱歌·ai歌曲