将图像发送到 yolo(暗网)并接收对象位置和类型

Send an image to yolo (darknet) and receive object position and type

是否有可能将图像从 C# 发送到 yolo 并接收所有检测到的对象位置和类型。

例如演示图片

type      | x   | y   | width | height
-------------------------------------------
bicycle   | 214 | 150 | 450   | 378
dog       | 150 | 260 | 210   | 350
truck     | 540 | 100 | 250   | 150

示例代码

public class Yolo
{
    public ObjectPosition[] GetObjects(Image image)
    {
        //return yolo result
    }
}

public class ObjectPosition
{
    public string Type { get; set; }
    public int X { get; set; }
    public int Y { get; set; }
    public int Width { get; set; }
    public int Height { get; set; }
}

YOLO 似乎没有公开用于检索结果和边界框的端点。

如果您通读 YOLO 网页,您会发现在命令行中它将 return 带有对象和置信度评级的字符串,以及边界框(如演示预测图像中所示) 实际上是 输出到 predictions.png 文件。

我相信如果您想要这些边界框,您可能需要下载 YOLO 源代码并将其控制台输出也调整为 return 这些值。

是的,你可以使用这个 nuget 包 Alturos.Yolo for your requirement. More informations you found on the product page

安装依赖[=​​23=]

首先安装这两个nuget包,第一个是opencv和c++ yolo项目的逻辑,第二个包含yolo配置数据。

PM> install-package Alturos.Yolo
PM> install-package Alturos.YoloV2TinyVocData

代码示例

using (var yoloWrapper = new YoloWrapper("yolov2-tiny-voc.cfg", "yolov2-tiny-voc.weights", "voc.names"))
{
    var items = yoloWrapper.Detect("image.jpg");
}

我正在使用 https://github.com/AlexeyAB/darknet fork 在 windows 上使用 yolo。那里有 yolo_cpp_dll 和 yolo_cpp_dll_no_gpu 项目来构建 Yolo DLL。它的 "detect" 函数获取图像和 returns 组检测,每个都是结构:{x,y,w,h,prob,class_id}。还有 darknet.py 使用来自 python 的 DLL 的示例。我不认为从 c# 开始会更难。