本文将介绍如何使用Flask框架搭建一个简单的车辆识别系统,并使用训练好的模型进行预测。该系统包含服务器端和前端页面,通过前端页面上传图片,服务器端使用Flask接收图片数据,并调用训练好的模型进行预测,最后将预测结果返回给前端页面。

服务器端代码

创建一个名为app.py的Python文件,使用Flask框架搭建服务器端:

from flask import Flask, render_template, request, jsonify
import base64
import numpy as np
from PIL import Image
import tensorflow as tf
from tensorflow import keras

app = Flask(__name__)

# 加载模型
model = keras.models.load_model('path_to_your_model.h5')

# 车辆类别名称
class_names = ['car', 'truck', 'motorcycle']

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/predict', methods=['POST'])
def predict():
    # 获取前端上传的图片数据
    image_data = request.form['image']

    # 将Base64编码的图片数据转换为图像
    image = Image.open(BytesIO(base64.b64decode(image_data)))

    # 图片预处理
    image = image.resize((224, 224))
    image = np.array(image) / 255.0
    image = np.expand_dims(image, axis=0)

    # 进行预测
    prediction = model.predict(image)
    predicted_class = np.argmax(prediction[0])
    predicted_class_name = class_names[predicted_class]

    # 返回预测结果
    return jsonify({'class': predicted_class_name})

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

前端页面代码

创建一个名为index.html的HTML文件,作为前端页面:

<!DOCTYPE html>
<html>
<head>
    <title>Vehicle Recognition</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script>
        // 图片预览
        function previewImage(event) {
            var input = event.target;
            var reader = new FileReader();
            reader.onload = function(){
                var dataURL = reader.result;
                var img = document.getElementById('preview');
                img.src = dataURL;
            };
            reader.readAsDataURL(input.files[0]);
        }

        // 发送图片进行预测
        function predict() {
            var img = document.getElementById('preview');
            var canvas = document.createElement('canvas');
            var ctx = canvas.getContext('2d');
            canvas.width = img.width;
            canvas.height = img.height;
            ctx.drawImage(img, 0, 0, img.width, img.height);
            var dataURL = canvas.toDataURL('image/jpeg');

            $.ajax({
                type: 'POST',
                url: '/predict',
                data: {image: dataURL},
                success: function(response) {
                    var result = document.getElementById('result');
                    result.innerHTML = 'Predicted class: ' + response.class;
                }
            });
        }
    </script>
</head>
<body>
    <h1>Vehicle Recognition</h1>
    <input type="file" accept="image/*" onchange="previewImage(event)">
    <img id="preview" src="" alt="Preview" style="max-width: 400px;">
    <button onclick="predict()">Predict</button>
    <div id="result"></div>
</body>
</html>

运行系统

确保你已经正确安装了Flask和相关依赖库,并将路径和类别名称更改为适合你的模型和数据集的值。在命令行中运行python app.py启动服务器,并在浏览器中访问http://localhost:5000/ 即可使用训练好的模型进行车辆识别预测。


原文地址: https://www.cveoy.top/t/topic/g2C 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录