TensorFlow系列:第五讲:移动端部署模型

项目地址:https://github.com/LionJackson/imageClassification
Flutter项目地址:https://github.com/LionJackson/flutter_image

一. 模型转换

编写tflite模型工具类:

import os

import PIL
import tensorflow as tf
import keras
import numpy as np
from PIL.Image import Image
from matplotlib import pyplot as plt

from utils.dataset_loader import DatasetLoader
from utils.utils import Utils

"""
tflite模型工具类
"""


class TFLiteUtil:
    def __init__(self, saved_model_dir, path_url):
        self.save_model_dir = saved_model_dir
        self.path_url = path_url

    # 训练的模型生成标签列表
    def get_folder_names(self):
        folder_names = []
        for root, dirs, files in os.walk(self.path_url + '/train'):
            for dir_name in dirs:
                folder_names.append(dir_name)

        with open(self.save_model_dir + '.label', 'w') as file:
            for name in folder_names:
                file.write(name + '\n')
        return folder_names

    # 模型转成tflite格式
    def convert_tflite(self):
        self.get_folder_names()
        converter = tf.lite.TFLiteConverter.from_saved_model(self.save_model_dir)
        tflite_model = converter.convert()

        # 将转换后的 TFLite 模型保存为文件
        with open(self.save_model_dir + '.tflite', 'wb') as f:
            f.write(tflite_model)

        print("转换成功,已保存为 tflite")

    # 加载keras并转成tflite
    def convert_model_tflite(self):
        self.get_folder_names()
        model = keras.models.load_model(self.save_model_dir + ".keras")
        converter = tf.lite.TFLiteConverter.from_keras_model(model)
        converter.optimizations = [tf.lite.Optimize.DEFAULT]
        converter.target_spec.supported_types = [tf.float16]
        tflite_model = converter.convert()
        # 将转换后的 TFLite 模型保存为文件
        with open(self.save_model_dir + '.tflite', 'wb') as f:
            f.wri
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值