Анализ изображений в C # с ML.Net - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть тысячи JPEG в структуре папок.Эти изображения являются снимком моей дороги размером 2560 x 1440 и снимаются и сохраняются каждые 60 секунд.

Я хотел бы создать программу, которая может определять, анализируя изображение, будь то я или моя жена,был дома в это время или нет.У меня красная машина, у нее ярко-желтая машина.Таким образом, простой цветовой порог, вероятно, должно быть достаточно.Другое четкое различие заключается в том, что у нас обоих есть свое место, и мы никогда не паркуемся в других.Кроме того, другие люди не пользуются подъездной дорогой (и если они используют, я не против ложного позитива).Одно незначительное осложнение заключается в том, что камера переключается на черно-белый цвет в темное время суток (но это может быть, когда парковочное место, а не цвет может пригодиться).

Так что я надеялся, что смогу использовать ML.Net и обучаю модель с некоторыми изображениями, помеченными вручную, где я отмечаю изображение данными, независимо от того, вижу ли я или ее машину на дороге.Я думал о том, чтобы аннотировать, может быть, от 100 до пары сотен изображений в день и еще один набор для ночи, и подать все эти изображения в ML.Net для обучения, а затем проанализировать несколько 100 изображений, где я могу вручную проверить результаты и исправитьлюбые ошибки, а затем создать своего рода петлю обратной связи для обучения еще нескольким сотням изображений.

После завершения обучения я хотел бы проанализировать все изображения, хранящиеся в настоящий момент, и каждое новое изображение по мере его поступления.генерировать некоторые данные о том, когда я (или моя жена) дома, в гостях и т. д.

Моя проблема (и это, вероятно, послужит причиной закрытия вопроса как "слишком широкого" или что-то в этом роде).): Я понятия не имею, как это сделать.Я видел удивительные учебники , которые все заставляют это походить на детскую игру, но когда я тогда пытаюсь сделать это в C # (мой язык по выбору) и ищу ML.Net Howto's , я могуКажется, я не нашел ничего, что помогло бы мне в правильном направлении.

Например: Обучите модель машинного обучения с помощью данных, которых нет в текстовом файле .Я компетентный программист, так что это арахис для создания файла / базы данных CSV / что угодно, что имеет 1.jpg -> rob home, wife not home данных.Но «Как» не объясняет, как передать изображение в ML.Net, и я не смог найти ничего, что могло бы сделать.Наиболее вероятная причина в том, что я новичок в ML (.Net) и, вероятно, я слишком упрям, чтобы отказаться от попыток достичь этого в C #, но доступная информация, как ни странно, ошеломляющая, но и скудная.Доступная информация обычно приводит меня к тому, что я спускаюсь по какой-то кроличьей норе, но через слишком долгое время обнаруживаю, что это не то, чего я хочу или Я не могу найти ничего, что намекает на то, что я иду в правильном направлении.*

Так долго рассказывать; tl; dr :

Как передать изображения в ML.Net, как мне сообщить ML.Net, что моя машина находится на подъездной дороге для любого изображения (тренировки) икак мне заставить ML.Net сказать мне , думает ли я, что моя жена дома или нет для данного изображения?Или это невозможно (в настоящее время)? Я НЕ ищу полный код , но мне нужны указатели, подсказки, ссылки, учебные пособия, примеры или что-то еще, что может помочь мне в правильном направлении.

1 Ответ

0 голосов
/ 12 декабря 2018

Вы можете найти что-то полезное здесь Распознавание / классификация изображений с использованием Microsoft ML.net 0.2 (Машинное обучение)

Однако я бы посоветовал вам рассматривать Python как оружие выбора для вашей задачи.,Здесь вы просто храните данные в разных папках в соответствии с ярлыком: вы @ дом, ваша жена @ дом, оба @ дом, нет машины на дороге, другое, и вы готовы к работе.https://blog.keras.io/building-powerful-image-classification-models-using-very-little-data.html

Вероятно, у вас уйдет не больше выходных, и это очень важно для изучения багики питона.

Редактировать: Кажется, он все еще не поддерживает тренировкузадачи классификации с использованием ML.Net: «Опять же, обратите внимание, что в этом примере используется / используется только предварительно обученная модель TensorFlow с ML.NET API. Следовательно, она не обучает никакую модель 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, но он должен хорошо транслироваться на c ++ или c #, используя emgu.После того, как автомобиль обнаружен, проверьте положение и цвет.Этот подход, вероятно, также позволит избежать маркировки любых данных.

В качестве альтернативы используйте предварительно обученный файл модели h5 и загрузите его в ML.Net, затем проверьте положение и средний цвет, чтобы проверить, чья это машина.

...