提出目标:相比低计算量(BFLOP),更着重于优化并行计算,在production system中实现快速计算。
YOLOv4的作者阵容里并没有Joe Redmon,
一作为俄罗斯 Alexey Bochkovskiy ,是 YOLO 的 windows 版本github的作者。
并得到YOLO官方github的认可,
文章也对pytorch 版的yolo做了致谢。
paper YOLOv4: Optimal Speed and Accuracy of Object Detection
107ref 17 pages
链接:https://pan.baidu.com/s/1XrcPHdp2_4c-dKge2Guw4w
提取码:xsxb
翻译
https://tongtianta.site/paper/89863
1 概况
(1)效果
越右上越好。在 MS COCO 数据集上获得了 43.5% 的 AP 值 (65.7% AP50),在 Tesla V100 上实现了 ∼65 FPS 的实时速度。
在取得与 EfficientDet 同等性能的情况下,速度是 EfficientDet 的二倍!
与 YOLOv3 相比,新版本的 AP 和 FPS 分别提高了 10% 和 12%。
- 提出适合单GPU 训练一个快速准确的目标检测器。
- 验证了当前最优 Bag-of-Freebies (训练阶段优化方法)和 Bag-of-Specials(测试阶段优化方法) 目标检测方法在检测器训练过程中的影响。
(2)总体结构
网络结构细节
https://blog.csdn.net/weixin_41560402/article/details/106119774
(3)改进方法
堆了20多种skills
进行了对比和选择
分两类: Bag-of-Freebies (训练阶段优化方法)和 Bag-of-Specials(测试阶段优化方法)
训练阶段优化方法
骨干网络训练阶段优化
- 数据增强Mosaic data augmentation
- 正则化DropBlock regularization
- 类标签平滑Class label smoothing
- Cutmix
骨干网络检测阶段优化
- Mish 激活 Mish-activation
- Cross-stage partial connections (CSP)
- Multi-input weighted residual connections (MiWRC)加权残差连接
detector训练阶段优化
- 损失CIoU loss
- Cross mini-Batch Normalization (CmBN)
- 正则化DropBlock regularization
- 数据增强Mosaic data augmentation
- 自对抗训练Self-adversarial-training (SAT)
- Eliminate grid sensitivity
- Using multiple anchors for a single ground truth
- Cosine annealing scheduler [52]
- 使用遗传算法选择最优超参数Optimal hyper-parameters
- Random training shapes
detector检测阶段优化
- Mish 激活 Mish-activation
- SPP-block
- SAM-block
- PAN path-aggregation block
- DIoU-NMS
(4)对比试验
横向上对比了其他检测算法
efficientdet tridentnet
纵向上,在自身模型上对上述方法加上与否做了对比,
数据增强方法对比
有效方法:
- CutMix
- Mosaic
- LabelSmoothing
- Mish
训练方法对比
- M: Mosaic data augmentation - using the 4-image mosaic during training instead of single image 有效
- GA: Genetic algorithms - using genetic algorithms for selecting the optimal hyperparameters during network 有效
- CBN: CmBN - using Cross mini-Batch Normalization for collecting statistics inside the entire batch, instead of collecting statistics inside a single mini-batch 有效
- CA: Cosine annealing scheduler - altering the learning rate during sinusoid training 有效
- GIoU, CIoU, DIoU, MSE - using different loss algorithms for bounded box regression CIoU 最有效
对yolov4无效的方法
- IT: IoU threshold - using multiple anchors for a single ground truth IoU (truth, anchor) > IoU threshold training on the first 10% of time periods
- S: Eliminate grid sensitivity
- LS: Class label smoothing - using class label smoothing for sigmoid activation
- DM: Dynamic mini-batch size - automatic increase of mini-batch size during small resolution training by using Random training shapes
- OA: Optimized Anchors - using the optimized anchors for training with the 512x512 network resolution
测试阶段方法对比
有效方法
- PANet
- SPP
- SAM
骨干网络选择
cspdarknet优于cspresnext
- Mish 有效
minibatch 大小影响
minibatch越大越好,cspdarknet对minibatch不敏感,利于单卡训练
2 结构
(1)骨干网络 backbone
**目的:**找出输入网络分辨率、卷积层数量、参数量(滤波器大小滤波器通道/组)和层输入数量(滤波器)四者之间的最优平衡。
在卷积层中使用少量组(1-8 组):CSPResNeXt50 / CSPDarknet53
;
CSPNet块思路:
类似块级别的跳层连接。把上一部分层分成两部分,分别不被处理和处理后,在concat
CSPNet开源了一部分cfg文件,其中一部分cfg可以直接使用AlexeyAB版Darknet还有ultralytics的yolov3运行。
https://github.com/WongKinYiu/CrossStagePartialNetworks
利用netron可视化cfg,可以看到cspdarknet 一个netron的结构
左侧不处理,最后和右侧concat
csp介绍
(2)Neck 额外块
理解为多尺度特征融合
目的是挑选能够增加感受野的额外块(additional block),以及针对不同级别的检测器从不同骨干层中挑选最佳的参数聚合方法,如 FPN、PAN、ASFF 和 BiFPN 网络。
SPP块
Spatial pyramid pooling in deep convolutional networks for visual recognition
研究者在 CSPDarknet53 上添加了 SPP 块,因为它能够极大地增加感受野,分离出最显著的上下文特征,并且几乎没有降低网络运行速度。
分别使用1,5,9,13的maxpool
PANet
Path aggregation network for instance segmentation
针对不同级别的检测器,挑选 PANet 作为对不同backbone层进行参数聚合的方法,而放弃了 YOLOv3 中使用的 FPN 网络。
concat 能够提供更丰富的信息。
SAM
注意力模块主要分为通道注意和点注意,这两种注意模型的代表是 SE [29]和空间注意模块(SAM)[ 85]。尽管SE模块可以将ImageNet图像分类任务中的ResNet50的功能提高1%至top-1准确性,但其代价是仅将计算工作量增加2%,但是在GPU上通常会增加大约10%的推理时间,因此更适合在移动设备中使用。
SAM它只需要支付0.1%的额外费用即可在ImageNet图像分类任务上将ResNet50-SE的top-1准确性提高0.5%。最好的是,它根本不影响GPU上的推理速度。
并没有看到sam在网络里的使用?
Mish激活函数
平滑的激活函数允许更好的信息深入神经网络,从而得到更好的准确性和泛化。
直接看Mish的代码会更简单一点,简单总结一下,Mish=x * tanh(ln(1+e^x))。
其他的激活函数,ReLU是x = max(0,x),Swish是x * sigmoid(x)。
硬件不友好,提高的一两个点精度的代价竟然是几十几百倍的硬件复杂度。
# -*- coding: utf-8 -*-
import torch
import torch.nn as nn
import torch.nn.functional as F
from matplotlib import pyplot as pltclass Mish(nn.Module):def __init__(self):super().__init__()print("Mish activation loaded...")def forward(self,x):x = x * (torch.tanh(F.softplus(x)))return xmish = Mish()
x = torch.linspace(-10,10,1000)
y = mish(x)plt.plot(x,y)
plt.grid()
plt.show()
(3)Head
YOLOV3 基于anchor的预测方法
3 改进方法
(1) 训练阶段优化方法
数据增强方法
mosaic
新型数据增强方法 Mosaic 混合了 4 张训练图像,而 CutMix 只混合了两张输入图像,具体如下图所示:
自对抗训练(SAT)
也是一种新的数据增强方法,它包括两个阶段。第一个阶段中,神经网络更改原始图像;第二阶段中,训练神经网络以正常方式在修改后的图像上执行目标检测任务。
BN
(2) 测试阶段优化方法
code 测试
默认运行过之前版本
https://blog.csdn.net/qq_35608277/article/details/79468896?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158842468819724848311078%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=158842468819724848311078&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2blogfirst_rank_v2~rank_v25-2
编译发现报错
根据机器情况,把.vcxproj cuda版本改一下,v10.
nvcc fatal : Unsupported gpu architecture 'code=sm_75‘
gpu算力对应不上
把.vcxproj 关于cuda的改一下,去掉compute部分,
104行和154行
即可编译通过
用下载的权重(一般是coco数据集的,所以用了coco.data )
cmd:
darknet.exe detector test data/test_coco.data cfg/yolov4.cfg weights/yolov4.weights
net.optimized_memory = 0
mini_batch = 1, batch = 8, time_steps = 1, train = 0layer filters size/strd(dil) input output0 conv 32 3 x 3/ 1 608 x 608 x 3 -> 608 x 608 x 32 0.639 BF1 conv 64 3 x 3/ 2 608 x 608 x 32 -> 304 x 304 x 64 3.407 BF2 conv 64 1 x 1/ 1 304 x 304 x 64 -> 304 x 304 x 64 0.757 BF3 route 1 -> 304 x 304 x 644 conv 64 1 x 1/ 1 304 x 304 x 64 -> 304 x 304 x 64 0.757 BF5 conv 32 1 x 1/ 1 304 x 304 x 64 -> 304 x 304 x 32 0.379 BF6 conv 64 3 x 3/ 1 304 x 304 x 32 -> 304 x 304 x 64 3.407 BF7 Shortcut Layer: 4, wt = 0, wn = 0, outputs: 304 x 304 x 64 0.006 BF8 conv 64 1 x 1/ 1 304 x 304 x 64 -> 304 x 304 x 64 0.757 BF9 route 8 2 -> 304 x 304 x 12810 conv 64 1 x 1/ 1 304 x 304 x 128 -> 304 x 304 x 64 1.514 BF11 conv 128 3 x 3/ 2 304 x 304 x 64 -> 152 x 152 x 128 3.407 BF12 conv 64 1 x 1/ 1 152 x 152 x 128 -> 152 x 152 x 64 0.379 BF13 route 11 -> 152 x 152 x 12814 conv 64 1 x 1/ 1 152 x 152 x 128 -> 152 x 152 x 64 0.379 BF15 conv 64 1 x 1/ 1 152 x 152 x 64 -> 152 x 152 x 64 0.189 BF16 conv 64 3 x 3/ 1 152 x 152 x 64 -> 152 x 152 x 64 1.703 BF17 Shortcut Layer: 14, wt = 0, wn = 0, outputs: 152 x 152 x 64 0.001 BF18 conv 64 1 x 1/ 1 152 x 152 x 64 -> 152 x 152 x 64 0.189 BF19 conv 64 3 x 3/ 1 152 x 152 x 64 -> 152 x 152 x 64 1.703 BF20 Shortcut Layer: 17, wt = 0, wn = 0, outputs: 152 x 152 x 64 0.001 BF21 conv 64 1 x 1/ 1 152 x 152 x 64 -> 152 x 152 x 64 0.189 BF22 route 21 12 -> 152 x 152 x 12823 conv 128 1 x 1/ 1 152 x 152 x 128 -> 152 x 152 x 128 0.757 BF24 conv 256 3 x 3/ 2 152 x 152 x 128 -> 76 x 76 x 256 3.407 BF25 conv 128 1 x 1/ 1 76 x 76 x 256 -> 76 x 76 x 128 0.379 BF26 route 24 -> 76 x 76 x 25627 conv 128 1 x 1/ 1 76 x 76 x 256 -> 76 x 76 x 128 0.379 BF28 conv 128 1 x 1/ 1 76 x 76 x 128 -> 76 x 76 x 128 0.189 BF29 conv 128 3 x 3/ 1 76 x 76 x 128 -> 76 x 76 x 128 1.703 BF30 Shortcut Layer: 27, wt = 0, wn = 0, outputs: 76 x 76 x 128 0.001 BF31 conv 128 1 x 1/ 1 76 x 76 x 128 -> 76 x 76 x 128 0.189 BF32 conv 128 3 x 3/ 1 76 x 76 x 128 -> 76 x 76 x 128 1.703 BF33 Shortcut Layer: 30, wt = 0, wn = 0, outputs: 76 x 76 x 128 0.001 BF34 conv 128 1 x 1/ 1 76 x 76 x 128 -> 76 x 76 x 128 0.189 BF35 conv 128 3 x 3/ 1 76 x 76 x 128 -> 76 x 76 x 128 1.703 BF36 Shortcut Layer: 33, wt = 0, wn = 0, outputs: 76 x 76 x 128 0.001 BF37 conv 128 1 x 1/ 1 76 x 76 x 128 -> 76 x 76 x 128 0.189 BF38 conv 128 3 x 3/ 1 76 x 76 x 128 -> 76 x 76 x 128 1.703 BF39 Shortcut Layer: 36, wt = 0, wn = 0, outputs: 76 x 76 x 128 0.001 BF40 conv 128 1 x 1/ 1 76 x 76 x 128 -> 76 x 76 x 128 0.189 BF41 conv 128 3 x 3/ 1 76 x 76 x 128 -> 76 x 76 x 128 1.703 BF42 Shortcut Layer: 39, wt = 0, wn = 0, outputs: 76 x 76 x 128 0.001 BF43 conv 128 1 x 1/ 1 76 x 76 x 128 -> 76 x 76 x 128 0.189 BF44 conv 128 3 x 3/ 1 76 x 76 x 128 -> 76 x 76 x 128 1.703 BF45 Shortcut Layer: 42, wt = 0, wn = 0, outputs: 76 x 76 x 128 0.001 BF46 conv 128 1 x 1/ 1 76 x 76 x 128 -> 76 x 76 x 128 0.189 BF47 conv 128 3 x 3/ 1 76 x 76 x 128 -> 76 x 76 x 128 1.703 BF48 Shortcut Layer: 45, wt = 0, wn = 0, outputs: 76 x 76 x 128 0.001 BF49 conv 128 1 x 1/ 1 76 x 76 x 128 -> 76 x 76 x 128 0.189 BF50 conv 128 3 x 3/ 1 76 x 76 x 128 -> 76 x 76 x 128 1.703 BF51 Shortcut Layer: 48, wt = 0, wn = 0, outputs: 76 x 76 x 128 0.001 BF52 conv 128 1 x 1/ 1 76 x 76 x 128 -> 76 x 76 x 128 0.189 BF53 route 52 25 -> 76 x 76 x 25654 conv 256 1 x 1/ 1 76 x 76 x 256 -> 76 x 76 x 256 0.757 BF55 conv 512 3 x 3/ 2 76 x 76 x 256 -> 38 x 38 x 512 3.407 BF56 conv 256 1 x 1/ 1 38 x 38 x 512 -> 38 x 38 x 256 0.379 BF57 route 55 -> 38 x 38 x 51258 conv 256 1 x 1/ 1 38 x 38 x 512 -> 38 x 38 x 256 0.379 BF59 conv 256 1 x 1/ 1 38 x 38 x 256 -> 38 x 38 x 256 0.189 BF60 conv 256 3 x 3/ 1 38 x 38 x 256 -> 38 x 38 x 256 1.703 BF61 Shortcut Layer: 58, wt = 0, wn = 0, outputs: 38 x 38 x 256 0.000 BF62 conv 256 1 x 1/ 1 38 x 38 x 256 -> 38 x 38 x 256 0.189 BF63 conv 256 3 x 3/ 1 38 x 38 x 256 -> 38 x 38 x 256 1.703 BF64 Shortcut Layer: 61, wt = 0, wn = 0, outputs: 38 x 38 x 256 0.000 BF65 conv 256 1 x 1/ 1 38 x 38 x 256 -> 38 x 38 x 256 0.189 BF66 conv 256 3 x 3/ 1 38 x 38 x 256 -> 38 x 38 x 256 1.703 BF67 Shortcut Layer: 64, wt = 0, wn = 0, outputs: 38 x 38 x 256 0.000 BF68 conv 256 1 x 1/ 1 38 x 38 x 256 -> 38 x 38 x 256 0.189 BF69 conv 256 3 x 3/ 1 38 x 38 x 256 -> 38 x 38 x 256 1.703 BF70 Shortcut Layer: 67, wt = 0, wn = 0, outputs: 38 x 38 x 256 0.000 BF71 conv 256 1 x 1/ 1 38 x 38 x 256 -> 38 x 38 x 256 0.189 BF72 conv 256 3 x 3/ 1 38 x 38 x 256 -> 38 x 38 x 256 1.703 BF73 Shortcut Layer: 70, wt = 0, wn = 0, outputs: 38 x 38 x 256 0.000 BF74 conv 256 1 x 1/ 1 38 x 38 x 256 -> 38 x 38 x 256 0.189 BF75 conv 256 3 x 3/ 1 38 x 38 x 256 -> 38 x 38 x 256 1.703 BF76 Shortcut Layer: 73, wt = 0, wn = 0, outputs: 38 x 38 x 256 0.000 BF77 conv 256 1 x 1/ 1 38 x 38 x 256 -> 38 x 38 x 256 0.189 BF78 conv 256 3 x 3/ 1 38 x 38 x 256 -> 38 x 38 x 256 1.703 BF79 Shortcut Layer: 76, wt = 0, wn = 0, outputs: 38 x 38 x 256 0.000 BF80 conv 256 1 x 1/ 1 38 x 38 x 256 -> 38 x 38 x 256 0.189 BF81 conv 256 3 x 3/ 1 38 x 38 x 256 -> 38 x 38 x 256 1.703 BF82 Shortcut Layer: 79, wt = 0, wn = 0, outputs: 38 x 38 x 256 0.000 BF83 conv 256 1 x 1/ 1 38 x 38 x 256 -> 38 x 38 x 256 0.189 BF84 route 83 56 -> 38 x 38 x 51285 conv 512 1 x 1/ 1 38 x 38 x 512 -> 38 x 38 x 512 0.757 BF86 conv 1024 3 x 3/ 2 38 x 38 x 512 -> 19 x 19 x1024 3.407 BF87 conv 512 1 x 1/ 1 19 x 19 x1024 -> 19 x 19 x 512 0.379 BF88 route 86 -> 19 x 19 x102489 conv 512 1 x 1/ 1 19 x 19 x1024 -> 19 x 19 x 512 0.379 BF90 conv 512 1 x 1/ 1 19 x 19 x 512 -> 19 x 19 x 512 0.189 BF91 conv 512 3 x 3/ 1 19 x 19 x 512 -> 19 x 19 x 512 1.703 BF92 Shortcut Layer: 89, wt = 0, wn = 0, outputs: 19 x 19 x 512 0.000 BF93 conv 512 1 x 1/ 1 19 x 19 x 512 -> 19 x 19 x 512 0.189 BF94 conv 512 3 x 3/ 1 19 x 19 x 512 -> 19 x 19 x 512 1.703 BF95 Shortcut Layer: 92, wt = 0, wn = 0, outputs: 19 x 19 x 512 0.000 BF96 conv 512 1 x 1/ 1 19 x 19 x 512 -> 19 x 19 x 512 0.189 BF97 conv 512 3 x 3/ 1 19 x 19 x 512 -> 19 x 19 x 512 1.703 BF98 Shortcut Layer: 95, wt = 0, wn = 0, outputs: 19 x 19 x 512 0.000 BF99 conv 512 1 x 1/ 1 19 x 19 x 512 -> 19 x 19 x 512 0.189 BF100 conv 512 3 x 3/ 1 19 x 19 x 512 -> 19 x 19 x 512 1.703 BF101 Shortcut Layer: 98, wt = 0, wn = 0, outputs: 19 x 19 x 512 0.000 BF102 conv 512 1 x 1/ 1 19 x 19 x 512 -> 19 x 19 x 512 0.189 BF103 route 102 87 -> 19 x 19 x1024104 conv 1024 1 x 1/ 1 19 x 19 x1024 -> 19 x 19 x1024 0.757 BF105 conv 512 1 x 1/ 1 19 x 19 x1024 -> 19 x 19 x 512 0.379 BF106 conv 1024 3 x 3/ 1 19 x 19 x 512 -> 19 x 19 x1024 3.407 BF107 conv 512 1 x 1/ 1 19 x 19 x1024 -> 19 x 19 x 512 0.379 BF108 max 5x 5/ 1 19 x 19 x 512 -> 19 x 19 x 512 0.005 BF109 route 107 -> 19 x 19 x 512110 max 9x 9/ 1 19 x 19 x 512 -> 19 x 19 x 512 0.015 BF111 route 107 -> 19 x 19 x 512112 max 13x13/ 1 19 x 19 x 512 -> 19 x 19 x 512 0.031 BF113 route 112 110 108 107 -> 19 x 19 x2048114 conv 512 1 x 1/ 1 19 x 19 x2048 -> 19 x 19 x 512 0.757 BF115 conv 1024 3 x 3/ 1 19 x 19 x 512 -> 19 x 19 x1024 3.407 BF116 conv 512 1 x 1/ 1 19 x 19 x1024 -> 19 x 19 x 512 0.379 BF117 conv 256 1 x 1/ 1 19 x 19 x 512 -> 19 x 19 x 256 0.095 BF118 upsample 2x 19 x 19 x 256 -> 38 x 38 x 256119 route 85 -> 38 x 38 x 512120 conv 256 1 x 1/ 1 38 x 38 x 512 -> 38 x 38 x 256 0.379 BF121 route 120 118 -> 38 x 38 x 512122 conv 256 1 x 1/ 1 38 x 38 x 512 -> 38 x 38 x 256 0.379 BF123 conv 512 3 x 3/ 1 38 x 38 x 256 -> 38 x 38 x 512 3.407 BF124 conv 256 1 x 1/ 1 38 x 38 x 512 -> 38 x 38 x 256 0.379 BF125 conv 512 3 x 3/ 1 38 x 38 x 256 -> 38 x 38 x 512 3.407 BF126 conv 256 1 x 1/ 1 38 x 38 x 512 -> 38 x 38 x 256 0.379 BF127 conv 128 1 x 1/ 1 38 x 38 x 256 -> 38 x 38 x 128 0.095 BF128 upsample 2x 38 x 38 x 128 -> 76 x 76 x 128129 route 54 -> 76 x 76 x 256130 conv 128 1 x 1/ 1 76 x 76 x 256 -> 76 x 76 x 128 0.379 BF131 route 130 128 -> 76 x 76 x 256132 conv 128 1 x 1/ 1 76 x 76 x 256 -> 76 x 76 x 128 0.379 BF133 conv 256 3 x 3/ 1 76 x 76 x 128 -> 76 x 76 x 256 3.407 BF134 conv 128 1 x 1/ 1 76 x 76 x 256 -> 76 x 76 x 128 0.379 BF135 conv 256 3 x 3/ 1 76 x 76 x 128 -> 76 x 76 x 256 3.407 BF136 conv 128 1 x 1/ 1 76 x 76 x 256 -> 76 x 76 x 128 0.379 BF137 conv 256 3 x 3/ 1 76 x 76 x 128 -> 76 x 76 x 256 3.407 BF138 conv 255 1 x 1/ 1 76 x 76 x 256 -> 76 x 76 x 255 0.754 BF139 yolo
[yolo] params: iou loss: ciou (4), iou_norm: 0.07, cls_norm: 1.00, scale_x_y: 1.20
nms_kind: greedynms (1), beta = 0.600000140 route 136 -> 76 x 76 x 128141 conv 256 3 x 3/ 2 76 x 76 x 128 -> 38 x 38 x 256 0.852 BF142 route 141 126 -> 38 x 38 x 512143 conv 256 1 x 1/ 1 38 x 38 x 512 -> 38 x 38 x 256 0.379 BF144 conv 512 3 x 3/ 1 38 x 38 x 256 -> 38 x 38 x 512 3.407 BF145 conv 256 1 x 1/ 1 38 x 38 x 512 -> 38 x 38 x 256 0.379 BF146 conv 512 3 x 3/ 1 38 x 38 x 256 -> 38 x 38 x 512 3.407 BF147 conv 256 1 x 1/ 1 38 x 38 x 512 -> 38 x 38 x 256 0.379 BF148 conv 512 3 x 3/ 1 38 x 38 x 256 -> 38 x 38 x 512 3.407 BF149 conv 255 1 x 1/ 1 38 x 38 x 512 -> 38 x 38 x 255 0.377 BF150 yolo
[yolo] params: iou loss: ciou (4), iou_norm: 0.07, cls_norm: 1.00, scale_x_y: 1.10
nms_kind: greedynms (1), beta = 0.600000151 route 147 -> 38 x 38 x 256152 conv 512 3 x 3/ 2 38 x 38 x 256 -> 19 x 19 x 512 0.852 BF153 route 152 116 -> 19 x 19 x1024154 conv 512 1 x 1/ 1 19 x 19 x1024 -> 19 x 19 x 512 0.379 BF155 conv 1024 3 x 3/ 1 19 x 19 x 512 -> 19 x 19 x1024 3.407 BF156 conv 512 1 x 1/ 1 19 x 19 x1024 -> 19 x 19 x 512 0.379 BF157 conv 1024 3 x 3/ 1 19 x 19 x 512 -> 19 x 19 x1024 3.407 BF158 conv 512 1 x 1/ 1 19 x 19 x1024 -> 19 x 19 x 512 0.379 BF159 conv 1024 3 x 3/ 1 19 x 19 x 512 -> 19 x 19 x1024 3.407 BF160 conv 255 1 x 1/ 1 19 x 19 x1024 -> 19 x 19 x 255 0.189 BF161 yolo
[yolo] params: iou loss: ciou (4), iou_norm: 0.07, cls_norm: 1.00, scale_x_y: 1.05
nms_kind: greedynms (1), beta = 0.600000
Total BFLOPS 128.459
avg_outputs = 1068395Allocate additional workspace_size = 33.55 MB
Loading weights from weights/yolov4.weights...seen 64, trained: 32032 K-images (500 Kilo-batches_64)
Done! Loaded 162 layers from weights-file
Enter Image Path:
data/dog.jpg: Predicted in 47.783000 milli-seconds.
bicycle: 91%
dog: 98%
truck: 92%
pottedplant: 32%
多检测出了个 pottedplant 盆栽,更加敏感了,
单看确实很符合盆栽特性,但yolo不会对周围语义判断。
在1070上速度20fps,慢了
ref
https://www.cnblogs.com/pprp/p/12771430.html