是否有任何可用的对象检测/识别 C# 库

本文关键字:识别 检测 对象 任何可 是否 | 更新日期: 2023-09-27 18:35:25

我正在做一个项目,需要在现实世界中重新定位对象(如水果、椅子、笔记本、桌子、扬声器......等等等等)

我想问的第一件事是"这可能吗?",我目前是信息技术大学的三年级学生。

第二个是"是否有任何可用的 C# 库可以帮助我做到这一点?

有什么解决方案吗?如果有人可以回答我的问题,我将不胜感激!

是否有任何可用的对象检测/识别 C# 库

一般来说,这是一项非常艰巨的任务。请记住,设计一个始终检测物体并且不产生错误(误报)的完美系统目前是不可能的。

您可以从使用OpenCV的潜在SVM检测器开始:http://docs.opencv.org/modules/objdetect/doc/latent_svm.html

但是,训练新模型是有问题的。您还可以使用OpenCV HOG描述符和检测器:http://docs.opencv.org/modules/gpu/doc/object_detection.html

或级联分类器:http://docs.opencv.org/modules/objdetect/doc/cascade_classification.html

您应该将自己限制为预定义的集合对象,并为每个对象类训练一个检测器。如果你能将自己限制在OpenCV的潜在svm目前支持的类集上,那么实际上这并不是一件难事。但请记住,总会有遗漏的检测和误报。

您可以使用 Alturos.Yolo 它是 yolo(暗网)的 c# 包装器。根据预先训练的模型,您可以检测许多不同的对象(Yolo9000的训练对象列表)。如果需要更多种类,还可以训练自定义对象。

Nuget 包

PM> install-package Alturos.Yolo

var configurationDetector = new ConfigurationDetector();
var config = configurationDetector.Detect();
//using (var yoloWrapper = new YoloWrapper("yolov2-tiny-voc.cfg", "yolov2-tiny-voc.weights", "voc.names"))
using (var yoloWrapper = new YoloWrapper(config))
{
    var items = yoloWrapper.Detect(@"image.jpg");
    //items[0].Type -> "Person, Car, ..."
    //items[0].Confidence -> 0.0 (low) -> 1.0 (high)
    //items[0].X -> bounding box
    //items[0].Y -> bounding box
    //items[0].Width -> bounding box
    //items[0].Height -> bounding box
}