Erstellen von Raspberry Pi zum Lernen von Python und maschinellem Lernen (RaspberryPi4 & Buster-Version (RaspberryPi3 ist ebenfalls möglich))

[Einzelheiten]

Schließlich ist das Raspberry Pi 4 Modell B jetzt in Japan erhältlich. Ich habe die zuvor veröffentlichte Studie [Erstellen von Raspberry Pi für Python und maschinelles Lernen] in die 4. Ausgabe von Raspberry umgeschrieben, damit ich sie sofort verwenden kann. Zusätzlich zur Hardware habe ich die Raspbian-Version (Buster 20200213) aktualisiert. Es wurde auch bestätigt, dass die Umgebung mit dem gleichen Verfahren für ** Raspberry Pi 3 Modell B ** erstellt werden kann.

Ab dem 19. Februar 2020 gibt es die folgenden Probleme.

[Was können Sie mit dem in diesem Verfahren hergestellten Raspeltorte tun?]

【Systemkonfiguration】

[0. Vorbereitung des OS-Images]

Ich gehe davon aus, dass Sie Raspbian Buster 20200213 verwenden. Ab dem 19. Februar 2020 können Sie es von der offiziellen Website herunterladen, aber für alle Fälle werde ich die Spiegelseite aufschreiben. [[Raspbian Buster 20200213 Mirror Site (ftp.jaist.ac.jp)]](http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian/images/raspbian-2020-02-14/2020-02 -13-raspbian-buster.zip)

[1. OS-Image schreiben und starten]

1-1. OS-Image schreiben

Schreiben Sie das oben vorbereitete Betriebssystem-Image auf die SD-Karte. Informationen zum Schreiben auf die SD-Karte finden Sie im folgenden Artikel.

1-2. Erstellen einer Datei zum Starten von ssh

Der SSH-Dienst ist in der aktuellen Version von Raspbian standardmäßig deaktiviert. Erstellen Sie eine leere Datei mit dem Namen "ssh" (ohne Erweiterung) in der "Boot" -Partition der SD-Karte, damit diese automatisch gestartet werden kann. Wenn Sie Windows verwenden, ist die Erweiterung standardmäßig ausgeblendet. Überprüfen Sie daher, ob eine Erweiterung vorhanden ist.

Die ssh-Datei wird beim Starten des Raspberry Pi gelesen und gelöscht.

1-3 Erstellen einer Einstellungsdatei für die WLAN-Verbindung

Wenn Sie wie bei ssh eine Datei für die WLAN-Einstellungen in die "Boot" -Partition einfügen, wird diese automatisch gelesen und an den entsprechenden Speicherort geschrieben.

Erstellen Sie insbesondere eine Datei mit dem Namen "wpa_supplicant.conf" in der Partition "Boot" und beschreiben Sie die Einstellungen. Bitte beschreiben Sie die folgenden Inhalte, um eine Verbindung zu Wifi herzustellen. Die Einstellungen müssen entsprechend dem zu verbindenden Zugangspunkt geändert werden.

wpa_supplicant.conf


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

network={
    ssid="<SSID-Name>"
    psk="<Passwort>"
}

Wenn Sie sich bei dem mit Active Directory verknüpften RADIUS-Server authentifizieren müssen, lesen Sie den folgenden Artikel. [Verbindung von Raspeye zu einem WLAN herstellen, für das eine RADIUS-Authentifizierung mit AD (WPA2-EAP) erforderlich ist] - Qiita

1-4 Raspberry Pi starten

Wenn die oben genannten Vorbereitungen abgeschlossen sind, entfernen Sie die SD-Karte aus dem PC, legen Sie sie in das Raspeye-Hauptgerät ein und schalten Sie das Gerät ein.

[2. Systemupdate & Netzwerkeinstellungen]

2-1. Systemaktualisierung

Wenn Raspai gestartet wird, stellen Sie eine Verbindung mit ssh her oder führen Sie den folgenden Befehl im Terminal der Konsole aus, um das System zu aktualisieren. (Es dauert ein paar Minuten)

Systemupdate


sudo apt update
sudo apt upgrade -y
sudo reboot

2-2. IPv6 deaktivieren (optional)

Es ist nicht erforderlich, kann aber in einigen Fällen stören. Deaktivieren Sie es daher. Diese Einstellung ist für den IPv6-Betrieb nicht erforderlich.

IPv6-Ungültigkeitseinstellung


sudo vi /etc/sysctl.conf

[Die Einstellungen]

/etc/sysctl.conf


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

[Einstellungen widerspiegeln]

Einstellungen widerspiegeln


sudo sysctl -p

Oder

sudo reboot

2-3. Feste IP-Adresse (optional)

Korrigieren Sie gegebenenfalls die IP-Adresse. Diese Einstellung ist bei Verwendung in einer DHCP-Umgebung nicht erforderlich. Da bei diesem Verfahren der Betrieb in einem WLAN vorausgesetzt wird, ist die IP für den WLAN-Adapter oder die SSID fest eingestellt. Fügen Sie insbesondere den folgenden Inhalt zu / etc / dhcpcd.conf hinzu. Ändern Sie "", "", "" und "<Ihre_SID>" entsprechend Ihrer Umgebung.

/etc/dhcpcd.conf


interface wlan0
inform <IP Adresse>
static routers=<Router-Adresse>
static domain_name_servers=<DNS-Adresse>
noipv6

Oder

SSID <your_ssid>
inform <IP Adresse>
static routers=<Router-Adresse>
static domain_name_servers=<DNS-Adresse>
noipv6

Bei Verwendung in mehreren drahtlosen AP-Umgebungen ist es bequem, mit SSID zu beheben.

2-4 Deaktivieren Sie die Energieverwaltung des WLAN (optional).

Diese Einstellung ist bei Verwendung in einer kabelgebundenen LAN-Umgebung nicht erforderlich. Standardmäßig ist die WLAN-Energieverwaltungsfunktion aktiviert. Diese Funktion kann jedoch zu einer instabilen WLAN-Kommunikation führen. Fügen Sie einen Befehl zum Deaktivieren der Energieverwaltung zu rc.local hinzu, der beim Start ausgeführt wird.

rc.Lokal bearbeiten


sudo vi /etc/rc.local

rc.local


#Fügen Sie vor der exit-Anweisung Folgendes hinzu und speichern Sie es
sudo iwconfig wlan0 power off

Starten Sie neu


sudo reboot

[3. Installation der erforderlichen Module]

Installieren Sie die erforderlichen Module wie folgt. (Wird hauptsächlich in OpenCV und Numpy verwendet)

Erforderliche Modulinstallation


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

[4. Python3-bezogene Installation]

4-1. Installation des Basismoduls

Python3&pip3 Installation


sudo apt install python3 python3-dev -y

Dieser Vorgang war nicht erforderlich, da Buster vorinstalliert war.

4-1-1. Update von pip3 (optional)

** Dieser Schritt muss nicht ausgeführt werden **

Wenn Sie die vorherigen Schritte ausführen und den Befehl pip3 aktualisieren, wird ein Fehler ausgegeben und funktioniert nicht mehr, wenn Sie pip3 ausführen.

Upgrade von pip3 [Fehler]


#Wenn Sie den folgenden Befehl ausführen, kann pip3 nicht ausgeführt werden.
sudo pip3 install pip -U
pip3 -V

#Wenn pip3 mit dem obigen Befehl nicht betrieben werden kann, stellen Sie ihn mit dem folgenden Befehl wieder her
sudo python3 -m pip uninstall pip
sudo apt install python3-pip --reinstall

Derzeit ist es möglich, den Befehl pip3 durch das folgende Verfahren zu aktualisieren, dies war jedoch in diesem Verfahren nicht erforderlich.

pip3 Upgrade(Möglichkeit)


#Deinstallieren Sie den vorhandenen Befehl pip3
sudo apt remove python3-pip

#Installieren Sie den neuesten Befehl pip3
wget https://bootstrap.pypa.io/get-pip.py
sudo python3 get-pip.py
pip3 -V

#Setup-Tools aktualisieren
sudo pip3 install setuptools -U

4-2. Installation verschiedener Module von Python3

Installieren Sie verschiedene Module mit dem Befehl pip. Ich habe die Versionen von ~~ numpy und pandas angegeben, aber da das neueste Binärpaket zum Zeitpunkt der Umgebungserstellung nicht vorhanden ist und der Build startet und die Installation einige Zeit in Anspruch nimmt, wird die vorherige Version angegeben. In Bezug auf TensorFlow wird der neueste angegeben, dessen Betrieb zum Zeitpunkt des Umgebungsbaus bestätigt wurde. ~~ Ab dem 19. Februar 2020 gibt jedes Modul die neueste Version an, die mit der Python 3.7-Serie per Paket installiert werden kann. Bitte ändern Sie die Version nach Bedarf.

Installation verschiedener Module für Python3(2020/02/19 Punkte)


# 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/Der späteste ist 1 ab 19.14.0)
sudo pip3 install tensorflow
#Wenn Sie pip3 aktualisiert haben`--ignore-installed`Korrespondenz mit Optionen
#sudo pip3 install tensorflow --ignore-installed 

# keras (tf.Nicht erforderlich, wenn Sie Keras verwenden)
# sudo pip3 install keras

# flask
sudo pip3 install flask flask_cors -U

# OpenCV
sudo pip3 install opencv-python==4.1.1.26
#Umgebungsvariablen ändern und widerspiegeln(← Ich muss das machen`import cv2`Fehler zur Laufzeit)
echo "export LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1" | tee -a ~/.bashrc
source ~/.bashrc

# cv2.Wenn Sie mit VideoCapture nicht mehrere Kameras verwenden können, installieren Sie apt für vorläufigen Support.(Jedoch 3.2.0)
# sudo pip3 uninstall opencv-python
# sudo apt install python3-opencv

Darüber hinaus lädt pip das Paket am häufigsten herunter, wahrscheinlich weil "https://www.piwheels.org/", das das Paket in letzter Zeit verwaltet, nicht gut funktioniert. In vielen Fällen wird die Sitzung während des Vorgangs getrennt und die Installation schlägt fehl. Eine erneute Ausführung löst häufig das Problem, aber große Download-Größen wie Scipy und Tensorflow sind nicht sehr erfolgreich. Kopieren Sie in diesem Fall die URL des heruntergeladenen Pakets, die bei der Ausführung der Pip-Installation angezeigt wird, und laden Sie die Datei mit dem Befehl wget in Ihren lokalen Ordner herunter. Der Befehl wget hat eine Wiederaufnahmefunktion, auch wenn der Download fehlschlägt. Daher wird die Zieldatei automatisch wiederholt und irgendwie heruntergeladen. Führen Sie dann zur Installation sudo pip3 install <heruntergeladene Datei> aus.

Wenn Sie eine Spiegelseite haben, können Sie dort auf pip verweisen, aber ich wusste es zum Zeitpunkt des Schreibens dieses Artikels nicht. Wenn jemand es weiß, würde ich es begrüßen, wenn Sie es mich wissen lassen könnten.

5. Installation von Edge TPU

Dieser Artikel ist nicht obligatorisch. Nur ausführen, wenn Sie die Edge-TPU verwenden.

Installieren der Bibliothek für 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

#normale Version
sudo apt install libedgetpu1-std
#Oder die maximale Uhrversion
# sudo apt install libedgetpu1-max

TF Lite Installation


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

Edge_TPU_Python_API-Installation


sudo apt install python3-edgetpu

【6. Jupyter Lab】 Installieren Sie Jupyter Lab, um eine leistungsstarke Notebook-Umgebung zu erhalten.

6-1. Grundinstallation

[Installation] Installieren Sie mit dem folgenden Befehl.

JupyterLab-Installation


sudo pip3 install jupyterlab

【Aufbau】 Erstellen Sie nach Abschluss der Installation eine Einstellungsdatei mit dem folgenden Befehl und bearbeiten Sie die erstellte Einstellungsdatei. Im folgenden Verfahren können Sie von jedem Terminal aus eine Verbindung herstellen und festlegen, dass beim Herstellen einer Verbindung ein Kennwort erforderlich ist.

Konfigurationsdatei erstellen


jupyter notebook --generate-config

[Einstellungsdatei bearbeiten]

Konfigurationsdatei bearbeiten


vi ~/.jupyter/jupyter_notebook_config.py

[Die Einstellungen]

jupyter_notebook_config.py


c.NotebookApp.ip = '*'
c.NotebookApp.open_browser = False
c.NotebookApp.password = 'sha1:<Hashed Passwort>'

Sie können das Hashing des Passworts mit dem folgenden Befehl abrufen.

Passwort-Hashing


python3 -c 'from notebook.auth import passwd;print(passwd())'
(Geben Sie nach dem Ausführen des obigen Vorgangs das Zeichen ein, das Sie hashen möchten)

6-2. Starten von Jputer Lab und Verwandeln in einen Dienst

Starten Sie Jupyter Lab mit dem folgenden Befehl.

Starten Sie Jupyter Lab


jupyter lab

Bereiten Sie für die Dienstkonvertierung zunächst die Einstellungsdatei für den Dienst vor.

Vorbereitung der Servicedateien


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

Der Inhalt der Datei ist wie folgt.

/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

Wenn die Datei fertig ist, aktivieren und starten Sie den Dienst mit dem folgenden Befehl.

Befehl


#Dienstaktivierung
sudo systemctl enable jupyter.service 

#Start des Dienstes
sudo systemctl start jupyter.service 

6-3. Verbinden Sie sich über einen Browser

Stellen Sie bei Jupyter Lab, das oben ausgeführt wird, über Ihren Browser eine Verbindung zur folgenden URL her. In der obigen Prozedur wird die Verbindung von anderen PCs aus hergestellt. Versuchen Sie daher, von Ihrem eigenen PC aus eine Verbindung zu Jupyter Lab herzustellen.

http://<ip_address>:8888/lab

Sie werden nach einem Passwort gefragt. Geben Sie daher das oben festgelegte Passwort ein.

image.png

【7. Node-RED】

7-1. Installieren von Node-RED

Sie können eine Umgebung zum Ausführen von Node-RED erstellen, indem Sie den folgenden Befehl ausführen.

Node-ROTE Installation


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

Die folgende Meldung wird angezeigt. Drücken Sie y und drücken Sie die Eingabetaste. ** Wenn die alte node.js installiert ist, wird sie durch die neue ersetzt. Führen Sie dieses Verfahren daher nicht durch, wenn ein Problem auftritt. ** **. Bei diesem Verfahren wird davon ausgegangen, dass die Installation in einem sauberen Zustand erfolgt. Führen Sie sie daher unverändert aus.

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] ?

Die folgende Meldung wird angezeigt. Wählen Sie daher "y", um fortzufahren.

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

(Möchten Sie einen Pi-spezifischen Knoten installieren?)

Während der Installation wird Folgendes angezeigt.

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

Begonnen am Mittwoch, 19. Februar 2020 15:45:42 JST  -Beendet am Mittwoch, 19. Februar 2020 15:48:04 JST

7-2. Starten Sie Node-RED und machen Sie es zu einem Dienst

Starten Sie Node-RED mit dem folgenden Befehl.

Node-Starten Sie RED


node-red

Verwenden Sie den folgenden Befehl, um Node-RED zu einem Dienst zu machen. Wenn Sie es zu einem Dienst machen, wird Node-RED automatisch ausgeführt, wenn Raspai gestartet wird.

Node-ROTE Dienstaktivierung


sudo systemctl enable nodered.service

Servicestart(Automatischer Start nur zum ersten Mal, nach dem nächsten Mal)


sudo systemctl start nodered.service

7-3. Verbinden Sie sich über einen Browser

Stellen Sie bei oben ausgeführtem Node-RED über Ihren Browser eine Verbindung zur folgenden URL her.

http://<ip_address>:1880/

image.png

【Schließlich】

Obwohl es einige Probleme gibt, konnten wir die Umgebung nach dem Verfahren der Vergangenheit erstellen. Wir haben den Vorgang noch nicht im Detail überprüft. Bitte kommentieren Sie, falls vorhanden.

[Bekannter Fehler]

Ich erhalte eine Fehlermeldung, wenn ich "import tensorflow" in python3 ausführe

Wenn ich "Tensorflow importieren" ausführe, um TensorFlow zu verwenden, wird der folgende Fehler angezeigt.

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

Es hat bisher keine Wirkung, daher ignoriere ich es derzeit.

Die Version von TensorFlow, die per Pip installiert werden kann, ist alt (Stand 19.02.2020).

Die neueste Version von TensorFlow, die mit Raspeye per Paket installiert werden kann, ist etwas älter (1.14.0). Für die tf1-Serie möchte ich die neueste Version 1.15.0 verwenden. Wenn Sie die neue Version verwenden möchten, müssen Sie sie selbst erstellen. Offizielles Verfahren von TensorFlow besagt, dass es in ungefähr 30 Minuten erstellt werden kann, aber ich habe es mehrmals versucht, aber es hat mehr als 3 Stunden gedauert. Und schließlich scheitern ...

Für die Version von TensorFlow hat @PINTO ein vorgefertigtes Paket veröffentlicht, was mich sehr freut. Momentan wird "1.15.0" für die tf1-Serie und "2.1.0" für die tf2-Serie veröffentlicht.

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

Wenn Sie dieses Paket verwenden, wird der oben genannte Fehler zum Zeitpunkt des Imports behoben.

Recommended Posts

Erstellen von Raspberry Pi zum Lernen von Python und maschinellem Lernen (RaspberryPi4 & Buster-Version (RaspberryPi3 ist ebenfalls möglich))
Konstruktionsnotiz für eine maschinelle Lernumgebung von Python
Wie wäre es mit Anaconda zum Erstellen einer maschinellen Lernumgebung mit Python?
Erstellen einer Windows 7-Umgebung für eine Einführung in das maschinelle Lernen mit Python
Warum Python für maschinelles Lernen ausgewählt wird
Erstellen einer R- und Python Docker-Arbeitsumgebung
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 1 und 2
[Python] Ich habe einen Klassifikator für Iris erstellt [Maschinelles Lernen]
Installieren Sie pyenv auf Raspberry Pi, um Python zu verwalten
Raspberry Pi + Python + IoT-Gerät, Umgebungskonstruktionsverfahren zum Starten der Bildverarbeitung und des maschinellen Lernens
Installationsverfahren für Python und Ansible mit einer bestimmten Version
Die Zusammenfassung des maschinellen Lernens in Python für Anfänger ist sehr kurz.
Erstellen einer Docker-Arbeitsumgebung für R und Python 2: Japanische Unterstützung
<Für Anfänger> Python-Bibliothek <Für maschinelles Lernen>
[Definitive Edition] Erstellen einer Umgebung zum Erlernen des "maschinellen Lernens" mit Python auf dem Mac
Erstellen Sie schnell eine Python-Umgebung für Deep Learning / Data Science (Windows)
Stream-Verarbeitung von Python und SensorTag, Kafka, Spark Streaming - Teil 1: Raspberry Pi 3
Die Temperatur wird automatisch mit Raspberry Pi 3 gemessen und automatisch zur Anzeige auf den Server (Docker Python3 + Flasche + MySQL) hochgeladen!
[Raspberry Pi] Fügen Sie ein Thermometer und ein Feuchtigkeitsmessgerät hinzu
[Mac] Erstellen einer virtuellen Umgebung für Python
[Shakyo] Begegnung mit Python zum maschinellen Lernen
[Python] Webanwendungsdesign für maschinelles Lernen
Erstellen einer Umgebung für Python und maschinelles Lernen (macOS)
Eine Einführung in Python für maschinelles Lernen
Erstellen einer Python-Entwicklungsumgebung für die KI-Entwicklung
Erstellen einer Entwicklungsumgebung für maschinelles Lernen
Ich habe versucht zu erklären, wozu der Python-Generator so einfach wie möglich ist.
Cross-Compilieren von Raspberry Pi und Erstellen einer Remote-Debug-Entwicklungsumgebung mit VS Code
Erstellen eines Temperaturregelungssystems mit Himbeerkuchen und ESP32 (3) Empfangen einer Python-Datei
[Für Anfänger] Ich habe mit Raspberry Pi einen menschlichen Sensor erstellt und LINE benachrichtigt!
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 11 und 12 Einführung in Pandas Matplotlib