Подключите тензорную модель потока или любой проект Python с помощью flask без каких-либо вызовов API. Добавьте любой прототип машинного обучения и продемонстрируйте свои проекты. Разверните с помощью heroku.
Мотивация:
Поскольку многие студенты хотят реализовать свои проекты в колледже, например проект последнего года обучения, они мало знакомы с различными технологиями. Их основной мотив - производство, а не развертывание, поэтому большинство студентов уделяют минимум времени развертыванию.
Примечание. Это не реальное решение для развертывания, а простой способ показать ваш рабочий прототип.
Предположим, вы создали проект машинного обучения, но вам нужно показать окончательную рабочую модель своему руководству с красивым графическим интерфейсом, который должен выглядеть как конечный продукт. .
Но вместо этого мы запускаем коды и пытаемся объяснить, что происходит, что может не понравиться вашему гиду. Итак, чтобы оно работало, я создал это руководство для работы с моделями машинного обучения без использования вызовов API и других сложных вещей.
Вы можете развернуть любой проект Python аналогичным образом вместо того, чтобы делать это с помощью tkinter или любой другой платформы.
У такого подхода есть некоторые недостатки:
Никаких вызовов api, следовательно, процесс не будет работать асинхронно. Программе может потребоваться время для завершения процесса, поскольку ее выполнение происходит синхронно.
Содержание:
1. Создайте веб-приложение Flask.
2. Загрузите и проверьте файл модели или используйте свой собственный
3. Создайте форму для ввода данных из веб-приложения Flask.
4. Передайте изображение модели.
5. Результаты прогнозов.
6. Развернуть
7. Поддерживайте
Ссылки на все промежуточные коды предоставляются на каждом шаге.
1. Создайте веб-приложение Flask.
Завершите данный учебник ниже или клонируйте репозиторий git прямо из учебника.
Вы получите готовую файловую структуру, которую и будете использовать. В приведенном выше руководстве мы назвали папку нашего проекта «flask_h5».
2. Загрузите и проверьте файл модели или используйте свой собственный файл модели.
Давайте найдем файл предварительно обученной модели для нашего проекта. Вы можете взять файл модели и код, который хотите использовать.
Мы берем предварительно обученный файл модели прогноза из imageAI.
Я скачал первый файл модели h5 для нашего проекта. Прочтите документацию imageAI, чтобы узнать об этом больше.
ссылка на модель resnet50_weights_tf_dim_ordering_tf_kernels.h5:
Пришло время протестировать нашу модель. Для этого мы создадим новый файл python в папке app, где мы хотим использовать нашу модель в будущем.
Вы можете создать его где угодно, поскольку мы делаем это для тестирования нашей модели, а затем добавить его в папку приложения после тестирования.
Я назвал его process.py.
В конце страницы документации (https://imageai.readthedocs.io/en/latest/prediction/index.html) предоставляется образец кода для прогнозирования одного изображения.
Мы вставим весь код в наш процесс файл.
Здесь мы напишем только код прогнозирования, например необходимые библиотеки, модель загрузки, прогнозирование и возврат результатов (не нужно вставлять все содержимое записной книжки от начала до конца).
Преимущество использования IDE в том, что нам не нужно выяснять наши ошибки и зависимости.
Прежде всего, нам нужен тензорный поток для запуска наших файлов модели, поэтому мы установим библиотеку тензорного потока с помощью pip. Мы берем tensorflow v1, потому что наша модель imageAI совместима с v1.
Вы также можете сделать это через настройки PyCharm.
Перейдите в Файл → Настройки → Проект → Интерпретатор проекта.
Вы увидите все модули, которые установлены в виртуальной среде. Щелкните значок + в правом углу. Найдите тензорный поток. Установите флажок "Укажите версию" и выберите версию 1.15.
Нажмите Установить пакет.
Если вы получаете сообщение об ошибке или не можете установить его из настроек.
Попробуйте эту команду:
pip install tensorflow == 1.15
Работа с process.py
Пропустите эту часть, если вы используете свою собственную модель и код.
Вы увидите ошибку в строке 1, т. Е. При импорте библиотеки.
Здесь нажмите на кнопку с лампочкой и установите библиотеку imageAI. Вы также можете сделать это вручную, написав команду pip в виртуальной среде.
pip install imageai
Установка пакетов может занять некоторое время.
А пока давайте узнаем, что в коде.
При запуске все зависимости импортируются.
Строка 4 извлекает текущее местоположение файла, которое мы удалим позже при подключении к flask.
Строки с 6 по 9 определяют и загружают файл нашей модели. Здесь мы видим, что используется модель resnet, я добавил статическое расположение папки перед файлом ‘static / resnet50_weights_tf_dim_ordering_tf_kernels.h5.
Скопируйте и вставьте файл модели в папку app / static.
Загрузите любое входное изображение и поместите его в папку app / static.
Отредактируйте строку 10 и измените местоположение изображения на наше загруженное изображение.
прогнозы, вероятности = prediction.predictImage (os.path.join (execution_path, «static / input_image_name.jpg»), result_count = 10)
На данный момент установлен наш пакет imageAI. Файл модели, входное изображение также помещаются в статическую папку.
Теперь запустите и проверьте файл process.py.
Если вы получили какую-либо ошибку, попробуйте ее устранить, иначе спросите в разделе комментариев.
Примечание. Не нужно беспокоиться о предупреждениях о тензорном потоке, если у вас нет графического процессора.
Мы видим, что предсказание выполнено успешно.
3. Создайте форму для ввода данных из веб-приложения Flask.
Теперь мы попытаемся создать страницу и взять изображение от пользователя, а затем сохранить его как временные файлы, которые будут удалены позже после использования.
а. В папке шаблонов создайте html-файл с именем predic.html.
Predict.html:
Здесь мы, как обычно, расширим файл макета и начнем наш фактический блок.
Внутри мы добавили поле формы, которое будет принимать изображения.
б. Добавить функцию маршрута для страницы прогноза
Это необходимо для подключения нашего html-файла к flask.
c. Измените layout.html и добавьте ссылку прогнозирования на панели навигации.
Щелкните здесь, чтобы просмотреть код
Запустите приложение flask, набрав команду в виртуальном окружении. Терминал:
python app.py
d. Создайте новую функцию маршрута с именем «upload», которая будет вызываться действием формы, она сохранит наше входное изображение в папке temp.
Добавьте методы для получения запроса на ввод формы. Создайте новую папку с именем temp в папке приложения.
Функция сохранит файл изображения во временной папке и будет использоваться для отправки на предсказание.
Продолжайте запускать приложение, чтобы увидеть промежуточные результаты.
Мы выберем изображение и проверим, сохраняется ли файл во временной папке или нет.
Я получил ошибку (поскольку после вызова функции загрузки ничего не возвращается), но мой файл сохраняется во временной папке, это означает, что форма работает нормально.
4. Передайте входное изображение в модель.
Создайте новую функцию маршрута «предсказание (имя файла)», которая принимает имя файла в качестве параметра.
Эта функция будет вызвана нашей функцией загрузки после сохранения изображения.
Импортируйте process.py в маршруты вместо добавления всего кода модели.
Я изменил process.py так, чтобы он содержал только одну функцию, которая будет вызываться из маршрута.
Нажмите здесь, чтобы открыть ссылку git для process.py
Функция pred_img в process.py вернет результат словаря, то есть вывод вашей модели.
Создайте новый html-файл, который покажет результаты.
Я создал output.html, который передается в маршруте с переменной результата.
Наше приложение готово к использованию.
Давай попробуем
1.Выберите изображение
2. Изображение загружено.
3. Последняя строка терминала показывает, что загрузка прошла нормально и изображение передано в функцию прогнозирования. Игнорируйте tf-информацию / предупреждения, если они появятся.
Для пользователей ЦП: чтобы скрыть предупреждения тензорного потока, добавьте код в process.py
В начале:
импорт тензорного потока
os.environ [«TF_CPP_MIN_LOG_LEVEL»] = «3»
Внутри pred_img функция, в которую будет загружена модель:
tenorflow.compat.v1.logging.set_verbosity (tensorflow.compat.v1.logging.ERROR)
5. Результаты прогнозов.
Подводя итог тому, что мы делали до сих пор:
· Принимать данные из формы и передавать их функции маршрутизации.
· Перенаправить данные формы в функцию прогнозирования маршрута.
· Функция прогнозирования маршрута вызывает функцию реальной модели, присутствующую в другом файле.
· Результаты возвращаются в функцию прогнозирования маршрута и передаются как переменная с render_template для отображения результатов пользователю.
6. Развертывание с помощью heroku
Развертывание Flask для тестирования бесплатно можно выполнить с помощью heroku.
Heroku бесплатно предоставляет 500 Мб дискового пространства для развертывания нашего веб-сайта. Разверните с помощью heroku, просто загрузив его с веб-сайта. По настройке файла flask вы найдете множество статей о том, как развернуть на heroku.
Чтобы дать вам представление о том, что необходимо сделать для развертывания в heroku, вы создадите один файл с именем ‘ProcFile’ без какого-либо расширения.
Внутри ProcFile:
Интернет: приложение Gunicorn: приложение
Вам понадобится файл requirements.txt, который вы можете создать автоматически, набрав команду в виртуальной среде flask:
pip freeze ›requirements.txt
Вам потребуется переименовать app.py в application.py. Также внутри init и других файлов вам нужно будет изменить app = Flask… на application = Flask…
Преобразуйте переменную приложения в "приложение", в котором она используется.
Создайте файл с именем ‘config.py’ в основной папке ‘flask_h5’. Он будет содержать секретный ключ.
config.py:
импорт ОС
класс Config:
SECRET_KEY = os.environ.get («SECRET_KEY»)
Удалите секретный ключ, добавленный в __init__.py. config.py, содержащий секретный ключ, будет вызываться в init.
__init__.py:
из config import Config
…
application = Flask (__ имя__)
application.config.from_object (конфигурация)
…
Это требования для развертывания flask на heroku.
Перейдите на веб-сайт heroku и убедитесь, что все внесенные изменения соответствуют их требованиям.
6. Поддерживайте
Если вы хотите изменить или модифицировать код в развернутой платформе heroku.
Зафиксируйте файлы обновлений с помощью git, а затем повторно разверните их в heroku с помощью команды «git push heroku master».
КОММЕНТАРИЙ, ЕСЛИ ВЫ НАЧИНАЕТЕ ТРУДНОСТИ НА ЛЮБОМ ШАГЕ.
Хлопайте, если вы сочтете это полезным.