SETIT 2009
5th International Conference: Sciences of Electronic,
Technologies of Information and Telecommunications
March 22-26, 2009 TUNISIA
1
Étude d’une Implémentation Temps Réel d’un
Algorithme de Détection d’Objet dans un Flux Vidéo
sur une Architecture à Base DSP
Moad BENKINIOUAR* et Mohamed BENMOHAMMED**
* Université de Jijel, Département de Mathématique, Bp 98Ouled aissa Jijel Algérie
**Laboratoire LIRE, Département Informatique Université de Constantine Algérie
Résumé: Le traitement d'image est un domaine en plein essor, dans lequel des algorithmes de plus en plus efficaces et
innovants permettent de remplir des fonctionnalités de manière très performante. Beaucoup de temps et d'énergie sont
dépensés pour l'optimisation de ces algorithmes pour augmenter leur efficacité. Cependant, l'amélioration algorithmique a
des limites, et les demandes en traitement d'image sont de plus en plus tournées vers le temps réel. Dès lors, est-on obligé
d'attendre que la puissance des ordinateurs soit suffisante pour utiliser un système intéressant mais coûteux en temps de
calcul? Ou investir dans des ordinateurs extrêmement chers? La première idée qu'il faut avoir, c'est étudier le problème
sous un autre angle: l'optimisation matérielle. En effet, beaucoup de progrès ont été réalisés dans ce domaine. Ce travail
décrit une étude d’implémentation temps réel d’un algorithme de détection d’objet, fonctionnant parfaitement sur un
ordinateur mais qui est encore trop lent pour être utilisable en temps réel. Le but est d’optimiser l’algorithme et ainsi
augmenter sa vitesse d'exécution, et parvenir à l’implanter sur une carte DSP. Dans un premier temps, nous présentons une
étude de l'algorithme en termes de complexité de calcul, en suite, nous nous sommes intéressés à l'accélération logicielle et
matérielle de l’algorithme sur processeur PIV, pour obtenir une cadence temps réel.
Mots clés: Temps réel, optimisation, Détection d’objet, Architecture, DSP.
Introduction
La détection d’objets est devenue un domaine
très important de recherche pour son large éventail
d'applications possibles, telles que l'interaction
homme-machine, la surveillance, la vidéoconférence
et le développement d'outils perceptuels. Résoudre
ces problèmes difficiles grâce à la vision par
ordinateur apporte une souplesse inégalée à
l'utilisateur De nombreuses approches de détection
automatique d’objets ont été abordées dans la
littérature, par exemple a l’aide de réseaux de
neurones [YAN 03],[PAR 91] de chaînes de Markov
[SLI 99], de graphes déformables [LEU 95] ou d'«
eigenfaces » [MOG 97] [ABD 97]. La plupart de ces
méthodes sont basées sur la détection et la
classification classique locales en utilisant les
modèles statistiques et géométriques de l’objet [LEC
98],[GAR 01],[YOW 97],[JEN 98],[MAI 00] .
L'inconvénient principal de ces approches est
qu’elles sont sensibles au bruit, l’occlusion [GAR
04]. L’approche présentée dans ce travail est basée
sur l’algorithme d’Adaboost [DEN 06], [DUM 05],
[GUI 06], [VIO 03] cet algorithme permet de
booster la performance des simples classificateurs,
où chaque classificateur simple utilise un descripteur,
en boostant les performance du détecteur on arrive à
un taux de détection de l’ordre de 95% et une vitesse
de traitement 15 fois plus rapide que les algorithmes
de détection d’objets actuels [ROW 98],[SCH
00],[SCH 00] [ROT 00]
SETIT2009
2
Le but recherché est l’étude et l’analyse de la
complexité algorithmique pour optimiser une
implantation d’un algorithme de détection d’objets
sur un processeur, de type DSP afin d’augmenter sa
vitesse d'exécution (dans notre cas assurer un
traitement à la cadence du flux vidéo).
1. Présentation de l'algorithme de
détection
La première et principale étape de notre travail a
été d'étudier et de comprendre l’algorithme de
détection d’objets Pour cela, il a fallu commencer
par s'intéresser aux principes de l'algorithme. Cette
section tente d'en expliquer le fonctionnement, de
manière assez succincte. Les éléments que nous
donnons ici sont ceux qui nous paraissent
indispensables. L'objectif de cet algorithme est,
comme son nom l'indique, de détecter des objets
dans une image. Détecter signifie localiser avec une
précision suffisante dans l'espace, en donnant par
exemple un cadre dans lequel l’objet se situe. Le
système pourrait clairement avoir des applications
directes dans plusieurs domaines, comme la
robotique. L'algorithme de détection dobjets est
basée sur l’algorithme d’adaboost [[THI 04] ],
[DUM 05], [GUI 06], [VIO 03] il est composé de
deux phases. La première est la phase
d'apprentissage, pendant laquelle on soumet au
programme un ensemble conséquent d'images
d'entrainement. Cet ensemble est constitué à la fois
dobjets (ce que l'on veut détecter) et d'autres objets
différents a ceux choisie pour la détection. Le
programme se sert de ces données pour construire
une sorte de catalogue des motifs à repérer, motifs
caractérisant les objets à détecter. L'intérêt d'une telle
méthode est qu'il est possible de caractériser d'autres
objets, et donc de parvenir à détecter d'autres objets
intéressants. C'est là toute la puissance du procédé :
il est générique.
En sortie, un ensemble de motifs caractéristiques,
classés par ordre de discrimination, est produit, les
moins discriminant étant ceux qui génèrent le plus de
fausses détections tout en conservant le plus les
vrais objets à détecter. Pris séparément, les motifs
sont des critères « faibles » dans le sens où un seul
d'entre eux ne permet pas de faire la différence entre
l’objet à détecter et autre chose. Mais utilisés
ensemble, ils créent un critère « fort », qui ne laisse
passer presque aucune fausse détection tout en
conservant quasiment tous les vraies détections.
1ère Phase
La deuxième phase de l'algorithme est la
détection proprement dite, qui utilise le résultat de la
phase d'apprentissage. Les motifs trouvés par
l'apprentissage sont utilisés pour construire une suite
d’étapes, qui est ensuite utilisée pour accélérer le
traitement de manière intelligente. Chaque étape de
cette suite contient un ou plusieurs motifs.
L’mage exemple X e
st de n x m pixel
Les images exemples en entrée (x1, y1)………(xn, yn)
où yi= 0,1 pour les négatifs et positifs exemples
respectivement
Initialisation des poids pour w1,i = 1/ 2m et 1/2l, pour yi
=0,1 et m,l le nombre de positifs et de négatifs
respectivement
Pour t = 1,…T
1. Normaliser les poids
jt
n
j
it
it w
w
w
,
,
,
=
wt la probabilité de distribution
2. Pour chaque masque j , objetr un classifieur hj
l’erreur est évaluer
avec wt ,
= iiiji yxhw)( j
ε
3. Choisir un classifieur pour l’erreur la plus bas
4. Mise a jour des poids
ei = 0 si xi est classifie correctement ei = 1
pour les autres cas
i
e-1
,,1titit ww β=
+
t
t
t -1
ε
ε
β=
Le classificateur final est
=∑ ∑
= =
Sinon 0
2
1
)( 1
)(
T
1t1tt t t
T
xh
xhαα
t
t
1
log β
α=
SETIT2009
3
2. Etude de l’algorithme de détection
L’algorithme de détection d’objets prend une
image de taille n x m pixel, où n x m est la taille d’un
Motif appelle Motif ou fenêtre de tests de l’image,
puis détermine si on possède un objet bien
déterminé dans cette image [Fig. 1]. Le résultat est
positif si :
score_image >= seuil_etape
Pour mesurer les performances de l’algorithme,
nous utilisons deux méthodes :
- on mesure les performances globales de
l’algorithme en ajoutant du code qui permet de
mesurer le temps passé depuis le lancement. Ce code
a très peu d’impact sur le temps d’exécution et
permettent d’effectuer des mesures en conditions
réelles.
- pour mesurer précisément l’impact des différentes
fonctions sur la vitesse globale du l’algorithme, nous
utilisons le profileur intégré à Visual Studio 2005
Team Edition for Developers. Il permet déterminer
quels sont les fonctions critiques à optimiser, dans
notre cas on a retenus trois fonctions la fonction
Etape, la fonction Motif et la fonction detect.
3. Profiling et évaluation des
performances
Dans les mesures de performances, la valeur la
plus intéressante est le temps passé dans chaque
fonction. Il permet de déterminer dans quelles parties
du programme on passe le plus de temps et ainsi de
voir quelles parties il est rentable d’optimiser. En
effet, si on accélère de 30% une fonction qui prend
50% du temps global, on gagne 15% de temps sur le
temps global. Au contraire, si on accélère de 90%
une fonction qui ne prend que 1% du temps global,
le gain sera quasi-nul.
Ces mesures permettent également de repérer des
problèmes qui seraient passés inaperçus lors d’un
test normal. Si une fonction qui est censée être
d’importance secondaire comme l’allocation de
mémoire ou l’affichage de la progression du
programme prennent un temps anormalement élevé,
alors il y a un problème soit au niveau de la
conception du programme (structure de données non
adaptée, mauvaise séparation des classes…) , soit au
niveau de la programmation (appel d’une fonction en
double…)
Le tableau 1 donne le temps passé dans les 3
fonctions les plus coûteuses du programme. On voit
que 87% du temps est passé dans run_feature(). S’il
y a une fonction à optimiser en priorité dans le
programme, ce sera celui-ci.
Nom de la
Fonction Temps en
Mili_seconde
Pourcentage
Motif 907
91,894 %
Etape 77
7,8014 %
Detect 3
0,303 %
4. Complexité de l’algorithme
La vitesse de traitement du détecteur d’objets est
directement liée au nombre de motif. En prenant
l’exemple pour deux motifs (voir Fig.1) le nombre
d’opérations est évalué par :
Pour chaque image I comprenant NbrI images à
traiter
Pour chaque étage de traitement E comprenant NbrE
Pour chaque masque M comprenant NbrM
On a :
Une opération de comparaison
Une opération d’additions
§
Initialisation
§ entrée image d’origine N x M Pixel
§ Couper l’image en taille n x m Pixel
§ Pour chaque image I
Pour chaque étape de traitement E
Pour chaque Motif
Si test (image, Motif) =seuil_Motif
Augmenter le score de 1
Finsi
Fin pour
Si score_image < seuil_etape
alors
Rejet
Finsi
Finpour
Finpour
§ Pour chaque image
Si score image >= seuil_étape alors
Return image
finsi
Image en entrée Objet détectée
Fig. 1 : Exemple d’objets à détecter
SETIT2009
4
Où NbrI : Le nombre d’image à traiter
NbrE : Le nombre d’étage
NbrM : Le nombre de masque
Donc
Le nombre d’opérations = (nombre d’addition +
Nbr_test) x NbrI x NbrE x NbrM
On peut conclure que l’algorithme de détection a
une complexité exponentielle.
1ère Conclusion
Après l’étude des deux phases de l’algorithme on
peut conclure que :
La vitesse du détecteur est directement liée
au nombre de motifs
Pour augmenter la vitesse de traitement on
peut ajuster deux paramètres de
l’algorithme, le nombre de Motif et le
nombre d’étapes de l’algorithme de
détection mais dans ce cas on peut
influencer le taux de détection, pour cela on
s’est orienté vers l’optimisation de
l’implémentation de l’algorithme de
détection.
5. Optimisations globales
Nous avons optimisé le code de l’algorithme de
détection en utilisant les techniques suivantes:
Réécriture du code et des bibliothèques
associées.
Réduction de la taille des données
Changement des structures de données :
L’utilisation des listes chaînée donne une
complexité en O(1). Toutefois, en pratique,
il est plus efficace d’utiliser des tableaux
générés dynamiquement avec calloc() ou
new(). La complexité théorique reste la
même mais on alloue toute la mémoire
nécessaire en une fois. De plus, il y a moins
d’informations supplémentaires à stocker
comme les pointeurs vers le maillon suivant
et on s’assure de la compacité des données
en mémoire. Comme on lit les données de
manière linéaire, le processeur peut charger
à l’avance les données suivantes.
Grâce au profileur, nous avons vu que 91% du
temps de calcul est passé dans la fonction Motif, qui
applique un motif sur l’image. C’est donc la fonction
à optimiser en priorité.
Pour optimiser l’algorithme on applique les
points cités en 6. (Réécriture du code, réduction de la
taille des données, changement des structures de
données)
Le tableau 2 donne l’optimisation du temps passé
dans les 3 fonctions les plus coûteuses du
programme.
Tableau 2 : optimisation du temps d’exécution
Nom d la fonction Temps en
milliseconde
Motif 230
Etape 132
Détect 2
Les résultats obtenus sont nettement meilleurs, à
comparer avec les calculs du temps d’exécution
donné par le tableau 1. Nous avons obtenu un temps
d’exécution total des fonctions les plus coûteuses de
l’algorithme de l’ordre de 364 millisecondes, au lieu
de 987 millisecondes mésuser avant l’optimisation.
Touts les tests sont effectués sur un processeur
Pentium IV cadencé à 2.0 GHz et équipé de 2.00
Gigaoctet de RAM, avec des images de tailles
320x240 pixels, nous atteignons des vitesses de
l’ordre de 20 à 24 images par seconde.
6. Conclusion
En exploitant pleinement les possibilités du
processeur et en modifiant légèrement les
algorithmes utilisés, nous avons réussi à multiplier
les performances globale de l’algorithme par trois, et
ce, sans changer les performances en termes de
qualité de détection. Ce gain est exceptionnel pour
une optimisation qui ne dégrade pas la qualité. De
plus la majorité de ces optimisations sont adaptables
à toutes les architectures de processeurs.
A l’aide d’une caméra basse résolution associée à
un processeur d’entrée de gamme, en atteignant des
vitesses de 20 à 24 image/seconde, il est désormais
possible de détecter instantanément tous les visages
des personnes qui passent devant la caméra.
7. Travail futur et perspectives
Avec le Pentium Pro, d’Intel qui a introduit la
possibilité d’exécuter des instructions dans le
désordre (Out Of Order), nous espérons atteindre une
cadence de 25 à 30 images/secondes
Références
[ABD 97] H. Abdi, D. Valentin and A. O'Toole, A
generalized auto-associator model for face semantic
process, In Optimization and neural network, edité par
D.Levine (Erlbaum, Hillsdale), 1997.
[DEN 06] François DENIS et Rémi GILLERON,
Technique de boosting en apprentissage automatique,
équipe Grappa, http://www.univ-lille3.fr, LIFL,
Universités Lille 1 & 3, 2006
[DUM 05] Emilie Dumont, Liva Ralaivola, Adaboost
régularisé et tolérance aux bruit , Laboratoire
SETIT2009
5
d’informatique fondamentale de Marseille 15 juin
2005
[GAR 04] Ch. GARCIA and M. Delakis Convolutional
Face Finder: A Neural Architecture for Fast and Robust
Face Detection, IEEE TRANSACTIONS ON
PATTERN ANALYSIS AND MACHINE
INTELLIGENCE, VOL. 26, NO. 11, NOVEMBER
2004
[GAR 01] C. Garcia, G. Simandiris, and G. Tziritas, “A
Feature-Based Face Detector Using Wavelet Frames,”
Proc. Int’l Workshop Very Low Bit Coding, pp. 71-76,
2001.
[GUI 06] Vincent Guigue, Introduction au boosting,
Laboratoire d’Informatique de Paris 6 (LIP6) 22
octobre 2006
[JEN 98] S. Jeng, H. Yao, C. Han, M. Chern, and Y. Liu,
“Facial Feature Detection Using Geometrical Face
Model: An Efficient Approach,”Pattern Recognition,
vol. 31, no. 3, pp. 273-282, 1998.
[LEC 98] Y. LeCun, L. Bottou, Y. Bengio, and P. Haffner,
“Gradient-Based Learning Applied to Document
Recognition,” Proc. IEEE, vol. 86, no. 11, pp. 2278-
2324, 1998.
[LEU 95] T.K. Leung, M.C. Burl and P. Perona, Finding
Faces in Cluttered Scenes using random Labeled
Graph Matching, Fifth Intl. Conf on Comp.Vision,
Cambridge, MA, 1995.
[MAI 00] D. Maio and D. Maltoni, “Real-Time Face
Location on Gray-Scale Static Images,” Pattern
Recognition, vol. 33, pp. 1525-1539, 2000.
[MOG 97] B. Moghaddam and A. Pentland, Probabilistic
Visual Learning for Object representation, IEEE Trans.
PAMI, Vol.19, pp.696-710, 1997.
[PAR 91] I. Park and I.W. Sandberg, Universal
approximation using radial basis function networks,
Neural Computation, Vol.3, pp.246-257, 1991.
[ROT 00] D. Roth, M. Yang, and N. Ahuja. A snowbased
face detector. In Neural Information Processing 12,
2000.
[ROW 98] H. ROWLEY, S. Baluja, and T. Kanade. Neural
network-based face detection. In IEEE Patt. Anal.
Mach. Intell., volume 20, pages 22–38, 1998.
[SCH 00] H. Schneiderman and T. Kanade. A statistical
method for 3D object detection applied to faces and
cars. In International Conference on Computer Vision,
2000.
[SLI 99] M. Slimane, T. Brouard and al., Apprentissage
non-supervisé d'images par hybridation génétique
d'une chaîne Markov cachée, Traitement du Signal,
Vol.16, No.6, pp.461-475, 1999.
[THI 04] Jean-Philippe Thiran, Support du cours de :
Reconnaissance de formes, Institut de Traitement des
Signaux (ITS), École Polytechnique Fédéreale de
Lausanne (EPFL), Switzerland, 2004
[VIO 03] P. Viola .M.J. Jones Robust Real-time Object
Detection, IEEE Conference on Computer Vision and
Pattern Recognition (CVPR), June 18, 2003
[YAN 03] Fan YANG and Michel Paindavoine,
Implementation of an RBF Neural Network on
Embedded Systems: Real-Time Face Tracking and
Identity Verification IEEE TRANSACTIONS ON
NEURAL NETWORKS, VOL. 14, NO. 5,
SEPTEMBER 2003
[YOW 97] K. Yow and R. Cipolla, “Feature-Based Human
Face Detection,” Image and Vision Computing, vol.
15, no. 9, pp. 713-735, 1997.
1 / 5 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !