【问题标题】:Image analysis in C# with ML.Net使用 ML.Net 在 C# 中进行图像分析
【发布时间】:2018-12-12 15:04:47
【问题描述】:

我在一个文件夹结构中有数千个 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# 中完成此任务,但可用的信息虽然听起来很奇怪,但也很稀缺。可用的信息通常会让我陷入困境,但在太久之后才发现这不是我想要的我找不到任何暗示我朝着正确方向前进的东西。

长话短说; tl;dr

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

【问题讨论】:

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


    【解决方案1】:

    你可能会在这里找到有用的东西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 模型。目前,TensorFlow 仅支持在 ML.NET 中使用现有的 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 中,然后检查位置和平均颜色以检查它是谁的车。

    【讨论】:

    • 您链接到的问题有几个问题:首先,它大约是 0.2,如果我理解正确,它是一个“史前”版本。 ML.Net 在 0.8 上,显然从那时起发生了很多变化(因为大多数 0.2 代码都不起作用)。然后第一个答案说不可能,第二个建议 Accord.net 这不是我的问题,third answer 链接到 404 但说这是可能的。我知道 Python 的基础知识(以及一大堆其他语言),但同样,这不是我的目标。我想在 C# 中实现这一点。
    • 不过,我确实会查看其他语言的示例/教程,因为它可能会为我提供关键字或技术或任何我可以通过 Google C#(或 (ML).Net)获取的特定信息。但是,尽管我自己找到了链接的问题,但您的回答并花时间输入它是值得赞赏的——我可能应该在我的问题中提到这一点。不过还是谢谢!您链接的博文中描述的是我正在尝试做的事情,但随后在 C#/ML.Net 中。所以我确实有一些新的关键字可以尝试。
    • 这可能会更有帮助 github.com/dotnet/machinelearning-samples/tree/master/samples/… 并且应该展示如何使用 ML.Net 进行图像分类任务,我建议使用迁移学习来避免手动注释太多图像。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-22
    • 2020-01-10
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-11
    相关资源
    最近更新 更多