[PYTHON] Bilderkennung von Müll mit Edge (Raspberry Pi) aus null Wissen mit AutoML Vsion und TPU

Es ist ein Memorandum Ich werde darüber schreiben, wie es geht

Über den Autor

  1. Jahr Master an einer bestimmten Universität Studieren von Videokodierung, elektrischen Schaltkreisen, maschinellem Lernen Ich habe C, C ++, JAVA, Python, Chainer, Ubuntu usw. berührt. Völlig unwissend über Raspeye, GCP, API, Raspbian

Umgebung

Ubuntu 18.04.2 LTS (Nopa) (Fenster sind in Ordnung) Raspbian(Raspberry Pi 3 Model B+) Coral accelerator EDGE TPU

Dinge die zu tun sind

Echtzeit-Bilderkennung von Staub mit einer USB-Kamera und TPU mit Raspeye (dieser Artikel) Erstellen Sie einen Papierkorb, der automatisch identifiziert werden kann, indem Sie die Hardware anhand des Ergebnisses steuern (außerhalb dieses Artikels).

Referenz

Bilddateien mit Python, OpenCV (imread, imwrite) lesen und speichern Betrieb von Raspberry Pi unter Windows (SSH) Ich habe versucht, den Windows 10-Standard-SSH-Client zu verwenden Probieren Sie ein benutzerdefiniertes Modell von AutoML Vision Edge mit Coral Edge TPU aus Probieren Sie ein benutzerdefiniertes Modell von AutoML Vision Edge mit Coral Edge TPU aus (Probieren Sie ein benutzerdefiniertes Modell von AutoML Vision Edge mit Coral Edge TPU aus). So starten Sie maschinelles Lernen! Eine einfache Einführung mit Googles AutoML Vision Edge

Inhaltsverzeichnis

Zubereitung von Raspeltorte

  1. Fügen Sie das Betriebssystem ein
  2. SSH-Einstellungen
  3. Vorbereitung für AutoML mit Raspeye
  4. Installieren Sie OpenCV
  5. Vorbereiten des Anschlusses der USB-Kamera

Erstellen eines Datensatzes

  1. Installieren Sie OpenCV
  2. Erstellen Sie ein Fotoaufnahmeprogramm und führen Sie es aus
  3. In ZIP komprimieren

Vorbereiten von AutoML für den Browser

  1. Datensatzregistrierung
  2. Schulung
  3. Modell herunterladen

Programm erstellen

  1. Erstellen Sie ein Programm (Funktion), um ein Bild aufzunehmen
  2. Erstellen Sie ein Programm (Funktion), das Bilder anhand von Fotos erkennt

Zubereitung von Raspeltorte

Setzen Sie das Betriebssystem

Sie können das Betriebssystem von der offiziellen Website herunterladen, in die SD-Karte einlegen, in den Raspberry Pi einlegen und starten. Wenn Sie Probleme haben, das Verzeichnis von Japanisch auf Englisch zu ändern, wird empfohlen, das Betriebssystem von Anfang an auf Englisch zu installieren. Wenn Sie dies nicht können, finden Sie diesen Artikel möglicherweise hilfreich: [Hinweise zur Installation eines aktuellen Raspberry Pi-Images (Raspbian)](https://www.1ft-seabass.jp/memo/2018/07/23/raspbian- install-201807-memo /)

SSH-Einstellungen (Remote Connection)

Starten Sie das Terminal mit Strg + Alt + T in Raspeye sudo raspi-config Geben Sie im geöffneten Fenster einen Befehl ein 8 Advanced Options A4 SSH Enable SSH ist aktiviert

Starten Sie das Terminal unter Ubuntu mit Strg + Alt + T. Nach dem Herstellen einer Verbindung mit demselben WLAN wie Razpai Verbinde dich mit ssh pi @ raspberrypi.local Das anfängliche Passwort lautet Es ist "Himbeere"

Sie können sich auch mit ssh [IP-Adresse] verbinden Sie können die IP-Adresse in Raspeye mit dem Befehl ip a sehen Schauen Sie sich das Tokoro von wlan0 an inet 192.168.195.212/24 brd 192.168.195.255 scope global noprefixroute wlan0 Wenn es so etwas gibt, ist 192.168.195.212 die IP-Adresse Der Befehl ssh 192.168.195.212 ist also in Ordnung Weitere Informationen finden Sie unter ifconfig ist veraltet !? So ermitteln Sie die IP-Adresse von Raspberry Pi ohne Verwendung des Befehls ifconfig

Sie können dasselbe mit Windows [wie diesem] tun (https://www.onebizlife.com/windows10-ssh-client-1980)

Vorbereitung für AutoML mit Raspeye

Referenz: Probieren Sie ein benutzerdefiniertes Modell von AutoML Vision Edge mit Coral Edge TPU aus Modulimport

cd ~/
wget --no-check-certificate https://dl.google.com/coral/edgetpu_api/edgetpu_api_latest.tar.gz -O edgetpu_api.tar.gz --trust-server-names
tar xzf edgetpu_api.tar.gz
cd edgetpu_api
bash ./install.sh

Wenn ich "--no-check-certificate" nicht eingegeben habe, wurde ein Fehler angezeigt, also habe ich ihn eingefügt.

Erstellen eines Datensatzes

OpenCV-Installation

Ein Fehler ist aufgetreten, als ich opencv mit Raspeye [Korrekturmaßnahmen] in Python3 eingefügt habe Erstellen Sie ein Fotoprogramm und führen Sie es aus In ZIP komprimieren

Vorbereiten von AutoML für den Browser

Datensatzregistrierung

Ausbildung Modell herunterladen

gsutil cp -r gs://*****/ ./download_dir
No command was given.

Choose one of -b, -d, -e, or -r to do something.
Try `/usr/bin/gsutil --help' for more information.

Wird gesagt. F. Gibt es einen Fehler, obwohl die Option "-r" ordnungsgemäß angehängt ist? ?? ?? A. Es scheint, dass Sie ein anderes "gsutil" als Google installiert haben Download von von hier Wenn Sie diese Straße machen, können Sie wahrscheinlich gehen

Ich kann nichts gut machen, also werde ich es von Razpai aus erneut versuchen

Wenn die Zeitzone deaktiviert ist, wird sie zunächst abgespielt sudo date -s '11/04 20:10 2019' Stellen Sie die Zeit mit ein Da die Version von Python 2 Serien war, ist es so wie es ist curl https://sdk.cloud.google.com | bash ↑ Dieser Befehl gibt in meiner Umgebung häufig einen 403-Fehler aus, aber ich habe ihn nicht mehrmals aufgegeben und ausgeführt, und ich konnte ihn zum vierten Mal ausführen.

 $ exec -l $SHELL
 $ which gcloud
 $ gcloud init

Ich konnte es nicht gut machen, weil ich den Browser mit SSH-Verbindung nicht öffnen konnte, also habe ich ihn direkt mit Raspeye ausgeführt. Übrigens wurde @ mit Shift + 2 eingegeben.

Importieren Sie das Google Cloud SDK.

#Umgebungsvariablen einstellen
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"

#Cloud SDK URL hinzugefügt
echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list

#Öffentlichen Schlüssel importieren
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

#Aktualisieren und installieren Sie das SDK
#Ich bekomme oft Downloadfehler--fix-fehlt wird hinzugefügt
sudo apt-get update && sudo apt-get install google-cloud-sdk --fix-missing

#Installieren Sie übrigens die Python-Komponente
sudo apt-get install google-cloud-sdk-app-engine-python

#Befehl starten
gcloud init

Nach dieser Vision $ gsutil cp -r gs://****/*****/your_model/ ./download_dir Bis auf eines der Modelle und dieses / von ← hier ist wichtig $ gsutil cp -r gs://****/*****/your_model ./download_dir Ich konnte es unter herunterladen. Wie schwer ist es, einen einzeiligen Befehl auszuführen? .. .. ..

Führen Sie TPU aus

Laden Sie das Programm herunter, um TPU auszuführen git clone https://github.com/google-coral/tflite.git

Mir wurde gesagt, dass es keine tflite_runtime gibt, also habe ich es installiert Laden Sie die Datei von [hier] herunter (https://dl.google.com/coral/python/tflite_runtime-1.14.0-cp37-cp37m-linux_x86_64.whl). Diejenigen, die den Link für verdächtig halten, sind korrekt. Für diese Personen gehen Sie bitte zu Quelle In dem Verzeichnis, in dem sich diese Datei befindet pip3 install tflite_runtime-1.14.0-cp37-cp37m-linux_armv7l.whl Kann mit einem Befehl installiert werden

danach python3 classify_image.py --m edgetpu_model.tflite --l dict.txt --i images.jpeg Kann mit ausgeführt werden Ordnen Sie jede Datei Ihrem eigenen Dateipfad zu

Programm erstellen

Erstellen Sie ein Programm (Funktion), um ein Bild aufzunehmen

Erstellen Sie ein Programm (Funktion), das Bilder anhand von Fotos erkennt

Fügen Sie die folgende Funktion zu "classify_image.py" hinzu Ich habe das Befehlszeilenargument in ein normales Argument geändert. Bitte sagen Sie mir, ob es einen besseren Weg gibt

def get_label(labels = "dict.txt",model = "edgetpu_model.tflite",input_i = "images.jpeg ",count =5,threshold = 0.0,top_k =1):

  labels = load_labels(labels) if labels else {}

  interpreter = make_interpreter(model)
  interpreter.allocate_tensors()

  size = classify.input_size(interpreter)
  image = Image.open(input_i).convert('RGB').resize(size, Image.ANTIALIAS)
  classify.set_input(interpreter, image)

  for _ in range(count):
    start = time.monotonic()
    interpreter.invoke()
    inference_time = time.monotonic() - start
    classes = classify.get_output(interpreter, top_k, threshold)

  for klass in classes:

    label = (labels.get(klass.id, klass.id))
    score = klass.score

    return label,score

Anschließend können Sie die Bezeichnung und Zuverlässigkeit erhalten, indem Sie wie folgt importieren und ausführen.

import classify_image as clfi

if __name__ == '__main__':

	labels ="dict.txt"
	model = "edgetpu_model.tflite"
	input_i ="images.jpeg "
	label ,score = clfi.get_label(labels =labels,model = model , input_i =input_i)
	print(label)
	print(score)

Sie können das Ergebnis so erhalten

INFO: Initialized TensorFlow Lite runtime.
burnable
0.703125

Lernen Sie vorerst mit etwa 30 Daten für jedes Etikett, Ich habe es mit brennendem Müll aus dem Netz getestet, aber es ist überraschend. Nun, ich kann die Genauigkeit noch nicht kommentieren ... Ich habe Müll auf Lager, also würde ich es gerne richtig machen, wenn die Daten zunehmen.

Immerhin wird der Bildschirm auf dem Raspeltorte angezeigt und die Entwicklung wird durchgeführt, sodass die Wärmeerzeugung erstaunlich ist

Recommended Posts

Bilderkennung von Müll mit Edge (Raspberry Pi) aus null Wissen mit AutoML Vsion und TPU
Bilderkennung mit API aus null Wissen mit AutoML Vision
Herstellung eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (1)
Test der Spracherkennung mit Azure mit Python (Eingabe vom Mikrofon)
Benachrichtigen Sie LINE über die Körpertemperatur vom BLE-Thermometer mit Raspeltorte Nr. 1
Benachrichtigen Sie LINE über die Körpertemperatur vom BLE-Thermometer mit Raspeltorte Nr. 2
Grafische Darstellung des Stromverbrauchs im Haushalt mit 3GPI und Raspeye
[Hinweis] Verwenden eines 16x2-stelligen LCD-Zeichens (1602A) von Python mit Raspeye
Bilderkennung von Früchten mit VGG16
Verwenden einer Webkamera mit Raspberry Pi
Herstellung eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (2) Herstellung eines Übertragungsgeräts
Ich habe mit Pytorch versucht, Bilder von "Moon and Suppon" zu erkennen (mit torchvision.datasets.ImageFolder, das from_from_directry of keras entspricht).
Python: Grundlagen der Bilderkennung mit CNN
Haustierüberwachung mit Rekognition und Raspberry pi
Python: Anwendung der Bilderkennung mit CNN
Bilderkennung mit CNN Pferden und Hirschen
Einfacher VPN-Aufbau eines IPSec-Gateways mit Ubuntu 20.04 und Raspberry Pi ―― 1. StrongSwan eingeführt
Maschinelles Lernen: Bilderkennung von MNIST mithilfe von PCA und Gaussian Native Bayes
Ich habe die Beleuchtungsstärke des Raumes mit Raspberry Pi, Arduino und einem optischen Sensor getwittert