Alphapose - 在Alphapose中使用yolov3-tiny检测器大幅提升检测性能
1 Alphapose中使用yolov3-tiny检测器的应用场景
Alphapose的官方仓库中默认使用的是yolov3-spp,根据官网公布的数据,其mAP为60.6,FPS能到20FPS。但是如果我们面临的是一个不复杂的场景,场景中人数较少,而我们有需要其性能够好,实时性能达到应用的要求或者更好,那我们为什么不使用yolov3-tiny检测器,由于简化了网络结构,根据官网的公布的数据,其FPS能达到220FPS,而mAP也有33.1,对于普通场景这种精度完全够用。
2 在Alphapose中使用yolov3-tiny
2.1 下载yolov3-tiny的权重和配置文件
官网地址:https://pjreddie.com/darknet/yolo/
在官网分别下载weights和cfg文件
将权重文件yolov3-tiny.weights放置到Alphapose的AlphaPose\detector\yolo\data文件夹下;
将配置文件yolov3-tiny.cfg放置到Alphapose的AlphaPose\detector\yolo\cfg文件夹下;
2.2 修改Alphapose的yolo_cfg文件
将AlphaPose\detector\yolo_cfg.py文件中的:
cfg.CONFIG = 'detector/yolo/cfg/yolov3-spp.cfg'
cfg.WEIGHTS = 'detector/yolo/data/yolov3-spp.weights'
修改为
cfg.CONFIG = 'detector/yolo/cfg/yolov3-tiny.cfg'
cfg.WEIGHTS = 'detector/yolo/data/yolov3-tiny.weights'
附上yolo_cfg.py的全部内容:
from easydict import EasyDict as edictcfg = edict()cfg.CONFIG = 'detector/yolo/cfg/yolov3-tiny.cfg'
cfg.WEIGHTS = 'detector/yolo/data/yolov3-tiny.weights'cfg.INP_DIM = 320
cfg.NMS_THRES = 0.45
cfg.CONFIDENCE = 0.6
cfg.NUM_CLASSES = 80
2.3 yolov3-tiny.cfg的修改
好了,在我们进行了上述配置之后,就可以信心满满的运行Alphapose,试一试Alphapose的速度了!!!
但是,出现了以下错误:
Traceback (most recent call last):File "G:\ProgramData\Anaconda3\envs\Alphapose\lib\threading.py", line 926, in _bootstrap_innerself.run()File "G:\ProgramData\Anaconda3\envs\Alphapose\lib\threading.py", line 870, in runself._target(*self._args, **self._kwargs)File "F:\下载目录\Github项目\Machine Learning And Deep Learning\AlphaPose\alphapose\utils\detector.py", line 223, in image_detectiondets = self.detector.images_detection(imgs, im_dim_list)File "F:\下载目录\Github项目\Machine Learning And Deep Learning\AlphaPose\detector\yolo_api.py", line 99, in images_detectionprediction = self.model(imgs, args=args)File "G:\ProgramData\Anaconda3\envs\Alphapose\lib\site-packages\torch\nn\modules\module.py", line 727, in _call_implresult = self.forward(*input, **kwargs)File "F:\下载目录\Github项目\Machine Learning And Deep Learning\AlphaPose\detector\yolo\darknet.py", line 353, in forwardx = torch.cat((map1, map2), 1)
RuntimeError: Sizes of tensors must match except in dimension 2. Got 20 and 18 (The offending index is 0)
好吧,从错误上以及调试的结果来看估计是yolov3-tiny.cfg网络结果有点问题,可是官方的配置文件为啥有问题啊!
不管了,经过我的不懈测试,终于发现了问题所在的地方,yolov3-tiny.cfg的157行:
[route]
layers = -1, 8
将其修改为:
[route]
layers = -1, 19
即可。
附上修改后的yolov3-tiny.cfg全部内容:
[net]
# Testing
batch=1
subdivisions=1
# Training
# batch=64
# subdivisions=2
width=416
height=416
channels=3
momentum=0.9
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1learning_rate=0.001
burn_in=1000
max_batches = 500200
policy=steps
steps=400000,450000
scales=.1,.1[convolutional]
batch_normalize=1
filters=16
size=3
stride=1
pad=1
activation=leaky[maxpool]
size=2
stride=2[convolutional]
batch_normalize=1
filters=32
size=3
stride=1
pad=1
activation=leaky[maxpool]
size=2
stride=2[convolutional]
batch_normalize=1
filters=64
size=3
stride=1
pad=1
activation=leaky[maxpool]
size=2
stride=2[convolutional]
batch_normalize=1
filters=128
size=3
stride=1
pad=1
activation=leaky[maxpool]
size=2
stride=2[convolutional]
batch_normalize=1
filters=256
size=3
stride=1
pad=1
activation=leaky[maxpool]
size=2
stride=2[convolutional]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky[maxpool]
size=2
stride=1[convolutional]
batch_normalize=1
filters=1024
size=3
stride=1
pad=1
activation=leaky###########[convolutional]
batch_normalize=1
filters=256
size=1
stride=1
pad=1
activation=leaky[convolutional]
batch_normalize=1
filters=512
size=3
stride=1
pad=1
activation=leaky[convolutional]
size=1
stride=1
pad=1
filters=255
activation=linear[yolo]
mask = 3,4,5
anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319
classes=80
num=6
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1[route]
layers = -4[convolutional]
batch_normalize=1
filters=128
size=1
stride=1
pad=1
activation=leaky[upsample]
stride=2[route]
#layers = -1, 8
layers = -1, 19[convolutional]
batch_normalize=1
filters=256
size=3
stride=1
pad=1
activation=leaky[convolutional]
size=1
stride=1
pad=1
filters=255
activation=linear[yolo]
mask = 0,1,2
anchors = 10,14, 23,27, 37,58, 81,82, 135,169, 344,319
classes=80
num=6
jitter=.3
ignore_thresh = .7
truth_thresh = 1
random=1
修改完之后,就放肆跑吧!!!速度有很大提升!
如果大家感兴趣,可以访问我的个站:https://www.stubbornhuang.com/
Alphapose - 在Alphapose中使用yolov3-tiny检测器大幅提升检测性能相关推荐
- 比Tiny YOLOv3小8倍,性能提升11个点,4MB的网络也能做目标检测
在本文中,来自滑铁卢大学与 Darwin AI 的研究者提出了名为 YOLO Nano 的网络,他们通过人与机器协同设计模型架构大大提升了性能.YOLO Nano 大小只有 4.0MB 左右,比 Ti ...
- 基于yolov3的行人目标检测算法在图像和视频中识别检测
资源下载地址:https://download.csdn.net/download/sheziqiong/85772186 资源下载地址:https://download.csdn.net/downl ...
- 【深度学习】一位算法工程师从30+场秋招面试中总结出的超强面经——目标检测篇(含答案)...
作者丨灯会 来源丨极市平台 编辑丨极市平台 导读 作者灯会为21届中部985研究生,凭借自己整理的面经,去年在腾讯优图暑期实习,七月份将入职百度cv算法工程师.在去年灰飞烟灭的算法求职季中,经过30+ ...
- 手把手教你用yolov3模型实现目标检测教程(一) - 环境配置
手把手教你用yolov3模型实现目标检测(一) 写在前面: 由于项目需要,使用yolov3模型做了各种现实场景物体的目标检测.做完了过了好长时间,感觉有些遗忘,还是该留下点东西,方便自己查找,也希望能 ...
- 基于YOLOv3的口罩佩戴检测
摘 要 为解决市民口罩佩戴目标检测中因小尺寸目标较多导致其识别精度不高的问题,提出一种基于 YOLOv3改进的算法 M_YOLOv3.重构特征金字塔机制,把原本3*3的类金字塔结构扩建为4*4尺寸,把 ...
- 【笔记】基于低空无人机影像和 YOLOv3 实现棉田杂草检测
<基于低空无人机影像和 YOLOv3 实现棉田杂草检测> 单位:石河子大学信息科学与技术学院 作者:薛金利 数据获取 设备:大疆 DJI 四旋翼无人机悟 Inspire l PRO 相机: ...
- 计算机视觉:基于YOLO-V3林业病虫害目标检测
计算机视觉:基于YOLO-V3林业病虫害目标检测 卷积神经网络提取特征 根据输出特征图计算预测框位置和类别 建立输出特征图与预测框之间的关联 计算预测框是否包含物体的概率 计算预测框位置坐标 计算物体 ...
- 论文阅读:超高分辨率图像中快速、准确的条码检测
摘要 由于目标对象的尺度不同,超高分辨率 (UHR) 图像中的对象检测长期以来一直是计算机视觉中的一个具有挑战性的问题.在条码检测方面,将 UHR 输入图像调整为更小的尺寸通常会导致相关信息的丢失,而 ...
- 树莓派摄像头 C++ OpenCV YoloV3 实现实时目标检测
树莓派摄像头 C++ OpenCV YoloV3 实现实时目标检测 本文将实现树莓派摄像头 C++ OpenCV YoloV3 实现实时目标检测,我们会先实现树莓派对视频文件的逐帧检测来验证算法流程, ...
最新文章
- 鸟哥的Linux私房菜(服务器)- 第十三章、文件服务器之一:NFS 服务器
- map:map指向最后一个元素?指向第一个元素?
- 排序算法三:堆排序基本原理以及Python实现
- 从一个简单的Java单例示例谈谈并发
- 第一模块:Python基础(二)
- 使用php进行财务统计,基于php的基金财务数据接口调用代码实例
- spark实战@wordcount-处理目录下的多个文件
- 关键词推荐工具中的用户引导机制之三
- linux 编辑文件出现E45readonly option is set (add! to .....)
- 【wangeditor富文本编辑器v4版自定义功能】格式刷
- SwitchyOmega_Chromium插件的下载安装以及使用
- thinkpadt410接口介绍_【ThinkPadT410s(2912BR7)评测】丰富接口满足日常所需-中关村在线...
- 贪吃蛇c语言存档读档,刚学C语言,想写一个贪吃蛇的代码
- 安装python报错:no acceptable C compiler found in $PATH
- Android中使用自定义的view实现圆形图片的效果
- 【MC 网易-我的世界-mod开发基础笔记】 --- 创建第一个空白Mod
- 文件编码与文件的读写与0x0D0A
- 51单片机串口SBUF是特殊寄存器,只要不写入新的数据就不会消失,写入新的数据就会覆盖之前的,单片机复位后初始值为不确定值
- 二叉树结构——BTree、BTreeNode
- 怎么视频转语音更快速?视频转语音方法分享