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]]
相关推荐
IT古董20 分钟前
【漫话机器学习系列】261.工具变量(Instrumental Variables)
人工智能·机器学习
小王格子24 分钟前
AI 编程革命:腾讯云 CodeBuddy 如何重塑开发效率?
人工智能·云计算·腾讯云·codebuddy·craft
MonkeyKing_sunyuhua35 分钟前
VSCode + Cline AI辅助编程完全指南
ide·人工智能·vscode
Leinwin42 分钟前
Microsoft Azure 服务4月更新告示
人工智能·azure
胡耀超1 小时前
霍夫圆变换全面解析(OpenCV)
人工智能·python·opencv·算法·计算机视觉·数据挖掘·数据安全
jndingxin1 小时前
OpenCV CUDA 模块中用于在 GPU 上计算两个数组对应元素差值的绝对值函数absdiff(
人工智能·opencv·计算机视觉
jerry6091 小时前
LLM笔记(五)概率论
人工智能·笔记·学习·概率论
硅谷秋水1 小时前
学习以任务为中心的潜动作,随地采取行动
人工智能·深度学习·计算机视觉·语言模型·机器人
Tiny番茄1 小时前
Multimodal models —— CLIP,LLava,QWen
人工智能