Что такое django?
Django - это веб-фреймворк на Python, который пользуется большой популярностью в сообществе Python из-за большого количества входящих в него функций. Это позволяет быстро разрабатывать приложение.
Для классификации изображений мы будем использовать предварительно обученную модель VGG-16 с весами ImageNet.
Требования:
Керас
джанго
Приступим к созданию проекта
Создание проекта:
Чтобы начать работу с проектом django, нам нужно выполнить некоторые начальные настройки. Django предоставляет несколько инструментов командной строки, которые помогут вам начать свой проект. Перейдите в предпочитаемый каталог, в котором вы хотите создать свой проект. Откройте терминал для пользователей Linux и cmd для пользователей Windows и введите следующую команду
django-admin startproject classify
Эта команда создаст «классифицирующий» репозиторий, содержащий следующие файлы
Это следующие файлы:
Внешний каталог classify / root является контейнером для вашего проекта. Его имя не имеет значения для Django; вы можете переименовать его как угодно.
manage.py: утилита командной строки, которая позволяет вам различными способами взаимодействовать с этим проектом Django.
Внутренний каталог classify / - это фактический пакет Python для вашего проекта. Его имя - это имя пакета Python, которое вам нужно будет использовать для импорта чего-либо внутри него (например, classify.urls).
classify / __ init__.py: пустой файл, который сообщает Python, что этот каталог следует рассматривать как пакет Python. Если вы новичок в Python, узнайте больше о пакетах в официальных документах Python.
classify / settings.py: Настройки / конфигурация для этого проекта Django. Настройки Django расскажут вам все о том, как работают настройки.
classify / urls.py: объявления URL для этого проекта Django; «оглавление» вашего сайта на Django.
classify / asgi.py: точка входа для ASGI-совместимых веб-серверов для обслуживания вашего проекта.
classify / wsgi.py: точка входа для WSGI-совместимых веб-серверов для обслуживания вашего проекта.
Начнем кодирование … Во-первых, загрузим нашу модель.
Откройте файл settings.py из проекта classify и вставьте приведенный ниже код.
import keras import numpy as np from keras import backend as K import tensorflow as tf from tensorflow.python.keras.backend import set_session from keras.applications import vgg16 def get_session(): config = tf.ConfigProto() config.gpu_options.allow_growth = True return tf.Session(config=config) K.tensorflow_backend.set_session(get_session()) config = tf.ConfigProto() config.gpu_options.allow_growth = True SESS = tf.Session(config=config) print("model loading") GRAPH1 = tf.get_default_graph() set_session(SESS) # Load the VGG model VGG_MODEL = vgg16.VGG16(weights="imagenet")
Этот код загрузит вашу модель при запуске проекта, так что каждый раз, когда вам нужно прогнозировать, вам не нужно загружать модели . Помните, что в этом коде мы будем использовать переменную VGG-16, SESS, GRAPH1 в views.py файл в ближайшее время.
Вставьте приведенный ниже код в конец файла settings.py.
STATIC_URL = '/static/' STATIC_ROOT = os.path.join(BASE_DIR, 'static') MEDIA_ROOT = os.path.join(BASE_DIR, 'media') MEDIA_URL = 'media/'
Этот код создаст медиафайл, в котором будет сохранено загруженное изображение.
Теперь давайте создадим файл views.py внутри внутреннего каталога classify для доступа к модели и классификации изображения . Вот как должна выглядеть структура вашей папки на этом этапе.
Давайте отредактируем файл views.py. Вставьте следующий код
from django.shortcuts import render from django.http import JsonResponse import base64 from django.core.files.base import ContentFile from django.core.files.storage import default_storage from django.conf import settings from tensorflow.python.keras.backend import set_session from keras.preprocessing.image import load_img from keras.preprocessing.image import img_to_array from keras.applications.imagenet_utils import decode_predictions import matplotlib.pyplot as plt import numpy as np from keras.applications import vgg16 import datetime import traceback def index(request): if request.method == "POST": f=request.FILES['sentFile'] # here you get the files needed response = {} file_name = "pic.jpg" file_name_2 = default_storage.save(file_name, f) file_url = default_storage.url(file_name_2) original = load_img(file_url, target_size=(224, 224)) numpy_image = img_to_array(original) image_batch = np.expand_dims(numpy_image, axis=0) # prepare the image for the VGG model processed_image = vgg16.preprocess_input(image_batch.copy()) # get the predicted probabilities for each class with settings.GRAPH1.as_default(): set_session(settings.SESS) predictions=settings.VGG_MODEL.predict(processed_image) label = decode_predictions(predictions) label = list(label)[0] response['name'] = str(label) return render(request,'homepage.html',response) else: return render(request,'homepage.html')
Здесь функция индекса помогает классифицировать изображение и отправлять прогноз в файл homepage.html. Блок if проверяет, что изображение было загружено, и дает прогноз, в противном случае отображается простая форма.
Наконец, давайте создадим homepage.html в каталоге шаблонов . Создайте каталог шаблонов на том же уровне, что и файл manage.py.
Давайте превратим форму в файл homepage.html, чтобы получить изображение от пользователя.
<form method="post" enctype="multipart/form-data"> {% csrf_token %} <input type="file" name="sentFile" /> <input type="submit" name="submit" value="Upload" /> </form> {{name}}
Здесь форма помогает нам получить изображение от пользователя, где {{name}} - это визуализированный прогноз, отправленный файлом views.py.
Для маршрутизации всего этого мы должны изменить файл urls.py на следующий.
from django.contrib import admin from django.urls import path from . import views urlpatterns = [ path('', views.index, name='homepage'), path('admin/', admin.site.urls), ]
Вот и все.
Проверить магию
Теперь давайте проверим, все ли вы сделали правильно, выполнив следующую команду в терминале или cmd.
python manage.py runserver
Вы должны получить следующий ответ.
Starting development server at http://127.0.0.1:8000/ Quit the server with CTRL-BREAK.
Откройте браузер и вставьте URL-адрес http://127.0.0.1:8000/, затем нажмите кнопку выбора файла, чтобы загрузить изображение, чтобы увидеть результаты, отображаемые на той же странице через несколько секунд. .
Результаты
Если вам понравился этот пост, ХИТ Купи мне кофе! Спасибо за чтение.
Каждый ваш небольшой вклад будет побуждать меня создавать больше подобного контента.