Construire Raspberry Pi pour étudier Python et l'apprentissage automatique (version RaspberryPi4 & Buster (RaspberryPi3 est également possible))

[Détails]

Enfin, le Raspberry Pi 4 modèle B est désormais disponible au Japon. J'ai réécrit le [[Building Raspberry Pi for Python and machine learning study]] publié précédemment (https://qiita.com/rhene/items/71b92c253d5ac2a4cc52) dans la 4ème édition de Raspberry afin que je puisse l'utiliser immédiatement. Outre le matériel, j'ai mis à jour la version Raspbian (Buster 20200213). Il a également été confirmé que l'environnement peut être construit avec la même procédure pour ** Raspberry Pi 3 modèle B **.

Depuis le 19 février 2020, il y a les problèmes suivants.

[Ce que vous pouvez faire avec la tarte à la râpe faite dans cette procédure]

【Configuration du système】

--Raspberry Pi 3 ou 4 modèle B

[0. Préparation de l'image du système d'exploitation]

Je suppose que vous utilisez Raspbian Buster 20200213. À partir du 19 février 2020, vous pouvez le télécharger à partir du site officiel, mais au cas où, j'écrirai le site miroir. [[Site miroir de Raspbian Buster 20200213 (ftp.jaist.ac.jp)]](http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/raspbian-2020-02-14/2020-02 -13-raspbian-buster.zip)

[1. Ecrire et démarrer l'image du système d'exploitation]

1-1. Écriture de l'image du système d'exploitation

Écrivez l'image du système d'exploitation préparée ci-dessus sur la carte SD. Veuillez vous référer à l'article suivant pour la procédure d'écriture sur la carte SD.

1-2. Créer un fichier pour démarrer ssh

Le service ssh est désactivé par défaut dans la version actuelle de Raspbian. Créez un fichier vide appelé ssh (sans extension) dans la partition" Boot "de la carte SD pour qu'il puisse démarrer automatiquement. Si vous utilisez Windows, l'extension est masquée par défaut, veuillez donc vérifier s'il existe une extension.

Le fichier ssh est lu et supprimé au démarrage du Raspberry Pi.

1-3. Création d'un fichier de paramètres pour la connexion Wi-Fi

Comme pour ssh, si vous mettez un fichier pour les paramètres Wifi dans la partition "Boot", il sera automatiquement lu et écrit à l'emplacement approprié.

Plus précisément, créez un fichier nommé wpa_supplicant.conf dans la partition" Boot "et décrivez les paramètres. Veuillez décrire le contenu suivant pour vous connecter au Wifi. Les paramètres doivent être modifiés en fonction du point d'accès à connecter.

wpa_supplicant.conf


ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
    ssid="<Nom SSID>"
    psk="<mot de passe>"
}

Si vous devez vous authentifier avec le serveur RADIUS lié à Active Directory, veuillez vous reporter à l'article suivant. [Se connecter de Raspeye à un réseau local sans fil qui nécessite une authentification RADIUS liée à AD (WPA2-EAP)] - Qiita

1-4. Démarrage de Raspberry Pi

Lorsque les préparatifs ci-dessus sont terminés, retirez la carte SD du PC, insérez-la dans l'unité principale Raspeye et mettez l'appareil sous tension.

[2. Mise à jour du système et paramètres réseau]

2-1. Mise à jour du système

Lorsque Raspai démarre, connectez-vous avec ssh ou exécutez la commande suivante dans le terminal de la console pour mettre à jour le système. (Cela prend quelques minutes)

Mise à jour du système


sudo apt update
sudo apt upgrade -y
sudo reboot

2-2. Désactiver ipv6 (facultatif)

Ce n'est pas obligatoire, mais cela peut gêner dans certains cas, alors désactivez-le. Ce paramètre n'est pas requis pour le fonctionnement d'ipv6.

paramètre d'invalidation ipv6


sudo vi /etc/sysctl.conf

[Réglages]

/etc/sysctl.conf


net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

[Reflect settings]

Refléter les paramètres


sudo sysctl -p

Ou

sudo reboot

2-3. Adresse IP fixe (facultatif)

Corrigez l'adresse IP si nécessaire. Ce paramètre n'est pas requis lors de l'utilisation dans un environnement DHCP. Étant donné que cette procédure suppose un fonctionnement sur un LAN sans fil, l'adresse IP est définie de manière fixe pour l'adaptateur LAN sans fil ou le SSID. Plus précisément, ajoutez le contenu suivant à / etc / dhcpcd.conf. Modifiez «», «», «» et «<your_ssid>» en fonction de votre environnement.

/etc/dhcpcd.conf


interface wlan0
inform <adresse IP>
static routers=<Adresse du routeur>
static domain_name_servers=<Adresse DNS>
noipv6

Ou

SSID <your_ssid>
inform <adresse IP>
static routers=<Adresse du routeur>
static domain_name_servers=<Adresse DNS>
noipv6

Lors de l'utilisation dans plusieurs environnements AP sans fil, il est pratique de réparer avec SSID.

2-4. Désactivez la gestion de l'alimentation du LAN sans fil (en option)

Ce paramètre n'est pas requis lors de l'utilisation dans un environnement LAN câblé. Par défaut, la fonction de gestion de l'alimentation LAN sans fil est activée, mais cette fonction peut provoquer une communication Wifi instable. Ajoutez une commande pour désactiver la gestion de l'alimentation à rc.local qui est exécutée au démarrage.

rc.Édition locale


sudo vi /etc/rc.local

rc.local


#Ajoutez ce qui suit avant l'instruction de sortie et enregistrez
sudo iwconfig wlan0 power off

Redémarrer


sudo reboot

[3. Installation des modules requis]

Installez les modules requis par les opérations suivantes. (Principalement utilisé dans OpenCV et Numpy)

Installation du module requise


sudo apt install -y libhdf5-dev libqtwebkit4 libqt4-test libatlas-base-dev libjasper-dev

[4. Installation liée à Python3]

4-1. Installation du module de base

Python3&installation de pip3


sudo apt install python3 python3-dev -y

Cette opération n'était pas nécessaire car Buster était préinstallé.

4-1-1. Mise à jour de pip3 (facultatif)

** Cette étape n'a pas besoin d'être effectuée **

Si vous suivez les étapes précédentes et mettez à jour la commande pip3, une erreur se produira et cessera de fonctionner lorsque vous exécuterez pip3.

Mise à niveau de pip3 [Échec]


#Si vous exécutez la commande suivante, pip3 ne peut pas être exécuté.
sudo pip3 install pip -U
pip3 -V

#Si pip3 ne peut pas être utilisé avec la commande ci-dessus, récupérez avec la commande suivante
sudo python3 -m pip uninstall pip
sudo apt install python3-pip --reinstall

Pour le moment, il est possible de mettre à jour la commande pip3 par la procédure suivante, mais ce n'était pas nécessaire dans cette procédure.

mise à niveau pip3(option)


#Désinstaller la commande pip3 existante
sudo apt remove python3-pip

#Installez la dernière commande pip3
wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
pip3 -V

#Mettre à jour les outils de configuration
sudo pip3 install setuptools -U

4-2. Installation de divers modules de Python3

Installez divers modules avec la commande pip. J'ai spécifié les versions de ~~ numpy et pandas, mais comme le dernier paquet binaire n'existe pas au moment de la construction de l'environnement et que la construction démarre et que l'installation prend du temps, la version précédente est spécifiée. Concernant TensorFlow, le dernier dont le fonctionnement a été confirmé au moment de la construction de l'environnement est précisé. ~~ À compter du 19 février 2020, chaque module spécifie la dernière version qui peut être installée dans le package avec la série Python 3.7. Veuillez changer la version si nécessaire.

Installation de divers modules pour Python3(2020/02/19 points)


# numpy
sudo pip3 install numpy==1.18.1

# scipy
sudo pip3 install scipy==1.4.1

# sklearn
sudo pip3 install scikit-learn==0.22.1

# matplotlib
sudo pip3 install matplotlib==3.1.3

# pandas
sudo pip3 install pandas==1.0.1

# seaborn
sudo pip3 install seaborn==0.10.0


# Tensorflow (2020/02/La dernière en date est 1 sur 19.14.0)
sudo pip3 install tensorflow
#Si vous avez mis à jour pip3`--ignore-installed`Correspondance avec les options
#sudo pip3 install tensorflow --ignore-installed 

# keras (tf.Non requis si vous utilisez des keras)
# sudo pip3 install keras

# flask
sudo pip3 install flask flask_cors -U

# OpenCV
sudo pip3 install opencv-python==4.1.1.26
#Changer et refléter les variables d'environnement(← Je dois faire ça`import cv2`Erreur lors de l'exécution)
echo "export LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1" | tee -a ~/.bashrc
source ~/.bashrc

# cv2.Si vous ne pouvez pas utiliser plusieurs caméras avec VideoCapture, installez apt pour un support provisoire.(Cependant 3.2.0)
# sudo pip3 uninstall opencv-python
# sudo apt install python3-opencv

De plus, c'est le plus que pip télécharge le paquet, probablement parce que "https://www.piwheels.org/" qui gère le paquet récemment ne fonctionne pas bien. Dans de nombreux cas, la session sera déconnectée au cours du processus et l'installation échouera en conséquence. La réexécution résout souvent le problème, mais de grandes tailles de téléchargement telles que scipy et tensorflow ne sont pas très réussies. Dans ce cas, copiez l'URL du package en cours de téléchargement qui s'affiche lorsque vous exécutez pip install et téléchargez le fichier dans votre dossier local avec la commande wget. La commande wget a une fonction de reprise même si le téléchargement échoue, donc elle réessayera automatiquement et téléchargera en quelque sorte le fichier cible. Exécutez ensuite sudo pip3 install <fichier téléchargé> pour installer.

Si vous avez un site miroir, vous pouvez y pointer la référence à pip, mais je ne savais pas au moment de la rédaction de cet article, donc si quelqu'un le sait, je vous serais reconnaissant si vous pouviez me le faire savoir.

5. Installation d'Edge TPU

Cet élément n'est pas obligatoire. Exécutez uniquement si vous utilisez Edge TPU.

Installation de la bibliothèque pour EdgeTPU


echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list

curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

sudo apt update

#version normale
sudo apt install libedgetpu1-std
#Ou la version d'horloge maximale
# sudo apt install libedgetpu1-max

Installation de TF Lite


sudo pip3 install https://dl.google.com/coral/python/tflite_runtime-2.1.0.post1-cp37-cp37m-linux_armv7l.whl

Edge_TPU_Python_Installation de l'API


sudo apt install python3-edgetpu

【6. Jupyter Lab】 Installez Jupyter Lab pour profiter du puissant environnement Notebook.

6-1. Installation de base

[Installation] Installez avec la commande suivante.

Installation de JupyterLab


sudo pip3 install jupyterlab

【Réglage】 Une fois l'installation terminée, créez un fichier de paramètres avec la commande suivante, puis modifiez le fichier de paramètres créé. Dans la procédure ci-dessous, vous pouvez vous connecter à partir de n'importe quel terminal et définir pour exiger un mot de passe lors de la connexion.

Créer un fichier de configuration


jupyter notebook --generate-config

[Modifier le fichier de paramètres]

Modifier le fichier de configuration


vi ~/.jupyter/jupyter_notebook_config.py

[Réglages]

jupyter_notebook_config.py


c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.password = 'sha1:<Mot de passe haché>'

Vous pouvez obtenir le hachage du mot de passe avec la commande suivante.

Hachage de mot de passe


python3 -c 'from notebook.auth import passwd;print(passwd())'
(Après avoir exécuté ce qui précède, entrez le caractère que vous souhaitez hacher)

6-2. Lancement de Jputer Lab et en faire un service

Démarrez Jupyter Lab avec la commande suivante.

Démarrer Jupyter Lab


jupyter lab

Pour la conversion de service, préparez d'abord le fichier de paramètres pour le service.

Préparation du dossier de service


sudo vi /etc/systemd/system/jupyter.service

Le contenu du fichier est le suivant.

/etc/systemd/system/jupyter.service


[Unit]
Desctiption = Jupyter Lab
After = syslog.target

[Service]
Type = simple
WorkingDirectory = /home/pi
Restart = always
ExecStart = /usr/local/bin/jupyter lab
User = pi
Group = pi

[Install]
WantedBy = multi-user.target

Lorsque le fichier est prêt, activez et démarrez le service avec la commande suivante.

commander


#Activation du service
sudo systemctl enable jupyter.service 

#Début du service
sudo systemctl start jupyter.service 

6-3. Se connecter à partir d'un navigateur

Avec Jupyter Lab en cours d'exécution ci-dessus, connectez-vous à l'URL suivante à partir de votre navigateur. Dans la procédure ci-dessus, il est configuré pour se connecter à partir d'autres PC, veuillez donc essayer de vous connecter à Jupyter Lab depuis votre propre PC.

http://<ip_address>:8888/lab

Un mot de passe vous sera demandé, alors entrez le mot de passe que vous avez défini ci-dessus.

image.png

【7. Node-RED】

7-1. Installation de Node-RED

Vous pouvez créer un environnement pour exécuter Node-RED en exécutant la commande suivante.

Node-Installation ROUGE


bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)

Le message suivant s'affiche: Appuyez sur y et appuyez sur Entrée. ** Si l'ancien node.js est installé, il sera remplacé par le nouveau, veuillez donc ne pas effectuer cette procédure s'il y a un problème. ** ** Cette procédure suppose l'installation à partir d'un état propre, donc exécutez-la telle quelle.

This script will remove versions of Node.js prior to version 7.x, and Node-RED and
if necessary replace them with Node.js 10.x LTS (dubnium) and the latest Node-RED from Npm.

It also moves any Node-RED nodes that are globally installed into your user
~/.node-red/node_modules directory, and adds them to your package.json, so that
you can manage them with the palette manager.

It also tries to run 'npm rebuild' to refresh any extra nodes you have installed
that may have a native binary component. While this normally works ok, you need
to check that it succeeds for your combination of installed nodes.

To do all this it runs commands as root - please satisfy yourself that this will
not damage your Pi, or otherwise compromise your configuration.
If in doubt please backup your SD card first.

Are you really sure you want to do this ? [y/N] ?

Le message suivant sera affiché, alors sélectionnez «y» pour continuer.

Would you like to install the Pi-specific nodes ? [y/N] ?

(Voulez-vous installer un nœud spécifique à Pi?)

Au fur et à mesure que l'installation progresse, les informations suivantes s'affichent.

Running Node-RED update for user pi at /home/pi on raspbian


This can take 20-30 minutes on the slower Pi versions - please wait.

  Stop Node-RED                       ?
  Remove old version of Node-RED      ?
  Remove old version of Node.js       ?
  Install Node.js LTS                 ?   Node v12.16.0   Npm 6.13.7
  Clean npm cache                     ?
  Install Node-RED core               ?   1.0.3
  Move global nodes to local          -
  Install extra Pi nodes              -
  Npm rebuild existing nodes          -
  Add shortcut commands               ?
  Update systemd script               ?


Any errors will be logged to   /var/log/nodered-install.log
All done.
  You can now start Node-RED with the command  node-red-start
  or using the icon under   Menu / Programming / Node-RED
  Then point your browser to localhost:1880 or http://{your_pi_ip-address}:1880

Démarré le mercredi 19 février 2020 15:45:42 JST  -Terminé le mercredi 19 février 2020 15:48:04 JST

7-2. Démarrez Node-RED et en faire un service

Démarrez Node-RED avec la commande suivante.

Node-Lancer RED


node-red

Utilisez la commande suivante pour faire de Node-RED un service. En en faisant un service, Node-RED sera automatiquement exécuté au démarrage de Raspai.

Node-Activation du service RED


sudo systemctl enable nodered.service

Début du service(Démarrage automatique uniquement pour la première fois, après la prochaine fois)


sudo systemctl start nodered.service

7-3. Se connecter à partir d'un navigateur

Avec Node-RED en cours d'exécution ci-dessus, connectez-vous à l'URL suivante à partir de votre navigateur.

http://<ip_address>:1880/

image.png

【Finalement】

Bien qu'il y ait quelques problèmes, nous avons pu construire l'environnement en suivant la procédure du passé. Nous n'avons pas encore vérifié l'opération en détail, veuillez donc commenter si vous en avez.

[Bug connu]

J'obtiens une erreur lors de l'exécution de ʻimport tensorflow` dans python3

Lorsque j'essaye d'utiliser TensorFlow et d'exécuter ʻimport tensorflow`, l'erreur suivante s'affiche.

2020-02-19 18:45:02.436414: E tensorflow/core/platform/hadoop/hadoop_file_system.cc:132] HadoopFileSystem load error: libhdfs.so: cannot open shared object file: No such file or directory

Cela n'a aucun effet jusqu'à présent, donc je l'ignore pour le moment.

La version de TensorFlow qui peut être installée par pip est ancienne (au 19/02/2020)

La dernière version de TensorFlow, qui peut être installée avec Raspeye, est un peu plus ancienne, 1.14.0. Pour la série tf1, j'aimerais utiliser la dernière version «1.15.0». Si vous souhaitez utiliser la nouvelle version, vous devez la construire vous-même. La procédure officielle de TensorFlow dit qu'il peut être construit en environ 30 minutes, mais j'ai essayé plusieurs fois, mais cela a pris plus de 3 heures. Et finalement échouer ...

Quant à la version de TensorFlow, @PINTO a publié un package pré-construit, ce qui me rend très heureux. Pour le moment, «1.15.0» est publié pour la série tf1 et «2.1.0» pour la série tf2.

https://github.com/PINTO0309/Tensorflow-bin https://github.com/PINTO0309/Tensorflow-bin/#usage

De plus, si vous utilisez ce package, l'erreur ci-dessus au moment de l'importation sera résolue.

Recommended Posts

Construire Raspberry Pi pour étudier Python et l'apprentissage automatique (version RaspberryPi4 & Buster (RaspberryPi3 est également possible))
Mémo de construction d'environnement d'apprentissage automatique par Python
Que diriez-vous d'Anaconda pour créer un environnement d'apprentissage automatique avec Python?
Création d'un environnement Windows 7 pour une introduction à l'apprentissage automatique avec Python
Pourquoi Python est choisi pour l'apprentissage automatique
Création d'un environnement de travail Docker R et Python
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer chapitres 1 et 2
[Python] J'ai créé un classificateur pour les iris [Machine learning]
Installez pyenv sur Raspberry Pi pour gérer Python
Raspberry Pi + python + appareil IoT, procédure de construction d'environnement pour démarrer le traitement d'image et l'apprentissage automatique
Procédure d'installation pour Python et Ansible avec une version spécifique
Un résumé de l'apprentissage automatique Python pour débutant est très concis.
Création de l'environnement de travail Docker R et Python 2: prise en charge du japonais
<Pour les débutants> bibliothèque python <Pour l'apprentissage automatique>
[Definitive Edition] Création d'un environnement pour l'apprentissage du «machine learning» à l'aide de Python sur Mac
Créez rapidement un environnement python pour le Deep Learning / Data Science (Windows)
Traitement de flux de Python et SensorTag, Kafka, Spark Streaming - Partie 1: Raspberry Pi 3
La température est automatiquement mesurée à l'aide de Raspberry Pi 3 et automatiquement téléchargée sur le serveur (Docker python3 + bouteille + MySQL) pour visualisation!
[Raspberry Pi] Ajouter un thermomètre et un hygromètre
[Mac] Création d'un environnement virtuel pour Python
[Shakyo] Rencontre avec Python pour l'apprentissage automatique
[Python] Conception d'applications Web pour l'apprentissage automatique
Créer un environnement pour Python et l'apprentissage automatique (macOS)
Une introduction à Python pour l'apprentissage automatique
Créer un environnement de développement Python pour le développement de l'IA
Créer un environnement de développement pour l'apprentissage automatique
J'ai essayé d'expliquer à quoi sert le générateur Python aussi facilement que possible.
Compilation croisée de Raspberry Pi et création d'un environnement de développement de débogage à distance avec VS Code
Création d'un système de contrôle de température avec tarte aux framboises et ESP32 (3) Réception d'un fichier Python
[Pour les débutants] J'ai fait un capteur humain avec Raspberry Pi et notifié LINE!
Mémo d'apprentissage Python pour l'apprentissage automatique par Chainer Chapitres 11 et 12 Introduction à Pandas Matplotlib