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]]
相关推荐
井底哇哇26 分钟前
ChatGPT是强人工智能吗?
人工智能·chatgpt
Coovally AI模型快速验证31 分钟前
MMYOLO:打破单一模式限制,多模态目标检测的革命性突破!
人工智能·算法·yolo·目标检测·机器学习·计算机视觉·目标跟踪
AI浩1 小时前
【面试总结】FFN(前馈神经网络)在Transformer模型中先升维再降维的原因
人工智能·深度学习·计算机视觉·transformer
可为测控1 小时前
图像处理基础(4):高斯滤波器详解
人工智能·算法·计算机视觉
一水鉴天2 小时前
为AI聊天工具添加一个知识系统 之63 详细设计 之4:AI操作系统 之2 智能合约
开发语言·人工智能·python
倔强的石头1062 小时前
解锁辅助驾驶新境界:基于昇腾 AI 异构计算架构 CANN 的应用探秘
人工智能·架构
佛州小李哥3 小时前
Agent群舞,在亚马逊云科技搭建数字营销多代理(Multi-Agent)(下篇)
人工智能·科技·ai·语言模型·云计算·aws·亚马逊云科技
说私域3 小时前
社群裂变+2+1链动新纪元:S2B2C小程序如何重塑企业客户管理版图?
大数据·人工智能·小程序·开源
程序猿阿伟3 小时前
《探秘鸿蒙Next:如何保障AI模型轻量化后多设备协同功能一致》
人工智能·华为·harmonyos
2401_897579653 小时前
AI赋能Flutter开发:ScriptEcho助你高效构建跨端应用
前端·人工智能·flutter