В настоящее время правда о машинном обучении или глубоком обучении состоит в том, что все хотят его изучить, но проблема в следующем:

Не только OCR, но и для большинства вещей. Сегодня я научу вас делать предсказания в реальном времени и предсказания на загруженном изображении.

Хорошо, давай пристегнитесь, чтобы получить кое-что интересное и побольше лекций по теории.

Делайте прогнозы на основе загруженного изображения

Необходимые библиотеки:

  1. Tensorflow
  2. OpenCV
  3. Керас

Вы можете скачать их с помощью команды pip и даже с файлом .whl.

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

model.save("MODEL_NAME.model")

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

import tensorflow as tf
import cv2
labels=[] #Create A List Of Labels that Your model Is trained eg: Cats,Dogs,etc
def prepare(filepath):
    img_size= #You enter the number of Your Input Shape
    img_array=cv2.imread(filepath,cv2.IMREAD_GRAYSCALE)
    new_array=cv2.resize(img_array,(img_size,img_size))
    return new_array.reshape(-1,img_size,img_size,1)
model=tf.keras.models.load_model('Your_Model_Name.model')
prediction=model.predict([prepare('Your_Image_Name')])
print(prediction)

Таким образом, ваша вероятность предсказания всех этикеток будет напечатана здесь, а индекс с наибольшей вероятностью - это то, что предсказала ваша модель машинного обучения.

Прогнозы в реальном времени с использованием Flask, открытое резюме

Необходимые библиотеки для прогнозирования в реальном времени:

  1. Колба
  2. OpenCV
  3. Numpy
  4. Соответствующий XML-файл для вашего прогноза, но тот, который я использовал для прогнозирования, - «haarcascade_frontalface_default.xml», который легко доступен в Интернете.

Создайте папку, поместите 3 блока кода и запустите main.py. У вас также должна быть ваша модель в той же папке, что и файл JSON модели, находящийся в той же папке.

Этот код ниже - это код, в который загружается ваша модель и делается прогноз. Вы можете сохранить его под именем «model.py»

from keras.models import model_from_json
import numpy as np
class FacialExpressionModel(object):
labels = []# Your Labels List
    def __init__(self, model_json_file, model_weights_file):
        # load model from JSON file
        with open(model_json_file, "r") as json_file:
            loaded_model_json = json_file.read()
            self.loaded_model = model_from_json(loaded_model_json)
# load weights into the new model
        self.loaded_model.load_weights(model_weights_file)
        self.loaded_model._make_predict_function()
def predict_emotion(self, img):
        self.preds = self.loaded_model.predict(img)
        return FacialExpressionModel.labels[np.argmax(self.preds)]

Следующий код, который вы вставите, - это тот, который заставляет вашу видеокамеру делать прогнозы в реальном времени. XML также должен храниться в текущем Справочнике. Таким образом, этот код нарисует рамку вокруг объекта и напишет, что он предсказывает.

import cv2
from model import FacialExpressionModel
import numpy as np
facec = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
model = FacialExpressionModel("model.json", "model_weights.h5")
font = cv2.FONT_HERSHEY_SIMPLEX
class VideoCamera(object):
    def __init__(self):
        self.video = cv2.VideoCapture(0)
def __del__(self):
        self.video.release()
# returns camera frames along with bounding boxes and predictions
    def get_frame(self):
        _, fr = self.video.read()
        gray_fr = cv2.cvtColor(fr, cv2.COLOR_BGR2GRAY)
        faces = facec.detectMultiScale(gray_fr, 1.3, 5)
for (x, y, w, h) in faces:
            fc = gray_fr[y:y+h, x:x+w]
roi = cv2.resize(fc, (48, 48))
            pred = model.predict_emotion(roi[np.newaxis, :, :, np.newaxis])
cv2.putText(fr, pred, (x, y), font, 1, (255, 255, 0), 2)
            cv2.rectangle(fr,(x,y),(x+w,y+h),(255,0,0),2)
_, jpeg = cv2.imencode('.jpg', fr)
        return jpeg.tobytes()

Последний шаг: мы будем использовать Flask, чтобы поместить оба кода в браузер, и протестируем нашу модель.

Перед этим создайте папку с именем Templates с html-страницей с именем «index.html». Вы можете изменить ее имя, но вам придется сохранить свое имя в main.py вместо index.html.

Код для index.html:

<html>
<head>
<title>Face expression recognition</title>
</head>
<body>
<img id="bg" width=1200px height=900px src="{{ url_for('video_feed') }}">
</body>
</html>

Код для main.py приведен ниже, просто скопируйте его и запустите

from flask import Flask, render_template, Response
from camera import VideoCamera
app = Flask(__name__)
@app.route('/')
def index():
    return render_template('index.html')
def gen(camera):
    while True:
        frame = camera.get_frame()
        yield (b'--frame\r\n'
               b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n')
@app.route('/video_feed')
def video_feed():
    return Response(gen(VideoCamera()),
                    mimetype='multipart/x-mixed-replace; boundary=frame')
if __name__ == '__main__':
    app.run(host='0.0.0.0')

После запуска приведенного выше кода Python создаст локальный сервер на порту 5000, поэтому введите его в Интернете, чтобы открыть камеру для прогнозов.

localhost:5000

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

[email protected]