[PYTHON] Convertir keras-yolo3 en ONNX

TL;DR

Site de référence

axinc-ai/yolov3-face onnx/keras-onnx

point important

Parfois, le fichier onnx converti n'a pas pu être déduit. Il peut être déduit du fichier onnx qui a été initialement préparé.

Les conditions détaillées n'ont pas encore été identifiées.

1. Créer un environnement

1.1. Préparation de la source

Cloner avec git de axinc-ai / yolov3-face

git clone https://github.com/axinc-ai/yolov3-face.git

Ensuite, clonez keras-yolo3 lié dans yolov3-face.

cd .\yolov3-face
git clone https://github.com/qqwweee/keras-yolo3.git

1.2. Créer un environnement python pour la conversion

Créer un environnement virtuel "yolov3-face" avec conda

conda create -n yolov3-face python=3.6 -y

Installez les modules requis. Puisque la version détaillée est spécifiée dans axinc-ai / yolov3-face et n'est pas préparée dans le référentiel conda, installez-la avec pip.

conda activate yolov3-face
pip install tensorflow==1.13.2
pip install keras==2.2.4
pip install keras2onnx==1.5.1
pip install opencv-python
pip install pillow
pip install matplotlib

1.3. Créer un environnement python pour l'inférence

Créer un environnement virtuel "yolov 3-face-inference" avec conda

conda create -n yolov3-face-inference python=3.6 -y

Installez les modules requis. Puisque la version détaillée est spécifiée dans axinc-ai / yolov3-face et n'est pas préparée dans le référentiel conda, installez-la avec pip.

conda activate yolov3-face-inference
pip install tensorflow==1.13.2
pip install onnxruntime
pip install keras==2.2.4
pip install pillow

2. Conversion et jugement (vérifié avec l'exemple fourni)

Tout d'abord, vérifiez avec l'échantillon préparé

2.1. Conversion

** Format **

python keras-yolo3-to-onnx.py <h5-model-filepath> <classes-filepath> <anchors-filepath> <onnx-filepath>
Paramètres Contenu à préciser
h5-model-filepath Fichier modèle créé avec keras
classes-filepath Un fichier qui décrit le nom de classe utilisé lors de la création du modèle
anchors-filepath Fichier d'ancrage utilisé lors de la création du modèle
onnx-filepath Fichier ONNX converti

** Courir **

cd .\keras-onnx

conda activate yolov3-face
python keras-yolo3-to-onnx.py ../model_data/logs/trained_weights_final.h5 ../model_data/face_classes.txt ../model_data/tiny_yolo_anchors.txt ../model_data/ax_face.onnx

2.2. Inférence

** Format **

python inference.py <onnx-filepath> <classes-filepath> <targetimage-filepath> <outputimage-filepath>
Paramètres Contenu à préciser
onnx-filepath Fichier ONNX converti
classes-filepath Un fichier qui décrit le nom de classe utilisé lors de la création du modèle
inputimage-filepath Fichier image à déduire
outputimage-filepath Fichier dessinant le résultat de l'inférence

** Courir **

cd .\keras-onnx

conda activate yolov3-face-inference
python inference.py ../model_data/ax_face.onnx ../model_data/face_classes.txt ../images/couple.jpg output.jpg

3. Dans le cas du fichier traité par Procédure d'apprentissage des données d'origine utilisant l'implémentation de la version Keras de YOLO v3 (au 24 juin 2020)

Fichier valeur
Fichier modèle créé avec keras ../model_data/yolo_logs/models/Step2_yolo_weight_mAP_best.h5
Fichier de classe ../model_data/voc_classes.txt
Fichier d'ancrage ../model_data/yolo_anchors.txt
Fichier ONNX converti ../model_data/ax_yolov3.onnx

3.1. Conversion

cd .\keras-onnx

conda activate yolov3-face
python keras-yolo3-to-onnx.py ../model_data/yolo_logs/models/Step2_yolo_weight_mAP_best.h5 ../model_data/voc_classes.txt ../model_data/yolo_anchors.txt ../model_data/ax_yolov3.onnx

3.2. Raisonnement

python inference.py ../model_data/ax_yolov3.onnx ../model_data/voc_classes.txt ../images/couple.jpg output.jpg

référence

keras-yolo3 + JetsonNano

https://qiita.com/rhene/items/b2a8ebe1f003e1107f63 http://mirai-tec.hatenablog.com/entry/2019/08/24/102129 http://mirai-tec.hatenablog.com/entry/2019/09/03/235156

YOLOv3(Darknet) + JetsonNano

https://soralab.space-ichikawa.com/2019/06/jetson-tx2-tensorrt-yolov3/ https://www.nakasha.co.jp/future/ai/vol2_yolov3nvidia_jetson_nano.html

TensorRT + Jetson Nano https://qiita.com/tsutof/items/f81d3900fa77d954ef39

Passer du kerass à l'ONNX

https://medium.com/axinc/yolov3-66c9b998c096

Autre

https://qiita.com/agumon/items/114da6921c5dc4f7d7f9 https://github.com/zzh8829/yolov3-tf2 https://qiita.com/plseal/items/f493c67b2e810f2f876e http://mirai-tec.hatenablog.com/entry/2020/01/12/115546 https://rightcode.co.jp/blog/information-technology/tensorflow2-yolov3-run

Recommended Posts

Convertir keras-yolo3 en ONNX
Convertir en HSV
Convertir 202003 en 2020-03 avec les pandas
Convertir les kanji en kana
Convertir dict en tableau
Convertir json en Excel
Convertir une chaîne hexadécimale en binaire
Convertir numpy int64 en python int
[Python] Convertir la liste en Pandas [Pandas]
Convertir le HTML en fichier texte
Convertir le projet Scratch en Python
[Python] Convertir Shift_JIS en UTF-8
Convertir l'adresse IP en décimal
Convertissez rapidement SDF en CSV
Convertir le fichier genbank en fichier gff
Convertir le code python 3.x en python 2.x
Convertir l'objet Statut Tweepy en JSON
Convertir .ipynb en .html (avec BatchFile)
Fonction pour convertir des colonnes Excel en nombres
Convertir un PDF en documents par OCR
Convertir Markdown en PDF en Python
Convertir un PDF A4 en A3 toutes les 2 pages
Convertir WMA en MP3 sur Mac
Convertir une partie du nom japonais en synonyme
convertir un graphique basé sur ggplot en html
Workflow pour convertir une formule (image) en python
Convertir la liste en DataFrame avec python
Convertir des phrases en vecteurs avec gensim
Comment convertir 0,5 en 1056964608 en un seul coup
Python> liste> Convertir une double liste en une seule liste
Conversion de pdf en txt 2 [pyocr]
Comment convertir le modèle Tensorflow en Lite
Convertir une chaîne en image
[Python] Convertit les nombres naturels en nombres ordinaux
Convertir décimal en n-aire [python]
Programme pour convertir le japonais en nom de station
Comment convertir .mgz en .nii.gz
Convertir un PDF en image avec ImageMagick
Outil pour convertir la configuration Juniper
Python> tuple> Convertir un double tuple en un seul tuple
[Python] Comment convertir un fichier db en csv
Convertir les données au format XML en données au format txt (yolov3)
Convertir un mémo à la fois avec Python 2to3
Comment convertir facilement le format de Markdown
Convertir Python> séquence de deux valeurs en dictionnaire
[Python] Comment convertir une liste bidimensionnelle en liste unidimensionnelle
Comment convertir csv en tsv dans la CLI
Comment convertir Python en fichier exe
Convertir le graphique matplotlib au format de fichier emf
[Python] Convertit les délimiteurs de fichier csv en délimiteurs de tabulation
Convertir de PDF en CSV avec pdfplumber
Convertir GFF3 en MSS pour la soumission DDBJ
Convertir (compresser) une chaîne de caractères JSON formatée en JSON 1 ligne
Convertir un fichier psd en png en Python
Convertir MetaImageIO (* .mha, * .mhd) en pile tiff
Convertir des chaînes de caractères en quantités de caractéristiques avec RoBERTa
Convertir des données Excel en JSON avec python
Conversion de katakana en voyelle kana [python]
Convertir les données de la grille en données contenant des lignes (?) À l'aide de pandas
Convertissez des données FX 1 minute en données 5 minutes avec Python