我正在做一个需要在现实世界中重新调整对象的项目(比如水果、椅子、笔记本、桌子、扬声器......等等等等)
我想问的第一件事是“这可能吗?”,我现在是信息技术大学的三年级学生
第二个是“是否有任何可用的 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 (darknet)的 ac# 包装器。根据预训练模型,您可以检测到许多不同的对象(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
}