[DOCKER] Abgeleitet mit einem Custom Vision-Modell auf Jetson Nano

Einführung

Führen Sie auf dem Jetson Nano ein benutzerdefiniertes Vision-Modell aus. Dieser Artikel Ich werde fortsetzen.

Umgebung

Jetson Nano Setup

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.

Laden Sie das Custom Vision-Modell herunter

Exportieren Sie das Modell unter hier.

Lernen Sie zunächst mit Custom Vision in einer der folgenden Domänen.

image.png

Drücken Sie nach dem Lernen auf die Registerkarte Benutzerdefinierte Vision-Leistung → Exportieren, um sie mit ** Docker ** ** Linux ** zu exportieren und herunterzuladen. export.png 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

Inferenz

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.

abschließend

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.

Recommended Posts

Abgeleitet mit einem Custom Vision-Modell auf Jetson Nano
[Ruby on Rails] Modelltest mit RSpec
Legen Sie mit hocalhost Referrer-Grenzwerte für die Google Vision-API fest