1. La
méthode keras-onnx est:
import keras2onnx
keras2onnx.convert_keras
# convert to onnx model
onnx_model = keras2onnx.convert_keras(model, model.name)
temp_model_file = 'model.onnx'
keras2onnx.save_model(onnx_model, temp_model_file)
sess = onnxruntime.InferenceSession(temp_model_file)
2 、 onnx-TensorRT
1) Installer
pip install <tensorrt_install_dir> /python/tensorrt-7.xxx-cp27-none-linux_x86_64.whl
pip install onnx == 1.6.0
2) use
import onnx
import onnx_tensorrt.backend as backend
import numpy as np
model = onnx.load("/path/to/model.onnx")
engine = backend.prepare(model, device='CUDA:1')
input_data = np.random.random(size=(32, 3, 224, 224)).astype(np.float32)
output_data = engine.run(input_data)[0]
print(output_data)
print(output_data.shape)
3. ONNX
1) Station de transfert, l'algorithme est transféré entre différents frameworks. Par exemple: tensorflow veut être déployé sur le terminal mobile, et il a été converti en caffe avant, ce qui prend du temps
1. Déploiement d'algorithme réel Il ne fait aucun doute que si votre cible est le GPU, l'utilisation d'ONNX + TensorRT devrait être la solution la plus mature et la plus optimisée. Si votre cible est des puces intégrées, l'utilisation de MNN peut également facilement réaliser une inférence rapide du côté intégré du processeur via onnx.
2. Puisque ONNX et TensorRT sont si bons, pourquoi ne pas les utiliser? Pourquoi écrivez-vous toujours du code d'inférence laid en Python? La raison est également très simple:
La mise en route est trop difficile pour les gens ordinaires pour jouer avec C ++; il
est nécessaire de comprendre l'entrée et la sortie de chaque couche du modèle, mais aussi de comprendre l'API TensorRT, au moins familière avec elle.
3. Enseignement open source Manaai http://manaai.cn