Theano error глубокое обучение Python

Это довольно стандартный код openCV, в котором цикл будет обнаруживать лица с помощью каскадного классификатора хаара, а затем существует модель глубокого обучения, которая обнаруживает эмоции на лице. Модель была создана из набора данных kaggle 2013 года, и я загрузил эту модель из этой учетной записи github, если кто-то хочет опробовать код. fer2013_mini_XCEPTION.119-0.65.hdf5 Просто поместите папку models в свой каталог и переименуйте ее в model.h5

https://github.com/oarriaga/face_classification/tree/master/trained_models

Код отлично работает с Tensorflow, но когда я запускаю программу KERAS_BACKEND=theano python haarMOD.py, я получаю сообщение об ошибке, которое, возможно, связано с неправильной компоновкой библиотеки BLAS ?? Есть ли у кого-нибудь идеи, как заставить theano работать? В конечном итоге я пытаюсь заставить аналогичный вариант этого кода работать на сервере Flask, который работает только с Theano.

import cv2
import sys, os
import pandas as pd
import numpy as np
from keras.models import load_model

#KERAS_BACKEND=theano python haarMOD.py

BASEPATH = os.path.dirname(os.path.abspath(__file__))
sys.path.insert(0, BASEPATH)
os.chdir(BASEPATH)
MODELPATH = './models/model.h5'


emotion_dict = {0: "Angry", 1: "Disgust", 2: "Fear", 3: "Happy", 4: "Sad", 5: "Surprise", 6: "Neutral"}

model = load_model(MODELPATH)

WHITE = [255, 255, 255]

def draw_box(Image, x, y, w, h):
    cv2.line(Image, (x, y), (x + int(w / 5), y), WHITE, 2)
    cv2.line(Image, (x + int((w / 5) * 4), y), (x + w, y), WHITE, 2)
    cv2.line(Image, (x, y), (x, y + int(h / 5)), WHITE, 2)
    cv2.line(Image, (x + w, y), (x + w, y + int(h / 5)), WHITE, 2)
    cv2.line(Image, (x, (y + int(h / 5 * 4))), (x, y + h), WHITE, 2)
    cv2.line(Image, (x, (y + h)), (x + int(w / 5), y + h), WHITE, 2)
    cv2.line(Image, (x + int((w / 5) * 4), y + h), (x + w, y + h), WHITE, 2)
    cv2.line(Image, (x + w, (y + int(h / 5 * 4))), (x + w, y + h), WHITE, 2)

haar_face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
video = cv2.VideoCapture('MovieSample.m4v')


while True:


    check, frame = video.read()


    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    faces = haar_face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5);
    for (x, y, w, h) in faces:
        gray_face = cv2.resize((gray[y:y + h, x:x + w]), (110, 110))
        draw_box(gray, x, y, w, h)
        roi_gray = gray[y:y + h, x:x + w]
        cropped_img = np.expand_dims(np.expand_dims(cv2.resize(roi_gray, (48, 48)), -1), 0)
        cv2.normalize(cropped_img, cropped_img, alpha=0, beta=1, norm_type=cv2.NORM_L2, dtype=cv2.CV_32F)
        prediction = model.predict(cropped_img)
        cv2.putText(gray, emotion_dict[int(np.argmax(prediction))], (x, y), cv2.FONT_HERSHEY_SIMPLEX, 0.8, (WHITE), 1, cv2.LINE_AA)

    cv2.imshow("Face Detector", gray)
    cv2.waitKey(1)

    key = cv2.waitKey(1)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break


video.release()
cv2.destroyAllWindows()

Любые советы приветствуются, я запускаю Linux Mint на основе Ubuntu 18.3 с Anaconda 3.6 на ЦП с этими шагами от мастерства машинного обучения до создания библиотеки глубокого обучения. Я также использую файл .AVI вместо веб-камеры, потому что у меня нет веб-камеры на моем компьютере. Измените video = cv2.VideoCapture('MovieSample.m4v') на video = cv2.VideoCapture(0), чтобы openCV использовала по умолчанию USB-камеру.

https://machinelearningmaster.com/setup-python-environment-machine-learning-deep-learning-anaconda/

Ошибка, которая всплывает для меня, это строка 17 model = load_model(MODELPATH) if on CPU, do you have a BLAS library installed Theano can link against?. Может кто-нибудь дать совет о том, как решить эту проблему?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
151
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я получил код для работы на машине с Windows, отредактировав файл .json на моем диске C C:\Users\user\.keras для ссылки на "theano" вместо "tenserflow".

{
    "floatx": "float32",
    "epsilon": 1e-07,
    "backend": "theano",
    "image_data_format": "channels_last"
}

А затем добавив этот фрагмент дополнительного кода, который я нашел в другой пост stackoverflow, в свой исходный файл .py

import theano
theano.config.optimizer = "None"

Если у вас был «tenserflow», значит, у вас наверняка были ошибки; это должен быть "тензорный поток"

DarkCygnus 02.08.2018 20:38

Другие вопросы по теме