YOLOv3-tiny网络层拆解:23层如何实现轻量化目标检测?

Yolov3 和 Yolov3-tiny目标检测算法理论与实现(TensorFlow2) 文章目录前言一、Yolov3 和 Yolov3-tiny二、使用步骤1.引入库2.读入数据总结 前言 上一篇文章 神奇的目标检测 已经介绍了目标检测的基础啦。目标检测呢,就是在图片中定位出目标的位置,把它“框”出来就好了。本篇文章使用Yolov3 和Yolov3-tiny,以训练VOC2007和口罩检测为例。教大家如何快速的搭建自己的目标检测平台。下面是资源链接: 内容 链接 VOC2007 数据集 链接 戴口罩数据集 链接 权重文件 链接 提取码:y32m github 阅读详情

YOLOv3-tiny网络层拆解:23层如何实现轻量化目标检测?

在嵌入式设备和边缘计算场景中,算力和内存往往是稀缺资源。当标准YOLOv3的53层网络结构在树莓派或Jetson Nano上运行得气喘吁吁时,YOLOv3-tiny却能在保持相当检测精度的前提下,以仅23层的“瘦身”架构流畅运行。这背后并非简单的层数删减,而是一套精密的轻量化设计哲学。对于从事嵌入式AI部署、模型压缩优化的工程师而言,理解这23层每一层的职责与设计取舍,远比调用一个预训练模型更有价值。今天,我们就深入其肌理,看看它是如何在有限的层数内,完成高效的目标检测任务的。

1. 轻量化架构的核心设计哲学

YOLOv3-tiny的轻量化并非盲目裁剪,其设计遵循着几条清晰的原则。首要原则是深度与宽度的平衡。标准YOLOv3通过堆叠大量残差块(Darknet-53主干)来提取深层语义特征,但这带来了巨大的参数量和计算量。Tiny版本则反其道而行,它大幅减少了网络深度,同时谨慎地控制特征图的通道数(宽度),避免因过度压缩宽度而导致的特征表达能力丧失。

其次,是特征金字塔的简化。YOLOv3利用多尺度预测(13x13, 26x26, 52x52)来应对不同大小的目标,Tiny版本保留了双尺度预测(13x13和26x26),但构建特征金字塔的路径被极大简化。它没有使用复杂的跨层连接堆叠,而是通过一次上采样和一次路由(Route)层,将深层特征与浅层特征直接拼接,形成用于小目标检测的特征图。这种设计在计算效率和特征融合效果之间取得了不错的折衷。

再者,卷积核的精心配置至关重要。Tiny版本中大量使用1x1卷积进行通道降维,紧随其后的3x3卷积负责空间特征提取。这种“瓶颈”结构(Bottleneck)在MobileNet、ShuffleNet等轻量级网络中已被验证有效,它能以较小的计算代价维持或转换特征维度。

提示:轻量化设计往往是在精度、速度和模型大小三者之间寻找最佳平衡点,不存在“完美”方案,只有针对特定场景的“最优”妥协。

为了更直观地对比标准版与Tiny版的核心差异,我们来看一个简化的参数对照表:

特性维度YOLOv3 (Darknet-53)YOLOv3-tiny设计意图分析
网络总层数53层卷积 + 其他层13层卷积 + 6池化 + 2路由 + 1上采样 + 2输出深度锐减,降低计算复杂度与内存占用。
主干网络深层的Darknet-53,含大量残差连接极简的类VGG式序列结构移除残差块,简化数据流,利于硬件并行与优化。
特征金字塔3个尺度输出,通过多次上采样与路由融合2个尺度输出,单次上采样与路由融合减少多尺度预测的计算分支,聚焦于最关键的尺度。
参数量级约6100万约880万参数量减少约85%,极大降低了模型存储与传输开销。
典型推理速度在COCO数据集上~30ms (Titan X)在COCO数据集上~2ms (Titan X)速度提升一个数量级,满足实时性要求苛刻的场景。

这张表清晰地揭示了Tiny版本的“瘦身”策略:用更浅、更窄的网络,配合简化的多尺度融合,换来了一个数量级的速度提升和显著的体积缩小。

2. 逐层解析:23层的结构与功能

让我们打开YOLOv3-tiny的“黑箱”,按照数据流顺序,逐一审视每一类层的作用。其整体架构可以概括为:一个精简的特征提取主干,加上一个双预测头。

2.1 卷积层(Convolutional):特征提取的基石

13个卷积层构成了网络的主体。与标准版不同,Tiny中每个卷积层后都紧跟了批归一化(Batch Normalization, BN)和LeakyReLU激活函数(除了最后一个YOLO层前的卷积使用线性激活)。这种“Conv-BN-LeakyReLU”的组合是稳定训练、加速收敛的标配。

  • 1x1卷积的角色:在Tiny中,1x1卷积频繁出现,其主要目的有两个:一是进行通道数的压缩或扩张,以控制计算量;二是在不改变特征图空间尺寸的前提下,实现特征的跨通道信息整合。
  • 3x3卷积的角色:作为标准的空间特征提取器,3x3卷积负责捕捉目标的边缘、纹理等局部模式。Tiny中所有3x3卷积的步长(stride)均为1,并配合填充(padding)以保持特征图尺寸不变,除非后接步长为2的池化层进行下采样。

一个典型的卷积层在Darknet框架中的配置如下所示,这能帮助我们理解其参数意义:

[convolutional]
batch_normalize=1  # 启用批归一化
filters=32         # 输出通道数
size=3             # 卷积核尺寸
stride=1           # 步长
pad=1              # 填充
activation=leaky   # 激活函数类型

2.2 池化层(MaxPool):空间下采样的主力

6个最大池化层承担了主要的空间降维任务。与标准YOLOv3中使用卷积步长为2进行下采样不同,Tiny版本选择了更传统的2x2、步长为2的最大池化。这种方式计算量极低,能快速缩小特征图尺寸,扩大感受野,但会丢失一些空间细节信息。池化层的穿插,将输入图像从416x416逐步压缩到13x13。

2.3 路由层(Route)与上采样层(Upsample):特征融合的桥梁

这是实现多尺度预测的关键。

  • 路由层(Route):可以理解为特征图的拼接(Concatenate)操作。Tiny中有两个路由层。第一个路由层(第17层)直接引用了第13层的输出,相当于一个“直连”。第二个路由层(第20层)则更为重要,它将第19层(上采样后的深层特征)和第8层(较浅层的特征)的输出在通道维度上进行拼接。浅层特征富含细节和位置信息,深层特征富含语义信息,二者的融合使得网络在预测小目标时也能具备足够的细节感知力。
  • 上采样层(Upsample):仅有一层(第19层)。它通过最近邻插值(Nearest Neighbor Interpolation)将13x13的特征图放大到26x26,以便与第8层的26x26特征图进行路由拼接。上采样本身没有可学习参数,计算开销很小。

2.4 输出层(YOLO):预测的生成

两个YOLO输出层分别对应13x13和26x26尺度的特征图。每个网格(Grid Cell)预测3个边界框(Bounding Box)。对于COCO数据集(80类),每个边界框的预测向量包含:4个坐标偏移(tx, ty, tw, th)、1个物体置信度(objectness)和80个类别概率。因此,输出张量的维度为:S x S x [3 * (5 + 80)],即13x13x255和26x26x255。

注意:YOLO层本身不进行复杂的卷积运算,其主要功能是对前一层卷积输出的线性预测值进行sigmoid或线性变换,将其映射到合理的数值范围(如将坐标偏移归一化到0~1),并计算最终的损失函数(在训练阶段)。

3. 工程实现:从配置到前向传播

理解了网络结构,我们来看看在代码层面,这些层是如何被组织并执行前向推理的。这里我们以Darknet原生C实现为例,剖析其工程细节。

3.1 网络配置与解析

网络结构定义在.cfg配置文件中。解析器(如parse_network_cfg_custom)会逐行读取,根据[convolutional]、[maxpool]等标签创建对应的层结构体,并填充超参数(如filters, size, stride)。

// 简化的层类型解析逻辑(示意)
if (lt == CONVOLUTIONAL) {
    l = parse_convolutional(options, params);
} else if (lt == MAXPOOL) {
    l = parse_maxpool(options, params);
} else if (lt == ROUTE) {
    l = parse_route(options, params);
} else if (lt == UPSAMPLE) {
    l = parse_upsample(options, params, net);
} else if (lt == YOLO) {
    l = parse_yolo(options, params);
}

每创建一个层,都会根据其类型、输入输出尺寸等,动态分配存储输入、输出、权重、梯度等数据的内存空间。

3.2 权重加载与融合

训练好的模型权重存储在.weights文件中。加载时,程序会按层顺序读取卷积层的权重、偏置以及BN层的缩放因子(scale)、移动均值(mean)和移动方差(variance)。

一个关键的优化步骤是卷积层与BN层的融合。在推理阶段,BN层的操作(减均值、除标准差、乘缩放因子、加偏移量)是线性的,可以与卷积层的线性运算合并,从而减少计算步骤,提升推理速度。融合公式如下:

令卷积核权重为 W,偏置为 b。BN参数为:缩放因子 γ,均值 μ,方差 σ²,偏移量 β。 融合后的新权重 W' = W * (γ / sqrt(σ² + ε)) 融合后的新偏置 b' = (b - μ) * (γ / sqrt(σ² + ε)) + β

在Darknet中,这一过程在fuse_conv_batchnorm函数中完成。融合后,在推理时即可跳过BN层,直接使用融合后的权重和偏置进行卷积计算。

3.3 前向传播流程

前向传播是推理的核心,在forward_network函数中通过一个循环遍历所有层:

for(i = 0; i < net.n; ++i) {
    layer l = net.layers[i];
    l.forward(l, state); // 调用该层的前向传播函数
    state.input = l.output; // 当前层的输出作为下一层的输入
}

每一层都有其专属的forward函数:

  • 卷积层 (forward_convolutional_layer): 通常通过im2col将输入图像转换为矩阵,再利用通用矩阵乘(GEMM)高效完成卷积计算,最后加上偏置。
  • 池化层 (forward_maxpool_layer): 在指定窗口内取最大值,实现下采样。
  • 路由层 (forward_route_layer): 实质是内存操作,将输入层指定的特征图数据复制或拼接到当前层的输出缓冲区。
  • 上采样层 (forward_upsample_layer): 通过最近邻插值算法,将每个像素值复制到新的更大尺寸的对应位置。
  • YOLO层 (forward_yolo_layer): 对输入的预测值(如边界框坐标、置信度)应用sigmoid激活函数,将其约束到(0,1)范围内。

3.4 后处理:从预测到检测框

网络前向传播得到的是两个形状为(1, 255, 13, 13)和(1, 255, 26, 26)的张量(假设batch size为1)。后处理的目标是将这些密集预测转换为具体的边界框和类别。

  1. 解码边界框:网络预测的是相对于网格单元的偏移量。需要根据预设的锚框(Anchor)尺寸,将预测的(tx, ty, tw, th)解码为图像上的绝对坐标(bx, by, bw, bh)。公式通常为:

    • bx = σ(tx) + cx
    • by = σ(ty) + cy
    • bw = pw * exp(tw)
    • bh = ph * exp(th) (其中(cx, cy)是网格左上角坐标,(pw, ph)是锚框尺寸,σ是sigmoid函数)
  2. 过滤低置信度框:遍历所有预测框,根据物体置信度(objectness)和类别概率的乘积,过滤掉低于阈值(如0.25)的预测。

  3. 非极大值抑制(NMS):对于剩下的预测框,按类别分别进行NMS。其核心是计算同一类别下所有框之间的交并比(IoU),并抑制掉那些与更高得分框重叠度(IoU)超过阈值(如0.45)的框。在Darknet中,这由do_nms_sort函数完成。

// NMS核心逻辑伪代码
for each class c:
    sort detections by confidence score for class c
    for each detection i in sorted list:
        if detection i‘s score for class c > 0:
            for each detection j after i:
                if IoU(box_i, box_j) > nms_threshold:
                    set detection j‘s score for class c to 0

经过这三步,最终得到的就是在图像上定位和分类好的目标检测结果。

4. 可视化分析与参数量计算

“纸上得来终觉浅”,通过工具可视化网络的计算图和数据流,能极大地加深理解。TensorBoard或Netron是很好的选择。将YOLOv3-tiny的模型文件(如.cfg和.weights)或转换后的格式(如ONNX)导入,你可以清晰地看到23层是如何连接的,数据如何从输入流经卷积、池化,再通过上采样和路由进行融合,最终到达两个输出头。

参数量与计算量估算是评估模型轻量化程度和硬件需求的关键。对于一个卷积层,其参数量计算公式为:

参数量 = (C_in * K_h * K_w + 1) * C_out

其中,C_in是输入通道数,K_h和K_w是卷积核高和宽,+1代表偏置项,C_out是输出通道数。如果该卷积层后接BN层,BN层还有4 * C_out个参数(γ, β, μ, σ²)。

以YOLOv3-tiny第一层卷积为例(输入3通道,输出16通道,3x3卷积核):

  • 卷积层参数量 = (3 * 3 * 3 + 1) * 16 = 448
  • BN层参数量 = 4 * 16 = 64
  • 该层总参数量 ≈ 512

以此类推,逐层计算并累加,即可得到模型的总参数量(约880万)。计算量(FLOPs)的估算也类似,重点关注卷积层:FLOPs ≈ 2 * H_out * W_out * C_in * K_h * K_w * C_out。通过计算可以发现,大部分计算消耗在通道数较多的中间卷积层。

对于嵌入式开发者,这些数字直接关系到模型能否在目标硬件上实时运行。一个实用的技巧是,在修改网络结构(如增减通道数、调整层数)后,可以快速估算参数量和计算量的变化,从而指导优化方向。

5. 自定义修改与优化指南

掌握了原理和实现,我们就可以根据实际需求对YOLOv3-tiny进行定制化修改了。这里提供几个常见的方向和实操步骤。

5.1 修改输入分辨率

默认输入是416x416。提高分辨率(如608x608)可以提升小目标检测能力,但会显著增加计算量。降低分辨率(如320x320)则可以进一步提升速度。修改非常简单,只需在.cfg文件的[net]部分更改width和height参数,并重新训练或进行适当的模型缩放。

5.2 调整网络宽度(通道数)

这是平衡精度和速度最有效的手段之一。你可以按比例缩放所有卷积层的filters数量。例如,想将模型大小缩减为原来的~1/4,可以将所有filters数乘以0.5(因为参数量与通道数的平方相关)。在.cfg文件中找到每一层[convolutional]下的filters=行进行修改。

5.3 替换或减少池化层

池化层会不可逆地丢失空间信息。对于需要精确定位或小目标密集的场景,可以考虑将部分步长为2的池化层,替换为步长为2的卷积层(带BN和激活函数)。这样可以在下采样的同时,引入可学习的参数,可能获得更好的特征。或者,减少池化层数量,使用更大步长的卷积来替代,但要注意特征图尺寸变化需与后续路由、上采样层匹配。

5.4 针对特定类别的锚框(Anchor)优化

YOLOv3-tiny默认的锚框是基于COCO数据集聚类得到的。如果你的应用场景目标尺度分布差异很大(例如,只检测行人或车辆),重新聚类生成适配的锚框能直接提升检测精度。可以使用K-means算法在你的标注数据上重新聚类生成6个锚框(两个YOLO层各3个),并更新.cfg文件中两个[yolo]层下的anchors参数。

5.5 实操示例:增加一个检测尺度

假设你需要检测更小的目标,可以尝试增加一个52x52的检测头。这需要:

  1. 在主干网络更浅的位置(例如第4个池化层后)引出一个分支。
  2. 为该分支设计几层卷积进行特征提炼。
  3. 添加一个YOLO输出层。
  4. 相应地,需要为这个新头聚类3个更小的锚框。 这个改动较大,需要重新训练,并且会一定增加计算量,需谨慎评估。

在进行任何修改后,务必重新训练模型,并在你的验证集上评估精度和速度的变化。轻量化改造往往是一个迭代和权衡的过程。我的经验是,先明确部署硬件的性能瓶颈(是内存带宽限制、计算力限制还是存储限制),再针对性地进行优化,比如用深度可分离卷积(Depthwise Separable Convolution)替换标准卷积来大幅降低计算量,这在许多移动端框架中都有现成的实现。

yolov3-tiny工程应用和实现 目录前言相关推荐yolov3-tiny 原理yolov3-tiny 源码分析配置网络结构 前言 从去年十一月份开始学习yolo神经网络用于目标识别的硬件实现,到现在已经六个月了。一个硬件工程师,C/C++基础都差劲的很,对照着darknet作者的源码和网上东拼西凑的原理讲解,一点一点地摸索。刚开始进度很慢,每天都感觉学习不了几行代码,到后来慢慢的入了门,每周都有不菲的收获和重大的进展。总结一下自己... 阅读详情

相关推荐

yolov3-tiny原理解析及代码分析

从去年十一月份开始学习yolo神经网络用于目标识别的硬件实现,到现在已经六个月了。一个硬件工程师,C/C++基础都差劲的很,对照着darknet作者的源码和网上东拼西凑的原理讲解,一点一点地摸索。刚开始进度很慢,每天都感觉学习不了几行代码,到后来慢慢的入了门,每周都有不菲的收获和重大的进展。总结一下自己这大半年的学习,记录一下心路历程,也为躬耕于此的有缘人提供哪怕一点点的帮助吧。

点赞的都能无bug通过! 5406

yolov3-tiny

目标检测简介 针对一张图片,根据后续任务的需要,有三个主要层次。 一是分类(Classification),即是将图像结构化为某一类别的信息,用事先确定好的类别或实例ID来描述图片,这一任务是最简单、最基础的图像理解任务,也是深度学习模型最先取得突破和实现大规模应用的任务。其中ImageNet是最权威的评测集,每年的ILSVRC催生了大量的优秀深度网络结构,为其他任务提供了基础。在应用领域,人脸、场景的识别等,都可以归为分类任务。 ...

qq_38816432的博客 1万+

YOLOv3-Tiny深度学习目标检测实战项目

YOLOv3-Tiny 是YOLO(You Only Look Once)系列中的一个轻量级目标检测模型,它在保持实时性的同时,适度地牺牲了一定的准确性,以适应嵌入式设备和移动平台。它通过简化标准YOLOv3的网络结构,降低了计算复杂度和模型大小,从而实现了更快的推理速度。网络剪枝是一种模型压缩技术,它通过去除神经网络中冗余或不重要的部分来简化网络结构,以此来减小模型的大小、提高运算效率,同时尽可能地保持模型的性能。

weixin_33256096的博客 1166

YoloV3学习笔记(六)—— YoloV3-tiny

YoloV3学习笔记(六)YoloV3学习笔记(六)—— YoloV3-tiny一、网络架构二、总结 YoloV3学习笔记(六)—— YoloV3-tiny yolov3-tiny中,共有两个输出层(yolo层),分别为13x13和26x26,每个网格可以预测3个bounding box,共有80个分类数。所以最后的yolo层的尺寸为:13x13x255和26x26x255。 一、网络架构 yolov3-tiny网络层结构如下: 可以看出,yolov3-tiny共有23层网络,其中包含五种不同的网络层:卷

Lcl_huolitianji的博客 1万+

YOLOv3-Tiny预训练模型应用与实战解析

YOLOv3-Tiny是YOLO系列中一个轻量级的目标检测模型,它以简洁而有效的设计受到了许多行业从业者的青睐。这一章节将介绍YOLOv3-Tiny的发展历史,以及它在设计理念上的独到之处。我们将探讨其诞生的背景,一个模型如何在保持高检测精度的同时降低计算需求,以及YOLOv3-Tiny相比其它目标检测模型具有哪些独特优势。通过本章,读者将对YOLOv3-Tiny有一个全面的初步了解,为后续深入分析其网络架构、预训练模型和实际应用打下坚实基础。

weixin_36304957的博客 1163

域格4G网优模块获取

1、获取当前小区信息 接口说明 该命令用于获取当前小区信息。 语法结构 命令类型 格式 返回结果 Execute AT+SCELLINFO +SCELLINFO: <cellMode>,<mcc>,<mnc>,<lac>,<cellId>,<afrcn>,<cpi>,<rxLevel>

自由的幻想 2464

YOLOv3-tiny网络架构详解与实战代码剖析

本文详细解析了专为嵌入式设备设计的轻量级目标检测模型YOLOv3-tiny的网络架构与实现原理。文章深入剖析了其23层精简结构、多尺度特征融合机制,并结合Darknet框架提供了从网络配置、权重加载到前向传播及结果解码的完整代码实战指南。同时,分享了模型量化、内存优化等关键嵌入式部署技巧与实战经验,帮助开发者在资源受限环境下实现高效目标检测。

tgb34567890的博客 599

2021-10-29 atcoder ABC157——B - Bingo

B - Bingo 先标记,然后暴力判断,这样最清晰最好想。 #include<iostream> #include<algorithm> #include<cstring> using namespace std; typedef long long LL; int a[110][110],b[110]; int main() { for(int i=1;i<=3;i++) for(int j=1;j<=3;j++) cin>>a[i]

honeistbutter的博客 338

简单对电脑无要求不用配置环境直接在云端进行yolov3-tiny训练

yolov3-tiny主要用于部署到树莓派等快速检测的项目,实用价值很高,在大学各种人工智能和有关目标检测项目的竞赛竞赛中基本都会用到。现在对yolo系列主流使用的框架是pytorch,主要原因是tensorflow-gpu框架的要求太严格,我曾经也想用tensorflow-gpu去配置环境,但是由于yolov3-tiny模型太早了,30系列的显卡对于它而言配置太好了,但是现在大学生都是30系列的显卡的电脑,所以部署环境第一步就被卡死了。

Alihao_的博客 2468

Enterprise Architect 中文经典教程

本文使用到的EA工程文件下载 一、Enterprise Architect简介 Enterprise Architect是一个对于软件系统开发有着极好支持的CASE软件(Computer Aided Software Engineering)。EA不同于普通的UML画图工具(如VISIO),它将支撑系统开发的全过程。在需求分析阶段,系统分析与设计阶段,系统开发及部署等方面有着强大的支持,...

2万+

别再死记硬背参数了!用ADS手把手教你仿真一个4GHz镜像抑制混频器(附完整工程文件)

本文详细解析了4GHz镜像抑制混频器的ADS仿真全流程,从理论到实践,涵盖混频器设计基础、ADS工程搭建、二极管选型、非线性仿真及性能优化。通过实战案例,帮助工程师掌握关键参数平衡与调试技巧,提升射频电路设计效率。

weixin_42552716的博客 339

yolov3-tiny训练自己的数据集(重在步骤,不究原理)

yolov3-tiny训练自己的数据集环境条件源码下载准备数据三级目录 环境条件 Python 3.6.0 Opencv 3.4.0 Tensorflow 1.14.0 或 Tensorflow-gpu 1.14.0 GTX1050 2G 源码下载 准备数据 三级目录

FriendshipTang的博客 4011

T2T基因组组装实战指南:从数据到完整染色体

本文详细介绍了T2T基因组组装技术的实战指南,从测序数据选择到完整染色体组装的全流程。重点解析了ONT ultra-long和PacBio HiFi测序技术的优势,以及如何攻克端粒和着丝粒等重复区域的组装难题。通过具体案例和实用技巧,帮助研究人员实现从数据到完整染色体的高质量组装。

weixin_29292535的博客 846

使用GPU训练yolov3-tiny模型(darknet)

介绍使用 GPU 训练 yolov3-tiny 模型识别自己的数据集

weixin_62632929的博客 1760

Apollo学习笔记(4)坐标系

百度Apollo项目用到了多种坐标系,其中帮助文档提及的坐标系包括: 全球地理坐标系(The Global Geographic coordinate system ) 局部坐标系—东-北-天坐标(The Local Frame – East-North-Up,ENU) 车身坐标系—右-前-天坐标(The Vehicle Frame —Right-Forward-Up,RFU) 车身坐标系—前-左-天坐标(The Vehicle Frame —Front-Left-Up,FLU) 还有一种Frenet坐标

qq_24649627的博客 5798

锂电池SOH估计 | 锂电池SOH基础计算与可视化(Python)

锂电池SOH估计 | 锂电池SOH基础计算与可视化(Python)

前程算法屋的博客 900

FPGA实现YOLOv3 tiny 代码分析

【代码】FPGA实现YOLOv3 tiny 代码分析。

gjyntyyx的博客 5025

智能制造——解读AI+工业设备预测性维护解决方案【附全文阅读】

摘要:本方案面向设备密集型制造企业,提供基于AI的预测性维护解决方案。通过工业物联网、大数据和AI算法,整合传感器数据与专家知识库,构建异常检测、故障诊断等模型,实现设备台账管理、智能点检等核心功能。方案配套软硬件工具矩阵,已在锂电子等行业落地应用,可降低维护成本30%以上,减少非计划停机50%,助力企业智能化转型。

cdfunlove的博客 141

yolov3-tiny模型分析(含自己绘制的网络模型图)

最近在实验室做行人检测的项目,希望最后可以做到硬件上面去,所以挑选了yolov3的tiny版本。在实验室专有行人数据集下训练,检测效果还不错,在1080ti上推断速度达到了30fps, 这里和大家一起撸一下yolov3-tiny的网络结构: 相比于yolov3, tiny版本将网络压缩了许多,没有使用res层(残差层),只使用了两个不同尺度的yolo输出层,但总体思路还是可以借鉴yolov3的。...

菜鸟奇遇记 3万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C++ YOLOv3推理 第三讲: 模型推理

如果对于yolov3的模型结构感兴趣,欢迎阅读yolov3论文的原文~上一章讲到模型参数加载,本文主要讨论,如何基于加载的模型实现模型的推理。

qq_19859865的博客 845

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

yolov3-tiny 网络结构

写一个脚本,test_yolov3-tiny.bat,内容如下: darknet detector test cfg/coco.data cfg/yolov3-tiny.cfg cfg/yolov3-tiny.weights data/dog.jpg -thresh 0.6 pause 双击执行,输出: darknet detector test cfg/coco.data cfg/yolov3-tiny.cfg cfg/yolov3-tiny.weights data/dog.jpg -thr

juluwangriyue的博客 7699

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

基于darknet部署yolov3-tiny ros结合yolov3-tiny目标检测 Ubuntu下使用yolov3-tiny

在Ubuntu下使用darknet(yolov3-tiny)实现目标检测,包括图片、视频、摄像头检测。

Yangxiaoaijiejie的博客 1460

深度学习算法优化系列二十二 | 利用TensorRT部署YOLOV3-Tiny INT8量化模型

1. 前言 上一节深度学习算法优化系列二十一 | 在VS2015上利用TensorRT部署YOLOV3-Tiny模型 分享了使用TensorRT在GPU上部署FP32的YOLOV3-Tiny模型,这一节继续分享一下如何部署INT8的YOLOV3-Tiny模型。 2. 确定走哪条路? 和上一节一样,这里仍然是走ONNX->TRT这条路,也就是说我这里的INT8量化是在TensorRT中使用nv...

I good vegetable a! 3743

深度学习目标检测YOLO系列(v1-v3+tinyv3)

yolov3是在训练的数据集上聚类产生prior boxes的一系列宽高(是在图像416x416的坐标系里),默认9种。YOLOV3思想理论是将输入图像分成SxS个格子(有三处进行检测,分别是在52x52, 26x26, 13x13的feature map上,即S会分别为52,26,13),若某个物体Ground truth的中心位置的坐标落入到某个格子,那么这个格子就负责检测中心落在该栅格中的物体。三次检测,每次对应的感受野不同,32倍降采样的感受野最大(13x13),适合检测大的目标。

1536

YOLOv3网络结构细致解析

YOLOv3网络结构细致解析 先贴一张结构图镇楼: layer filters size input output 0 conv 32 3 x 3 / 1 416 x 416 x 3 -&gt; 416 x 416 x 32 0.299 BFLOPs 1 conv 64 3 x 3 / 2 416 x 416 x 32 -&gt; 208 x 208 x 64 1.595 BFLOPs 2 c...

4404

在树莓派4B上使用YOLO v3 Tiny进行实时目标检测

首先尝试使用yolo官网yolo给的教程,在树莓派上测试,但是在运行时出现段错误,尝试很多方法无法解决。在国外的网站找到darknet-nnpack这个东西,可以完美的在树莓派上运行。 参考的文章 darknet-nnpack https://github.com/zxzhaixiang/darknet-nnpack Fun of DIY http://funofdiy.blogspot.c...

weixin_43878078的博客 2万+
上一篇: Matlab 集成xgboost实战指南:从源码编译到模型部署
下一篇: 生物信息学领域顶级期刊与会议投稿指南:从选刊策略到实战经验
Python
博客等级 码龄26年 1973粉丝 1567原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值