[RISE] 13주차 활동내용

세휘·2021년 5월 31일
0

RISE 프로젝트

목록 보기
11/12

예측 결과 웹에 띄우기



모델을 불러와서 예측하는 코드를 다른 파일로 분리시켰다.

predict_food.py

from tensorflow import keras
from tensorflow.keras.preprocessing import image
from tensorflow.keras.optimizers import *
import tensorflow.keras.applications.resnet50 as resnet50

import os
os.environ['KMP_DUPLICATE_LIB_OK'] = 'True'



def predict_food(fname):
    img = image.load_img(fname, target_size=(224, 224))
    x = image.img_to_array(img)

    import numpy as np
    img = np.expand_dims(x, axis=0)
    img = resnet50.preprocess_input(img)

    model = keras.models.load_model("my_model_2.h5")
    optimizer = Adam(lr=0.00001)
    model.compile(loss='categorical_crossentropy',
                  optimizer=optimizer,
                  metrics=['accuracy'])

    class_names = ['Chinese', 'Japanese', 'Korean']
    classes = np.argmax(model.predict(img), axis=-1)
    result = [class_names[i] for i in classes]
    print(result)

    return result[0]

if __name__ == '__main__':
    file_name = 'test_image3.jpg'
    results = predict_food(file_name)
    print(results)



실행 결과:






upload.py

from flask import Flask, render_template, request
from predict_food2 import predict_food

app = Flask(__name__)

@app.route('/upload')
def basic():
    return render_template("upload.html")

@app.route('/predict', methods=['POST'])
def predict():
    f = request.files['file']
    # Path = "./"
    # f.save(Path+f.filename)
    result = predict_food(f.filename)

    # formatting the results as a JSON-serializable structure:
    output = {'result': [result]}

    return output

# def post():
#     value = request.form['input']
#     return render_template('default.html', name=value)

if __name__ == '__main__':
    app.run(debug=True)



flask구동 후 실행 결과:




[참고]

[Flask 입문] 파일 업로드 하기

Deploy a Deep Learning Model with Flask RESTful

0개의 댓글