---
# System prepended metadata

title: PLAN MANUSCRIT

---

---
title: PLAN MANUSCRIT
tags: 
description: View the slide with "Slide Mode".
---


# Une camera intelligente multi-vue basée sur des FPGAs

## 1-INTRODUCTION
Une caméra intelligente est un système de vision avec lequel...
Un FPGA est basé sur des matrices de cellules logiques reconfigurables etc...
Un système multi-vues est constitué de plusieurs caméras tel que...

### A) MONO vs camera multi-vues : 
1. Quelles différences? 
2. Que peut on faire avec un système multi-caméra? (reconstruction 3D, carte de profondeur 2.5D, super résolution, slow motion, prédiction inter-images, panorama avec image stichting)
3. Comment? (appariement de points d'intérêts, calcul de la geometrie de la scène (Homographie et géométrie épipolaire), algorithmes de flux optiques (pixels), algorithmes d'estimation de mouvements(kernels))
4. Disposition des caméras? Matrice de caméras, tournées vers l'intérieur ou vers l'extérieur.
5. Quelles sont les contraintes techniques d'un système multi-vues? (bande passante, puissance électrique, calcul centralisé ou décentralisé, synchronisation des prises de vues, degrés de liberté des caméras)
6. De quelles manières les FPGAs sont-ils capables de répondre à ces contraintes? (nombreuses interfaces I/O, mémoires intégrées de plus en plus larges, spécialisation, parallélisation et reconfiguration des tâches de calcul, nombreux blocs arithmétiques disponibles, processeurs généralistes intégrés, contrôle précis des timings, basse consommation)

### B) Les systèmes multi-vues et leurs applications dans la littérature 
1. Reconstruction d'une image avec 48 cameras : Zhang et al 
2. A Real-Time Distributed Light Field Camera (64 cameras): Yang et al
3. High performance imaging using array of inexpensive cameras (> 100 caméras) : thèse de Willburn
4. Perazzi et al : reconstruction d'image panoramique sans glitchs à partir d'une géométrie de caméras non prédéfinie
5. Interpolation de vue avec flux optique : vedula et al
6. Rendu sphérique(panoptic) en temps réel sur FPGA : Popovic et al
7. camera panoptique temps réel : Afshari et al 
8. HexaCam pour restituer une image à 360° avec FPGA : Monrroy et al
9. Odometrie avec un système multi-camera : Peidong et al
10. Plus exotique, rendu de la carte de profondeur en temps réel avec une caméra à évènements (FPGA) : Rebecq et al
11. Méthode de calibration d'une caméra multi-vue via une géométrie épipolaire simplifiée : Li et al
12. Majorité de méthode d'acquisition online et processing offline (real time)

### C) Les caméras multi-vues dans le commerce
1. Jetson TX2 multi-view CSI 
2. GIDEL (centralisation avec Image grabber) -> solution très proche de celle proposée dans cette thèse 
3. Facebook 360
4. GoPro odyssey
5. Tous les systèmes avec des optiques fisheye (basse résolution à cause des distortions radiales importantes)


### D)CONTEXTE DE LA THESE (Compression et dégradation de réseaux avec extraction d'informations multi-vues )
1. Contraintes de départ : La caméra multi-vue développée dans cette thèse doit utiliser des capteurs d'images standard RGB, des optiques standards, le tout piloté par un ou plusieurs FPGA. Les capteurs Lidar, Radar ou ToF ne sont pas considérés.
2. Aujourd'hui toutes les applications citées précédemment sont devenues obsolètes depuis l'arrivée des réseaux de neurones convolutifs(CNNs). La plupart des applications de vision peuvent être vues comme des problèmes d'optimisation qui peuvent être résolus en entraînant des réseaux sur des bases de données. Le coût en terme de calculs constitue néanmoins un problème majeur car chacun des paramètres appris par CNN invoque une opération de multiplication addition. Sur certains modèles de CNN, le nombre de paramètres dépassent largement le milliard. Malgré leur forte propension à paralléliser les tâches, les FPGAs sont contraints par 3 facteurs : leur vitesse d'exécution, le nombre d'opérations de transfert mémoire, et le nombre d'éléments logiques disponibles. 
3. Il existe des algorithmes de compression pour réduire le coût d'un CNN dans la littérature scientifique. Parmis ces méthodes, on peut citer la quantification des paramètres, la suppression de paramètres ou encore la distillation de connaissance. Ces 3 paradigmes de compression sont parfaitement adaptée pour réduire l'empreinte hardware d'un CNN sur FPGA. Qu'en est il des systèmes multi-vues intelligents? 
4. Contribution : La principale idée introduite dans cette thèse est d'utiliser la masse d'informations supplémentaires amenée par un système multi-vue pour réduire le coût d'implémentation d'un CNN. La question principale est de savoir jusqu'à quel point on peut réduire le nombre de paramètres d'un réseau. Par exemple, Combien de paramètres est il possible de supprimer en plus avec la méthode multi-vue? Quelle est la relation entre le nombre de paramètres d'un CNN et le nombre de vues disponibles? La géométrie des caméras a-t-elle une influence sur la compression? 
6. But : Obtenir une réduction significative du nombre de paramètres par rapport aux systèmes de compression de l'état de l'art en dégradant les performances du CNN multi-vue. 
7. Exemple d'application : Dans le cadre de cette thèse, on cherche à adapter les réseaux de neurones aux architectures FPGAs. La majorité des systèmes d'inférence s'appuient sur des architectures SIMD peu efficaces sur FPGA. K.Abdelul a proposé une architecture de calcul en se basant sur la nature feed forward des réseaux de neurones où chaque opérations MAC, c'est-à-dire un paramètre non nul, est retranscrite par sa propre unité de calcul arithmétique. Mais elle reste difficile à mettre en oeuvre sur un seul FPGA même avec les techno actuelles ou en utilisant les algorithmes de compression de l'état de l'art. L'introduction du nouveau paradigme de capture de scène multi-vues va permettre de réduire drastiquement le nombre de paramètres. 


## 2-Réseaux de neurones convolutifs multi-vues

### A)Introduction aux CNNs
1. A quoi ça sert? (object recognition, detection, segmentation, speech recognition, solving general minimization problems)
2. De quelles manières? (formulation, parameter learning, gradient descent searching, multi level feature extraction)
3. Architecture des CNNs de bases (Alexnet, vgg, Resnet, Inception, DenseNet) et des CNNs mobiles Mobilenet, NasNet)
4. Systèmes d'inférences actuels : (GPU, CPU, FPGA, TPU) mainly based on SIMD architectures
5. Probleme sur FPGA -> nécessite de très gros FPGA pour atteindre des peformances temps réel. De plus, les architectures de calculs sont basées sur des paradigmes qui ne sont pas efficaces sur FPGA (SIMD) à cause des vitesses d'horloge(mémoires
6. Le paradigme de calcul le plus efficace sur FPGA est aussi celui qui demande le plus de ressources logiques (Kamel 2017)

### B)CNNs 3D et Multi-vue
1.  Basés sur les CNNs mono-vues
2.  A quoi ça sert? (object recognition, 3D segmentation, depth-map and 3D reconstruction from images, point clouds, lidar, geometry matching) 
3.  Les résultats de classification sont bien meilleurs que les architectures de base mono-vues
4.  Les architectures présentées embarquent la partie convolutive d'un réseau sur chaque caméra, le coût en calculs devient rédhibitoire.

### C)Architecture de réseau pour caméra embarquée multi-vue
6.  Idée : Est-il possible d'utiliser 3.) pour entrainer un réseau moins dense et amener le paradigme de calcul DHM sur des têtes de caméras avec FPGA embarqué? 
7.  1ere proposition : précalculer un réseau grâce aux têtes de caméras embarquant des FPGA pour réduire le temps d'inférence. (DHM+SIMD) Possible si et seulement si, on dégrade les 1eres couches d'AlexNet mais la dégradation de classification est contrée par la capture multi-vue. 

## 3-Compression et dégradation des CNNs (partie majeure)
### A)Related works
1. Les CNNs possèdent beaucoup de redondance ou de convolutions inutiles(poids proches de zéro). Vérifié en partie dans 2-C). Grâce à cette information, il est possible de réduire la taille d'un réseau et son temps d'éxecution. 
2. Compression via pruning : réduire le nombre de paramètres (structuré et non structuré)
3. Compression via quantification : réduire la représentation numérique des poids et des données
4. Distillation de connaissance : (distilling parameters of dense networks to small networks)

### B)Proposition de dégradation via pruning de MobilNetv2 et structure de réseau multi-vues
6. 2e proposition : papier n°2 -> CNN degradation avec pruning et quantification. 
7. But : Chercher la relation qualitative/quantitative (précision/recall du réseau vs nombre de paramètres vs nombre de vues) : plot 3D
8. Gain en termes de paramètres et de workload(MACOPs)? 
9. Montrer les différents types d'architectures capables de bénéficier de cette réduction
10. Upgrade : En considérant la geometrie, integration des premières couches de MobileNetv2 sur FPGA DHM (résultats de synthèse) et facteur d'accélération comparé à une implémentation CPU ou accélérateur SIMD

### C)Proposition de dégradation via la distribution des classes d'objet sur les caméras  
1. Distiller les connaissances d'un réseau dense sur des réseaux plus petits embarqués en partie sur les têtes de caméras. 
2. Comment diviser le dataset efficacement? 
3. Methode naïve : Diviser le dataset (C classes) entre les N têtes de caméras. Chacune des caméras résout un problème plus simple(C/N classes). Moins de classes = Pruning plus efficace
4. Methode plus élaborée : Choisir la distribution des classes en fonction des points de confusions du réseau dense
5. Méthode ++ : méthode 4.) + géométrie
6. Conséquence : Chaque tête possède un réseau indépendant. Les N classes sont regroupées à la couche M (M<N) puis l'inférence est poursuivit par le noeud de centralisation. -> Meilleur use case de la caméra multi-vue
7. Test sur ModelNet40 en multi-vues
8. Test sur une partie d'ImageNet en mode matrice de caméra


## 4 ou Annexe-Proposition de caméra multi-vue avec des FPGAs(A voir)
- 9 caméras full custom avec FPGA cyclone 10
- 1 coeur de caméra A10 pour regrouper les données de chaque vue
- Small form factor comparé aux autres systèmes avec caméras standards
- Embarquabilité simplifiée grâce au POE ( 1 seul câble pour chaque tête de caméra)
- Synchronisation garantie en utilisant le FPGA central 
- 300W de consommation max
- Versatilité : Reconnaissance d'objet, générer une image en slow motion grâce à la synchronisation(120 fps x9 théorique), capturer plusieurs flux vidéo HD en temps réel sur un système embarqué,  ...


## 5-Possible Future works
Localisation à partir d'images panoramique (googlemap)
Accélération de la correspondance de points d'interêts en utilisant un réseau de corrélation (têtes de caméra(DHM), coeur de caméra(correlation CNN))
Améliorer la génération d'objets multi-vues à partir d'images 2D (GAN)