Führen Sie auf dem Jetson Nano ein benutzerdefiniertes Vision-Modell aus. Dieser Artikel Ich werde fortsetzen.
Beenden wir das Setup mit diesem Artikel. Sie können sogar mit der GUI schließen, so dass Sie nicht zur CUI wechseln müssen.
Exportieren Sie das Modell unter hier.
Lernen Sie zunächst mit Custom Vision in einer der folgenden Domänen.
Drücken Sie nach dem Lernen auf die Registerkarte Benutzerdefinierte Vision-Leistung → Exportieren, um sie mit ** Docker ** ** Linux ** zu exportieren und herunterzuladen. Bringen Sie die exportierte Modell-Zip-Datei mit `` `scp``` usw. nach Nano und entpacken Sie sie.
unzip CustomVision.zip -d customvision
Sie sollten DockerFile im extrahierten Ordner `` `customvision``` finden. Bearbeiten Sie es wie folgt (python3-opencv wird möglicherweise nicht benötigt).
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
Es scheint, dass Tensorflow 2.3 enthalten ist. Siehe hier, und es scheint, dass Tensorflow 1.15 ebenfalls enthalten sein kann. Es dauerte weniger Zeit als ich erwartet hatte.
docker build . -t mycustomvision
Starten Sie den Container nach dem Bau.
docker run -p 127.0.0.1:80:80 -d mycustomvision
Wenn Sie die Containerliste anzeigen, können Sie sehen, dass sie ausgeführt wird.
$ 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
Lassen Sie uns POSTEN und mit Python schließen.
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)
↓ Ergebnis
$ 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': ''}
Ich habe das Ergebnis richtig verstanden.
Danke für deine harte Arbeit. Ursprünglich wurde Tensorflow 2.0.0 in der Docker-Datei angegeben, aber ich bin mir nicht sicher, ob 2.3.0 in Ordnung ist. Ich bin vorerst froh, dass ich eine korrekte Schlussfolgerung ziehen kann.
Wenn Sie Fehler haben, weisen Sie bitte darauf hin.