# Planning Dans un premier temps, voici les tâches à faire : - Finir le moteur de rendu - Finir le survey - Commencer l'implémentation des drivers GPU et connexions FPGA L'idée de François est de donner la finition du moteur de rendu à un/des étudiants en tant que projet au cours de l'année. Cela permetra de paralléliser les avancées et de plus se concentrer sur les dev GPU/FPGA, nécessitants beaucoup d'heures à priori. Le planning prévisionnel est le suivant : - Finition de l'énoncé du projet pour les étudiants : Lundi 28 Septembre 2020 - Check des drivers GPU pour les étudiants : mardi 29 septembre - Finalisation partie étudiante Driver GPU : fin de journée mardi 29 septembre - Finir d'ecrire le survey : ~~les trois semaines suivantes jusqu'au Lundi 19 Octobre~~ Faudra rajouter 2 semaines jusqu'au 2 novembre : https://www.overleaf.com/9674383799fxpjskdmdhcy - Partir sur les dev driver GPU/FPGA par la suite ## Partie étudiants - Moteur de rendus Des travaux en cours d'une équipe de chercheurs de l'UCA consiste à faire l'acquisition d'informations présents en dehors du spectre visible pour permettre une meilleure discrimination sémantique d'une scène. Lors de ces travaux, une étape de création d'une base de donnée est nécessaire. Une partie de ces bases de données peut être synthétisée à l'aide d'un moteur de rendu. Pour faire la synthèse de cette base de donnée, un moteur de rendu réaliste est utilisé et modifié. Ce dernie rpermet d'utiliser les longueurs d'ondes des matériaux présent dans une scène. Ce rendu est cependant uniquement fait sur du spectre visible malgré l'utilisation des longueurs d'ondes dans le rendu. Pour simuler l'acquisition de plusieurs caméras multi-spectrales, plusieurs "bandes" spectrales doivent être simulées. L'idée principale est donc de faire des rendus par "tranches" spectrales. Dans la littérature, les caméras ont une spécificité appelé **Efficacité Quantique**, ou **Quantum Efficiency**, qui dénote le pourcentage de lumière qui est transformée en quantité électrique au niveau du capteur et cette spécificité varie en fonction de la longueur d'onde. Schématiquement, cette quantité peut être représenté par un filtre entre la scène et la caméra, se situant juste avant la caméra. Le moteur de rendu actuel permet de créer une scène à partir d'une description en xml. Il peut créer des images en couleurs, RGB, et des images monochromes, en niveaux de gris. Les rendus hors du spectre du visible doivent être en monochrome. Le moteur de rendu permet aussi d'accepter des efficacités quantiques données par élément de la scène. Le but principal est de finaliser la gestion des efficacités quantiques et de la création de plusieurs images, relatant des différentes bandes spectrales. Etapes: - Finaliser le rendu d'une image en utilisant une efficacité quantique donnée - Permettre le rendu d'une image, avec plusieurs bandes synthétisées, juste en donnant une efficacité quantique d'une caméra donnée - Rendre une image multi-spectrale avec quatre bandes différentes : - Ultraviolet, UV : de 300nm à 400nm - Visible de 360nm à 800nm - Infrarouge proche, Near Infra-Red,NIR de 800nm à 1000nm - Long Wave Infra-Red, LWIR de 8000nm à 12000nm Outils : - Langage : C++, std 17 - Description scène en xml - CMakeLists Lien : - Docs : https://mitsuba2.readthedocs.io/en/latest/ - Moteur de rendu : https://github.com/mitsuba-renderer/mitsuba2/ - Pull request utile : https://github.com/mitsuba-renderer/mitsuba2/pull/142 Mots clés : - Multi-spectral - Machine learning, entrainement - C++ moderne - Synthèse d'image - Moteur de rendu réaliste ## Partie étudiante - Construction Driver Dans le cadre des travaux d'une équipe de chercheurs de l'UCA, le développement d'une interface MIPI CSI-2 entre un GPU et un FPGA est primordial. Cet interface est utile car des imageurs distincts du FPGA seront connectés à ce dernier et permettra de faire des pré-traitements d'images mais la puissance est moindre. Une communication doit donc se faire entre le FPGA et le GPU pour les transfert d'images. Pour ce faire le projet consistera en la création d'une interface MIPI CSI-2 sur le GPU au travers d'un driver linux. L'aboutissement sera de faire passer des images factices du FPGA au GPU sans artéfacts. Etapes: - Ecriture d'un driver linux - Création images factices sur FPGA - Vérification avec des transferts d'images Outils: - Langage : C, C++ - Linux - FPGA Liens: - Wrapper Gstreamer : https://github.com/thaytan/gst-rpicamsrc - Exemple de driver de camera lien CSI-MIPI : https://github.com/6by9/raspiraw/ - Documentation Linux : https://www.kernel.org/doc/html/latest/admin-guide/index.html - Documentation Drivers : https://www.kernel.org/doc/html/latest/gpu/drm-internals.html Mots clés: - Linux - Driver - Caméras - MIPI - V4L2