YOLOv3最全复现代码合集(含TensorFlow/PyTorch和Keras等)

本文汇总了YOLOv3在多种深度学习框架下的复现代码,包括TensorFlow、PyTorch、Keras、Caffe和MXNet,详细列出了各版本是否支持训练及GitHub星级评分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载:https://cloud.tencent.com/developer/article/1420861

重磅!YOLOv3最全复现代码合集(含TensorFlow/PyTorch和Keras等)

 

重磅!YOLO-LITE来了(含论文精读和开源代码)

重磅!MobileNet-YOLOv3来了(含三种框架开源代码)

想想快一年了,YOLOv4 应该快出了吧?!(催一波),CVer 会持续关注 YOLO系列的动态。要知道YOLO系列官方源码都是用 C 语言编写的,代码太"硬",很多人习惯用Python搞事情,所以网上出现了各种基于 xxx 框架的 YOLOv3复现版本。

Amusi 将基于不同深度学习框架的 YOLOv3 复现代码进行汇总(自认为还不错的复现代码),为了方便各位 CVers 浏览,下述内容已经同步上传至github:

https://github.com/amusi/YOLO-Reproduce-Summary

此次YOLOv3复现代码合集涵盖 5 种常用深度学习框架:

  • TensorFlow
  • PyTorch
  • Keras
  • Caffe
  • MXNet

主要信息有:是否支持训练和 star 星数

TensorFlow

1620uploading.4e448015.gif正在上传…重新上传取消

  1. https://github.com/YunYang1994/tensorflow-yolov3 支持训练(514 star)
  2. https://github.com/mystic123/tensorflow-yolo-v3 不支持训练(446 star)
  3. https://github.com/maiminh1996/YOLOv3-tensorflow 支持训练(246 star)

PyTorch

1620uploading.4e448015.gif正在上传…重新上传取消

  1. https://github.com/ayooshkathuria/pytorch-yolo-v3 不支持训练(1.5k star)
  2. https://github.com/eriklindernoren/PyTorch-YOLOv3 支持训练(1.3k star)
  3. https://github.com/ayooshkathuria/YOLO_v3_tutorial_from_scratch 不支持训练(1k star)
  4. https://github.com/TencentYoutuResearch/ObjectDetectionOneStageDet/tree/master/yolo 支持训练(976 star)
  5. https://github.com/ultralytics/yolov3 支持训练(971 star) 这版都有APP版本了

1620uploading.4e448015.gif正在上传…重新上传取消

  1. https://github.com/BobLiu20/YOLOv3_PyTorch 支持训练(341 star)
  2. https://github.com/DeNA/PyTorch_YOLOv3 支持训练(179 star)

Keras

1620uploading.4e448015.gif正在上传…重新上传取消

  1. https://github.com/qqwweee/keras-yolo3 支持训练(2.8k star)
  2. https://github.com/xiaochus/YOLOv3 不支持训练(418 star)
  3. https://github.com/Adamdad/keras-YOLOv3-mobilenet 支持训练(191 star)

Caffe

1620uploading.4e448015.gif正在上传…重新上传取消

  1. https://github.com/eric612/MobileNet-YOLO 支持训练(301 star)
  2. https://github.com/ChenYingpeng/caffe-yolov3 不支持训练(150 star)
  3. https://github.com/eric612/Caffe-YOLOv3-Windows 支持训练(97 star)

MXNet

1620uploading.4e448015.gif正在上传…重新上传取消

  1. https://github.com/dmlc/gluon-cv/tree/master/gluoncv/model_zoo/yolo 支持训练(2072 star)
### 实现 YOLOv1 模型的过程 YOLO (You Only Look Once) 是一种基于单阶段的目标检测算法,其中 YOLOv1 是最早的一个版本。为了从头开始实现 YOLOv1 模型,可以分别采用 PyTorch TensorFlow 来完成。 #### 使用 PyTorch 实现 YOLOv1 以下是使用 PyTorch 构建 YOLOv1 的基本方法: ```python import torch.nn as nn class YOLOv1(nn.Module): def __init__(self, S=7, B=2, C=20): # 默认参数来自原始论文 super(YOLOv1, self).__init__() self.S = S self.B = B self.C = C # 定义卷积层全连接层 self.features = nn.Sequential( nn.Conv2d(3, 64, kernel_size=7, stride=2), nn.LeakyReLU(0.1), nn.MaxPool2d(kernel_size=2, stride=2), nn.Conv2d(64, 192, kernel_size=3), nn.LeakyReLU(0.1), nn.MaxPool2d(kernel_size=2, stride=2), nn.Conv2d(192, 128, kernel_size=1), nn.LeakyReLU(0.1), nn.Conv2d(128, 256, kernel_size=3), nn.LeakyReLU(0.1), nn.Conv2d(256, 256, kernel_size=1), nn.LeakyReLU(0.1), nn.Conv2d(256, 512, kernel_size=3), nn.LeakyReLU(0.1), nn.MaxPool2d(kernel_size=2, stride=2), # 更多卷积层... ) self.fc_layers = nn.Sequential( nn.Linear(512 * ((S//32)**2), 4096), nn.LeakyReLU(0.1), nn.Dropout(p=0.5), nn.Linear(4096, S*S*(C+B*5)) ) def forward(self, x): x = self.features(x) x = x.view(x.size(0), -1) # 展平特征图 x = self.fc_layers(x) return x.reshape(-1, self.S, self.S, self.C + self.B * 5) model_pytorch = YOLOv1() print(model_pytorch) ``` 上述代码定义了一个简单的 YOLOv1 结构[^1],并包了必要的卷积层全连接层。注意,默认设置 `S=7`, `B=2` `C=20` 对应于 Pascal VOC 数据集中的类别数。 --- #### 使用 TensorFlow 实现 YOLOv1 下面是通过 TensorFlow/Keras YOLOv1 的方法: ```python from tensorflow.keras.models import Model from tensorflow.keras.layers import Input, Conv2D, MaxPooling2D, Flatten, Dense, Dropout, LeakyReLU def create_yolov1_model(S=7, B=2, C=20): inputs = Input(shape=(448, 448, 3)) x = Conv2D(64, (7, 7), strides=(2, 2), padding='same')(inputs) x = LeakyReLU(alpha=0.1)(x) x = MaxPooling2D(pool_size=(2, 2))(x) x = Conv2D(192, (3, 3), padding='same')(x) x = LeakyReLU(alpha=0.1)(x) x = MaxPooling2D(pool_size=(2, 2))(x) x = Conv2D(128, (1, 1), padding='same')(x) x = LeakyReLU(alpha=0.1)(x) x = Conv2D(256, (3, 3), padding='same')(x) x = LeakyReLU(alpha=0.1)(x) x = Conv2D(256, (1, 1), padding='same')(x) x = LeakyReLU(alpha=0.1)(x) x = Conv2D(512, (3, 3), padding='same')(x) x = LeakyReLU(alpha=0.1)(x) x = MaxPooling2D(pool_size=(2, 2))(x) # 添加更多卷积层... x = Flatten()(x) x = Dense(4096, activation='relu')(x) x = Dropout(0.5)(x) outputs = Dense(S * S * (C + B * 5))(x) model = Model(inputs, outputs) return model model_tensorflow = create_yolov1_model() model_tensorflow.summary() ``` 这段代码展示了如何用 Keras API 建立一个基础的 YOLOv1 模型架构[^2]。它同样遵循了原始论文的设计思路,并调整了一些超参数以适应现代硬件环境。 --- #### 关键点总结 - **网格划分**: 将输入图像划分为 \(S \times S\) 的网格单元格。 - **预测框数量**: 每个网格预测 \(B\) 个边界框及其置信度分数。 - **分类任务**: 额外预测每个网格属于某一类别的概率分布向量长度为 \(C\)。 这些特性共同构成了 YOLOv1 的核心机制[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值