[PYTHON] Reconnaissance d'image des déchets avec Edge (Raspberry Pi) à partir de zéro connaissance en utilisant AutoML Vsion et TPU

C'est un mémorandum J'écrirai sur la façon de le faire

A propos de l'auteur

Master de 1ère année dans une certaine université Etudier le codage vidéo, les circuits électriques, l'apprentissage automatique J'ai touché C, C ++, JAVA, python, chainer, Ubuntu, etc. Totalement ignorant de Raspeye, GCP, API, Raspbian

environnement

Ubuntu 18.04.2 LTS (Nopa) (les fenêtres sont OK) Raspbian(Raspberry Pi 3 Model B+) Coral accelerator EDGE TPU

Choses à faire

Reconnaissance d'image en temps réel de la poussière à l'aide d'une caméra USB et d'un TPU avec Raspeye (cet article) Créer une poubelle qui peut être automatiquement identifiée en contrôlant le matériel à l'aide du résultat (en dehors de cet article)

référence

Lire et enregistrer des fichiers image avec Python, OpenCV (imread, imwrite) Fonctionnement de Raspberry Pi sous Windows (SSH) J'ai essayé d'utiliser le client SSH standard de Windows 10 Essayez un modèle personnalisé d'AutoML Vision Edge avec Coral Edge TPU Essayez un modèle personnalisé d'AutoML Vision Edge sur un TPU Coral Edge (Essayez un modèle personnalisé d'AutoML Vision Edge sur un TPU Coral Edge) Comment démarrer l'apprentissage automatique! Une introduction simple avec AutoML Vision Edge de Google

table des matières

Préparation de la tarte aux râpes

  1. Insérez le système d'exploitation
  2. Paramètres SSH
  3. Préparation pour AutoML avec Raspeye
  4. Installez OpenCV
  5. Préparation de la connexion de la caméra USB

Créer un jeu de données

  1. Installez OpenCV
  2. Créez et exécutez un programme de prise de photos
  3. Compresser en ZIP

Préparation d'AutoML à faire dans le navigateur

  1. Enregistrement de l'ensemble de données
  2. Formation
  3. Téléchargement du modèle

Créer un programme

  1. Créez un programme (fonction) pour prendre une photo
  2. Créez un programme (fonction) qui reconnaît les images en fonction des photos

Préparation de la tarte aux râpes

Mettez le système d'exploitation

Vous pouvez télécharger le système d'exploitation à partir du site officiel, l'insérer dans la carte SD, l'insérer dans le Raspberry Pi et le démarrer. Si vous rencontrez des difficultés pour changer le répertoire du japonais vers l'anglais, il est recommandé d'installer le système d'exploitation en anglais depuis le début. Si vous ne pouvez pas, vous pouvez trouver cet article utile: [Notes sur l'installation d'une image Raspberry Pi récente (Raspbian)](https://www.1ft-seabass.jp/memo/2018/07/23/raspbian- install-201807-memo /)

Paramètres SSH (connexion à distance)

Lancer le terminal avec ctrl + alt + t dans Raspeye sudo raspi-config Tapez une commande dans la fenêtre ouverte 8 Advanced Options A4 SSH Enable SSH est activé sur

Lancez Terminal sur Ubuntu avec ctrl + alt + t Après vous être connecté au même wifi que Razpai Connectez-vous avec ssh pi @ raspberrypi.local Le mot de passe initial est C'est «framboise»

Vous pouvez également vous connecter avec ssh [adresse IP] Vous pouvez voir l'adresse IP dans Raspeye avec la commande ʻip a Regardez le tokoro de wlan0inet 192.168.195.212/24 brd 192.168.195.255 scope global noprefixroute wlan0 S'il y a une telle chose, 192.168.195.212 est l'adresse IP Donc, la commandessh 192.168.195.212` est OK Pour plus de détails, voir ifconfig est obsolète!? Comment connaître l'adresse IP du Raspberry Pi sans utiliser la commande ifconfig

Vous pouvez faire la même chose avec Windows comme ceci

Se préparer à faire AutoML avec Raspeye

Référence: Essayez un modèle personnalisé d'AutoML Vision Edge avec Coral Edge TPU Importation de module

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

Si je n'ai pas entré --no-check-certificate, j'ai eu une erreur, donc je l'ai incluse.

Créer un jeu de données

Installation d'OpenCV

Une erreur s'est produite lorsque j'ai mis opencv dans python3 avec Razzpie [Mesures correctives] Créer et exécuter un programme de prise de photos Compresser en ZIP

Préparation d'AutoML à faire dans le navigateur

Enregistrement de l'ensemble de données

entraînement Téléchargement du modèle

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.

Sera dit. Q. Y a-t-il une erreur même si l'option -rʻest correctement attachée? ?? ?? A. Il semble que vous ayez installé un gsutil` différent de Google Télécharger depuis à partir d'ici Si vous faites cette rue, vous pouvez probablement y aller

Je ne peux rien faire de bien, alors je vais réessayer depuis Razpai

Tout d'abord, si le fuseau horaire est désactivé, il sera lu sudo date -s '11/04 20:10 2019' Réglez l'heure avec Puisque la version de python était de la série 2, c'est comme ça curl https://sdk.cloud.google.com | bash ↑ Cette commande donne souvent une erreur 403 dans mon environnement, mais je n'ai pas abandonné et l'ai exécutée plusieurs fois, et j'ai pu y aller la quatrième fois.

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

Je n'ai pas pu le faire correctement car je ne pouvais pas ouvrir le navigateur avec une connexion SSH, alors je l'ai exécuté directement avec Raspeye. À propos, @ a été entré avec Shift + 2.

Importez le SDK Google cloud

#Définition des variables d'environnement
export CLOUD_SDK_REPO="cloud-sdk-$(lsb_release -c -s)"

#URL du SDK cloud ajoutée
echo "deb http://packages.cloud.google.com/apt $CLOUD_SDK_REPO main" | sudo tee -a /etc/apt/sources.list.d/google-cloud-sdk.list

#Importer la clé publique
curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

#Mettre à jour et installer le SDK
#Je reçois souvent des erreurs de téléchargement--fix-manquant est ajouté
sudo apt-get update && sudo apt-get install google-cloud-sdk --fix-missing

#Au fait, installez le composant python
sudo apt-get install google-cloud-sdk-app-engine-python

#Commande de démarrage
gcloud init

Après cette vision $ gsutil cp -r gs://****/*****/your_model/ ./download_dir Sauf pour l'un des modèles et ce / de ← ici est important $ gsutil cp -r gs://****/*****/your_model ./download_dir J'ai pu le télécharger sur. Est-il difficile d'exécuter une commande sur une seule ligne? .. .. ..

Exécutez TPU

Téléchargez le programme pour exécuter TPU git clone https://github.com/google-coral/tflite.git

On m'a dit qu'il n'y avait pas de tflite_runtime donc je l'ai installé Téléchargez le fichier depuis ici Ceux qui pensent que le lien est suspect ont raison. Pour ces personnes, veuillez vous rendre sur Source Dans le répertoire où se trouve ce fichier pip3 install tflite_runtime-1.14.0-cp37-cp37m-linux_armv7l.whl Peut être installé avec une commande

ensuite python3 classify_image.py --m edgetpu_model.tflite --l dict.txt --i images.jpeg Peut être exécuté avec Faites correspondre chaque fichier à votre propre chemin de fichier

Créer un programme

Créer un programme (fonction) pour prendre une photo

Créer un programme (fonction) qui reconnaît les images en fonction des photos

Ajoutez la fonction suivante à classify_image.py J'ai changé l'argument de ligne de commande en argument normal, veuillez me dire s'il existe un meilleur moyen

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

Ensuite, vous pouvez obtenir l'étiquette et la fiabilité en important et en exécutant comme suit.

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)

Vous pouvez obtenir le résultat comme ça

INFO: Initialized TensorFlow Lite runtime.
burnable
0.703125

Pour le moment, apprenez avec une trentaine de données pour chaque étiquette, Je l'ai testé avec des déchets brûlés ramassés sur le net, mais c'est surprenant. Eh bien, je ne peux pas encore commenter l'exactitude ... Je stocke des ordures, alors j'aimerais le faire correctement lorsque les données augmentent.

Après tout, l'écran est affiché sur la tarte aux râpes et le développement est en cours, donc la génération de chaleur est incroyable

Recommended Posts

Reconnaissance d'image des déchets avec Edge (Raspberry Pi) à partir de zéro connaissance en utilisant AutoML Vsion et TPU
Reconnaissance d'image avec API à partir de zéro connaissance avec AutoML Vision
Production de système de contrôle de température avec tarte aux framboises et ESP32 (1)
Essai de la reconnaissance vocale à l'aide d'Azure avec Python (entrée depuis le microphone)
Notifier LINE de la température corporelle du thermomètre BLE avec la tarte à la râpe # 1
Avertir LINE de la température corporelle du thermomètre BLE avec la tarte à la râpe n ° 2
Affichage graphique de la consommation électrique des ménages avec 3GPI et Raspeye
[Remarque] Utilisation d'un écran LCD à 16 caractères à 2 chiffres (1602A) de Python avec Raspeye
Reconnaissance d'image des fruits avec VGG16
Utiliser une webcam avec Raspberry Pi
Production d'un système de contrôle de température avec tarte aux framboises et ESP32 (2) Production d'un appareil de transmission
J'ai essayé la reconnaissance d'image de "Moon and Suppon" avec Pytorch (en utilisant torchvision.datasets.ImageFolder qui correspond à from_from_directry de keras)
Python: principes de base de la reconnaissance d'image à l'aide de CNN
Surveillance des animaux avec Rekognition et Raspberry pi
Python: Application de la reconnaissance d'image à l'aide de CNN
Reconnaissance d'image à l'aide de chevaux et de cerfs CNN
Construction VPN simple de la passerelle IPsec avec Ubuntu 20.04 et Raspberry Pi ―― 1. StrongSwan introduit
Apprentissage automatique: reconnaissance d'image de MNIST à l'aide de PCA et de Gaussian Native Bayes
J'ai tweeté l'éclairement de la pièce avec Raspberry Pi, Arduino et un capteur optique