[PYTHON] [Introduction à RasPi4] Construction de l'environnement; OpenCV / Tensorflow, entrée japonaise ♪

RasPi4 Je l'ai enfin compris, alors j'ai créé un environnement pour la première fois depuis longtemps. Cela a été fait de la même manière que Jetson_nano. Cet article est une continuation de la dernière fois, et j'expliquerai jusqu'au point où l'application fonctionne. 【référence】 0. [Jetson_nano] L'environnement Tensorflow, Chainer et Keras peut être créé à partir de l'installation ♬

  1. Comment créer un environnement de reconnaissance d'image avec apprentissage en profondeur de Raspberry Pi 4 de zéro à 1 heure
  2. OpenCV 4 avec Raspberry Pi
  3. Localisation japonaise de l'entrée clavier du Raspberry Pi

Ce que j'ai fait

・ Construction d'environnement; jusqu'à OpenCV / Tensorflow ・ Vérification du fonctionnement OpenCV / Tensorflow ・ Construction de l'environnement; jusqu'à l'entrée japonaise ・ J'écris ceci

・ Construction d'environnement; jusqu'à OpenCV / Tensorflow

Cela a été effectué selon la procédure de construction environnementale de M. Karaage (référence 1).

Procédure de construction de l'environnement de Karaage.


$ git clone https://github.com/karaage0703/raspberry-pi-setup
$ cd raspberry-pi-setup
$ ./setup-opencv-raspbian-buster.sh
$ ./setup-tensorflow-raspbian-buster.sh

Vous pouvez désormais installer facilement OpenCV et Tensorflow. En outre, j'ai également installé les éléments suivants pour le développement.

jupyter-notebook.


$ sudo apt install jupyter-notebook

De plus, cette fois, j'ai tout installé en même temps avec le script de Karaage, mais comme il y a une forte possibilité qu'il y ait une différence par rapport au dernier, les éléments suivants sont installés séquentiellement à partir de la référence 2.

Dernier environnement OS.


$ sudo apt-get update
$ sudo apt-get upgrade

Environnement CMake.


$ sudo apt-get install build-essential cmake unzip pkg-config

Bibliothèque de fichiers image.


$ sudo apt-get install libjpeg-dev libpng-dev libtiff-dev

Bibliothèque pour flux vidéo.


$ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev 
$ sudo apt-get install libxvidcore-dev libx264-dev

Bibliothèque d'affichage d'images.


$ sudo apt-get install libgtk-3-dev 
$ sudo apt-get install libcanberra-gtk*

Bibliothèque de calcul.


$ sudo apt-get install libatlas-base-dev gfortran

・ Vérification du fonctionnement OpenCV / Tensorflow

J'ai utilisé le code suivant pour la vérification de l'opération. Je n'ai pas installé keras, mais comme je l'ai fait dans la référence 0 ci-dessus, comme indiqué ci-dessous, tf.keras ...., vous pouvez donc utiliser Lib of keras.

import tensorflow as tf
mnist = tf.keras.datasets.mnist

(x_train, y_train),(x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(512, activation=tf.nn.relu),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation=tf.nn.softmax)
])
model.compile(optimizer='adam',
              loss='sparse_categorical_crossentropy',
              metrics=['accuracy'])

model.fit(x_train, y_train, epochs=5)
model.evaluate(x_test, y_test)

Le résultat est le suivant

$ python3 tensorflow_ex.py
Train on 60000 samples
Epoch 1/5
60000/60000 [==============================] - 41s 685us/sample - loss: 0.2220 - acc: 0.9342
Epoch 2/5
60000/60000 [==============================] - 41s 676us/sample - loss: 0.0962 - acc: 0.9700
Epoch 3/5
60000/60000 [==============================] - 41s 678us/sample - loss: 0.0688 - acc: 0.9788
Epoch 4/5
60000/60000 [==============================] - 41s 678us/sample - loss: 0.0539 - acc: 0.9830
Epoch 5/5
60000/60000 [==============================] - 41s 678us/sample - loss: 0.0435 - acc: 0.9857
10000/10000 [==============================] - 3s 295us/sample - loss: 0.0652 - acc: 0.9812

・ Vérification du fonctionnement OpenCV

Ici, je vais essayer de déplacer le code suivant qui a été déplacé avec la référence suivante. L'opération est lente, mais j'ai pu enregistrer l'image prise par l'appareil photo sous forme de film. 【référence】 ・ RasPi: J'ai joué avec OpenCV ♬

import numpy as np
import cv2

# cv2.cv.CV_FOURCC
def cv_fourcc(c1, c2, c3, c4):
    return (ord(c1) & 255) + ((ord(c2) & 255) << 8) + \
        ((ord(c3) & 255) << 16) + ((ord(c4) & 255) << 24)

cap = cv2.VideoCapture(0) #'dougasozai_car.mp4')
GRAY_FILE_NAME='douga_camera_5s.avi'
FRAME_RATE=30
ret, frame = cap.read()

# Define the codec and create VideoWriter object
height, width, channels = frame.shape
out = cv2.VideoWriter(GRAY_FILE_NAME, \
                      cv_fourcc('X', 'V', 'I', 'D'), \
                      FRAME_RATE, \
                      (width, height), \
                      True)  #isColor=True for color

#Préparation de la fenêtre
cv2.namedWindow('frame')
cv2.namedWindow('gray')
cv2.namedWindow('hsv')
cv2.namedWindow('mask')
cv2.namedWindow('res')
cv2.namedWindow('gaussian')

while ret == True:
    #ret, frame = cap.read()

    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    hsv =cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    hsv =cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
    #Lissage gaussien
    # (5, 5)Est modifié par l'écart type dans les directions x et y pour changer le degré de flou, le dernier argument est int,Cela semble être un type de bordure, mais la signification des nombres est inconnue
    g_frame = cv2.GaussianBlur(frame, (15, 15), 0)
    gg_frame = cv2.cvtColor(g_frame, cv2.COLOR_BGR2GRAY)

    # define range of blue color in HSV
    lower_blue = np.array([110,50,50])
    upper_blue = np.array([130,255,255])

    # Threshold the HSV image to get only blue colors
    mask = cv2.inRange(hsv, lower_blue, upper_blue)

    # Bitwise-AND: mask and original image
    res = cv2.bitwise_and(frame,frame, mask= mask)
    cv2.imshow('frame',frame)
    cv2.imshow('gray',gray)
    cv2.imshow('hsv',hsv)
    cv2.imshow('mask',mask)
    cv2.imshow('res',res)
    cv2.imshow('gaussian',g_frame)
    #Image grise pour écrire en gris, changement d'extension pour le cadre
    #Pour la couleur, hors= cv2.VideoWriter()Avec isColor=Vrai, Faux si gris
    out.write(g_frame)  #OK by cv_fourcc('X', 'V', 'I', 'D')
    #Si vous appuyez sur une touche, il s'arrêtera
    if cv2.waitKey(1000*5) >= 0:  
        break
    ret, frame = cap.read()
cap.release()
out.release()
cv2.destroyAllWindows()

L'exemple d'exécution est le suivant (bien qu'il s'agisse d'une image fixe) 2020-02-08-215532_1920x1080_scrot.png Au moins cela a fonctionné, donc OpenCV est disponible.

・ Construction de l'environnement; contribution japonaise

Ce serait bien d'essayer la détection d'objets ici, mais cette fois, je voudrais publier une application de conversation, donc j'aimerais pouvoir saisir le japonais. Tout d'abord, supposons que la localisation japonaise a été terminée la nuit dernière et suivez la référence 3. "Raspberry Pi a une disposition américaine pour le clavier par défaut, nous allons donc utiliser la disposition JIS." Si quoi que ce soit, j'ai senti que c'était une mise en page JIS. .. ..

$ sudo raspi-config

1.4 Sélectionnez les options d'internationalisation (Déplacer sur le clavier ↑ ↓) Sélectionnez et appuyez sur la touche ENTER 2. Sélectionnez I3 Modifier la disposition du clavier et appuyez sur [Entrée] 3. Sélectionnez Generic 105-key (Intl) PC et appuyez sur [Enter] 4. Sélectionnez Autre et appuyez sur [Entrée] 5. Sélectionnez Japonais et appuyez sur [Entrée] 6.Japonais - Sélectionnez Japonais (OADG 109A) et appuyez sur [Entrée] 7. Sélectionnez La configuration par défaut du clavier et appuyez sur Entrée 8. Sélectionnez Aucune touche de composition et appuyez sur [Entrée] Je pense que vous reviendrez au premier écran, alors sélectionnez et quittez [Enter] pour quitter (vous pouvez déplacer le curseur avec ← → sur le clavier) Mettre à jour une fois ici

$ sudo apt-get update

De plus, lorsque vous pouvez taper des commandes, installez l'entrée japonaise sur le clavier.

$ sudo apt-get install -y uim uim-anthy

Lorsque vous redémarrez, la matrice etc. sera reflétée.

$ sudo reboot

Après le redémarrage, le clavier devrait pouvoir taper dans la disposition JIS → La disposition des touches n'est-elle pas la disposition américaine?

Installation de polices japonaises et IME

Insérez la police japonaise et IME conformément à la procédure de référence suivante. 【référence】 Paramètres d'entrée japonais de la tarte aux framboises En premier lieu, l'affichage, etc. sont en japonais, il peut donc suffire de ne mettre que l'IME dans ce travail, mais je l'ai mis dans un cercle pour le moment.

$ sudo apt-get update

Installation de polices japonaises

$ sudo apt-get install fonts-vlgothic

Ce qui suit est l'installation essentielle de l'IME japonais IME différent de ce qui précède.

$ sudo apt-get install ibus-anthy

En chemin (o / n) y ENTER

Enfin, redémarrez pour activer l'affichage japonais.

$ sudo reboot

L'image est la suivante. Je pense que vous pouvez choisir anglais-japonais, etc. à l'extrémité droite de cette barre supérieure. Pour le moment, vous pouvez désormais saisir le japonais. Cependant, si vous le laissez tel quel, vous devez sélectionner le changement un par un dans la rangée supérieure. Vue agrandie de l'extrémité droite (en Pinta) pinta_selectArea.jpg

2020-02-09-221858_1920x1080_scrot.png

Changement de clé à un coup

La clé de commutation à un coup pour Jetson-nano a été trouvée par la procédure suivante. En d'autres termes, si vous sélectionnez ce qui suit, vous pouvez basculer automatiquement entre les caractères anglais et A avec les touches demi-largeur / pleine largeur. En outre, l'entrée est revenue à la disposition du clavier japonais. 2020-02-09-223602_896x434_scrot.png

cette,. .. .. Vous n'aurez peut-être pas besoin des paramètres d'entrée clés et de l'IME ci-dessus

Résumé

・ OpenCV / Tensorflow a été installé avec succès ・ La saisie japonaise (arrangement de 105 touches) est désormais possible

・ Installez l'application de conversation ・ Je veux faire une entrée vocale et terminer la conversation vocale ・ Je me demande si je vais faire une caméra de surveillance. .. .. "Les gens là-bas, mettent un masque"

Recommended Posts

[Introduction à RasPi4] Construction de l'environnement; OpenCV / Tensorflow, entrée japonaise ♪
De Ubuntu 20.04 introduction à la construction d'environnement
[Introduction à RasPi4] Construction de l'environnement, système de traitement du langage naturel mecab, etc. .. .. ♪
Introduction à OpenCV (python) - (2)
Construction de l'environnement de développement Python 2020 [De l'installation de Python à l'introduction à la poésie]
[Ubuntu 18.04] Construction de l'environnement Tensorflow 2.0.0-GPU
Introduction à Private TensorFlow
Construction de l'environnement Ubuntu14.04 + GPU + TensorFlow
[Tensorflow] Construction de l'environnement Tensorflow sous Windows 10
[Raspi4; Introduction au son] Enregistrement stable de l'entrée sonore avec python ♪
Introduction au Deep Learning pour la première fois (Chainer) Reconnaissance des caractères japonais Chapitre 1 [Construction de l'environnement]
Construction d'environnement de python et opencv
Modifier le tofu Ubuntu en environnement japonais
Introduction à TensorFlow - Hello World Edition
Construction d'environnement Python (pyenv, anaconda, tensorflow)
Spigot (Paper) Introduction à la création d'un plug-in pour 2020 # 01 (Construction de l'environnement)
Construction de l'environnement Python3 TensorFlow pour Mac
Introduction à l'analyse d'image opencv python
Construction d'environnements OpenCV3 et Python3 sur Ubuntu
Une introduction à OpenCV pour l'apprentissage automatique
[Python] Road to snakes (1) Construction de l'environnement
[Introduction à l'application Udemy Python3 +] 41. fonction d'entrée
Probablement l'introduction la plus simple à TensorFlow
Les débutants lisent "Introduction à TensorFlow 2.0 pour les experts"
Présentation d'un système d'entrée japonais dans Serene Linux
Introduction à docker Création d'un environnement ubuntu dans ubuntu
[Super Introduction] Apprentissage automatique utilisant Python - De la construction d'environnement à l'implémentation de perceptron simple-
Introduction à Python Préparons l'environnement de développement
De la création de l'environnement Kivy à l'affichage de Hello World
Introduction de ferenOS 2 (paramètres après l'installation, paramètres d'entrée japonais)
Construction d'un environnement d'oreiller - Pour Docker + iPython (et OpenCV)
Introduction à Python "Re" 1 Construction d'un environnement d'exécution
[Introduction à cx_Oracle] (5e) Gestion des données japonaises
De 0 à la construction de l'environnement de développement Django à l'exploitation de base
[TF] Comment créer Tensorflow dans un environnement Proxy
[Python] Comment gérer les caractères japonais avec openCV
De la construction d'environnement Python à la construction d'environnement virtuel avec anaconda
Étapes pour créer rapidement un environnement d'apprentissage en profondeur sur Mac avec TensorFlow et OpenCV