【问题标题】:How to increase the speed of object detection using YOLO in C#.net如何在 C#.net 中使用 YOLO 提高物体检测的速度
【发布时间】:2020-04-24 19:43:05
【问题描述】:

我想通过 YOLO V3 检测车牌区域。为此,我使用暗网创建权重。 训练后创建了一个权重文件。该文件的大小为 234 MB,我使用 darknet53.conv.74 文件和 650 张图片进行训练。

配置文件(yolov3.cfg)是

# Testing
# batch=64
# subdivisions=8
# Training
batch=64
subdivisions=64
width=608
height=608
channels=3
momentum=0.9
decay=0.0005
angle=0
saturation = 1.5
exposure = 1.5
hue=.1

learning_rate=0.001
burn_in=1000
max_batches = 4000
policy=steps
steps=3200,3600
scales=.1,.1
....

之后我在 C#.NET 中使用 Alturos.Yolo 2.6.2 NuGet

YoloWrapper yoloWrapper;
private void Form_Load(object sender, EventArgs e)
{
   yoloWrapper = new YoloWrapper("yolov3.cfg", "yolov3.weights", "voc.names");
}

private void btnDetect_Click(object sender, EventArgs e)
{
   var items = yoloWrapper.Detect(path);
   ...
}

问题是速度。检测车牌区域大约需要 3 秒。

你们有什么提高检测速度的解决方案吗?

【问题讨论】:

  • 您尝试过微型版本的 yolov3 吗?它们足以检测 LP。此外,您还可以处理较小的图像,例如 416*416(这种尺寸的 LP 仍然很明显)。
  • @MH304 我不知道。如何使用微型版本的 yolo3?我必须使用另一个预先训练的重量吗?还是更改配置文件进行训练?
  • 使用另一个 *.cfg 文件(tiny_3Layers 很好)。无需更改配置(虽然如果你的classes编号不同,则必须更改cfg文件中yolo层之前的层中filter的数量)。它们都使用相同的权重文件。

标签: c# image-processing yolo alpr


【解决方案1】:

我们还使用了一个小型版本的 yolo 来检测托盘: https://www.sydesoft.de/kuenstliche-intelligenz.html

这在一秒钟内就可以在 cpu 上运行。

【讨论】:

    【解决方案2】:

    由于您自己训练过,我想您已经知道神经网络需要 GPU 才能运行得更快。无论如何,为了更快地检测,您应该降低网络分辨率或使用 YOLO 的微小变体。今天,这里展示了最强和最快的变体:yolo_v3_tiny_pan3.cfg。其他最新的暗网模型可用here。其他一些网络(例如 mobilenet)经过优化,可以更快地在 CPU 上运行。

    无论如何,这些替代网络需要 AlexeyAB 暗网实现才能工作,因此您需要重新编译您的 c# 包装器的暗网。

    【讨论】:

    • 是的,但我也必须提高 CPU 的速度。什么是合适的网络分辨率?以及如何使用微型版本的 yolo3?我必须使用另一个预先训练的重量吗?或更改配置文件进行培训?我可以通过使用 1 个通道(灰度图像)来提高速度吗?
    • 你任何分辨率,只要它还能检测到板子。根据我的经验,YOLO 效果很好,直到对象大约为 30 像素。 Tiny 确实需要另一个培训文件。你可以在这里找到很多关于它的信息:github.com/AlexeyAB/…。 1 通道图像无助于加快速度。
    猜你喜欢
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 2017-11-16
    • 2021-11-29
    • 2018-09-23
    相关资源
    最近更新 更多