오늘보다 더 나은 내일의 나에게_

비전공자의 IoT 국비 교육 수강일지 Day_84 본문

비전공자의 코딩일지

비전공자의 IoT 국비 교육 수강일지 Day_84

chan_96 2022. 4. 18. 17:10
728x90

머신러닝

가상 환경 설정
더보기
# 설치
!pip install pillow

from tensorflow.keras.models import load_model
from PIL import Image, ImageOps
import numpy as np

# 학습된 모델 로딩
model = load_model('animal_keras_model.h5')

# 예측시킬 이미지 데이터를 넣을 변수
data = np.ndarray(shape=(1, 224, 224, 3), dtype=np.float32)
# 예측시킬 이미지 로딩
image = Image.open('./predict1.jpg')
# 예측시킬 이미지를 224 x 224로 리사이징
size = (224, 224)
image = ImageOps.fit(image, size, Image.ANTIALIAS)

#numpy 타입으로 변경
image_array = np.asarray(image)
# 정규화 작업(전처리) : 학습속도 및 성능 최적화에 도움
normalized_image_array = (image_array.astype(np.float32) / 127.0) - 1
# 불러온 numpy 타입의 이미지를 변수에 대입
data[0] = normalized_image_array

# 예측
prediction = model.predict(data)
print(prediction)

이클립스에서 다이나믹 웹 프로젝트 생성

파일 업로드할 html 생성
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<form action="http://127.0.0.1:5000/" method="post" enctype="multipart/form-data">
		<input type="file" name="uploadImage">
		<input type="submit" value="분석하기">
	</form>
</body>
</html>​

응답 결과를 표시할 jsp 생성







# 분석용 서버 구축을 위한 flask 설치
!pip install flask
!pip install matplotlib

from flask import Flask, request, Response, redirect
import io # 파이썬의 입출력을 도와주는 라이브러리
import numpy as np
import matplotlib.pyplot as plt

# 플라스크 객체 생성
app = Flask(__name__)

# 사용자 요청을 처리하기 위한 라우터 설정
@app.route('/', methods=['GET','POST'])
def index():
    return redirect("http://localhost:8081/Test/result.jsp")

@app.route('/predict', methods=['GET','POST'])
def predict():
    if request.method == 'POST':
        img = request.files['uploadImage']
        input_stream = io.BytesIO() #byte단위로 읽어들이는 통로
        img.save(input_stream) # 파일로부터 데이터를 읽기
        data = np.fromstring(input_stream.getvalue(),
                            dtype=np.uint8)
        print(data.shape)
    return redirect("http://localhost:8081/Test/result.jsp")

app.run() #서버 구동
사진 업로드 후 data.shape 출력

안드로이드


728x90
Comments