С развитием Интернета вещей (IoT) и встроенных систем внедрение моделей глубокого обучения во встроенные устройства становится все более важным. Это не только обеспечивает обработку данных в реальном времени, но также значительно снижает задержку и стоимость передачи данных. В этой статье рассказывается, как использовать Python для развертывания моделей глубокого обучения на встроенных устройствах, и приводятся подробные примеры кода.
pip install tensorflow tensorflow-lite
Мы будем обучать простую модель сверточной нейронной сети (CNN), используя набор данных MNIST. Вот код для обучения модели:
import tensorflow as tf
# Загрузите набор данных MNIST
mnist = tf.keras.datasets.mnist
(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0
# Определить модель
model = tf.keras.models.Sequential([
tf.keras.layers.Conv2D(32, (3, 3), activation='relu', input_shape=(28, 28, 1)),
tf.keras.layers.MaxPooling2D((2, 2)),
tf.keras.layers.Conv2D(64, (3, 3), activation='relu'),
tf.keras.layers.MaxPooling2D((2, 2)),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(64, activation='relu'),
tf.keras.layers.Dense(10, activation='softmax')
])
# Скомпилировать модель
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])
# Модель обучения
model.fit(x_train, y_train, epochs=5, validation_data=(x_test, y_test))
# Сохранить модель
model.save('mnist_model.h5')
Для работы на встроенных устройствах нам необходимо преобразовать модель в формат TensorFlow Lite. Вот код для преобразования модели:
import tensorflow as tf
# Загрузить модель
model = tf.keras.models.load_model('mnist_model.h5')
# Преобразование в TensorFlow Облегченный формат
converter = tf.lite.TFLiteConverter.from_keras_model(model)
tflite_model = converter.convert()
# Сохраните преобразованную модель
with open('mnist_model.tflite', 'wb') as f:
f.write(tflite_model)
Мы можем использовать интерпретатор TensorFlow Lite для запуска моделей на встроенных устройствах. Вот простой пример кода:
import tensorflow as tf
import numpy as np
import cv2
# Загрузить TensorFlow Облегченная модель
interpreter = tf.lite.Interpreter(model_path='mnist_model.tflite')
interpreter.allocate_tensors()
# Получите входные и выходные тензоры
input_details = interpreter.get_input_details()
output_details = interpreter.get_output_details()
# Подготовьтесь к вводу данных
def preprocess_image(image_path):
image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE)
image = cv2.resize(image, (28, 28))
image = image / 255.0
image = np.expand_dims(image, axis=-1).astype(np.float32)
return np.expand_dims(image, axis=0)
input_data = preprocess_image('test_image.png')
# Установить входной тензор
interpreter.set_tensor(input_details[0]['index'], input_data)
# Запустите модель
interpreter.invoke()
# Получить выходные результаты
output_data = interpreter.get_tensor(output_details[0]['index'])
print("Predicted label:", np.argmax(output_data))
Разверните преобразованную модель TensorFlow Lite на Raspberry Pi. Вот шаги:
scp mnist_model.tflite pi@raspberrypi.local:/home/pi/
pip install tflite-runtime
python run_model.py
С помощью описанных выше шагов мы реализовали развертывание простой модели глубокого обучения на встроенных устройствах. Будь то мобильные устройства или встроенные системы, TensorFlow Lite может значительно повысить эффективность и практичность моделей. Надеюсь, этот урок поможет вам!