|
|
|
|||
Vous êtes ici : Home > Fiches Techniques > Calibration de caméra par réseau de neurones |
CALIBRATION DE CAMERA PAR RESEAU DE NEURONES
Pour la coupe
2003, nous avions une caméra
embarquée sur le robot. Le but était de trouver la position
des palets sur le terrain. Une fois le traitement d'image fait, nous
avions les coordonnées des palets dans l'image. Mais comment
retrouver les coordonnées de ses palets sur la table ? Bien sur,
on aurait pu faire des calculs complexes avec des cosinus. Mais on est
pas comme ça à l'ancr .
Alors, on a utiliser un réseau de neurones pour calibrer la caméra.
|
||||||||||||||||
oLa
série d'exemple
|
||||||||||||||||
Pour pouvoir utiliser un réseau de neurones, il faut commencer par disposer d'une série d'exemple que le réseau devra apprendre. Alors, j'ai placé une trentaine de marqueurs dans le champ de vision de la caméra. La position relative des marqueurs est connue par rapport au robot (l'origine du repère est le centre des l'axe des roues). Nous avons donc notre série d'exemple à faire apprendre : l'entrée du réseau est composée des coordonnées des marqueurs dans l'image, la sortie doit donner la position des marqueurs par rapport au robot. Pour plus de clarté dans la suite des explications, nous allons définir quelques variables :
|
||||||||||||||||
oArchiteture
du réseau
|
||||||||||||||||
Nous savons que la relation qui lie les coordonnées dans l'image et la position relative n'est pas linéaire. La théorie voudrait que l'on utilise un réseau de neurones avec une couche cachée et un apprentissage de type : Backpropagation. Mais plûtot que d'utiliser cette méthode lourde à programmer, nous avons trouvé une petite astuce : au lieu d'appliquer à l'entrée du réseau les coordonnée Xi et Yi du marqueur dans l'image, nous avons rajouté des termes qui sont des fonctions de Xi et Yi. Nous avons donc utilisé deux réseaux :
Comme l'apprentissage sur l'image entière donnait une erreur moyenne sur l'ensemble de l'image. Or dans le cadre de la coupe, nous voulions avoir une bonne précision pour les palets proches du robot, et juste une direction à suivre pour les palets les plus éloignés. Alors, nous avons coupé l'image en deux. Un apprentissage a été réalisé pour les points proches du robot (Yi>100) et un second pour les points les plus éloignés (Yi<=100). |
||||||||||||||||
oApprentissage
|
||||||||||||||||
L'apprentissage a été fait sous Matlab. Il a fallu 100000 cycles pour faire converger le réseau. Voici l'algorithme :
Eta est le coefficient d'apprentissage. Choisir une valeur trés faible pour éta permet d'assurer la convergence de l'algorithme. Ici eta=0.000001;
(pour le réseau X) |
||||||||||||||||
oRésultats
|
||||||||||||||||
Une fois l'apprentissage réalisé, voici les résultats que nous avons obtenu, pour x : et pour Y: On distingue clairement sur la première image la jonction à Yi=100. Alors que la jonction est quasi parfaite dans la seconde image. Nous avons également observé la précision des résultats, sur l'image suivante, les croix bleues représentent les points ayant servis à l'apprentissage, et les ronds magentas les points soumis à l'entrée du réseau et interpollés. Grace au quadrillage de la table de la coupe 2003, nous avons pu comparer la position calculée du palet et la position réelle, l'erreur était au maximum de 5 cm. |
||||||||||||||||
oQuelques
liens
|
||||||||||||||||
oContact
|
||||||||||||||||
Pour toutes questions envoyer moi un mail: Sinclair | ||||||||||||||||
|