Предсказать число с заданным изображением (от 0 до 1) - PullRequest
2 голосов
/ 26 января 2020

Я абсолютный новичок в ML и нейронных сетях. В настоящее время я работаю над проектом, в котором много изображений хранятся в базе данных MongoDB. Каждое из этих изображений имеет номер от 0 до 1. Например, «изображение 1» 0,71.

Я хочу обучить свою модель с учетом базы данных. Основная цель проекта заключается в том, чтобы после того, как модель была закончена и обучена, по изображению модель сможет вернуть (предсказать) число от 0 до 1. После проведения некоторых исследований и опроса нескольких человек я выяснил некоторые библиотеки это было бы полезно для проекта: Tenserflow и Keras. Некоторые люди говорили мне, что это невозможно, но я не уверен, поэтому я пришел спросить здесь.

Итак, мои вопросы: возможно ли это? Если так, как я могу это реализовать? Есть ли какие-либо конкретные c инструменты, которые вы рекомендуете? Если вы укажете способ, которым я должен использовать свой проект, нужно ли мне экспортировать базу данных MongoDB в определенной форме? Поскольку я новичок, может быть, есть какие-то учебники, которые, по вашему мнению, могут помочь?

Извините, если этот вопрос слишком общий, если есть какие-то недоразумения, пожалуйста, прокомментируйте, и я постараюсь ответить. Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 26 января 2020

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

Что такое CNN? Вот ссылка

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

Вам не нужно создавать свою собственная модель, большинство людей просто используют хорошо разработанную модель в научной литературе c.

Go для керас, это самый простой фреймворк, который работает как шарм. Вот как реализовать VGG16 (архитектура, которая, вероятно, лучше всего подходит для вашей проблемы): ссылка

Вы должны следовать этому учебнику , чтобы приступайте к разработке с помощью keras.

Последний совет: не используйте тот же последний слой, что и в реализации VGG16, используйте Dense Layer с одним нейроном и с сигмоидом / линейным / неплотным relu активация.

ie:

#model.add(Dense(1000, activation='softmax'))
model.add(Dense(1, activation='sigmoid'))

Это означает: предсказать 1 число (сигмоида ограничит его от 0 до 1, но, возможно, лучше использовать lrelu или linear )

Кроме того, я думаю, вы могли бы использовать MongoDB для чтения изображений в виде массивов, но я бы просто поместил изображения в папку.

Редактировать: при компиляции модели используйте mean squared error как в

adam = keras.optimizers.Adam(lr=1e-4)
model.compile(optimizer=adam, loss='mse')
0 голосов
/ 26 января 2020

Здесь у вас есть «программа hello world» с точки зрения нейронных сетей и классификации цифр. Вы можете начать изучать его, потому что я думаю, что вы получите подобную архитектуру для своего NN. На что вам следует обратить внимание - это на выходе вашей модели, потому что в этом примере они выполняют классификацию по 10 классам (цифры от 0 до 9), но вы пытаетесь прочитать реальное число. Вы можете попробовать использовать один нейрон с сигмовидной или линейной активацией в конце вашей модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...