l_intelligence_du_semaphore
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédenteProchaine révisionLes deux révisions suivantes | ||
l_intelligence_du_semaphore [2019/02/08 15:24] – serge | l_intelligence_du_semaphore [2020/09/05 10:38] – [Le script] serge | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
====== L' | ====== L' | ||
+ | <WRAP center round box 80% centeralign> | ||
+ | **{{tagpage> | ||
+ | </ | ||
+ | <WRAP center round box 60% centeralign> | ||
+ | C'est quoi un sémaphore ? | ||
+ | {{ youtube> | ||
+ | {{ chappe.jpeg? | ||
+ | </ | ||
<WRAP center round box 60% centeralign> | <WRAP center round box 60% centeralign> | ||
- | **{{tagpage> | + | **Calcul de [[Le sémaphore avec TensorFlow|Le sémaphore avec TensorFlow]] |
</ | </ | ||
+ | =====Les sources sur GitHub===== | ||
+ | * **[[https:// | ||
+ | =====Les images utilisées pour l' | ||
+ | ====Images sorties de Blender==== | ||
+ | <WRAP group> | ||
+ | <WRAP third column> | ||
+ | {{media_03: | ||
+ | </ | ||
+ | <WRAP third column> | ||
+ | {{media_03: | ||
+ | </ | ||
+ | <WRAP third column> | ||
+ | {{media_03: | ||
+ | </ | ||
+ | </ | ||
+ | ====Images adaptées pour l' | ||
+ | L' | ||
+ | <WRAP group> | ||
+ | <WRAP third column> | ||
+ | {{media_01: | ||
+ | </ | ||
+ | <WRAP third column> | ||
+ | {{media_01: | ||
+ | </ | ||
+ | <WRAP third column> | ||
+ | {{media_01: | ||
+ | </ | ||
+ | </ | ||
+ | |||
===== Des maths ! ==== | ===== Des maths ! ==== | ||
====Relu Rectifier neural networks==== | ====Relu Rectifier neural networks==== | ||
+ | {{ relu.jpg? | ||
* **[[https:// | * **[[https:// | ||
<code python> | <code python> | ||
Ligne 26: | Ligne 64: | ||
<code python> | <code python> | ||
def relu_prime(z): | def relu_prime(z): | ||
- | """ | + | """ |
- | | + | |
- | Une fonction | + | Une fonction indicatrice, |
- | | + | C'est donc la fonction H (discontinue en 0) prenant la valeur 1 pour tous les réels positifs et la valeur 0 pour les réels strictement négatifs. |
- | | + | |
- | C'est donc la fonction H (discontinue en 0) prenant la valeur 1 pour tous | + | |
- | | + | |
""" | """ | ||
return np.asarray(z > 0, dtype=np.float32) | return np.asarray(z > 0, dtype=np.float32) | ||
</ | </ | ||
====Sigmoïd==== | ====Sigmoïd==== | ||
+ | {{ sigmoid.png? | ||
* **[[https:// | * **[[https:// | ||
- | Elle représente la fonction de répartition de la loi logistique. Elle est souvent utilisée dans les réseaux de neurones parce qu' | + | Elle représente la fonction de répartition de la loi logistique. Elle est souvent utilisée dans les réseaux de neurones parce qu' |
<code python> | <code python> | ||
def sigmoid(x): | def sigmoid(x): | ||
- | """ | + | """ |
- | https://fr.wikipedia.org/ | + | |
return 1 / (1 + np.exp(-x)) | return 1 / (1 + np.exp(-x)) | ||
</ | </ | ||
Ligne 52: | Ligne 87: | ||
return z * (1 - z) | return z * (1 - z) | ||
</ | </ | ||
- | ===== Réseau de neurones Perceptron multicouches | ||
- | Un réseau de neurones Perceptron multicouches | + | ====Algorithme du gradient stochastique==== |
+ | * **[[https:// | ||
+ | L' | ||
+ | ====Diagonale de 1==== | ||
+ | {{ media_01: | ||
- | =====Code qui marche à 96 %===== | + | numpy.eye(N, |
- | La totalité du projet | + | |
+ | Return a 2-D array with ones on the diagonal and zeros elsewhere. | ||
+ | Matrice ou la sortie | ||
- | <code python> | + | ====Initialisation de X. Glorot et He==== |
- | #!/usr/bin/env python3 | + | X = Xavier = prénom |
- | # -*- coding: UTF-8 -*- | + | * **[[http://deepdish.io/2015/ |
- | import shutil | + | ===== Réseau de neurones Perceptron multicouches |
- | import numpy as np | + | * **[[https:// |
- | import cv2 | + | Un réseau de neurones Perceptron multicouches est un type de réseau dont l' |
- | from pymultilame import MyTools | + | |
- | def sigmoid(x): | + | ===== Réseau de neurones Convolutif ===== |
- | """ | + | * **[[https:// |
- | https:// | + | Un réseau de neurones Convolutif est un type de réseau de neurones artificiels dans lequel le motif de connexion entre les neurones est inspiré par le cortex visuel des animaux. Actuellement, |
- | """ | + | |
- | return 1 / (1 + np.exp(-x)) | + | Ce type de réseau est développé avec [[yolo_avec_mes_propres_images|Yolo Darknet Préparation de mes propres images]] puis [[yolo_sans_carte_graphique|Yolo Darknet sans carte graphique]] et enfin [[yolo_darknet_sur_un_portable_optimus|Yolo Darknet sur un portable Optimus]]. |
- | def sigmoid_prime(z): | + | =====Réseau |
- | """ | + | **Du code expliqué avec beaucoup d'amour** |
- | soit sigmoid' | + | Enfin, là c'est de l' |
- | """ | + | |
- | return z * (1 - z) | + | ====Notre réseau==== |
+ | **Une colonne de 1600 en entrée, 2 nodes de 100, une sortie de 27 caractères.** | ||
- | def relu(x): | + | {{ media_01:perceptron.svg.png? |
- | """ | + | |
- | -1 > 0 | + | |
- | 1 > 1 | + | |
- | | + | |
- | In the context of artificial neural networks, the rectifier is an | + | La totalité du projet est à **[[https://github.com/sergeLabo/ |
- | activation function defined as the positive part of its argument. | + | |
- | | + | |
- | """ | + | |
- | return np.maximum(0, x) | + | ====Installation==== |
+ | Installation de pip3: | ||
+ | sudo apt install pip3 | ||
+ | Installation de numpy et opencv | ||
+ | sudo pip3 install opencv numpy | ||
+ | Il faut installer mon [[pymultilame|module python perso]] disponible sur Github | ||
+ | sudo pip3 install -e git+https:// | ||
+ | |||
+ | ====Le script==== | ||
+ | <file python ia.py> | ||
+ | # | ||
+ | # -*- coding: UTF-8 -*- | ||
- | def relu_prime(z): | + | import shutil |
- | """ | + | import numpy as np |
+ | import cv2 | ||
+ | from pymultilame import MyTools | ||
- | La fonction de Heaviside | + | def sigmoid(x): return 1 / (1 + np.exp(-x)) |
- | marche d' | + | def sigmoid_prime(z): |
- | Une fonction fonction indicatrice, | + | def relu(x): return np.maximum(0, x) |
- | ensemble E qui explicite l’appartenance ou non à un sous-ensemble F de E | + | def relu_prime(z): |
- | de tout élément de E. | + | |
- | """ | + | |
- | + | ||
- | | + | |
class SemaphoreIA: | class SemaphoreIA: | ||
Ligne 140: | Ligne 180: | ||
def training(self): | def training(self): | ||
- | """ | + | """ |
print(" | print(" | ||
Ligne 154: | Ligne 194: | ||
# Initialisation des poids des nodes, pour ne pas à être à 0 | # Initialisation des poids des nodes, pour ne pas à être à 0 | ||
# Construit 3 matrices (100x1600, 100x100, 27x100) | # Construit 3 matrices (100x1600, 100x100, 27x100) | ||
- | # /np.sqrt() résultat expérimental de l' | + | # /np.sqrt() résultat expérimental de l' |
weight_list = [np.random.randn(self.layers[k+1], | weight_list = [np.random.randn(self.layers[k+1], | ||
| | ||
Ligne 164: | Ligne 204: | ||
# Affichage pour distraire les mangalore | # Affichage pour distraire les mangalore | ||
- | # TODO: mettre ça dans un truc à l'ext de cette méthode | ||
if i % 10000 == 0: | if i % 10000 == 0: | ||
print(i, nombre_lettre) | print(i, nombre_lettre) | ||
Ligne 183: | Ligne 222: | ||
# self.activations = non linéaire sinon sortie fonction linéaire de l' | # self.activations = non linéaire sinon sortie fonction linéaire de l' | ||
- | # imite le seuil d' | + | # imite le seuil d' |
vecteur_colonne = self.activations[k](z) | vecteur_colonne = self.activations[k](z) | ||
Ligne 190: | Ligne 229: | ||
# Retro propagation, | # Retro propagation, | ||
delta_a = vecteur_colonne - diagonale[:, | delta_a = vecteur_colonne - diagonale[:, | ||
- | # Parcours des nodes en sens inverse pour corriger | + | # Parcours des nodes en sens inverse pour corriger |
# les poids en fonction de l' | # les poids en fonction de l' | ||
# Descente du Gradient stochastique | # Descente du Gradient stochastique | ||
Ligne 229: | Ligne 268: | ||
success += 1 | success += 1 | ||
else: | else: | ||
- | # TODO: mettre ça dans un truc à l'ext de cette méthode | ||
if self.failed: | if self.failed: | ||
self.write_failed(img, | self.write_failed(img, | ||
Ligne 264: | Ligne 302: | ||
for i in range(5): | for i in range(5): | ||
- | print(" | ||
learningrate = 0.022 | learningrate = 0.022 | ||
failed = 0 | failed = 0 | ||
Ligne 271: | Ligne 308: | ||
resp = sia.testing() | resp = sia.testing() | ||
print(" | print(" | ||
+ | </ | ||
+ | |||
+ | =====La même chose avec Cupy ou Tensorflow===== | ||
+ | |||
- | </ | + | ===== Etape suivante: YOLO Darknet===== |
+ | **[[computer_vision_and_pattern_recognition_segmentation_d_image|Computer Vision and Pattern Recognition Mask R-CNN]]** | ||
- | {{tag> | + | {{tag> |
l_intelligence_du_semaphore.txt · Dernière modification : 2020/12/27 15:07 de serge