Exécutez un modèle Custom Vision sur le Jetson Nano. Cet article Je vais continuer.
Complétons la configuration en nous référant à cet article. Vous pouvez en déduire même avec l'interface graphique, vous n'avez donc pas besoin de basculer vers la CUI.
Exportez le modèle en vous référant à here.
Tout d'abord, apprenez dans l'un des domaines suivants avec Custom Vision.
Après avoir appris, appuyez sur l'onglet Custom Vision Performance → Exporter pour exporter et télécharger avec ** Docker ** ** Linux **.
Apportez le fichier zip du modèle exporté vers Nano avec
scp``` etc. et décompressez-le.
unzip CustomVision.zip -d customvision
Vous devriez trouver DockerFile dans le dossier extrait `` customvision ''. Modifiez-le comme suit (python3-opencv peut ne pas être nécessaire).
Dockerfile
FROM nvcr.io/nvidia/l4t-tensorflow:r32.4.4-tf2.3-py3
RUN apt-get update -y
RUN DEBIAN_FRONTEND=noninteractive apt-get install -y python3-opencv
RUN pip3 install flask pillow
COPY app /app
# Expose the port
EXPOSE 80
# Set the working directory
WORKDIR /app
# Run the flask server for the endpoints
CMD python3 -u app.py
Il semble que Tensorflow 2.3 soit inclus. Reportez-vous à ici, et il semble que Tensorflow 1.15 puisse également être inclus. Il a fallu moins de temps que prévu pour le construire.
docker build . -t mycustomvision
Démarrez le conteneur après la construction.
docker run -p 127.0.0.1:80:80 -d mycustomvision
Si vous affichez la liste des conteneurs, vous pouvez voir qu'elle est en cours d'exécution.
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
10548014b918 mycustomvision "/bin/sh -c 'python3…" 2 hours ago Up 2 hours 127.0.0.1:80->80/tcp sleepy_elgamal
POSTONS et déduisons avec Python.
inference.py
import json
import requests
file = "./test.png "
with open(file,"rb") as f:
data = f.read()
url = "http://127.0.0.1/image"
files = {"imageData":data}
response = requests.post(url,files=files)
results = json.loads(response.content)
print(results)
↓ Résultat
$ python3 inference.py
{'created': '2020-11-05T14:58:32.073106', 'id': '', 'iteration': '', 'predictions': [{'boundingBox': {'height': 0.16035638, 'left': 0.738249, 'top': 0.41299437, 'width': 0.05781723}, 'probability': 0.91550273, 'tagId': 0, 'tagName': '1'}], 'project': ''}
J'ai eu le résultat correctement.
Je vous remercie pour votre travail acharné. À l'origine, Tensorflow 2.0.0 était spécifié dans le Dockerfile, mais je ne suis pas sûr que 2.3.0 soit correct. Pour le moment, je suis heureux de pouvoir faire une inférence correcte.
Si vous avez des erreurs, veuillez les signaler.