首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否有可能通过减少对象类的数量来显著减少图像的推理时间?

是否有可能通过减少对象类的数量来显著减少图像的推理时间?
EN

Stack Overflow用户
提问于 2020-07-24 23:28:36
回答 2查看 1.7K关注 0票数 3

我正在使用YOLOv4训练我的自定义检测器。来源:https://github.com/AlexeyAB/darknet

训练时的问题之一是GPU和可用的视频RAM的计算能力。对象类的数量与训练模型所需的时间之间的关系是什么?此外,是否有可能通过减少对象类的数量来显著减少图像的推理时间?目标是在Raspberry Pi或Jetson Nano上运行推理。

任何帮助都是非常感谢的。谢谢。

EN

回答 2

Stack Overflow用户

发布于 2020-07-25 15:32:18

的变化是类的数量不会对推理时间产生重大影响。

例如,在具有3个Yolo层的Yolov4的情况下,类的变化导致conv层在Yolo层之前的filter size的变化,以及Yolo层中的一些计算减少,仅此而已。与总体推理时间相比,这是非常微小的,因为conv层之前的Yolo层是具有非常小的宽度和高度的底层,并且花费在依赖于Yolo层中的类数量的逻辑上的时间也非常少。

这里:

代码语言:javascript
复制
filters=(classes + 5)x3

请注意,较小版本的yolov4,即tiny-yolov4,只有两个Yolo层,而不是三个。

如果你的意图是减少推理时间,特别是在覆盆子pi或jetson nano上,而不会损失准确性/mAP,请做以下事情:

  • Quantisation:使用INT8而不是FP32运行推理。您可以使用此repo实现此目的。您可以对Jetson nano和raspberry pi执行此操作。

  • 使用推理库,如,这是一个使用cuDNNtensorRT原语构建的深度神经网络库,专门用于NVIDIA Jetson板。您可以将此用于Jetson nano。请注意,使用时,您可以使用INT8FP16而不是FP32来减少检测时间。

以下技术可以用来减少推理时间,但它们的代价是准确性/mAP显著下降:

你可以用更小的版本而不是完整的Yolo versions.

  • Model剪枝来训练模型-如果你可以根据网络中神经元的贡献程度对它们进行排名,那么你就可以从网络中删除排名较低的神经元,从而得到一个更小、更快的网络。修剪了yolov3研究的paper,结果是implementationThis是另一个修剪过的Yolov3 implementation.
票数 1
EN

Stack Overflow用户

发布于 2020-07-27 01:42:33

我尝试在YOLOv3上将班级数量从80个班级减少到5个班级,我的目标是只检测车辆,结果发现时间减少了。例如,使用英特尔酷睿i5-6300UCPU@ 2.40 GHz,时间减少了50%,而对于Nvidia GeForce 930M,时间减少了20%。一般来说,处理器越强大,减少的时间就越少。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63076707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档