使用ML.Net在C#中进行图像分析

时间:2018-12-12 15:04:47

标签: c# tensorflow machine-learning ml.net

我的文件夹结构中有数千个jpeg。这些图像是我2560 x 1440车道上的快照,每60秒拍摄和存储一次。

我想创建一个程序,该程序可以通过分析图像来检测我或我的妻子在那个特定时间是否在家。我有一辆红色的汽车,她有一辆明亮的黄色的汽车。因此,简单的颜色阈值可能就足够了。另一个明显的区别是我们俩都有自己的位置,从不停泊在其他位置。另外,其他人不使用车道(如果使用,我也不介意误报)。一个小的复杂之处是,相机在黑暗中会切换为黑白(但这可能是在停车位而不是颜色派上用场的时候)。

因此,我希望我可以使用ML.Net并用一些带有手动注释的图像来训练模型,无论是否在车道上看到我或她的汽车,我都用数据标记该图像。我当时想为一天添加100到几百张图像,为夜晚添加另一张图像,然后将所有这些图像提供给ML.Net进行训练,然后分析几百张图像,以便我可以手动检查结果并纠正任何错误,然后创建一种反馈循环以训练数百幅图像。

培训结束后,我想分析当前存储的所有图像以及每张新图像,以生成有关我(或妻子)在家,出门等时间的一些数据。

我的问题是(这可能是因为问题过于“广泛”而关闭)的原因:我不知道如何执行此操作。我已经看到awesome tutorials看起来像是在玩耍,但是当我尝试用C#(我选择的语言)来做,并寻找ML.Net Howto's时,我似乎找不到任何有帮助的东西我朝着正确的方向前进。

例如:Train a machine learning model with data that's not in a text file。我是一名能干的程序员,因此创建CSV文件/数据库/任何包含1.jpg -> rob home, wife not home数据的东西都是花生。但是“操作方法”并没有说明如何将图像输入ML.Net,而且我还没有找到能做的任何事情。最可能的原因是我是ML(.Net)的新手,也许我太顽固了,不能放弃尝试在C#中完成此任务,但听起来似乎很奇怪,但可用的信息却不知所措,但也很少。可用的信息通常使我陷入困境,直到很长一段时间才发现这不是我想要的,我找不到任何暗示我朝着正确方向前进的东西。< / p>

长话短说; tl; dr

如何将图像输入ML.Net,如何告诉ML.Net我/她的汽车在车道上以获取任何给定图像(培训)以及如何让ML.Net告诉我对于给定的图像,它是否认为我/我的妻子在家?还是这个not possible(当前)? 我不是在寻找完整的代码,而是在寻找指针,提示,链接,教程,示例或任何可能帮助我朝正确方向发展的东西。

1 个答案:

答案 0 :(得分:0)

您可能会在这里找到有用的东西Image recognition/classification using Microsoft ML.net 0.2 (Machine learning)

但是,我鼓励您将python视为执行任务的首选武器。 在这里,您只需要根据标签将数据存储在不同的文件夹中,您@home,您的妻子@home,都@home,开车时没有汽车,其他 然后您就可以出发了。 https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html

大概不会花一个周末多的时间,这就是学习python的基础知识。

编辑: 我似乎仍然不支持使用ML.Net训练图像分类任务:“同样,请注意,此示例仅使用/使用带有ML.NET API的预训练TensorFlow模型。因此,它不训练任何ML。 NET模型。目前,仅在ML.NET中支持TensorFlow才能对现有的TensorFlow训练模型进行评分/预测。”

https://github.com/dotnet/docs/issues/5379这里有一个主题,

您可以尝试使用:http://www.emgu.com/wiki/index.php/Main_Page与OpenCV结合使用,此https://www.geeksforgeeks.org/opencv-python-program-vehicle-detection-video-frame/是python中的示例,但应使用emgu很好地转换为c ++或c#。一旦检测到汽车,请检查其位置和颜色。这种方法可能还会避免标记任何数据。

或者使用预先训练的h5模型文件并将其加载到ML.Net中,然后检查位置和平均颜色以检查谁的车。