<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	
xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#"
>

<channel>
	<title>Blogue de Savoir-faire LInux</title>
	<atom:link href="https://blog.savoirfairelinux.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.savoirfairelinux.com/fr-ca</link>
	<description>C&#039;est ici que nous partageons nos avis d&#039;experts, bidouillages, tutoriels, invitations et autres nouvelles.</description>
	<lastBuildDate>
	Wed, 18 Mar 2026 21:39:27 +0000	</lastBuildDate>
	<language>fr-CA</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=5.1.15</generator>

<image>
	<url>https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2018/09/cropped-logo-sfl-solo-coul-pms2c-32x32.png</url>
	<title>Blogue de Savoir-faire LInux</title>
	<link>https://blog.savoirfairelinux.com/fr-ca</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Savoir-faire Linux lance ses services d’ingénierie en IA embarquée à l’Embedded World 2026 (Intelligence Artificielle)</title>
		<link>https://blog.savoirfairelinux.com/fr-ca/2026/savoir-faire-linux-lance-ses-services-dingenierie-en-ia-embarquee-a-lembedded-world-2026/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=savoir-faire-linux-lance-ses-services-dingenierie-en-ia-embarquee-a-lembedded-world-2026</link>
				<comments>https://blog.savoirfairelinux.com/fr-ca/2026/savoir-faire-linux-lance-ses-services-dingenierie-en-ia-embarquee-a-lembedded-world-2026/#respond</comments>
				<pubDate>Fri, 06 Mar 2026 22:17:04 +0000</pubDate>
		<dc:creator><![CDATA[Susanne Cuny]]></dc:creator>
				<category><![CDATA[Intelligence Artificielle]]></category>
		<category><![CDATA[Communiqué de presse]]></category>
		<category><![CDATA[Intelligence artificielle]]></category>
		<category><![CDATA[Objets Connectés et Ingénierie Produits]]></category>

		<guid isPermaLink="false">https://blog.savoirfairelinux.com/fr-ca/?p=14690</guid>
				<description><![CDATA[<p>This post was written by blogsfl This post was written by blogsfl Démonstrations en direct au stand 4-642 (Hall 4) pour présenter des pipelines de vision par ordinateur avec l’IA en temps réel, optimisés pour les accélérateurs matériels embarqués et construits sur l’écosystème open source de l’IA. &#160; Nuremberg, Allemagne, le 6 mars 2026 – Savoir-faire Linux, une société leader dans [&#8230;]Check out blogsfl</p>
<p>The post <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca/2026/savoir-faire-linux-lance-ses-services-dingenierie-en-ia-embarquee-a-lembedded-world-2026/">Savoir-faire Linux lance ses services d’ingénierie en IA embarquée à l’Embedded World 2026</a> appeared first on <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca">Blogue de Savoir-faire LInux</a>.</p>
]]></description>
								<content:encoded><![CDATA[This post was written by blogsfl <p style="text-align: center"><em>Démonstrations en direct au stand 4-642 (Hall 4) pour présenter des pipelines de vision par ordinateur avec l’IA en temps réel, optimisés pour les accélérateurs matériels embarqués et construits sur l’écosystème open source de l’IA.</em></p>
<p>&nbsp;</p>
<p><strong>Nuremberg, Allemagne, le 6 mars 2026</strong> – Savoir-faire Linux, une société leader dans le domaine de l&rsquo;ingénierie logicielle open source spécialisée dans les systèmes embarqués et industriels, annonce lors du salon Embedded World 2026 le lancement officiel de ses <a href="https://savoirfairelinux.com/fr/services/edge-ai">services d&rsquo;ingénierie Edge AI</a>. S&rsquo;appuyant sur plus de 25 ans d&rsquo;expertise dans les technologies Linux embarquées et open source, la société propose désormais des services de conseil et de développement dédiés, axés sur le déploiement de l&rsquo;intelligence artificielle directement sur les appareils embarqués.</p>
<p>Aujourd’hui, l’accélération rapide de l’innovation en IA est largement portée par l’écosystème open source, depuis les frameworks d’apprentissage profond jusqu&rsquo;aux architectures de modèles et aux unités d’accélération matérielle. Pour les entreprises développant des systèmes embarqués, tirer parti de cet écosystème nécessite une expertise approfondie tant dans les piles logicielles d’IA que dans les plateformes matérielles embarquées. Savoir-faire Linux allie ces deux compétences, aidant les organisations industrielles à transformer l’innovation open source en IA vers des systèmes robustes, prêts pour la production.</p>
<h2>L’IA embarquée, une capacité stratégique pour l’industrie</h2>
<p>Pour de nombreux secteurs, dont la robotique, la fabrication, les transports et les infrastructures intelligentes, l’IA embarquée devient rapidement une capacité essentielle.</p>
<blockquote><p>« <em>L’intelligence artificielle migre rapidement des environnements cloud centralisés vers des systèmes embarqués opérant directement sur le terrain,</em> » déclare <strong>Jérôme Oufella, vice-président technologie chez Savoir-faire Linux</strong>. « <em>Une grande partie de cette innovation provient des écosystèmes open source. Chez Savoir-faire Linux, l’open source est au cœur de notre culture d’ingénierie, et notre expertise réside dans la transformation de ces technologies en solutions d’IA embarquée robustes, optimisées pour les contraintes industrielles réelles</em>. »</p></blockquote>
<p>Pour illustrer les capacités de cette nouvelle offre, Savoir-faire Linux présentera deux démonstrations en direct à son stand (<strong>Hall 4 – 4-642</strong>), mettant en lumière comment des traitements IA intensifs peuvent fonctionner efficacement sur des plateformes embarquées aux ressources limitées. Ces démonstrations soulignent les défis d’ingénierie et les optimisations matérielles-logicielles nécessaires pour atteindre des performances temps réel déterministes au plus près du terrain.</p>
<h2>Démo 1 &#8211; Estimation de profondeur monoculaire en temps réel sur Toradex i.MX95</h2>
<p>La première démonstration présente une estimation de la profondeur monoculaire en temps réel à une cadence de 30 images par seconde sur la plateforme <a href="https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx95">Toradex Verdin i.MX95</a>. À l’aide d’une simple caméra RGB, le système génère une carte de profondeur de la scène en temps réel en exploitant l’<strong>unité de traitement neuronal Neutron</strong> <strong>(NPU)</strong> intégrée au NXP i.MX95.</p>
<p>Cette approche élimine le besoin de capteurs coûteux comme les LiDAR ou les systèmes de caméras stéréo, réduisant ainsi la complexité du système et les coûts matériels. Fonctionnant entièrement en local sur le dispositif, le système permet des capacités avancées de perception pour des applications telles que la navigation de robots mobiles autonomes, l’assistance à la conduite de chariots élévateurs, l’inspection dimensionnelle sur convoyeurs ou la détection d’obstacles et de collisions. Pour atteindre ces performances, une optimisation poussée du modèle ciblant l’architecture NPU a été nécessaire. Les ingénieurs de Savoir-faire Linux ont adapté le modèle d’estimation de profondeur pour éviter les retours vers le CPU et ont repensé les pipelines de post-traitement afin de maintenir une inférence stable à 30 FPS.</p>
<blockquote><p>« <em>Déployer l’IA sur des systèmes aux ressources limitées ne se résume pas à exécuter un réseau de neurones</em>, » explique le <strong>Dr. Thomas Garbay, expert en IA embarquée chez Savoir-faire Linux</strong>. « <em>Cela nécessite une optimisation approfondie de l’ensemble de la pile logicielle, de l’architecture du modèle à la compilation matérielle, en passant par le post-traitement en temps réel. Cette démonstration montre comment une co-conception minutieuse entre le matériel et le logiciel permet une IA spatiale fiable directement sur des plateformes embarquées</em>. »</p></blockquote>
<h2>Démo 2 &#8211; Segmentation d’instances en temps réel sur Renesas V2H</h2>
<p>La deuxième démonstration présente une segmentation d’<strong>instances fonctionnant sur la plateforme Renesas V2H</strong> <strong>à l’aide d’un réseau de neurones YOLO optimisé pour le matériel embarqué</strong>. La segmentation d’instances fournit des contours au niveau des pixels pour chaque objet dans une scène, permettant une identification, une localisation et un comptage précis, même lorsque les objets se chevauchent. De telles capacités sont de plus en plus requises dans les environnements industriels pour des applications comme l’inspection automatisée des lignes de production, la robotique de picking, l’automatisation logistique ou le contrôle du port des équipements de protection individuelle.</p>
<p>Pour permettre des performances en temps réel sur une plateforme embarquée contrainte, les ingénieurs de Savoir-faire Linux ont exploité <strong>l’accélérateur matériel <a href="https://www.renesas.com/en/software-tool/ai-accelerator-drp-ai">DRP-AI de Renesas</a></strong> et appliqué des techniques agressives d’élagage, réduisant le réseau de neurones de <strong>70 à 90 %</strong> tout en maintenant la précision du modèle. Une optimisation supplémentaire du post-traitement des masques de segmentation a significativement réduit la latence d’inférence, démontrant comment des charges de travail avancées en vision par ordinateur peuvent fonctionner de manière fiable sur des plateformes embarquées, sans dépendre d’une infrastructure cloud.</p>
<h2>Une nouvelle pratique d’ingénierie pour l’IA embarquée</h2>
<p>Le lancement des services d’IA embarquée de Savoir-faire Linux répond à une demande croissante des fabricants industriels cherchant à intégrer l’intelligence artificielle directement dans les appareils connectés et les systèmes embarqués. La nouvelle offre de l’entreprise couvre l’ensemble du cycle de vie de l’IA embarquée, incluant :</p>
<ul>
<li>L’optimisation des modèles et l’accélération matérielle (quantification, élagage, compilation NPU)</li>
<li>Les pipelines de vision par ordinateur et d’IA pilotées par capteurs</li>
<li>Le MLOps pour les grandes flottes d’appareils embarqués</li>
<li>La co-conception matériel-logiciel pour les systèmes d’IA embarquée</li>
<li>L&rsquo;entraînement de modèles d’IA sur des données et domaines spécifiques</li>
<li>Le conseil en ingénierie et l’accompagnement des équipes.</li>
</ul>
<p>En combinant une expertise approfondie des systèmes embarqués avec l’optimisation des modèles d’IA, Savoir-faire Linux permet aux organisations de déployer <strong>des solutions d’IA haute performance, à faible latence et directement sur les appareils</strong>, garantissant fiabilité, souveraineté et une dépendance réduite aux infrastructures cloud.</p>
<h2>Retrouvez-nous à l’Embedded World 2026</h2>
<p>Savoir-faire Linux invite <strong>les visiteurs, journalistes et analystes du secteur présents à l’Embedded World</strong> à visiter son stand (Hall 4 – Stand 4-642) pour découvrir les démonstrations en direct et discuter des stratégies de déploiement de l’IA embarquée avec son équipe d’ingénierie. <strong>Thomas Garbay</strong>, expert en IA embarquée, et <strong>Jérôme Oufella</strong>, vice-président technologie, seront disponibles tout au long de l’événement pour présenter les démonstrations et échanger avec les visiteurs sur les défis techniques du déploiement de l’IA dans les environnements embarqués.</p>
<h2>Liens utiles</h2>
<ul>
<li>Services d’ingénierie en IA embarquée : <a href="https://savoirfairelinux.com/fr/services/edge-ai">https://savoirfairelinux.com/fr/services/edge-ai</a></li>
<li>Autres articles de blog publiés sur le sujet :
<ul>
<li><a href="https://blog.savoirfairelinux.com/fr-ca/2026/generation-donnees-lidar-synthetiques-detection-temps-reel/">https://blog.savoirfairelinux.com/fr-ca/2026/generation-donnees-lidar-synthetiques-detection-temps-reel/</a></li>
<li><a href="https://blog.savoirfairelinux.com/fr-ca/2026/detection-temps-reel-systeme-lidar-entrainement/">https://blog.savoirfairelinux.com/fr-ca/2026/detection-temps-reel-systeme-lidar-entrainement/</a></li>
</ul>
</li>
</ul>
<hr />
<div class="linkbox">
<h2>À propos de Savoir-faire Linux</h2>
<p>Fondée en 1999, Savoir-faire Linux est un leader en ingénierie logicielle open source, offrant des services de conseil, de formation et de développement sur mesure pour les systèmes embarqués et industriels. Avec des bureaux à Montréal (Québec) et Rennes (France), l’entreprise accompagne des clients à travers le monde dans des secteurs allant de l’énergie et des transports aux télécommunications, à la robotique et aux produits grand public. En tant que contributeur actif de l’écosystème de la Linux Foundation et de la LF Energy, de projets comme le Yocto Project ou le Zephyr Project, Savoir-faire Linux promeut l’innovation collaborative et livre des solutions embarquées haute performance, sécurisées et durables.</p>
</div>
Check out blogsfl<p>The post <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca/2026/savoir-faire-linux-lance-ses-services-dingenierie-en-ia-embarquee-a-lembedded-world-2026/">Savoir-faire Linux lance ses services d’ingénierie en IA embarquée à l’Embedded World 2026</a> appeared first on <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca">Blogue de Savoir-faire LInux</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://blog.savoirfairelinux.com/fr-ca/2026/savoir-faire-linux-lance-ses-services-dingenierie-en-ia-embarquee-a-lembedded-world-2026/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Détection Temps Réel Système LiDAR : YOLO pour l’Edge AI (Intelligence Artificielle)</title>
		<link>https://blog.savoirfairelinux.com/fr-ca/2026/detection-temps-reel-systeme-lidar-entrainement/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=detection-temps-reel-systeme-lidar-entrainement</link>
				<comments>https://blog.savoirfairelinux.com/fr-ca/2026/detection-temps-reel-systeme-lidar-entrainement/#respond</comments>
				<pubDate>Tue, 03 Feb 2026 21:40:51 +0000</pubDate>
		<dc:creator><![CDATA[tgarbay]]></dc:creator>
				<category><![CDATA[Intelligence Artificielle]]></category>
		<category><![CDATA[ai]]></category>
		<category><![CDATA[edge ai]]></category>
		<category><![CDATA[embedded]]></category>

		<guid isPermaLink="false">https://blog.savoirfairelinux.com/fr-ca/?p=14560</guid>
				<description><![CDATA[<p>This post was written by blogsfl This post was written by blogsfl Entraînement de YOLO pour la Détection Temps Réel sur Système LiDAR Il s’agit du deuxième volet d’une série en trois parties consacrée à la détection temps réel sur système LiDAR. Retrouvez ici l’article 1 sur la génération de jeux de données synthétiques de profondeur et NIR. Actuellement, de nouveaux [&#8230;]Check out blogsfl</p>
<p>The post <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca/2026/detection-temps-reel-systeme-lidar-entrainement/">Détection Temps Réel Système LiDAR : YOLO pour l’Edge AI</a> appeared first on <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca">Blogue de Savoir-faire LInux</a>.</p>
]]></description>
								<content:encoded><![CDATA[This post was written by blogsfl <h1>Entraînement de YOLO pour la Détection Temps Réel sur Système LiDAR</h1>
<p>Il s’agit du deuxième volet d’une série en trois parties consacrée à la détection temps réel sur système LiDAR. <a href="https://blog.savoirfairelinux.com/fr-ca/2026/generation-donnees-lidar-synthetiques-detection-temps-reel/">Retrouvez ici l’article 1 sur la génération de jeux de données synthétiques de profondeur et NIR.</a></p>
<p>Actuellement, de nouveaux LiDAR embarqués à basse résolution, tels que le VL53L9CX, émergent comme une option particulièrement adaptée pour la détection temps réel sur système LiDAR. Cette matrice de <span class="math-inline" data-math="54 \times 42" data-index-in-node="6"><span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="mord">54 </span><span class="mbin">× </span></span><span class="base"><span class="mord">42</span></span></span></span></span> pixels fournit simultanément des données de profondeur basse consommation, d’infrarouge et d’illumination active. Dans ce contexte, l’intégration d’un modèle YOLO optimisé permet de transformer ces signaux pour la détection temps réel sur système LiDAR.</p>
<p>Nous commençons cet article par une brève introduction à YOLO. Nous menons ensuite une étude exploratoire évaluant la précision de YOLO sur plusieurs jeux de données. L&rsquo;objectif est d’analyser l’impact des différentes modalités d’image. Les expériences d’entraînement ont été réalisées à partir d’entrées de profondeur relative, de profondeur absolue, de proche infrarouge (NIR) et multimodales (profondeur + NIR). Pour les détails concernant la génération de ces jeux de données, nous renvoyons le lecteur à <a href="https://blog.savoirfairelinux.com/fr-ca/2026/generation-donnees-lidar-synthetiques-detection-temps-reel/">l’article 1 de cette série</a>. Enfin, nous abordons l’optimisation des hyperparamètres de YOLO afin d’obtenir les meilleures performances possibles compte tenu des caractéristiques des données d’entrée.</p>
<h2>Introduction à YOLO et YOLOv8 : vision par ordinateur en temps réel</h2>
<p>Dans le domaine de la vision par ordinateur, YOLO (You Only Look Once) a fondamentalement transformé la manière dont les machines perçoivent le monde visuel. Plus précisément, YOLO remplace les pipelines multi-traitements par une seule étape. Il effectue simultanément la proposition de régions d&rsquo;intérêts et la classification. Par conséquent, cette architecture « one-shot » permet une inférence extrêmement rapide. Elle rend la détection temps réel sur système LiDAR possible.</p>
<h3>L’évolution vers YOLOv8</h3>
<p>YOLOv8, publié par Ultralytics en 2023, demeure l’état de l’art en matière d’équilibre entre précision et efficacité. Nous utilisons YOLOv8 plutôt que des versions plus récentes comme YOLO11 en raison de son meilleur support sur le matériel industriel, en particulier sur les plateformes NPU.</p>
<p>YOLOv8 introduit plusieurs améliorations architecturales clés :</p>
<ul>
<li>Architecture sans ancres : contrairement aux versions précédentes de YOLO, YOLOv8 prédit directement les centres des objets sans s’appuyer sur des boîtes d’ancrage prédéfinies. Cela améliore significativement la précision de détection, en particulier pour les silhouettes humaines aux postures et échelles variées.</li>
<li>Backbone C2f : le module Cross-Stage Partial Bottleneck (C2f) améliore le flux de gradients tout en réduisant la complexité du modèle. Il en résulte des modèles plus légers avec de meilleures performances.</li>
<li>Polyvalence native des tâches : au-delà de la détection de boîtes englobantes, YOLOv8 prend en charge nativement la segmentation d’instances et l’estimation de pose. Il offre ainsi une voie claire vers des tâches de perception et d’analyse comportementale plus avancées.</li>
</ul>
<p>En résumé, YOLOv8 atteint une efficacité de Pareto supérieure en termes de latence-mAP lorsque l’on considère les jeux de données et l’exécution sur des plateformes embarquées. Cela le rend parfaitement adapté à la détection temps réel sur système LiDAR pour l’Edge AI.</p>
<h2>Stratégies d’entraînement pour la <span class="user-query-container"><span class="user-query-bubble-with-background ng-star-inserted"><span class="horizontal-container">détection en temps réel sur système LiDAR</span></span></span></h2>
<p>Deux stratégies sont comparées afin de déterminer la meilleure approche pour un déploiement embarqué à haute performance. La stratégie 1 repose sur un mélange d’experts (Mixture of Experts, MoE). La stratégie 2 utilise un entraînement multimodal à modèle unique.</p>
<h3>Stratégie 1 : Mixture of Experts (MoE)</h3>
<p>Une approche Mixture of Experts (MoE) utilise deux modèles YOLOv8 parallèles, respectivement spécialisés sur les données de profondeur et de NIR. D’un point de vue méthodologique, cette stratégie est plus simple, chaque modèle étant optimisé pour une seule modalité.</p>
<p>Néanmoins, elle soulève plusieurs questions critiques. Premièrement, chaque modalité fournit-elle suffisamment d’informations discriminantes à ultra-basse résolution pour fonctionner de manière indépendante ? Deuxièmement, les architectures embarquées basse consommation peuvent-elles supporter des pipelines d’inférence concurrents avec des contraintes strictes de latence, de puissance et de mémoire ?</p>
<h3>Stratégie 2 : entraînement multimodal à modèle unique</h3>
<p>La seconde approche consiste à entraîner un seul modèle YOLOv8 sur des images d’entrée multimodales. Alors que les images RGB conventionnelles comportent trois canaux, nos entrées n’en contiennent que deux : la profondeur et le proche infrarouge (NIR). La mise en œuvre de cette stratégie implique de fusionner les modalités dans un nouveau jeu de données et d’adapter la chaîne d’entraînement à des représentations d’entrée personnalisées.</p>
<p>Le principal défi réside dans la capacité de généralisation du réseau à partir d&rsquo;un entraînement avec cette modalité non conventionnelle. Toutefois, un pipeline à modèle unique réduit considérablement la charge de calcul et simplifie l’inférence sur des systèmes embarqués aux ressources limitées. Ce dernier point est significatif pour de la détection temps réel sur système LiDAR.</p>
<h2>Vue d’ensemble des résultats expérimentaux</h2>
<p>Nous présentons les résultats des entraînements suivants avec YOLOv8 sur trois jeux de données :</p>
<ol>
<li>NIR, généré par inférence à l’aide du <a href="https://github.com/Yonsei-STL/pix2next/tree/main?tab=readme-ov-file">modèle Pix2Next</a>.</li>
<li>Profondeur, produit par inférence à partir du <a href="https://huggingface.co/docs/transformers/main/en/model_doc/zoedepth">modèle ZoeDepth</a>.</li>
<li>Multimodal, où chaque image <a href="https://blog.savoirfairelinux.com/fr-ca/2025/real-time-detect…m-synthetic-data/">inclut simultanément des canaux de profondeur et de NIR</a>.</li>
</ol>
<p>Dans ce contexte, plusieurs variantes ont été évaluées selon ces stratégies. Nous avons comparé YOLOv8 et YOLO11 en entraînement <strong>from scratch</strong> et avec des poids pré-entraînés RGB (<strong>transfer learning</strong>). En outre, nous avons utilisé les topologies <strong>nano (n), small (s) et medium (m)</strong>.</p>
<p>Le tableau suivant récapitule les modèles testés et met en évidence leurs performances de référence sur des images d’entrée en 640×640. Alors que le mAP <sup>val 50–95</sup> mesure la qualité et la cohérence de la détection, le nombre de paramètres et les FLOPs estiment le coût d’inférence. Toutefois, ces métriques nécessitent une contextualisation pour le déploiement sur NPU et les optimisations spécifiques au matériel pour de la détection temps réel sur système LiDAR.</p>
<div style="margin: 20px 0; border: 1px solid #D6DEE8;">
<table style="border-collapse: collapse; min-width: 100%; font-size: 13.5px; background-color: #ffffff; color: #1f2d3d;">
<thead>
<tr style="background-color: #eef3f8;">
<th style="padding: 12px 18px; text-align: left; font-weight: 600; border-bottom: 2px solid #1F2D3D;">Modèle</th>
<th style="padding: 12px 18px; text-align: center; font-weight: 600; border-bottom: 2px solid #1F2D3D;">Résolution (pixels)</th>
<th style="padding: 12px 18px; text-align: center; font-weight: 600; border-bottom: 2px solid #1F2D3D;">mAP <sup>val 50–95</sup></th>
<th style="padding: 12px 18px; text-align: center; font-weight: 600; border-bottom: 2px solid #1F2D3D;">Latence CPU ONNX (ms)</th>
<th style="padding: 12px 18px; text-align: center; font-weight: 600; border-bottom: 2px solid #1F2D3D;">Latence A100 TensorRT (ms)</th>
<th style="padding: 12px 18px; text-align: center; font-weight: 600; border-bottom: 2px solid #1F2D3D;">Paramètres (M)</th>
<th style="padding: 12px 18px; text-align: center; font-weight: 600; border-bottom: 2px solid #1F2D3D;">FLOPs (B)</th>
</tr>
</thead>
<tbody>
<tr>
<td style="padding: 10px 18px; text-align: left; font-weight: 400 !important;">YOLOv8n</td>
<td style="padding: 10px 18px; text-align: center; font-weight: 400 !important;">640</td>
<td style="padding: 10px 18px; text-align: center; font-weight: 400 !important;">37.3</td>
<td style="padding: 10px 18px; text-align: center; font-weight: 400 !important;">80.4</td>
<td style="padding: 10px 18px; text-align: center; font-weight: 400 !important;">0.99</td>
<td style="padding: 10px 18px; text-align: center; font-weight: 400 !important;">3.2</td>
<td style="padding: 10px 18px; text-align: center; font-weight: 400 !important;">8.7</td>
</tr>
<tr style="background-color: #f7f9fc;">
<td style="padding: 10px 18px; text-align: left;">YOLO11n</td>
<td style="padding: 10px 18px; text-align: center;">640</td>
<td style="padding: 10px 18px; text-align: center;">39.5</td>
<td style="padding: 10px 18px; text-align: center;">56.1 ± 0.8</td>
<td style="padding: 10px 18px; text-align: center;">1.5 ± 0.0</td>
<td style="padding: 10px 18px; text-align: center;">2.6</td>
<td style="padding: 10px 18px; text-align: center;">6.5</td>
</tr>
<tr>
<td style="padding: 10px 18px; text-align: left;">YOLOv8s</td>
<td style="padding: 10px 18px; text-align: center;">640</td>
<td style="padding: 10px 18px; text-align: center;">44.9</td>
<td style="padding: 10px 18px; text-align: center;">128.4</td>
<td style="padding: 10px 18px; text-align: center;">1.20</td>
<td style="padding: 10px 18px; text-align: center;">11.2</td>
<td style="padding: 10px 18px; text-align: center;">28.6</td>
</tr>
<tr style="background-color: #f7f9fc;">
<td style="padding: 10px 18px; text-align: left;">YOLO11s</td>
<td style="padding: 10px 18px; text-align: center;">640</td>
<td style="padding: 10px 18px; text-align: center;">47.0</td>
<td style="padding: 10px 18px; text-align: center;">90.0 ± 1.2</td>
<td style="padding: 10px 18px; text-align: center;">2.5 ± 0.0</td>
<td style="padding: 10px 18px; text-align: center;">9.4</td>
<td style="padding: 10px 18px; text-align: center;">21.5</td>
</tr>
<tr>
<td style="padding: 10px 18px; text-align: left;">YOLOv8m</td>
<td style="padding: 10px 18px; text-align: center;">640</td>
<td style="padding: 10px 18px; text-align: center;">50.2</td>
<td style="padding: 10px 18px; text-align: center;">234.7</td>
<td style="padding: 10px 18px; text-align: center;">1.83</td>
<td style="padding: 10px 18px; text-align: center;">25.9</td>
<td style="padding: 10px 18px; text-align: center;">78.9</td>
</tr>
<tr style="background-color: #f7f9fc;">
<td style="padding: 10px 18px; text-align: left;">YOLO11m</td>
<td style="padding: 10px 18px; text-align: center;">640</td>
<td style="padding: 10px 18px; text-align: center;">51.5</td>
<td style="padding: 10px 18px; text-align: center;">183.2 ± 2.0</td>
<td style="padding: 10px 18px; text-align: center;">4.7 ± 0.1</td>
<td style="padding: 10px 18px; text-align: center;">20.1</td>
<td style="padding: 10px 18px; text-align: center;">68.0</td>
</tr>
</tbody>
</table>
<div style="padding: 8px 18px; font-size: 12px; color: #5a6f85; border-top: 1px solid #D6DEE8;">Source: <a style="color: #5a6f85; text-decoration: none;" href="https://docs.ultralytics.com/models/" target="_blank" rel="noopener noreferrer"><br />
https://docs.ultralytics.com/models/<br />
</a></div>
</div>
<h2>Optimisation de l’entraînement : sélection et interprétation des bonnes métriques</h2>
<p>Pour commencer, une évaluation complète des performances de YOLOv8 nécessite une approche multi-métriques plutôt que de s’appuyer sur un seul indicateur. L’objectif est d’optimiser le compromis entre la précision de localisation et la sensibilité de détection. Cela nous permettra d’ajuster efficacement l’entraînement de YOLO pour la détection temps réel sur système LiDAR.</p>
<p>Premièrement, les principales métriques de détection utilisées sont la précision et le rappel. La précision et le rappel constituent les métriques fondamentales de l’analyse de performance.</p>
<ul>
<li><strong>Précision</strong> : quantifie la fiabilité du modèle en mesurant le ratio de détections correctes par rapport au nombre total de prédictions (minimisation des faux positifs).</li>
<li><strong>Rappel</strong> : mesure la sensibilité en calculant la proportion d’objets réels détectés avec succès. Un faible rappel reflète donc un nombre élevé de faux négatifs, lorsque le modèle ne détecte pas des objets existants.</li>
</ul>
<p>En outre, le score F1 est la moyenne harmonique de la précision et du rappel. Il est particulièrement utile pendant l’entraînement, car il synthétise la performance globale en une seule valeur. Si le score F1 plafonne alors que la précision continue de s’améliorer, cela indique souvent une baisse du rappel. Cette information est précieuse pour ajuster le seuil de confiance afin de rééquilibrer précision et rappel.</p>
<p>Deuxièmement, une métrique spécifique à la détection d’objets est le <strong>mAP (mean Average Precision)</strong>, qui constitue la référence standard pour comparer les modèles de détection. Il est calculé comme l’aire sous la courbe précision-rappel.</p>
<ul>
<li>MAP<sup>val 50 </sup>mesure la précision moyenne avec un seuil d’Intersection over Union (IoU) de 0,5. Elle reflète principalement la capacité du modèle à détecter les objets à un niveau grossier.</li>
<li>MAP<sup>val 50-95 </sup>est une métrique stricte qui moyenne le mAP sur des seuils d’IoU allant de 0,5 à 0,95 ; des scores élevés reflètent un meilleur alignement des boîtes englobantes avec la vérité terrain.</li>
</ul>
<h3>YOLO sur le jeu de données NIR</h3>
<p>Les premières expériences d’entraînement ont été menées sur un jeu de données comprenant 10 classes : [&lsquo;person&rsquo;, &lsquo;bench&rsquo;, &lsquo;backpack&rsquo;, &lsquo;bottle&rsquo;, &lsquo;cup&rsquo;, &lsquo;chair&rsquo;, &lsquo;tv&rsquo;, &lsquo;laptop&rsquo;, &lsquo;cell phone&rsquo;, &lsquo;book&rsquo;].</p>
<p>Malheureusement, la détection a été limitée par la modalité NIR et par la faible résolution d’entrée de <span class="math-inline" data-math="54 \times 42" data-index-in-node="83"><span class="katex"><span class="katex-html" aria-hidden="true"><span class="base"><span class="mord">54</span><span class="mbin">×</span></span><span class="base"><span class="mord">42</span></span></span></span></span>. En conséquence, les MAP<sup>val 50-95</sup> et MAP<sup>val 50</sup> présentent de faibles performances pour cette modalité. De plus, la précision et le rappel sont également très bas, ce qui indique un taux élevé de faux positifs et de faux négatifs. Une analyse complémentaire à l’aide de la matrice de confusion normalisée fournit une vision plus fine des capacités de détection par classe du modèle. Elle met en évidence les classes les plus affectées et les zones de mauvaise classification. La matrice de confusion normalisée présentée correspond à un modèle YOLOv8s entraîné from scratch, servant de référence pour les améliorations ultérieures.</p>
<table>
<tbody>
<tr>
<td><img class="alignnone wp-image-14640 size-large" src="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_nir_results2-1024x786.png" alt="Détection temps-réel sur système LiDAR : résultats de l’entraînement de YOLOv8 et YOLOv11 en fonction de la taille du modèle. Métriques affichées : mAP50, mAP50-95, Précision, Rappel." width="1024" height="786" srcset="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_nir_results2-1024x786.png 1024w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_nir_results2-300x230.png 300w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_nir_results2-768x589.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></td>
<td><img class="alignnone wp-image-14566 size-large" src="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_nir_confused-e1767107853451-1024x941.png" alt="Détection temps-réel sur système LiDAR : matrice de confusion de YOLOv8s sur 10 classes." width="1024" height="941" srcset="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_nir_confused-e1767107853451-1024x941.png 1024w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_nir_confused-e1767107853451-300x276.png 300w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_nir_confused-e1767107853451-768x705.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></td>
</tr>
</tbody>
</table>
<h3>YOLOv8 sur le jeu de données de profondeur</h3>
<p>Bien que la modalité NIR produise de meilleurs résultats de détection, les performances globales des modèles demeurent insuffisantes. Le MAP<sup>val 50-95</sup> ne dépasse pas 0,25. La matrice de confusion présentée ci-dessus correspond à un modèle YOLOv8s entraîné from scratch sur le jeu de données de profondeur. Ces résultats préliminaires montrent qu’une approche MoE est difficilement optimisable pour la détection temps réel sur système LiDAR avec YOLO.</p>
<table>
<tbody>
<tr>
<td><img class="alignnone wp-image-14639 size-large" src="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_depth_results2-1024x786.png" alt="Détection temps réel sur système LiDAR : résultats de l’entraînement de YOLOv8 et YOLOv11 en fonction de la taille du modèle et de l’apprentissage par transfert ou from scratch. Métriques affichées : mAP50, mAP50-95, Précision, Rappel." width="1024" height="786" srcset="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_depth_results2-1024x786.png 1024w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_depth_results2-300x230.png 300w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_depth_results2-768x589.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></td>
<td><img class="alignnone wp-image-14564" src="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_depth_confused-e1767107196346-1024x908.png" alt="Détection temps réel sur système LiDAR : matrice de confusion de YOLOv8s sur 10 classes." width="800" height="709" srcset="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_depth_confused-e1767107196346-1024x908.png 1024w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_depth_confused-e1767107196346-300x266.png 300w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_depth_confused-e1767107196346-768x681.png 768w" sizes="(max-width: 800px) 100vw, 800px" /></td>
</tr>
</tbody>
</table>
<h3>YOLOv8 sur un jeu de données multimodal</h3>
<p>À la suite de ces premiers résultats d’entraînement, nous avons décidé d’abandonner le transfert d’apprentissage. Nous nous sommes concentrés sur l’entraînement des modèles from scratch. Les différences de performance étant marginales, nous avons cherché à spécialiser le modèle sur les modalités profondeur et NIR. En raison des faibles performances en mono-modalité, nous avons mis en place une fusion Depth-NIR à deux canaux pour l’entrée de YOLOv8. Cette représentation multimodale enrichit les données d’entrée avec des caractéristiques complémentaires. L&rsquo;objectif final étant d&rsquo;améliorer la performance de la détection temps réel sur système LiDAR.</p>
<table>
<tbody>
<tr>
<td><img class="alignnone wp-image-14563 size-large" src="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_multi_results-e1767107811943-1024x835.png" alt="Détection temps réel sur système LiDAR : résultats de l’entraînement de YOLOv8 et YOLOv11 en fonction de la taille du modèle. Métriques affichées : mAP50, mAP50-95, Précision, Rappel." width="1024" height="835" srcset="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_multi_results-e1767107811943-1024x835.png 1024w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_multi_results-e1767107811943-300x245.png 300w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_multi_results-e1767107811943-768x626.png 768w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_multi_results-e1767107811943.png 1260w" sizes="(max-width: 1024px) 100vw, 1024px" /></td>
<td><img class="alignnone wp-image-14562 size-large" src="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_multi_confused-e1767107831132-1024x926.png" alt="Détection temps réel sur système LiDAR : matrice de confusion de YOLOv8s sur 10 classes." width="1024" height="926" srcset="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_multi_confused-e1767107831132-1024x926.png 1024w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_multi_confused-e1767107831132-300x271.png 300w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/yolo_multi_confused-e1767107831132-768x695.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></td>
</tr>
</tbody>
</table>
<p>Malgré l’entraînement sur deux modalités afin d’enrichir les caractéristiques extraites, les résultats ne sont pas encore satisfaisants. Actuellement, <strong>la différence de performance entre YOLOv8 et YOLOv11 n’est pas significative</strong>. En conséquence, nous avons privilégié le modèle offrant les meilleures performances sur le matériel cible, à savoir YOLOv8. Étant donné que YOLOv11 n’apporte aucun gain significatif en précision, la perte associée en efficacité matérielle n’est pas justifiée. Pour la détection temps réel sur système LiDAR pour l’Edge AI, les contraintes matérielles sont déterminantes et doivent être prises en compte dès les premières étapes.</p>
<p>De plus, certaines classes, telles que book et backpack, sont à peine détectées. La faible résolution et les contraintes de modalité empêchent une caractérisation fiable des objets. Par conséquent, nous avons décidé de réduire le périmètre de la tâche et de nous concentrer exclusivement sur la détection de personnes. Cette simplification permet de mieux contraindre le processus d’entraînement et d’améliorer la robustesse des modèles.</p>
<h3>Optimisation de l’entraînement</h3>
<p>Nous avons évalué trois tailles de modèles : <strong>nano (n), small (s) et medium (m)</strong>, sur <strong>deux résolutions d’entrée : 224×224 et 54×42</strong>. Notre objectif était d’identifier le meilleur compromis entre performance et coût selon la taille du modèle et la résolution d’entrée. Cet équilibre est essentiel pour les contraintes de latence et ainsi permettre une détection temps réel sur système LiDAR. Nous avons automatisé le réglage des hyperparamètres. Pour cela, nous utilisons l&rsquo;optimisation bayésienne avec YOLOv8 et Ray Tune. Contrairement à la recherche par grille, cette approche apprend des itérations précédentes afin d’explorer efficacement un espace de recherche continu et multidimensionnel. Enfin, la recherche d’hyperparamètres a été réalisée sur 15 itérations, suivie d’un entraînement avec une validation croisée à k=5. Les métriques de performance obtenues sont présentées ci-dessous.</p>
<p><img class="alignnone wp-image-14582 size-full" src="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/Analyse_resolution_models_en.png" alt="Détection temps réel sur système LiDAR : résultats de l’entraînement de YOLOv8 en fonction de la taille du modèle et de la résolution. Métriques affichées : mAP50, mAP50-95, Précision, Rappel." width="3072" height="1508" srcset="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/Analyse_resolution_models_en.png 3072w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/Analyse_resolution_models_en-300x147.png 300w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/Analyse_resolution_models_en-768x377.png 768w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/Analyse_resolution_models_en-1024x503.png 1024w" sizes="(max-width: 3072px) 100vw, 3072px" /></p>
<h2>Interprétation et conclusion</h2>
<p>Ces résultats nous permettent d’analyser deux facteurs clés pour la détection temps réel sur système LiDAR : la résolution d’entrée et la complexité du modèle.</p>
<p><strong>La réduction de la résolution d’entrée</strong> de 224 px à 54 px <strong>est significative</strong> sur l’ensemble des métriques. Le rappel est le plus affecté. Il passe de 0,48–0,53 à 224 px à seulement 0,32–0,36 à 54 px. Donc à basse résolution, le modèle ne détecte pas 65 % des personnes. La dégradation de la précision est moins marquée que celle du rappel. La baisse est d’environ 10 % (de ~0,78 à ~0,68–0,73).</p>
<p>Concernant la <strong>complexité du modèle</strong>, les résultats montrent une progression logique des performances. <strong>Cependant les gains sont marginaux</strong>. Le modèle medium (YOLOv8m) obtient la meilleure performance globale, en particulier le rappel le plus élevé à 224 px (0,528). Ce qui est notable: YOLOv8n se révèle étonnamment compétitif à 224 px, avec un mAP50 de 0,65 contre 0,68 pour YOLOv8m. En comparaison, <strong>à 54 px, les modèles plus grands comme YOLOv8m ne parviennent pas à compenser la perte d’information spatiale</strong>. Cette observation est déterminante pour orienter les prochaines étapes d’optimisation. En pratique, YOLOv8n à 224 px surpasse nettement YOLOv8m à 54 px sur l’ensemble des métriques.</p>
<p>Pour la détection temps réel sur système LiDAR, <strong>le meilleur compromis est atteint avec YOLOv8n à une résolution de 224×224</strong>. Cette configuration égale les performances de modèles plus volumineux. De plus, elle est optimisée pour une exécution en temps réel sur un matériel contraint. Nous allons désormais optimiser le processus d’entraînement. L&rsquo;objectif est d’améliorer le rappel tout en maintenant les performances globales, en prenant YOLOv8n à 224×224 comme référence. Ce travail est en cours.</p>
<p>Le prochain article portera sur l’optimisation matérielle afin d’obtenir une inférence optimisée pour la détection en temps réel sur un système LiDAR.</p>
Check out blogsfl<p>The post <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca/2026/detection-temps-reel-systeme-lidar-entrainement/">Détection Temps Réel Système LiDAR : YOLO pour l’Edge AI</a> appeared first on <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca">Blogue de Savoir-faire LInux</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://blog.savoirfairelinux.com/fr-ca/2026/detection-temps-reel-systeme-lidar-entrainement/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Génération de données LiDAR synthétiques pour Détection Temps Réel (Intelligence Artificielle)</title>
		<link>https://blog.savoirfairelinux.com/fr-ca/2026/generation-donnees-lidar-synthetiques-detection-temps-reel/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=generation-donnees-lidar-synthetiques-detection-temps-reel</link>
				<comments>https://blog.savoirfairelinux.com/fr-ca/2026/generation-donnees-lidar-synthetiques-detection-temps-reel/#respond</comments>
				<pubDate>Tue, 03 Feb 2026 21:25:04 +0000</pubDate>
		<dc:creator><![CDATA[tgarbay]]></dc:creator>
				<category><![CDATA[Intelligence Artificielle]]></category>
		<category><![CDATA[ai]]></category>
		<category><![CDATA[edge ai]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[systèmes embarqués]]></category>

		<guid isPermaLink="false">https://blog.savoirfairelinux.com/fr-ca/?p=14531</guid>
				<description><![CDATA[<p>This post was written by blogsfl This post was written by blogsfl Permettre la Détection Temps Réel grâce à la Génération de Données LiDAR Synthétiques Cette série d&#8217;articles couvrira les éléments essentiels au déploiement d&#8217;un système de détection en temps réel avec un module dToF 3D LiDAR. Ce premier article est consacré à la génération de données LiDAR synthétiques. Génération de [&#8230;]Check out blogsfl</p>
<p>The post <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca/2026/generation-donnees-lidar-synthetiques-detection-temps-reel/">Génération de données LiDAR synthétiques pour Détection Temps Réel</a> appeared first on <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca">Blogue de Savoir-faire LInux</a>.</p>
]]></description>
								<content:encoded><![CDATA[This post was written by blogsfl <h1 class="western" align="justify">Permettre la Détection Temps Réel grâce à la Génération de Données LiDAR</h1>
<h1 class="western" align="justify">Synthétiques</h1>
<p align="justify">Cette série d&rsquo;articles couvrira les éléments essentiels au déploiement d&rsquo;un système de détection en temps réel avec un module dToF 3D LiDAR. Ce premier article est consacré à la génération de données LiDAR synthétiques.</p>
<ul>
<li>
<p align="justify"><strong>Génération de données LiDAR synthétiques pour la détection en temps réel</strong></p>
</li>
<li>
<p align="justify"> <a href="https://blog.savoirfairelinux.com/fr-ca/2026/detection-temps-reel-systeme-lidar-entrainement/"><strong>Détection Temps Réel Système LiDAR : YOLO pour l’Edge AI</strong> </a></p>
</li>
<li>
<p align="justify"><strong>Déploiement sur une plateforme embarquée</strong></p>
</li>
</ul>
<p align="justify">L&rsquo;intégration de modèles d&rsquo;IA dans des plateformes embarquées permet désormais de nouveaux cas d&rsquo;usage en vision par ordinateur, par exemple la robotique mobile ou la navigation autonome. Cependant, lorsque le système n&rsquo;a pas accès à un flux RGB exploitable, e.g., dans des conditions de faible luminosité, il devient essentiel de s&rsquo;appuyer sur des modalités de détection alternatives. L&rsquo;exploitation des données de profondeur dToF et infrarouge garantit une détection robuste en temps réel pour les systèmes LiDAR embarqués.</p>
<p align="justify">En outre, un nouveau (à la date d&rsquo;écriture de cet article en 2026) module embarqué dToF 3D LiDAR basse résolution, tels que le <a href="https://www.st.com/en/imaging-and-photonics-solutions/vl53l9cx.html">VL53L9CX</a>, émerge comme une option particulièrement adaptée aux systèmes robotiques. Sa matrice <strong>54 × 42</strong> fournit simultanément des données de profondeur, d&rsquo;intensité NIR et d&rsquo;illumination active avec une empreinte énergétique minimale.</p>
<p align="justify">Ensuite, une architecture YOLO adaptée couplée à des données LiDAR brutes permet une perception en temps réel. L&rsquo;implémentation matérielle devient un défi clé à ce stade. C&rsquo;est pourquoi l&rsquo;exploitation d&rsquo;accélérateurs matériels tels que les NPU est essentielle. Cela garantira une détection en temps réel sur des systèmes LiDAR basse consommation.</p>
<p align="justify">Finalement, la qualité des données d&rsquo;entraînement détermine directement les performances du modèle de détection. Cependant, collecter et annoter des données LiDAR même à basse résolution, est coûteux et difficile à mettre à l&rsquo;échelle. Une alternative consiste en la génération de données LiDAR synthétiques. L&rsquo;objectif est de permettre un prototypage rapide de la solution.</p>
<p>&nbsp;</p>
<h2 class="western" align="justify">Génération de Données LiDAR Synthétiques pour la Détection en Temps Réel</h2>
<p style="text-align: left;" align="justify">Les jeux de données LiDAR existants proviennent principalement de capteurs 3D haute densité produisant des millions de points. Ceux-ci sont couramment utilisés dans la conduite autonome. De tels formats ne peuvent être ni capturés ni exploités sur des systèmes embarqués fortement contraints. En particulier dans notre cas, le matériel cible <strong>est le <a href="https://www.st.com/en/imaging-and-photonics-solutions/vl53l9cx.html">VL53L9CX</a>, un LiDAR dToF produisant une matrice 2D de 54 × 42 pixels</strong>. Un entraînement adapté à nos contraintes nécessite donc des données de profondeur et d&rsquo;infrarouge proche de la réponse NIR, à 940 nm, du capteur.</p>
<p align="justify">Cependant, collecter et annoter des données LiDAR à basse résolution reste un processus coûteux et lent. La génération de données LiDAR synthétiques est donc une approche efficace pour un entrainement de modèles d&rsquo;IA. Parallèlement, les labels sont des éléments essentiels à la bonne exploitation des données générées. Ici, nous exploitons les labels du jeu de données COCO en ne convertissant que la modalité d&rsquo;image : de RGB vers profondeur et NIR. En utilisant le jeu de données COCO, nous préservons les boîtes englobantes et les classes d&rsquo;origine. La structure de la scène reste identique, seule la modalité change. La figure suivante illustre une image du jeu de données COCO en RGB original. En comparaison, la même image est traduite en modalités profondeur et NIR, avec les mêmes labels.</p>
<p><img class="aligncenter wp-image-14532 size-large" src="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/bbox-e1767042861366-1024x305.jpeg" alt="Synthetic LiDAR data generation for NIR and depth estimation based on COCO dataset with Pix2Next, Zoe and DepthAnythingV2 models. Comparison of RGB, depth and NIR modalities." width="1024" height="305" srcset="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/bbox-e1767042861366-1024x305.jpeg 1024w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/bbox-e1767042861366-300x89.jpeg 300w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/bbox-e1767042861366-768x228.jpeg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<h2 class="western" align="justify">Implémentation Technique de la Génération Synthétique</h2>
<p align="justify">Nous nous appuyons sur des modèles open-source spécialisés pour la génération de données LiDAR synthétiques :</p>
<ul>
<li>
<p align="justify"><strong><a href="https://github.com/Yonsei-STL/pix2next/tree/main?tab=readme-ov-file">Pix2Next</a></strong> pour générer des images NIR cohérentes avec les caractéristiques optiques du capteur.</p>
</li>
<li>
<p align="justify"><strong><a href="https://huggingface.co/docs/transformers/main/en/model_doc/zoedepth">ZoeDepth</a></strong> et <strong><a href="https://huggingface.co/depth-anything/Depth-Anything-V2-Large">DepthAnythingV2</a></strong> pour produire respectivement des <a href="https://huggingface.co/docs/transformers/tasks/monocular_depth_estimation">cartes de profondeur absolue et relative</a>.</p>
</li>
</ul>
<h3 class="western" align="justify">Génération de Données NIR</h3>
<p align="justify">Pix2Next est une extension de la famille de modèles Pix2Pix, en intégrant des Modèles de Fondation pour la Vision &#8211; <em>Vision Foundation Models</em>. Ces modèles servent d&rsquo;extracteurs de caractéristiques. Ils utilisent <a href="https://proceedings.neurips.cc/paper_files/paper/2017/file/3f5ee243547dee91fbd053c1c4a845aa-Paper.pdf">l&rsquo;attention croisée dans une architecture encodeur-décodeur</a>. Cette approche améliore significativement la cohérence visuelle des images NIR synthétiques. Particulièrement dans des conditions de faible luminosité ou d&rsquo;illumination partielle qui sont des régimes de fonctionnement typiques pour les capteurs dToF. Le diagramme suivant illustre l&rsquo;architecture Pix2Next :</p>
<p><img class="aligncenter wp-image-14537 size-large" src="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/Pix2Pix-1024x465.png" alt="Synthetic LiDAR data generation for NIR vision based on COCO dataset with Pix2Next model." width="1024" height="465" srcset="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/Pix2Pix-1024x465.png 1024w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/Pix2Pix-300x136.png 300w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/Pix2Pix-768x349.png 768w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/Pix2Pix.png 1223w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p align="justify">Il s&rsquo;agit d&rsquo;un réseau antagoniste génératif &#8211; <em>Generative Adversarial Network</em> (GAN) &#8211; conçu pour la traduction RGB vers NIR. Il se compose d&rsquo;un générateur et d&rsquo;un discriminateur. De plus, un extracteur de caractéristiques renforce la représentation globale. La compétition entre le générateur (qui tente de tromper) et le discriminateur (qui tente de détecter les faux) guide la génération d&rsquo;images NIR de haute fidélité.</p>
<h4 align="justify">Détails de l&rsquo;architecture Pix2Next :</h4>
<p align="justify"><strong>Générateur :</strong> une architecture Encodeur–Goulot d&rsquo;étranglement–Décodeur prend une image RGB en entrée et produit une image NIR en sortie. L&rsquo;encodeur utilise des blocs résiduels et des couches de sous-échantillonnage. L&rsquo;objectif est de réduire progressivement les dimensions spatiales tout en extrayant les caractéristiques essentielles. Ces caractéristiques compressées atteignent le goulot d&rsquo;étranglement : trois blocs résiduels représentant l&rsquo;image à sa résolution la plus basse. Le décodeur utilise ensuite des blocs résiduels et des couches de sur-échantillonnage pour restaurer la résolution spatiale.</p>
<p align="justify"><strong>L&rsquo;attention croisée</strong> permet aux caractéristiques de l&rsquo;encodeur et du décodeur d&rsquo;interagir avec la représentation globale de la scène provenant de l&rsquo;extracteur. Cela améliore grandement la cohérence de la sortie NIR finale.</p>
<p align="justify"><strong>Extracteur :</strong> capture la sémantique de haut niveau de l&rsquo;entrée RGB en utilisant des architectures de vision puissantes telles que ViT, SwinV2 ou InternImage. Il produit une représentation globale qui agit comme un résumé sémantique de l&rsquo;image. Cela améliore la qualité de la génération NIR.</p>
<p align="justify"><strong>Discriminateur :</strong> évalue le réalisme des images NIR générées en les comparant avec la vérité terrain NIR réelle. Il opère à plusieurs échelles (D1, D2, D3). Cela permet l&rsquo;évaluation de la qualité de l&rsquo;image depuis les détails fins (haute résolution) jusqu&rsquo;aux structures globales (basse résolution).</p>
<h3 class="western" align="justify">Génération de données de profondeur</h3>
<p align="justify">Nous utilisons deux modèles complémentaires :</p>
<ul>
<li>
<p align="justify"><strong>ZoeDepth :</strong> estimation de profondeur absolue, directement corrélée à la distance capteur-objet.</p>
</li>
<li>
<p align="justify"><strong>DepthAnythingV2 :</strong> estimation de profondeur relative, décrivant la structure de la scène indépendamment de l&rsquo;échelle.</p>
</li>
</ul>
<p>ZoeDepth est une architecture conçue pour générer des cartes de profondeur absolue à partir d&rsquo;une seule image RGB. La profondeur absolue est la distance réelle entre l&rsquo;objet et la caméra. Elle répond à une limitation majeure des modèles classiques d&rsquo;estimation de profondeur. En effet, elle fournit des mesures directement utilisables dans des applications critiques telles que la robotique ou la navigation autonome. Aperçu du modèle Zoe :</p>
<p><img class="aligncenter wp-image-14538 size-large" src="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/Zoe-1024x235.png" alt="Synthetic LiDAR data generation for depth estimation based on COCO dataset with Zoe and DepthAnythingV2 models." width="1024" height="235" srcset="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/Zoe-1024x235.png 1024w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/Zoe-300x69.png 300w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/Zoe-768x176.png 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></p>
<p align="justify">Son architecture comprend deux composants : (1) une structure encodeur-décodeur qui capture la profondeur relative, et (2) un module d&rsquo;intervalles métriques &#8211; Metric Bins Module qui convertit celle-ci en profondeur absolue.</p>
<h4 align="justify">Détails de l&rsquo;architecture Zoe :</h4>
<p align="justify"><strong>Encodeur-décodeur :</strong> l&rsquo;encodeur, basé sur des architectures puissantes telles que BEiT ou SwinV2, extrait les caractéristiques clés. Le décodeur reconstruit une carte de profondeur relative (ordre des objets : qui est devant), en utilisant des connexions résiduelles pour préserver la fidélité des détails.</p>
<p align="justify"><strong>Module d&rsquo;intervalles métriques :</strong> au lieu de prédire une seule distance, le module estime pour chaque pixel une distribution de probabilité sur des intervalles de distance prédéfinis (intervalles). Cela fournit une référence pour l&rsquo;échelle du monde réel. Il fusionne ensuite cette information avec des indices structurels de la carte de profondeur relative en utilisant la convolution et une fonction de sortie dédiée.</p>
<p align="justify">Bien que la profondeur absolue s&rsquo;aligne mieux avec les exigences de navigation et d&rsquo;évitement d&rsquo;obstacles, la profondeur relative peut fournir de précieux indices structurels. L&rsquo;objectif est d&rsquo;évaluer si la combinaison de ces modalités améliore la robustesse et la généralisation, en particulier dans des environnements non vus.</p>
<p align="justify"><strong>Nettoyage du jeu de données :</strong> la génération de données LiDAR synthétiques pour la détection en temps réel peut conduire à certains échantillons inutilisables. Par exemple, des sorties complètement noires causées par des problèmes de normalisation lors du traitement ZoeDepth, un problème connu. Une étape de post-traitement filtre automatiquement ces échantillons pour garantir un jeu de données cohérent et utilisable.</p>
<h2 class="western" align="justify">Adaptation Finale du Jeu de Données : Classes et Cibles de Détection</h2>
<p align="justify">Le jeu de données COCO contient 80 classes, dont beaucoup ne sont pas pertinentes pour certaines applications spécifiques (animaux, catégories alimentaires). Pour concentrer l&rsquo;entraînement sur des catégories cohérentes pour nos applications, nous avons réduit les labels et généré deux jeux de données :</p>
<ol>
<li>
<p align="justify">Jeu de données 10 classes : [personne ; banc ; sac à dos ; bouteille ; tasse ; chaise ; tv ; ordinateur portable ; téléphone portable ; livre]</p>
</li>
<li>
<p align="justify">Jeu de données classe unique : [personne]</p>
</li>
</ol>
<p align="justify">L&rsquo;équilibrage des classes est un facteur critique influençant les performances et la robustesse des modèles de vision par ordinateur. Les classes sous-représentées tendent à être ignorées pendant l&rsquo;entraînement. La conséquence est le sur-apprentissage du modèle des classes dominantes. Ainsi, la capacité de généralisation est réduite. Assurer des données équilibrées lors d&rsquo;une génération de données LiDAR synthétiques peut améliorer significativement le résultat des étapes suivantes. Par exemple, atténuer le déséquilibre par sur-échantillonnage, augmentation ciblée ou pondération de la perte, améliore la stabilité d&rsquo;entraînement et les performances globales. Les deux figures suivantes illustrent le résultat de l&rsquo;augmentation de données effectuée sur le jeu de données 10 classes, avec augmentation de données à gauche et sans à droite.</p>
<table>
<tbody>
<tr>
<td><img class="alignnone wp-image-14633 size-large" src="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/distribution_classes_augmented-e1767194159265-1024x506.jpeg" alt="Synthetic LiDAR data generation for depth estimation based on COCO dataset with Zoe and DepthAnythingV2 models. Balancing classes with data augmentation." width="1024" height="506" srcset="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/distribution_classes_augmented-e1767194159265-1024x506.jpeg 1024w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/distribution_classes_augmented-e1767194159265-300x148.jpeg 300w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/distribution_classes_augmented-e1767194159265-768x380.jpeg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></td>
<td><img class="alignnone wp-image-14634 size-large" src="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/distribution_classes_unbalanced-e1767194174287-1024x508.jpeg" alt="Synthetic LiDAR data generation for depth estimation based on COCO dataset with Zoe and DepthAnythingV2 models. Balancing classes with data augmentation." width="1024" height="508" srcset="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/distribution_classes_unbalanced-e1767194174287-1024x508.jpeg 1024w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/distribution_classes_unbalanced-e1767194174287-300x149.jpeg 300w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/12/distribution_classes_unbalanced-e1767194174287-768x381.jpeg 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></td>
</tr>
</tbody>
</table>
<p align="justify">Le prochain article de cette série, « <a href="https://blog.savoirfairelinux.com/fr-ca/2026/detection-temps-reel-systeme-lidar-entrainement/"><strong>Détection Temps Réel Système LiDAR : YOLO pour l’Edge AI</strong> </a> », décrit l&rsquo;exploitation de ces jeux de données synthétiques pour entraîner le modèle de détection d&rsquo;objets YOLO.</p>
Check out blogsfl<p>The post <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca/2026/generation-donnees-lidar-synthetiques-detection-temps-reel/">Génération de données LiDAR synthétiques pour Détection Temps Réel</a> appeared first on <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca">Blogue de Savoir-faire LInux</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://blog.savoirfairelinux.com/fr-ca/2026/generation-donnees-lidar-synthetiques-detection-temps-reel/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Accélérer le démarrage précoce de Linux avec Yocto multiconfig (Objets Connectés et Ingénierie Produits)</title>
		<link>https://blog.savoirfairelinux.com/fr-ca/2026/accelerer-le-demarrage-precoce-de-linux-avec-yocto-multiconfig/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=accelerer-le-demarrage-precoce-de-linux-avec-yocto-multiconfig</link>
				<comments>https://blog.savoirfairelinux.com/fr-ca/2026/accelerer-le-demarrage-precoce-de-linux-avec-yocto-multiconfig/#respond</comments>
				<pubDate>Thu, 08 Jan 2026 14:50:19 +0000</pubDate>
		<dc:creator><![CDATA[pleguendekerneizon]]></dc:creator>
				<category><![CDATA[Objets Connectés et Ingénierie Produits]]></category>
		<category><![CDATA[bitbake]]></category>
		<category><![CDATA[BootTime]]></category>
		<category><![CDATA[embedded]]></category>
		<category><![CDATA[embedded linux]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[yocto]]></category>

		<guid isPermaLink="false">https://blog.savoirfairelinux.com/fr-ca/?p=14651</guid>
				<description><![CDATA[<p>This post was written by blogsfl This post was written by blogsfl Accélérer le démarrage précoce de Linux avec Yocto multiconfig De Paul Le Guen de Kerneizon Introduction Dans les produits embarqués, il est souvent essentiel de gagner quelques secondes, voire quelques centaines de millisecondes, entre la mise sous tension et la disponibilité de l&#8217;application. Dans cet article, je vais présenter [&#8230;]Check out blogsfl</p>
<p>The post <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca/2026/accelerer-le-demarrage-precoce-de-linux-avec-yocto-multiconfig/">Accélérer le démarrage précoce de Linux avec Yocto multiconfig</a> appeared first on <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca">Blogue de Savoir-faire LInux</a>.</p>
]]></description>
								<content:encoded><![CDATA[This post was written by blogsfl <h1>Accélérer le démarrage précoce de Linux avec Yocto multiconfig</h1>
<p><em>De Paul Le Guen de Kerneizon</em></p>
<h2>Introduction</h2>
<p>Dans les produits embarqués, il est souvent essentiel de gagner quelques secondes, voire quelques centaines de millisecondes, entre la mise sous tension et la disponibilité de l&rsquo;application. Dans cet article, je vais présenter un workflow pratique pour mesurer, comparer et réduire de manière itérative la fenêtre de démarrage précoce d&rsquo;un système Linux embarqué, en se limitant au noyau et à la partie initramFS. Nous utiliserons le projet Yocto, et en particulier la fonctionnalité multiconfig de BitBake.</p>
<p><span style="color: #999999;"> [L’introduction est en français, le reste du texte en anglais]</span></p>
<h2>Setting the context</h2>
<p>Nowadays, modern embedded system boot sequence share the same boot-up sequence:</p>
<p><img class="wp-image-12530 aligncenter" src="https://blog.savoirfairelinux.com/en-ca/wp-content/uploads/sites/2/2026/01/boottime-01.png" alt="" width="564" height="123" /></p>
<ul>
<li style="list-style-type: none;">
<ul>
<li>The board firmware looks for any bootable device (USB key, hard drive, etc), and loads a valid Linux bootloader.</li>
<li>The Linux bootloader is configured to load a Linux kernel image, with custom arguments.</li>
<li>Finally, the Linux kernel boots and set up the rootfs.</li>
</ul>
</li>
</ul>
<div class="linkbox"><strong>NOTE:</strong> This schema is voluntary over simplified, and there are many ways to implement how a Linux system boots, depending of your product constraints.</div>
<div></div>
<p>&nbsp;</p>
<div>For this article, I will consider a very simple Linux BSP architecture, using separated initramfs and rootfs images. This kind of layout is interesting to implement security features such as Secure Boot (rootfs authentication before load) and various others (file system check, A/B updates, etc). It applies to any kind of modern architecture (x86, ARM), excluding specific vendor boot sequence.</div>
<p>Our target BSP is composed of the following Yocto images:</p>
<p><img class="wp-image-14665 aligncenter" src="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2026/01/boottime-02.png" alt="" width="383" height="329" srcset="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2026/01/boottime-02.png 2388w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2026/01/boottime-02-300x257.png 300w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2026/01/boottime-02-768x658.png 768w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2026/01/boottime-02-1024x878.png 1024w" sizes="(max-width: 383px) 100vw, 383px" /></p>
<ul>
<li style="list-style-type: none;">
<ul>
<li><strong>lab-image-initramfs:</strong> this image contains the initramfs root file system, that will be responsible of the Linux first stage boot, including the load of the final rootfs. It is a very simple image, based on the core-image-minimal-initramfs image.</li>
<li><strong>lab-image-rootfs:</strong> this image contains the final rootfs, packaged in a read-only file format such as ext4 or squashFS.</li>
<li><strong>lab-image:</strong> this image packages the previous images into a single image, with an embedded Linux bootloader.</li>
</ul>
</li>
</ul>
<h2>InitramFS optimization</h2>
<p>As we saw previously, the initramfs image is loaded by the Linux bootloader. In embedded systems, I/O with devices such as disks are slow, and one of the most time consuming element is the initramfs image loading by the bootloader. So, reducing the size of this image will help to reduce it loading time, and so, the global system boot-time.</p>
<h3>Initial measurements</h3>
<p>We need to establish first what weight the most in the generated initramfs image. To do so, we are going to use the Bitbake buildhistory feature allowing to give some metrics about the contents of our generated image. It can be enabled by adding these lines in your distro file:</p>
<div class="linkbox"><code># Active buildhistory</code><br />
<code>INHERIT += "buildhistory"</code><br />
<code>BUILDHISTORY_COMMIT = "1"</code></div>
<div></div>
<p>After building initramfs image, buildhistory has been generated:</p>
<div class="linkbox"><span style="color: #69b5cf;"><code>build/buildhistory/images/lab/glibc/lab-initramfs-image<br />
├── build-id.txt<br />
├── depends.dot<br />
├── depends-nokernel.dot<br />
├── depends-nokernel-nolibc.dot<br />
├── depends-nokernel-nolibc-noupdate.dot<br />
├── depends-nokernel-nolibc-noupdate-nomodules.dot<br />
├── files-in-image.txt<br />
├── image-files<br />
│   └── etc<br />
│   ├── group<br />
│   └── passwd<br />
├── image-info.txt<br />
├── installed-package-info.txt<br />
├── installed-package-names.txt<br />
├── <strong>installed-package-sizes.txt</strong><br />
└── installed-packages.txt</code></span></div>
<div></div>
<p>We are interested in by the <strong>installed-package-sizes.txt</strong> file. It contains the size of each installed package in the initramfs image, sorted by weight:</p>
<div class="linkbox"><code>├14450 KiB grub-common<br />
5221 KiB libcrypto3<br />
4254 KiB libc6<br />
3301 KiB grub<br />
2774 KiB udev<br />
...</code></div>
<div></div>
<p>Using an awk command we can get the total size of our initramfs image:</p>
<div class="linkbox"><code>$ awk '{sum += $1} END {print sum}'installed-package-sizes.txt<br />
38689</code></div>
<p>Here, the size of our image is about 39MiB.<br />
To measure the boot-time on the target we highly recommend, if possible, to get the boot serial output and use the minicom timestamp feature.</p>
<div class="linkbox"><code>$ minicom -D /dev/ttyS0 -b 115200 -8 -O timestamp=extended</code></div>
<div></div>
<p>&nbsp;</p>
<div class="linkbox"><strong>NOTE:</strong> we don’t recommend using printk timestamps as an accurate method to measure boot-time, as printk call themselves increase boot-time, and these timestamps are not available outside the kernel load (e.g. during initramfs load).</div>
<div></div>
<h3>List of Initramfs optimizations</h3>
<p>On a first glance, we could interpret that there are not that much to optimize in our initramfs image, specially because it is already well minimized by the core-image-minimal-initramfs image. But some optimization can be implemented that can make the difference:</p>
<ul>
<li style="list-style-type: none;">
<ul>
<li>Changing the default C library from glib to musl library.</li>
<li>Changing the default initmanager from sysvinit to busybox-mdev.</li>
<li>Removing any additional unused packages.</li>
</ul>
</li>
</ul>
<h3>Introducing Bitbake multiconfig feature</h3>
<p>By default, a single Bitbake command can only build an image with a single configuration (distro, machine). Since the Langdale release of the Yocto Project, the multiconfig feature allows to easily apply different configuration within a single distro, for multiple images.<br />
In our case, we would like to use the musl library and eudev init manager only for the<strong> lab-image-initramfs</strong> image, and not the rootfs image.</p>
<h4>Setup a basic multiconfig</h4>
<p>First, you need to add a new folder named “multiconfig” in the “conf” directory of your layer. In this folder, add a new file with the name of your multiconfig, in our example “mclabinitramfs”.</p>
<div class="linkbox"><code>sources/meta-lab-distro/<br />
├── conf<br />
│   ├── distro<br />
│   │   └── lab.conf<br />
│   ├── layer.conf<br />
│   └── <strong>multiconfig</strong><br />
│   └── <strong>mclabinitramfs.conf</strong></code></div>
<p>&nbsp;</p>
<div class="linkbox"><strong>NOTE:</strong> For the moment you can keep this file empty.</div>
<p>Now in your distro file (here lab.conf), add the following line:</p>
<div class="linkbox"><code>BBMULTICONFIG = "mclabinitramfs"</code></div>
<p>We now have a basic multiconfig implementation, which currently does nothing.</p>
<h4>Link the multiconfig to the initramfs</h4>
<p>The usecase of the multiconfig here is to apply specific configuration boundared only to the lab-image-initramfs image. So we need to tell to Bitbake this dependency. To do so, add the following lines in your distro file (here lab.conf):</p>
<div class="linkbox"><code>INITRAMFS_NAME = "lab-image-initramfs"<br />
INITRAMFS_MULTICONFIG = "mclabinitramfs"<br />
INITRAMFS_DEPLOY_DIR_IMAGE = "${TOPDIR}/mclabinitramfs/deploy/images/${MACHINE}"</code></div>
<p>These lines specify two things:</p>
<ul>
<li style="list-style-type: none;">
<ul>
<li>INITRAMFS: the name of the initramfs used.</li>
<li>INITRAMFS_MULTICONFIG: tells to Bitbake that the kernel must be bundled with an initramfs image using a specific multiconfig and not the default one.</li>
<li>INITRAMFS_DEPLOY_DIR_IMAGE: the location where all the initramfs artifacts (images, etc) should be deployed.</li>
</ul>
</li>
</ul>
<div class="linkbox"><strong>NOTE:</strong> Make sure your build system does not set a static deploy directory! When using multiconfig, Bitbake dynamically change the value of the DEPLOY_DIR variable depending the configuration used for a package. Indeed, some package will now be built twice (one for the default configuration, the other for our mclabinitramfs config). Using a static deploy dir value could cause Bitbake to be confused if files appears in both within the deploy directory.</div>
<h3>Optimization</h3>
<h4>Use musl libray</h4>
<p>musl is a C library for the Linux kernel. The main advantage of the musl library is that packages compiled with it are much lighter compared to packages build with glibc. However not all packages are compatible with musl library, especially for systemd, where musl support is still <a href="https://www.phoronix.com/news/systemd-musl-libc">experimental</a>. This is why I don’t recommend to use for all the images, in particular the rootfs image.</p>
<p>Back to our multiconfig, musl library can be enabled using the <a href="https://docs.yoctoproject.org/5.0.14/singleindex.html#term-TCLIBC">TCLIBC</a> variable, set in the sources/meta-lab-distro/conf/multiconfig/mclabinitramfs.conf file:</p>
<div class="linkbox"><code>TCLIBC = "musl"</code></div>
<div></div>
<h4>Use a lighter init manager</h4>
<p>By default, Bitbake uses <a href="https://docs.yoctoproject.org/5.0.14/singleindex.html#term-INIT_MANAGER">sysvinit</a> as the default initialization manager. It is great, but it can be easily improved by using mdev-busybox which is lighter compared to sysvinit. To use it, simply add these lines in the sources/meta-lab-distro/conf/multiconfig/mclabinitramfs.conf file:</p>
<div class="linkbox"><code>INIT_MANAGER:libc-musl = "mdev-busybox"<br />
VIRTUAL-RUNTIME_init_manager:libc-musl = "busybox"<br />
# Needed only if your distro uses systemd<br />
DISTRO_FEATURES:remove:libc-musl = "systemd"</code></div>
<h4>Additional optimizations</h4>
<p>To reduce further the size of the initramfs image, additional optimizations can be implemented, but are less applicable:</p>
<ul>
<li style="list-style-type: none;">
<ul>
<li>Use sh instead of bash as command interpreter, as sh is lighter compared to bash. Initramfs scripts are written using sh syntax, but keep in mind that you might need to convert your own script to the sh syntax if needed.</li>
<li>Kernel configuration minimization (unneeded file systems, etc)</li>
</ul>
</li>
</ul>
<h3>Final results</h3>
<p>With these optimizations, if we compute the size of the initramfs image, we get now a size of 29MiB, and so a reduction of 25%!<br />
Now regarding the real result on target, it will also depends of the hardware used (CPU, disk type, etc). <strong>On our internal tests, on an ARM target we achieved to get 1.2s of boot-time reduction during initramfs image loading.</strong></p>
Check out blogsfl<p>The post <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca/2026/accelerer-le-demarrage-precoce-de-linux-avec-yocto-multiconfig/">Accélérer le démarrage précoce de Linux avec Yocto multiconfig</a> appeared first on <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca">Blogue de Savoir-faire LInux</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://blog.savoirfairelinux.com/fr-ca/2026/accelerer-le-demarrage-precoce-de-linux-avec-yocto-multiconfig/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>VulnScout: The Easy-to-Use Tool for Securing Embedded Systems and Staying Compliant (Objets Connectés et Ingénierie Produits)</title>
		<link>https://blog.savoirfairelinux.com/fr-ca/2025/vulnscout-the-easy-to-use-tool-for-securing-embedded-systems-and-staying-compliant/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=vulnscout-the-easy-to-use-tool-for-securing-embedded-systems-and-staying-compliant</link>
				<comments>https://blog.savoirfairelinux.com/fr-ca/2025/vulnscout-the-easy-to-use-tool-for-securing-embedded-systems-and-staying-compliant/#respond</comments>
				<pubDate>Wed, 01 Oct 2025 14:34:13 +0000</pubDate>
		<dc:creator><![CDATA[Savoir-faire Linux]]></dc:creator>
				<category><![CDATA[Objets Connectés et Ingénierie Produits]]></category>
		<category><![CDATA[CRA]]></category>
		<category><![CDATA[CycloneDX]]></category>
		<category><![CDATA[SBOM]]></category>
		<category><![CDATA[SPDX]]></category>
		<category><![CDATA[Vulnscout]]></category>
		<category><![CDATA[VulnScout.io]]></category>
		<category><![CDATA[yocto]]></category>

		<guid isPermaLink="false">https://blog.savoirfairelinux.com/fr-ca/?p=14515</guid>
				<description><![CDATA[<p>This post was written by blogsfl This post was written by blogsfl Dans le monde actuel, où tout, des machines à café aux équipements industriels, est connecté au réseau, connaître et évaluer la sécurité de vos logiciels et de leurs dépendances n’a jamais été aussi crucial. La plupart des vulnérabilités proviennent de petits bogues dans des composants logiciels, et plus récemment [&#8230;]Check out blogsfl</p>
<p>The post <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca/2025/vulnscout-the-easy-to-use-tool-for-securing-embedded-systems-and-staying-compliant/">VulnScout: The Easy-to-Use Tool for Securing Embedded Systems and Staying Compliant</a> appeared first on <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca">Blogue de Savoir-faire LInux</a>.</p>
]]></description>
								<content:encoded><![CDATA[This post was written by blogsfl <p data-start="63" data-end="623">Dans le monde actuel, où tout, des machines à café aux équipements industriels, est connecté au réseau, connaître et évaluer la sécurité de vos logiciels et de leurs dépendances n’a jamais été aussi crucial. La plupart des vulnérabilités proviennent de petits bogues dans des composants logiciels, et plus récemment (bien que plus rarement) d’attaques sophistiquées sur la chaîne d’approvisionnement. Mais dès lors que les appareils sont exposés à Internet, ces bogues peuvent devenir des portes d’entrée pour des attaquants situés à l’autre bout du monde.</p>
<p data-start="625" data-end="1078">Les systèmes modernes reposent également sur une large base de composants open source : bibliothèques, noyaux, outils de compilation et dépendances tierces qui constituent une part importante de l’image finale du firmware. Si l’open source accélère l’innovation et permet de mutualiser les coûts de développement, il introduit aussi un flux continu de mises à jour en amont et de divulgations de vulnérabilités que les équipes doivent suivre et gérer.</p>
<p data-start="1080" data-end="1547">Les SBOMs (Software Bill of Materials) se sont imposés comme une bonne pratique pour rendre transparente la composition logicielle. Toutefois, l’analyse des SBOMs à la recherche de vulnérabilités est souvent plus difficile qu’elle ne devrait l’être, en particulier dans les environnements embarqués, où de nombreux concepteurs de produits manquent d’expertise en cybersécurité et des ressources nécessaires pour réaliser des audits complets sans outils automatisés.</p>
<p data-start="1549" data-end="2027">De plus, le Cyber Resilience Act (CRA) de l’Union Européenne impose aux fabricants de produits connectés avec des éléments numériques de créer et maintenir une <em data-start="1709" data-end="1737">Software Bill of Materials</em> documentant les composants et vulnérabilités, et servant de base à un suivi continu à mesure que de nouveaux problèmes émergent. Bien que la divulgation publique ne soit pas obligatoire, les fabricants doivent fournir ces informations aux autorités de surveillance du marché sur demande.</p>
<p data-start="2029" data-end="2223">C’est pourquoi nous avons créé <strong data-start="2060" data-end="2073">VulnScout</strong> : pour aider les organisations à répondre à leurs besoins en matière de sécurité et de conformité pour les systèmes embarqués qu’elles développent.</p>
<p data-start="2225" data-end="2852"><strong data-start="2225" data-end="2429">VulnScout est un scanner de vulnérabilités basé sur les SBOMs, conçu pour être convivial pour les développeurs et simple à intégrer avec Yocto, Buildroot et la plupart des systèmes générant des SBOMs.</strong> Il prend en charge les formats SPDX, CycloneDX et OpenVEX, ce qui permet une détection et une exploration simplifiées des vulnérabilités au niveau de la compilation, avec un minimum de configuration et de mise en place. Il comble ainsi le fossé entre les outils de cybersécurité et le développement logiciel au quotidien, notamment dans les projets comportant des dizaines voire des centaines de dépendances open source.</p>
<p><span style="color: #999999"> [L’introduction est en français, le reste du texte en anglais]</span></p>
<hr />
<h2 class="western">Limitations of Current SBOM Scanners</h2>
<p>Many existing tools are excellent at what they do, but they often come with trade-offs that limit their usefulness as a single source of truth for project-level vulnerability assessment:</p>
<ul>
<li>Grype is powerful and lightweight but lacks fix tracking or SBOM enrichment.</li>
<li>Dependency-Track provides a full-featured dashboard but requires centralized infrastructure with a server and database setup.</li>
<li>Anchore’s tools focus on containerized environments and cloud-native workflows.</li>
</ul>
<p>But what if you just want to:</p>
<ul>
<li>Scan SBOM files generated by Yocto, Buildroot, or any existing build system or distribution</li>
<li>Merge results from SPDX, CycloneDX, or Yocto outputs</li>
<li>Explore, sort, filter, track, and document what’s fixed vs. what’s still a risk, including which open-source components are still vulnerable</li>
<li>Do all of this from a web-based interface, without setting up a server</li>
</ul>
<p>That’s where VulnScout comes in.</p>
<h2 class="western">What Sets VulnScout Apart</h2>
<p>Unlike many other tools that require a persistent web and database infrastructure, VulnScout is fully self-contained. It runs locally, stores its state within your project repository, and integrates directly with your build system, making CVE assessments version-controlled and part of your release process.</p>
<p>VulnScout helps teams keep track of which components are vulnerable, which ones have been fixed, and which ones still need attention. This history is preserved in the repository, making it part of your engineering workflow and auditable over time.</p>
<p>While other solutions are tightly coupled to specific data formats, VulnScout is format-agnostic and supports SPDX 2.x, SPDX 3.0, CycloneDX, and OpenVEX out of the box, eliminating the need for format conversion. VulnScout can also act as a conversion and reporting tool, allowing you to transform SBOM inputs into:</p>
<ul>
<li>Structured SBOMs</li>
<li>Human-readable reports (PDF, text, HTML)</li>
<li>CLI summaries for quick CI/CD integration</li>
</ul>
<p>This makes it ideal for both automated builds and preparing audit documentation, especially when you need to demonstrate how you’ve addressed vulnerabilities across your open-source dependencies.</p>
<h2 class="western">How VulnScout Works</h2>
<p>Instead of analyzing binaries or source code directly, VulnScout focuses on SBOM inputs. It consumes formats like SPDX, CycloneDX, Grype JSON, and Yocto CVE-check JSON, enriching them with data from:</p>
<ul>
<li>NVD (National Vulnerability Database)</li>
<li>EPSS (Exploit Prediction Scoring System)</li>
<li>OSV (Open Source Vulnerabilities) (coming soon)</li>
<li>Grype-compatible data sources</li>
<li style="text-align: left">Vulnerability information already embedded in the SBOM files</li>
</ul>
<p style="text-align: center"><a href="https://youtu.be/CV1QhejUI5s"><img class="wp-image-12485 aligncenter" src="https://blog.savoirfairelinux.com/en-ca/wp-content/uploads/sites/2/2025/09/ezgif-81e8371abc7493.gif" alt="" width="774" height="435" /><span style="color: #999999">Click to open the video</span></a></p>
<p>Once scanned, VulnScout generates:</p>
<ul>
<li>Rich web-based dashboards</li>
<li>Extended reporting in PDF, CSV, and text</li>
<li>Structured output files (SPDX, CycloneDX, OpenVEX)</li>
<li>CLI summaries for quick integration</li>
<li>CI alerts based on filters (for example: a new vulnerability with EPSS score &gt; 7.0)</li>
</ul>
<p style="text-align: left">It is designed to run locally, either plugged into a Yocto or Buildroot setup or via a Docker container, and can be triggered with a single script (<code class="western">vulnscout.sh</code>) or a Yocto layer (<code class="western">meta-vulnscout</code>). This workflow allows you to continuously monitor open-source components as part of every build, catching regressions and new disclosures early.</p>
<p style="text-align: center"><a href="https://youtu.be/_u5DeXN9IQA"><img class=" wp-image-12487 aligncenter" src="https://blog.savoirfairelinux.com/en-ca/wp-content/uploads/sites/2/2025/09/ezgif-810416515a17e3.gif" alt="" width="760" height="428" /><span style="color: #999999">Click to open the video</span></a></p>
<h2 class="western">Try VulnScout</h2>
<p>You can get started with VulnScout in just a few minutes.<br />
Check out the <a href="https://github.com/savoirfairelinux/vulnscout" target="_new" rel="noopener noreferrer">VulnScout GitHub repository</a> for installation instructions, examples, and quick-start guides. If you use Yocto, check out <a href="https://github.com/savoirfairelinux/meta-vulnscout">meta-vulnscout,</a> allowing for seamless integration with your image recipes.</p>
<p>Run it locally or in your CI pipeline to keep your open-source components under continuous watch and stay ahead of new vulnerabilities.</p>
Check out blogsfl<p>The post <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca/2025/vulnscout-the-easy-to-use-tool-for-securing-embedded-systems-and-staying-compliant/">VulnScout: The Easy-to-Use Tool for Securing Embedded Systems and Staying Compliant</a> appeared first on <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca">Blogue de Savoir-faire LInux</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://blog.savoirfairelinux.com/fr-ca/2025/vulnscout-the-easy-to-use-tool-for-securing-embedded-systems-and-staying-compliant/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Déployer un réseau de neurones artificiels convolutionnels sur un système embarqué (Objets Connectés et Ingénierie Produits)</title>
		<link>https://blog.savoirfairelinux.com/fr-ca/2025/deployer-un-reseau-de-neurones-artificiels-convolutionnels-sur-un-systeme-embarque/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=deployer-un-reseau-de-neurones-artificiels-convolutionnels-sur-un-systeme-embarque</link>
				<comments>https://blog.savoirfairelinux.com/fr-ca/2025/deployer-un-reseau-de-neurones-artificiels-convolutionnels-sur-un-systeme-embarque/#respond</comments>
				<pubDate>Thu, 18 Sep 2025 02:39:17 +0000</pubDate>
		<dc:creator><![CDATA[sdeljam]]></dc:creator>
				<category><![CDATA[Objets Connectés et Ingénierie Produits]]></category>
		<category><![CDATA[systèmes embarqués]]></category>
		<category><![CDATA[yocto]]></category>

		<guid isPermaLink="false">https://blog.savoirfairelinux.com/fr-ca/?p=14421</guid>
				<description><![CDATA[<p>This post was written by blogsfl This post was written by blogsfl Déployer un réseau de neurones artificiels convolutionnels sur un système embarqué Introduction L’essor des plateformes embarquées capables de traitement IA a profondément changé la donne : il est désormais possible de déployer des solutions intelligentes sur l’équipement lui-même, sans dépendre du cloud. C’est ce qu’on appelle l’« edge AI [&#8230;]Check out blogsfl</p>
<p>The post <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca/2025/deployer-un-reseau-de-neurones-artificiels-convolutionnels-sur-un-systeme-embarque/">Déployer un réseau de neurones artificiels convolutionnels sur un système embarqué</a> appeared first on <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca">Blogue de Savoir-faire LInux</a>.</p>
]]></description>
								<content:encoded><![CDATA[This post was written by blogsfl <h2 data-pm-slice="0 0 []">Déployer un réseau de neurones artificiels convolutionnels sur un système embarqué</h2>
<h3>Introduction</h3>
<p>L’essor des plateformes embarquées capables de traitement IA a profondément changé la donne : il est désormais possible de déployer des solutions intelligentes sur l’équipement lui-même, sans dépendre du cloud. C’est ce qu’on appelle l’« edge AI ».</p>
<p>Lors d’un récent projet, nous avons exploré comment déployer un système de détection d’objets en temps réel à l’aide d’un modèle de vision par ordinateur sur une carte <strong>Verdin NXP i.MX 8M Plus</strong>, une cible populaire grâce à son unité de traitement neuronal (NPU) intégrée.</p>
<p>Cet article partage notre retour d’expérience technique : depuis la conversion des modèles jusqu’à leur intégration dans une image Yocto, en passant par les compromis nécessaires pour atteindre des performances en temps réel avec des résultats satisfaisants.</p>
<div>
<hr />
</div>
<h3>Contexte et objectif</h3>
<p><a href="https://icortechnology.com/fr/">ICOR Technology</a> conçoit et fabrique des robots, outils et équipements innovants et de haute qualité pour les communautés EOD et SWAT à travers le monde. Les utilisateurs peuvent piloter les robots ICOR à distance via une unité de commande et de contrôle, qui affiche en temps réel les flux vidéo provenant des caméras du robot.</p>
<p>L’objectif du projet était de concevoir une démonstration de <strong>navigation robotique assistée par la vision</strong>, reposant sur un modèle de détection d’objets en temps réel comme le montre le schéma ci-dessous.</p>
<p><img class=" wp-image-14481 aligncenter" src="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/computer_vision_v3-300x212.png" alt="" width="656" height="463" srcset="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/computer_vision_v3-300x212.png 300w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/computer_vision_v3-768x543.png 768w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/computer_vision_v3-1024x724.png 1024w" sizes="(max-width: 656px) 100vw, 656px" /></p>
<p>Les principaux objectifs étaient :</p>
<ul data-spread="false">
<li>Traitement à <strong>30 images par seconde</strong></li>
<li>Exécution sur une cible <strong>embarquée basse consommation</strong></li>
<li>Usage d’un modèle pré-entraîné de type <strong>YOLOv8</strong> (You Only Look Once)</li>
<li><strong>Détection d&rsquo;objets génériques</strong> (personnes, chaises, etc&#8230;), <strong>détection de visages</strong> et <strong>détection d’éléments de navigation</strong> (portes, escaliers, fenêtres)</li>
<li>Intégration complète dans une image <strong>Linux Yocto</strong></li>
</ul>
<p>Nous avons choisi de travailler avec le <strong>System on Module (SoM) Verdin i.MX 8M Plus</strong>, qui combine CPU, GPU, VPU et NPU dans un format adapté aux applications industrielles.</p>
<div>
<hr />
</div>
<h3>Plateforme matérielle</h3>
<p>Le <a href="https://www.toradex.com/computer-on-modules/verdin-arm-family/nxp-imx-8m-plus"><strong>Verdin NXP i.MX 8M Plus</strong></a>, co-développé par <a href="https://www.nxp.com/"><strong>NXP</strong></a> et intégré sur une carte conçue par <a href="https://www.toradex.com/"><strong>Toradex</strong></a>, offre un bon compromis pour le traitement de l’IA embarquée :<br />
<img class="size-medium wp-image-14482 aligncenter" src="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/verdin_imx8mp-300x218.png" alt="" width="300" height="218" srcset="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/verdin_imx8mp-300x218.png 300w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/verdin_imx8mp.png 600w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<ul data-spread="false">
<li><strong>CPU</strong> : 4 cœurs Cortex-A53 à 1.8 GHz</li>
<li><strong>GPU</strong> : Jusqu&rsquo;à 16 GFLOPS</li>
<li><strong>NPU</strong> : Jusqu’à 2.3 TOP/s</li>
<li><strong>VPU</strong> : Encodeur/décodeur matériel pour la vidéo (H.264/H.265)</li>
</ul>
<p>Ce matériel permet d’accélérer les inférences IA, tout en restant dans les contraintes d’encombrement, de dissipation thermique et de consommation des systèmes embarqués.</p>
<div>
<hr />
</div>
<h3>TensorFlow et TensorFlow Lite</h3>
<p><img class="size-medium wp-image-14484 aligncenter" src="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/TensorFlow_logo.svg_-300x192.png" alt="" width="300" height="192" srcset="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/TensorFlow_logo.svg_-300x192.png 300w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/TensorFlow_logo.svg_-768x491.png 768w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/TensorFlow_logo.svg_-1024x655.png 1024w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p data-start="94" data-end="489"><a href="https://www.tensorflow.org/?hl=fr"><strong data-start="94" data-end="108">TensorFlow</strong></a> est une bibliothèque open source développée par Google, largement utilisée dans le domaine du machine learning et de l’intelligence artificielle. Elle fournit une infrastructure complète pour l’entraînement et le déploiement de modèles de réseaux de neurones, avec un large écosystème d’outils et de ressources qui en font une référence pour la recherche comme pour l’industrie.</p>
<p data-start="491" data-end="966"><strong data-start="491" data-end="519"><a href="https://www.tensorflow.org/lite/guide?hl=fr">TensorFlow Lite</a> (TFLite)</strong> est une déclinaison de TensorFlow spécialement conçue pour les environnements contraints comme les systèmes embarqués et les appareils mobiles. Il permet d’exécuter des modèles optimisés en réduisant leur taille et leur consommation de ressources, tout en profitant d’accélérations matérielles (GPU, NPU, DSP).</p>
<div>
<hr />
</div>
<h3>Yocto</h3>
<p><img class="size-medium wp-image-14485 aligncenter" src="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/Yocto_Project_logo.svg_-300x115.png" alt="" width="300" height="115" srcset="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/Yocto_Project_logo.svg_-300x115.png 300w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/Yocto_Project_logo.svg_-768x294.png 768w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/Yocto_Project_logo.svg_-1024x393.png 1024w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<p data-start="491" data-end="966"><a href="https://www.yoctoproject.org/"><strong data-start="77" data-end="94">Yocto Project</strong></a> est un projet open source qui fournit un ensemble d’outils, de scripts et de couches pour construire des systèmes Linux embarqués personnalisés. Yocto permet de créer des images Linux embarquées optimisées pour des matériels spécifiques. Cela en fait un outil de référence pour les environnements contraints, où l’optimisation de la taille, des performances et de la sécurité est essentielle.</p>
<div>
<hr />
</div>
<h3>Intégration de TensorFlow Lite dans Yocto</h3>
<p>L’environnement Yocto, bien que flexible, demande une configuration rigoureuse pour supporter les bibliothèques de Machine Learning. Voici les étapes clés que nous avons suivies :</p>
<ol start="1" data-spread="false">
<li><strong>Base BSP Toradex</strong> : fournie pour le SoM utilisé</li>
<li>Ajout de la couche <a href="https://github.com/nxp-imx/meta-imx/tree/scarthgap-6.6.23-2.0.0/meta-imx-ml"><strong>meta-imx-ml</strong></a> : elle fournit les recettes pour <code>tensorflow-lite</code>, etc.</li>
<li><strong>Dépendances nécessaires</strong> : <code>opencv</code>, <code>python3-numpy</code>, etc.</li>
<li><strong>Configuration de l’image</strong> : inclusion des paquets nécessaires dans <code>local.conf</code> ou un fichier <code>.bbappend</code></li>
<li><strong>Résolution de conflits</strong> : les couches Yocto pour l’IA ne sont pas toujours alignées, un certain travail d’intégration est requis.</li>
</ol>
<p>En effet, dans les systèmes embarqués, les versions des packages sont fixées. Cependant certains packages peuvent partager des dépendances mais avec des versions différentes, qu&rsquo;il faut donc résoudre.</p>
<div>
<hr />
</div>
<h3>Conversion et quantification du modèle</h3>
<p>Le modèle de détection utilisé <strong><a href="https://yolov8.com/">YOLOv8</a></strong> a été entraîné avec <a href="https://www.ultralytics.com/"><strong>Ultralytics</strong></a>. Nous avons choisi YOLOv8 car c&rsquo;était un modèle d&rsquo;architecture à l&rsquo;état de l&rsquo;art lorsque nous avons commencé ce projet. Il est développé sous <strong>PyTorch</strong>, puis nous avons converti en modèle <strong>TensorFlow Lite</strong> afin d’être compatible avec le NPU du i.MX 8M Plus. La version utilisée était la <strong data-start="131" data-end="139">Nano</strong>, la plus légère de la gamme, choisie afin de respecter la contrainte de temps réel.</p>
<h4>Étapes de conversion :</h4>
<ul data-spread="false">
<li>Conversion <code>.pt</code> (PyTorch) → <code>.onnx</code> (Open Neural Network Exchange) → <code>.tflite</code>(TensorFlow Lite)</li>
<li>Quantification en <strong>int8</strong> : la quantification réduit la taille mémoire des modèles et accélère considérablement leur exécution, tout en assurant leur compatibilité avec le NPU.</li>
<li>Certaines opérations du modèle original n’étant pas supportées dans le format TFLite, nous avons dû <strong>implémenter manuellement les étapes de prétraitement et de post-traitement</strong>, notamment le <strong>Non-Maximum Suppression (NMS)</strong> comme démontré dans le schéma ci-dessous.</li>
</ul>
<p>Le réseau de neurones produit plusieurs détections potentielles pour un même objet. L’algorithme de NMS élimine les détections redondantes en retenant la proposition avec le score de confiance le plus élevé.</p>
<p><img class="wp-image-14503 aligncenter" src="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/nms_r40-212x300.png" alt="" width="440" height="622" srcset="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/nms_r40-212x300.png 212w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/nms_r40-768x1086.png 768w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/nms_r40-724x1024.png 724w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/nms_r40.png 992w" sizes="(max-width: 440px) 100vw, 440px" /></p>
<blockquote><p><img src="https://s.w.org/images/core/emoji/11.2.0/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Le NPU du i.MX 8M Plus n’accepte que les modèles entièrement quantifiés (<code>full integer</code>). Il est donc nécessaire de calibrer les modèles pour assurer leur exécution sur l&rsquo;accélérateur matériel.</p></blockquote>
<div>
<hr />
</div>
<h3>Stratégie multi-réseaux et sélection des résolutions</h3>
<p>Notre application devait couvrir <strong>trois tâches de détection distinctes</strong> :</p>
<ol start="1" data-spread="false">
<li><strong>Détection d’objets génériques</strong> avec le dataset <a href="https://cocodataset.org/#home"><strong>COCO</strong></a></li>
<li><strong>Détection d’éléments de navigation</strong> (portes, escaliers, fenêtres) à partir d’un <strong>dataset spécialisé</strong></li>
<li><strong>Détection de visages</strong> à partir d’un <strong>dataset d’identification faciale</strong></li>
</ol>
<h4>Une première approche centralisée&#8230;</h4>
<p>Dans un premier temps, nous avons tenté d’entraîner un <strong>réseau unique combinant les trois datasets</strong>. Cette approche, bien que séduisante sur le papier, a rapidement montré ses limites en termes de performance. Les raisons sont multiples :</p>
<ul data-spread="false">
<li><strong>Incohérences dans les conventions d’annotation</strong> entre datasets</li>
<li><strong>Nature hétérogène</strong> des images (scènes intérieures, visages, objets du quotidien)</li>
<li><strong>Déséquilibre dans la distribution des labels</strong>, certains étant largement sous-représentés</li>
</ul>
<p>Ci-dessous nous pouvons voir :</p>
<ul>
<li>un exemple d&rsquo;image du dataset de segmentation de COCO avec son annotation : les pixels des objetcs sont colorés dans leur contour.</li>
<li>un montage de plusieurs images du dataset de visages : un visage est une image du dataset et son annotation correspond à toute l&rsquo;image.</li>
</ul>
<p><img class="wp-image-14487 aligncenter" src="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/coco_segmentation-300x180.png" alt="" width="447" height="268" srcset="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/coco_segmentation-300x180.png 300w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/coco_segmentation.png 640w" sizes="(max-width: 447px) 100vw, 447px" /></p>
<p><img class="size-medium wp-image-14488 aligncenter" src="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/dataset_face-300x266.png" alt="" width="300" height="266" srcset="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/dataset_face-300x266.png 300w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/dataset_face-768x680.png 768w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/dataset_face.png 850w" sizes="(max-width: 300px) 100vw, 300px" /></p>
<h4>Vers une approche multi-réseaux spécialisés</h4>
<p>Pour contourner ces limitations, nous avons opté pour une solution plus modulaire : <strong>un réseau de neurones distinct pour chaque tâche</strong>, chacun optimisé avec une <strong>résolution adaptée</strong>. C’était une approche audacieuse, car exécuter trois réseaux de neurones distincts sur un système embarqué limité en ressources constitue un véritable défi technique. Et pourtant, nous avons réussi à le faire fonctionner efficacement en temps réel Notre approche rappelle également le concept d’une architecture <strong>Mixture of Experts</strong>, où différents modèles spécialisés contribuent à résoudre différents aspects d’un problème. Voici les dimensions que nous avons choisies pour les différents jeux de données :</p>
<ul data-spread="false">
<li><strong>COCO</strong> : réseau quantifié à <strong>320×320</strong></li>
<li><strong>Navigation (portes, escaliers, fenêtres)</strong> : <strong>160×160</strong></li>
<li><strong>Visages</strong> : également à <strong>160×160</strong></li>
</ul>
<p>Ce choix nous a permis d’obtenir des <strong>résultats très satisfaisants</strong>, tout en réduisant la charge de calcul. Le tableau et le graphique suivants résument les performances mesurées selon la résolution.</p>
<div>
<hr />
</div>
<h3>Résultats de performance</h3>
<table>
<tbody>
<tr>
<th>Résolution</th>
<th>Temps (ms/image)</th>
<th>FPS estimé</th>
<th>Précision</th>
<th>Rappel</th>
<th>F1-score</th>
</tr>
<tr>
<td>640×640</td>
<td>58 ms</td>
<td>17.2 fps</td>
<td>89.5%</td>
<td>28.2%</td>
<td>0.429</td>
</tr>
<tr>
<td>480×480</td>
<td>34 ms</td>
<td>29.4 fps</td>
<td>90.6%</td>
<td>25.7%</td>
<td>0.400</td>
</tr>
<tr>
<td>320×320</td>
<td>15.5 ms</td>
<td>64.5 fps</td>
<td>91.5%</td>
<td>20.7%</td>
<td>0.338</td>
</tr>
<tr>
<td>160×160</td>
<td>5.3 ms</td>
<td>188.7 fps</td>
<td>90.6%</td>
<td>10.0%</td>
<td>0.180</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p><img class=" wp-image-14491 aligncenter" src="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/performance_courbes-300x204.png" alt="" width="526" height="358" srcset="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/performance_courbes-300x204.png 300w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/09/performance_courbes.png 763w" sizes="(max-width: 526px) 100vw, 526px" /></p>
<p>&nbsp;</p>
<p>Comme on peut le voir dans le tableau et sur le graphique, les résolutions plus faibles permettent un traitement ultra-rapide (faible temps d’inférence ou haut nombre de FPS), ce qui les rend idéales pour des réseaux spécialisés sur des tâches précises, où la perte de précision reste acceptable.</p>
<div>
<hr />
</div>
<h3>Conclusion</h3>
<p>Dans ce projet, nous avons intégré TensorFlow Lite dans Yocto en résolvant les conflits de dépendances, exploré une approche multi-réseaux pour spécialiser les tâches de détection, et optimisé la résolution afin de trouver le meilleur compromis entre vitesse et précision. Nous n’avons pas seulement déployé un seul modèle, mais trois réseaux de neurones spécialisés sur un système embarqué tout en repectant la contrainte temps réel (30 fps), démontrant ainsi le potentiel de l’IA embarquée appliquée au monde réel.</p>
<p>Cette expérience montre que la <strong>vision intelligente embarquée</strong> est réalisable sur des plateformes à ressources limitées, à condition de bien maîtriser les outils, des frameworks IA aux couches Yocto.</p>
<p>Nous croyons que ce type d’intégration entre systèmes Linux embarqués et IA représente une voie prometteuse pour l’avenir de l’automatisation, de la robotique et de l&rsquo;industrie en général.</p>
Check out blogsfl<p>The post <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca/2025/deployer-un-reseau-de-neurones-artificiels-convolutionnels-sur-un-systeme-embarque/">Déployer un réseau de neurones artificiels convolutionnels sur un système embarqué</a> appeared first on <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca">Blogue de Savoir-faire LInux</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://blog.savoirfairelinux.com/fr-ca/2025/deployer-un-reseau-de-neurones-artificiels-convolutionnels-sur-un-systeme-embarque/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Easy Debugging Zephyr with VSCode (Objets Connectés et Ingénierie Produits)</title>
		<link>https://blog.savoirfairelinux.com/fr-ca/2025/easy-debugging-zephyr-with-vscode/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=easy-debugging-zephyr-with-vscode</link>
				<comments>https://blog.savoirfairelinux.com/fr-ca/2025/easy-debugging-zephyr-with-vscode/#respond</comments>
				<pubDate>Mon, 28 Jul 2025 12:58:12 +0000</pubDate>
		<dc:creator><![CDATA[Luc Beaufils]]></dc:creator>
				<category><![CDATA[Objets Connectés et Ingénierie Produits]]></category>
		<category><![CDATA[embarqué]]></category>
		<category><![CDATA[Zephyr]]></category>

		<guid isPermaLink="false">https://blog.savoirfairelinux.com/fr-ca/?p=14431</guid>
				<description><![CDATA[<p>This post was written by blogsfl This post was written by blogsfl Le débogage de microcontrôleurs (MCU) a toujours été essentiel pour produire du code de haute qualité, mais la dépendance aux environnements de développement spécifiques aux fabricants et aux configurations complexes des serveurs de débogage peut parfois nuire à un flux de travail fluide. Bien que VSCode ait révolutionné la [&#8230;]Check out blogsfl</p>
<p>The post <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca/2025/easy-debugging-zephyr-with-vscode/">Easy Debugging Zephyr with VSCode</a> appeared first on <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca">Blogue de Savoir-faire LInux</a>.</p>
]]></description>
								<content:encoded><![CDATA[This post was written by blogsfl <p><img class="alignnone size-full wp-image-12417" src="https://blog.savoirfairelinux.com/en-ca/wp-content/uploads/sites/2/2025/06/contrib_zephyr_banner.jpg" alt="" width="3180" height="738" /></p>
<p>Le débogage de microcontrôleurs (MCU) a toujours été essentiel pour produire du code de haute qualité, mais la dépendance aux environnements de développement spécifiques aux fabricants et aux configurations complexes des serveurs de débogage peut parfois nuire à un flux de travail fluide.</p>
<p>Bien que VSCode ait révolutionné la façon dont les développeurs écrivent et déboguent du code, configurer une session de débogage pour les MCU peut parfois s’avérer difficile.</p>
<p>Heureusement, grâce à l’outil Zephyr <span style="color: #e3d188">west</span> et à quelques extensions VSCode, mettre en place une session de débogage n’a jamais été aussi simple.</p>
<p>Dans cet article, nous allons configurer VSCode pour exécuter <span style="color: #e3d188">west debugserver</span>, qui se charge de lancer un débogueur et de le connecter à l’IDE VSCode avec l’extension Cortex-Debug.</p>
<p><span style="color: #999999"> [L’introduction est en français, le reste du texte en anglais]</span></p>
<h2>Prerequisites</h2>
<p>For debugging Zephyr application through VSCode you&rsquo;ll need to install the powerful <a href="https://marketplace.visualstudio.com/items?itemName=marus25.cortex-debug">Cortex-Debug</a> extension. Also, the Zephyr SDK should be installed. Please follow the <a href="https://docs.zephyrproject.org/latest/develop/getting_started/index.html">Getting Started Guide</a> if you haven&rsquo;t installed it.</p>
<h2>Easy setup with West debugserver</h2>
<p>The <span style="color: #e3d188">west debugserver</span> command is very helpful to set up a minimal debug environment, as it run <span style="color: #e3d188">runners</span> with the appropriate configuration for your board and can be used generically with any Zephyr supported board. The <span style="color: #e3d188">runners</span> may be <span style="color: #e3d188">openocd</span>, <span style="color: #e3d188">jlink</span>,<span style="color: #e3d188"> pyocd</span> or others, depending on your board support.</p>
<p>With these two following steps, you will be able to run a debug session with VSCode:</p>
<ol>
<li>Create a task in your <em>tasks.json</em> file to run <span style="color: #e3d188">west debugserver</span>.</li>
<li>Create a <span style="color: #e3d188">launch.json</span> file to configure Cortex-Debug.</li>
</ol>
<p>For this example, we will use the <a href="https://docs.zephyrproject.org/latest/boards/st/stm32l562e_dk/doc/index.html">STM32L562E_DK</a> board as it supports <span style="color: #e3d188">west debugserver</span> out of the box.</p>
<h3>West debugserver task</h3>
<p>The default runner of this board is <em>pyocd</em>, but an external package needs to be installed to use it. Due to this, we will set <span style="color: #e3d188">openocd</span> as the runner, which is already installed with the Zephyr SDK. First, you have to create a VSCode task to run <span style="color: #e3d188">west debugserver</span> in the background. In your tasks.json file, add the following task:</p>
<div>
<div><code>json</code></div>
<div><code>{</code></div>
<div style="padding-left: 40px"><code>"label": "West Debugserver",</code></div>
<div style="padding-left: 40px"><code>"type": "shell",</code></div>
<div style="padding-left: 40px"><code>"command": "west",</code></div>
<div style="padding-left: 40px"><code>"args": [</code></div>
<div style="padding-left: 80px"><code>"debugserver",</code></div>
<div style="padding-left: 80px"><code>"-r",</code></div>
<div style="padding-left: 80px"><code>"openocd"</code></div>
<div style="padding-left: 40px"><code>],</code></div>
<div style="padding-left: 40px"><code>"problemMatcher": {</code></div>
<div style="padding-left: 80px"><code>"pattern": {</code></div>
<div style="padding-left: 120px"><code>"regexp": </code></div>
<div style="padding-left: 120px"><code>"^(Info |Warn |Error):(.*)$",</code></div>
<div style="padding-left: 120px"><code>"severity": 1,</code></div>
<div style="padding-left: 120px"><code>"message": 2</code></div>
<div style="padding-left: 80px"><code>},</code></div>
<div style="padding-left: 80px"><code>"background": {</code></div>
<div style="padding-left: 120px"><code>"activeOnStart": true,</code></div>
<div style="padding-left: 120px"><code>"beginsPattern": "^Open On-Chip Debugger.*",</code></div>
<div style="padding-left: 120px"><code>"endsPattern": ".*watchpoints.*",</code></div>
<div style="padding-left: 80px"><code>},</code></div>
<div style="padding-left: 40px"><code>},</code></div>
<div style="padding-left: 40px"><code>"isBackground": true,</code></div>
<div style="padding-left: 40px"><code>"runOptions": {</code></div>
<div style="padding-left: 80px"><code>"instanceLimit": 1,</code></div>
<div style="padding-left: 80px"><code>"instancePolicy": "terminateOldest"</code></div>
<div style="padding-left: 40px"><code>},</code></div>
<div style="padding-left: 40px"><code>"presentation": {</code></div>
<div style="padding-left: 80px"><code>"reveal": "silent",</code></div>
<div style="padding-left: 80px"><code>"close": true,</code></div>
<div style="padding-left: 40px"><code>},</code></div>
<div><code>},</code></div>
</div>
<p>Some explanations about the configuration:</p>
<ul>
<li><strong>args</strong> : The <span style="color: #e3d188">-r </span>option specifies the runner to use, in this case, <span style="color: #e3d188">openocd</span>.</li>
<li><strong>problemMatcher</strong> : This is used to parse the output of the <span style="color: #e3d188">west debugserver</span> command and display it in the Problems panel. In our case, it matches the openocd output. If another runner is used, you may need to adjust the regex patterns.</li>
<li> <strong>runOptions</strong>: As <span style="color: #e3d188"><em>west debugserver</em></span> opens a server, we don&rsquo;t want to have port conflicts, so only one instance of the task can run at a time.</li>
<li><strong>presentation</strong>: This is used to control the output of the task in the terminal. In this case, we want to reveal the output silently and close it after the task is finished.</li>
</ul>
<p>Now the task is ready to use. You can try to run it by pressing <span style="color: #56b0c9"><span style="color: #e3d188">Ctrl+Shift+P</span></span><em>,</em> selecting the <span style="color: #e3d188">Tasks: Run Task </span>command and selecting the <span style="color: #e3d188">West Debugserver </span>or whatever label you have given to the task.</p>
<p>Another small task is needed to stop <span style="color: #e3d188">the west debugserver</span> task when you are done debugging. Otherwise, it will keep running in the background. You can add the following task to your <span style="color: #e3d188">tasks.json </span>file:</p>
<div>
<div><code>json</code></div>
<div><code>{</code></div>
<div style="padding-left: 40px"><code>"label": "Stop Debugserver",</code></div>
<div style="padding-left: 40px"><code>"type": "process",</code></div>
<div style="padding-left: 40px"><code>"command": "${command:workbench.action.tasks.terminate}",</code></div>
<div><code>},</code></div>
</div>
<p>&nbsp;</p>
<p>Here, the <strong>command</strong> will open an input box to select the task to terminate.</p>
<p>And that&rsquo;s it for the <span style="color: #e3d188">tasks.json</span> file!</p>
<h3>Cortex-Debug configuration</h3>
<p>The Cortex-Debug will now make the link between the debugserver and the VSCode debugging interface. To do this, you need to create a <span style="color: #e3d188">launch.json </span>file in the <span style="color: #e3d188">.<em>vscode</em> </span>directory of your project.</p>
<p>Add this configuration to your <span style="color: #e3d188">launch.json</span> file:</p>
<div>
<div><code>json</code></div>
<div><code>{</code></div>
<div style="padding-left: 40px"><code>"version": "0.2.0",</code></div>
<div style="padding-left: 40px"><code>"configurations": [</code></div>
<div style="padding-left: 80px"><code>{</code></div>
<div style="padding-left: 120px"><code>"name": "Zephyr Debugging",</code></div>
<div style="padding-left: 120px"><code>"executable": "${workspaceFolder}/build/zephyr/zephyr.elf",</code></div>
<div style="padding-left: 120px"><code>"request": "launch",</code></div>
<div style="padding-left: 120px"><code>"type": "cortex-debug",</code></div>
<div style="padding-left: 120px"><code>"runToEntryPoint": "main",</code></div>
<div style="padding-left: 120px"><code>"servertype": "external",</code></div>
<div style="padding-left: 120px"><code>"gdbPath": "/opt/sdk-0.17.0/arm-zephyr-eabi/bin/arm-zephyr-eabi-gdb",</code></div>
<div style="padding-left: 120px"><code>"gdbTarget": "localhost:3333",</code></div>
<div style="padding-left: 120px"><code>"device": "STM32L562E_DK",</code></div>
<div style="padding-left: 120px"><code>"preLaunchTask": "West Debugserver",</code></div>
<div style="padding-left: 120px"><code>"postDebugTask": "Stop Debugserver"</code></div>
<div style="padding-left: 80px"><code>}</code></div>
<div style="padding-left: 40px"><code>]</code></div>
<div><code>}</code></div>
</div>
<p>&nbsp;</p>
<p>Some explanations about the configuration:</p>
<ul>
<li><strong>executable</strong>: This is the path to the ELF file generated by the Zephyr build system. By default, the build directory is <span style="color: #e3d188">build/zephyr/zephyr.elf</span>, but you can change it if you have a different build directory.</li>
<li> <strong>runToEntryPoint</strong>: This option specifies the entry point to run to when starting the debug session. In this case, it is set to <span style="color: #e3d188">main</span>.</li>
<li><strong>gdbPath</strong>: The gdb path is set to the Zephyr SDK&rsquo;s GDB executable.</li>
<li><strong>preLaunchTask</strong> and <strong>postDebugTask</strong>: these options specify the tasks we created just before. The name should be the same as task&rsquo;s label.</li>
</ul>
<p>The VSCode debugging session is now ready to be launched. You can add some breakpoints to your code and try running the debug session by pressing <span style="color: #e3d188">F5</span> or selecting the session by pressing <span style="color: #e3d188">Ctrl+Shift+D</span> and clicking on the green play button.</p>
<h2>Special case: Attach debugger to running target</h2>
<p>Sometimes, target cannot support a reset when starting a debugging session.</p>
<p>We have dealt with this behavior when supporting the Cortex-M33 of the <a href="https://wiki.st.com/stm32mpu/wiki/Category:STM32MP25x">STM32MP2 board</a>.</p>
<div class="linkbox"><strong>NOTE</strong> : When we <span style="color: #e3d188">attach</span> the debugger, the target is already running, so we cannot have debugging from the very beginning of the code execution.</div>
<p>Thus, the VSCode configuration has been slightly changed to attach the debugger to the running target instead of reset and run the code. In the <span style="color: #e3d188">tasks.json</span> file, the <span style="color: #e3d188">West </span><span style="color: #56b0c9"><span style="color: #e3d188">Debugserver</span></span> task is updated as follows:</p>
<div>
<div><code>json</code></div>
<div><code>{</code></div>
<div style="padding-left: 40px"><code>"label": "West Debugserver",</code></div>
<div style="padding-left: 40px"><code>"type": "shell",</code></div>
<div style="padding-left: 40px"><code>"command": "west",</code></div>
<div style="padding-left: 40px"><code>"args": [</code></div>
<div style="padding-left: 80px"><code>"debugserver",</code></div>
<div style="padding-left: 80px"><code>"-r",</code></div>
<div style="padding-left: 80px"><code>"openocd",</code></div>
<div style="padding-left: 80px"><code>"--no-init",</code></div>
<div style="padding-left: 80px"><code>"--cmd-reset-halt",</code></div>
<div style="padding-left: 80px"><code>"''",</code></div>
<div style="padding-left: 40px"><code>],</code></div>
<div style="padding-left: 40px"><code>"problemMatcher": {</code></div>
<div style="padding-left: 80px"><code>"pattern": {</code></div>
<div style="padding-left: 120px"><code>"regexp": "^(Info |Warn |Error):(.*)$",</code></div>
<div style="padding-left: 120px"><code>"severity": 1,</code></div>
<div style="padding-left: 120px"><code>"message": 2</code></div>
<div style="padding-left: 80px"><code>},</code></div>
<div style="padding-left: 80px"><code>"background": {</code></div>
<div style="padding-left: 120px"><code>"activeOnStart": true,</code></div>
<div style="padding-left: 120px"><code>"beginsPattern": "^Open On-Chip Debugger.*",</code></div>
<div style="padding-left: 120px"><code>"endsPattern": ".*watchpoints.*",</code></div>
<div style="padding-left: 80px"><code>},</code></div>
<div style="padding-left: 40px"><code>},</code></div>
<div style="padding-left: 40px"><code>"isBackground": true,"runOptions": {</code></div>
<div style="padding-left: 80px"><code>"instanceLimit": 1,</code></div>
<div style="padding-left: 80px"><code>"instancePolicy": "terminateOldest"</code></div>
<div style="padding-left: 40px"><code>},</code></div>
<div style="padding-left: 40px"><code>"presentation": {</code></div>
<div style="padding-left: 80px"><code>"reveal": "silent",</code></div>
<div style="padding-left: 80px"><code>"close": true,</code></div>
<div style="padding-left: 40px"><code>}</code></div>
<div><code>},</code></div>
<div></div>
</div>
<p>Only the <strong>args</strong> parameter is updated to ask the <span style="color: #e3d188">west debugserver</span> to not reset the target when launching the task. Accordingly, the <span style="color: #e3d188">launch.json</span> file is also modified to permit VSCode to attach the debugger:</p>
<div>
<div><code>json</code></div>
<div><code>{</code></div>
<div style="padding-left: 40px"><code>"name": "Attach Zephyr Debugging",</code></div>
<div style="padding-left: 40px"><code>"executable": "${workspaceFolder}/build/zephyr/zephyr.elf",</code></div>
<div style="padding-left: 40px"><code>"request": "attach",</code></div>
<div style="padding-left: 40px"><code>"type": "cortex-debug",</code></div>
<div style="padding-left: 40px"><code>"runToEntryPoint": "main",</code></div>
<div style="padding-left: 40px"><code>"servertype": "external",</code></div>
<div style="padding-left: 40px"><code>"gdbPath": "/opt/sdk-0.17.0/arm-zephyr-eabi/bin/arm-zephyr-eabi-gdb",</code></div>
<div style="padding-left: 40px"><code>"gdbTarget": "localhost:3334",</code></div>
<div style="padding-left: 40px"><code>"device": "STM32MP2",</code></div>
<div style="padding-left: 40px"><code>"preLaunchTask": "West Debugserver",</code></div>
<div style="padding-left: 40px"><code>"postDebugTask": "Stop Debugserver",</code></div>
<div><code>},</code></div>
</div>
<p>&nbsp;</p>
<p>The <strong>request</strong> parameter is updated to attach the debugger.</p>
<p>Also the gdb port is set to 3334, because the stm32mp2 SoC has multiple architecture, so the <span style="color: #e3d188">debugserver</span> set by default the Cortex-M33 to the 3334.</p>
<p><img class="wp-image-12384 aligncenter" src="https://blog.savoirfairelinux.com/en-ca/wp-content/uploads/sites/2/2025/06/screenshot_2025-06-17_14-24-38.png" alt="" width="688" height="365" /></p>
<h2>Conclusion</h2>
<p>As you can see, setting up a debug environment for Zephyr development is trivial, thanks to the tools provided by the RTOS and the full-featured VSCode extension Cortex-Debug.</p>
<p>Feel free to use the configuration for running or attaching a debug session!</p>
<p>Find the config on GitHub : <a href="https://github.com/savoirfairelinux/zephyr_debug_vscode">Main branch </a></p>
<p>&nbsp;</p>
<p>&nbsp;</p>
Check out blogsfl<p>The post <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca/2025/easy-debugging-zephyr-with-vscode/">Easy Debugging Zephyr with VSCode</a> appeared first on <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca">Blogue de Savoir-faire LInux</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://blog.savoirfairelinux.com/fr-ca/2025/easy-debugging-zephyr-with-vscode/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Rétrospective : les connaissances que nous avons partagées lors des conférences internationales en 2024 (Culture d'entreprise)</title>
		<link>https://blog.savoirfairelinux.com/fr-ca/2025/retrospective-les-connaissances-que-nous-avons-partagees-lors-des-conferences-internationales-en-2024/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=retrospective-les-connaissances-que-nous-avons-partagees-lors-des-conferences-internationales-en-2024</link>
				<comments>https://blog.savoirfairelinux.com/fr-ca/2025/retrospective-les-connaissances-que-nous-avons-partagees-lors-des-conferences-internationales-en-2024/#respond</comments>
				<pubDate>Mon, 16 Jun 2025 07:29:07 +0000</pubDate>
		<dc:creator><![CDATA[Susanne Cuny]]></dc:creator>
				<category><![CDATA[Culture d'entreprise]]></category>
		<category><![CDATA[communauté]]></category>
		<category><![CDATA[contribution]]></category>
		<category><![CDATA[embarqué]]></category>
		<category><![CDATA[Europe]]></category>
		<category><![CDATA[événements]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">https://blog.savoirfairelinux.com/fr-ca/?p=14340</guid>
				<description><![CDATA[<p>This post was written by blogsfl This post was written by blogsfl L’année 2024 a été particulièrement riche pour Savoir-faire Linux. Nous avons eu l’opportunité de participer à des événements clés dans les secteurs de l’énergie et de l’embarqué. Nous avons construit de nouveaux partenariats et renforcé notre position dans la communauté Open Source. Nous avons également eu le plaisir de [&#8230;]Check out blogsfl</p>
<p>The post <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca/2025/retrospective-les-connaissances-que-nous-avons-partagees-lors-des-conferences-internationales-en-2024/">Rétrospective : les connaissances que nous avons partagées lors des conférences internationales en 2024</a> appeared first on <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca">Blogue de Savoir-faire LInux</a>.</p>
]]></description>
								<content:encoded><![CDATA[This post was written by blogsfl <p>L’année 2024 a été particulièrement riche pour Savoir-faire Linux. Nous avons eu l’opportunité de participer à des événements clés dans les secteurs de l’énergie et de l’embarqué. Nous avons construit de nouveaux partenariats et renforcé notre position dans la communauté Open Source. Nous avons également eu le plaisir de sponsoriser deux événements cette année : le LF Energy Summit ainsi que Montréal Python.</p>
<p>Dans cet article, nous partageons les moments forts de nos présentations et les différents projets auxquels nous avons contribué.</p>
<p>&nbsp;</p>
<h2>LF Energy SEAPATH</h2>
<p>En tant que contributeur principal du projet LF Energy SEAPATH, nous souhaitons partager notre travail lors de conférences internationales :</p>
<ul>
<li>En février, au <a href="https://mirror.cyberbits.eu/fosdem/2025/ua2114/fosdem-2025-5521-lfenergy-seapath-svtrace-tools-for-latency-analysis-in-virtualized-networking-platforms.av1.webm">FOSDEM</a> à Bruxelles, Paul Le Guen de Kerneizon a donné une présentation générale du projet SEAPATH ainsi que du travail effectué autour de l’implémentation des tests de latence IEC61850 pour des algorithmes de protection de postes sources.</li>
</ul>
<div style="width: 640px;" class="wp-video"><video class="wp-video-shortcode" id="video-14340-2" width="640" height="360" preload="metadata" controls="controls"><source type="video/webm" src="https://mirror.cyberbits.eu/fosdem/2025/ua2114/fosdem-2025-5521-lfenergy-seapath-svtrace-tools-for-latency-analysis-in-virtualized-networking-platforms.av1.webm?_=2" /><a href="https://mirror.cyberbits.eu/fosdem/2025/ua2114/fosdem-2025-5521-lfenergy-seapath-svtrace-tools-for-latency-analysis-in-virtualized-networking-platforms.av1.webm">https://mirror.cyberbits.eu/fosdem/2025/ua2114/fosdem-2025-5521-lfenergy-seapath-svtrace-tools-for-latency-analysis-in-virtualized-networking-platforms.av1.webm</a></video></div>
<ul>
<li>En avril, à Seattle, en Amérique du Nord, a eu lieu EOSS (Embedded Open Source Summit). Lors de cet événement organisé par la Linux fondation, Christophe Villemer a été interviewé par Swapnil Bhartiya de TFIR, pour discuter du projet <a href="https://tfir.io/lf-energys-seapath-project-aims-to-drive-the-next-generation-of-energy-management/">Lf Energy SEAPATH et de son rôle dans l&rsquo;élaboration de l&rsquo;avenir de la gestion de l&rsquo;énergie.</a></li>
</ul>
<ul>
<li>Vous pouvez retrouver toutes les vidéos de cette interview de Christophe Villemer et Swapnil Bhartiya <a href="https://tfir.io/tag/christophe-villemer/">ici</a>/ sur leur site !</li>
</ul>
<ul>
<li>En septembre 2024, à Bruxelles, nous avons été fiers de participer à la deuxième édition du Lf Energy Summit en tant que sponsor Silver ! Durant cet événement dédié à l’accélération de la transition énergétique, Christophe Villemer a présenté une keynote sur <a href="https://www.youtube.com/watch?v=xdsuNToIZJo">« Construire un business Open Source »</a> en utilisant le projet Lf Energy SEAPATH comme exemple.</li>
</ul>
<p style="text-align: center"><iframe class='youtube-player' type='text/html' width='640' height='360' src='https://www.youtube.com/embed/xdsuNToIZJo?version=3&#038;rel=1&#038;fs=1&#038;autohide=2&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' allowfullscreen='true' style='border:0;'></iframe></p>
<ul>
<li>À ce même événement, Erwann Roussy et Camilo De Arriba, Senior Substation Automation Manager chez General Electric Vernova, ont présenté leur travail démontrant la performance de SEAPATH dans un scénario de défaillance du réseau électrique réel. Ils ont ensuite approfondi les détails de leur présentation : <a href="https://youtu.be/kT-KXWCDpVI?feature=shared">« Déployer un IED virtuel sur LF Energy SEAPATH, conseils et retours d’expérience »</a>.</li>
</ul>
<p style="text-align: center"><iframe class='youtube-player' type='text/html' width='640' height='360' src='https://www.youtube.com/embed/kT-KXWCDpVI?version=3&#038;rel=1&#038;fs=1&#038;autohide=2&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' allowfullscreen='true' style='border:0;'></iframe></p>
<ul>
<li>Toujours au LF Energy Summit, Eloi Bail, TSC Chair du projet SEAPATH a présenté <a href="https://www.youtube.com/watch?v=qIyxiaHymZQ">« SEAPATH « Certified » : Hardware pour des infrastructures virtualisées dans le domaine des solutions énergétiques»</a>.</li>
</ul>
<p><iframe class='youtube-player' type='text/html' width='640' height='360' src='https://www.youtube.com/embed/qIyxiaHymZQ?version=3&#038;rel=1&#038;fs=1&#038;autohide=2&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' allowfullscreen='true' style='border:0;'></iframe></p>
<ul>
<li>Enfin, cet événement a été l’occasion de réunir la communauté <a href="https://youtu.be/8RtxYbDOufM?feature=shared">SEAPATH au meetup présenté par Eloi Bail</a>.</li>
</ul>
<p style="text-align: center"><iframe class='youtube-player' type='text/html' width='640' height='360' src='https://www.youtube.com/embed/8RtxYbDOufM?version=3&#038;rel=1&#038;fs=1&#038;autohide=2&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' allowfullscreen='true' style='border:0;'></iframe></p>
<h2>Linux embarqué</h2>
<p>Nous participons régulièrement à des événements axés sur notre activité principale : Linux embarqué.</p>
<h3>Projet Yocto</h3>
<ul>
<li>Lors d&rsquo;EOSS à Seattle, notre Web Practice Leader<span style="color: #000000"> Mohammed Raza a donné deux conférences sur le projet Yocto. La première était sur <a href="https://www.youtube.com/watch?v=opbuNw-Jl1c">« Le développement du projet Yocto avec </a></span><span style="color: #000000"> VSCode</span><span style="color: #000000"> : accélérer votre productivité » </span><span style="color: #000000">fournissant des avantages </span><span style="color: #000000">concrets</span> <span style="color: #000000">en montrant comment l’extension VS CODE peut être utilisée pour fournir une expérience de codage moderne pour les développeurs du projet Yocto.</span></li>
</ul>
<p><iframe class='youtube-player' type='text/html' width='640' height='360' src='https://www.youtube.com/embed/opbuNw-Jl1c?version=3&#038;rel=1&#038;fs=1&#038;autohide=2&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' allowfullscreen='true' style='border:0;'></iframe></p>
<ul>
<li><span style="color: #000000">Sa deuxième conférence était sur <a href="https://youtu.be/mzZcov3I9xI?feature=shared">« Le développement du projet Yocto avec TOASTER : simplifier la courbe d’apprentissage ».</a> Il y a souligné les difficultés que rencontrent les développeurs pour configurer et gérer les builds sans une interface intuitive comme Toaster.</span></li>
</ul>
<p style="text-align: center"><iframe class='youtube-player' type='text/html' width='640' height='360' src='https://www.youtube.com/embed/mzZcov3I9xI?version=3&#038;rel=1&#038;fs=1&#038;autohide=2&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' allowfullscreen='true' style='border:0;'></iframe></p>
<ul>
<li><span style="color: #000000">En décembre, Enguerrand de Ribaucourt a présenté <a href="https://www.youtube.com/watch?v=gl4fXY7Vil0">l’implémentation de Yocto VSCode et Typescript au Yocto Projet Summit</a>.</span></li>
</ul>
<p style="text-align: center"><iframe class='youtube-player' type='text/html' width='640' height='360' src='https://www.youtube.com/embed/gl4fXY7Vil0?version=3&#038;rel=1&#038;fs=1&#038;autohide=2&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' allowfullscreen='true' style='border:0;'></iframe></p>
<ul>
<li><span style="color: #000000">En avril, nous avons participé à Embedded World à Nuremberg en Allemagne, où nous avons présenté notre expertise et mis en avant nos partenariats. Nous avons également apporté notre soutien au stand du projet Yocto, renforçant notre engagement envers la communauté des systèmes embarqués.</span></li>
</ul>
<p><img class="wp-image-12302 aligncenter" src="https://blog.savoirfairelinux.com/en-ca/wp-content/uploads/sites/2/2025/05/rn_image_picker_lib_temp_2ddc5c85-542e-4cd3-9a4e-9ca43d4b53bd-1-300x225.jpg" alt="" width="375" height="282" /></p>
<h6 style="text-align: center"><em>L&rsquo;équipe de Savoir-faire Linux présente au stand Yocto</em></h6>
<ul>
<li><span style="color: #000000">Jérôme Oufella et Eloi Bail ont discuté de <a href="https://youtu.be/B-814w5Nwqg?feature=shared">l’importance croissante de la conformité en cybersécurité dans le développement des systèmes embarqués</a>, en particulier avec l’émergence de réglementations plus strictes. Ils ont souligné la nécessité d’intégrer ces exigences dès le processus de développement afin de garantir la conformité des logiciels. La discussion a également mis en lumière le partenariat de longue date entre Savoir-faire Linux et Toradex et le rôle clé de Torizon (une distribution Linux industrielle open source) dans le respect de normes rigoureuses comme IEC 62443.</span></li>
</ul>
<p style="text-align: center"><iframe class='youtube-player' type='text/html' width='640' height='360' src='https://www.youtube.com/embed/B-814w5Nwqg?version=3&#038;rel=1&#038;fs=1&#038;autohide=2&#038;showsearch=0&#038;showinfo=1&#038;iv_load_policy=1&#038;wmode=transparent' allowfullscreen='true' style='border:0;'></iframe></p>
<ul>
<li><span style="color: #000000">Savoir-faire Linux est fier d&rsquo;avoir été l&rsquo;un des principaux sponsors de Montréal Python, une série de conférences mensuelles portant sur divers sujets liés à Python. En novembre, Serosh Deljam a présenté <a href="https://www.youtube.com/live/-RJ4VO86Fg8">« Computer Vision avec Python dans les systèmes embarqués »</a>, mettant en valeur notre expertise dans ce domaine.</span></li>
</ul>
<h2>Conclusion</h2>
<p><span style="color: #000000">Cette année 2024 a été riche en événements et rencontres. Au travers de nos conférences, nous avons eu l’occasion de partager nos connaissances et notre expertise. Nous remercions sincèrement nos partenaires pour leur confiance et la communauté pour son soutien. Nous nous réjouissons d’innover ensemble dans les années à venir !</span></p>
Check out blogsfl<p>The post <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca/2025/retrospective-les-connaissances-que-nous-avons-partagees-lors-des-conferences-internationales-en-2024/">Rétrospective : les connaissances que nous avons partagées lors des conférences internationales en 2024</a> appeared first on <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca">Blogue de Savoir-faire LInux</a>.</p>
]]></content:encoded>
							<wfw:commentRss>https://blog.savoirfairelinux.com/fr-ca/2025/retrospective-les-connaissances-que-nous-avons-partagees-lors-des-conferences-internationales-en-2024/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
							</item>
		<item>
		<title>Savoir-faire Linux annonce à Embedded World 2025 la sortie en Open Source de VulnScout.io (Objets Connectés et Ingénierie Produits)</title>
		<link>https://blog.savoirfairelinux.com/fr-ca/2025/savoir-faire-linux-annonce-la-sortie-en-open-source-de-vulnscout-io/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=savoir-faire-linux-annonce-la-sortie-en-open-source-de-vulnscout-io</link>
				<pubDate>Tue, 11 Mar 2025 23:26:39 +0000</pubDate>
		<dc:creator><![CDATA[Susanne Cuny]]></dc:creator>
				<category><![CDATA[Objets Connectés et Ingénierie Produits]]></category>
		<category><![CDATA[Communiqué de presse]]></category>
		<category><![CDATA[Cybersécurité]]></category>
		<category><![CDATA[embarqué]]></category>
		<category><![CDATA[SBOM]]></category>
		<category><![CDATA[systèmes embarqués]]></category>
		<category><![CDATA[yocto]]></category>

		<guid isPermaLink="false">https://blog.savoirfairelinux.com/fr-ca/?p=14297</guid>
				<description><![CDATA[<p>This post was written by blogsfl This post was written by blogsfl &#160; Permettre à l&#8217;industrie des systèmes embarqués de se conformer aux cyber-réglementations grâce à un outil de gestion des vulnérabilités innovant et open source. &#160; Nuremberg, le 11 mars 2025 – Savoir-faire Linux, société de conseil et d&#8217;ingénierie en logiciels libres et Open Source est fière d&#8217;annoncer la sortie officielle [&#8230;]Check out blogsfl</p>
<p>The post <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca/2025/savoir-faire-linux-annonce-la-sortie-en-open-source-de-vulnscout-io/">Savoir-faire Linux annonce à Embedded World 2025 la sortie en Open Source de VulnScout.io</a> appeared first on <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca">Blogue de Savoir-faire LInux</a>.</p>
]]></description>
								<content:encoded><![CDATA[This post was written by blogsfl <p><em><span lang="en-US"><img class="wp-image-14301 aligncenter" src="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/03/Vulnscout.io-logo-e1741682926369-300x47.png" alt="" width="562" height="88" srcset="https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/03/Vulnscout.io-logo-e1741682926369-300x47.png 300w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/03/Vulnscout.io-logo-e1741682926369-768x121.png 768w, https://blog.savoirfairelinux.com/fr-ca/wp-content/uploads/2025/03/Vulnscout.io-logo-e1741682926369-1024x162.png 1024w" sizes="(max-width: 562px) 100vw, 562px" /></span></em></p>
<p>&nbsp;</p>
<p><em>Permettre à l&rsquo;industrie des systèmes embarqués de se conformer aux cyber-réglementations grâce à un outil de gestion des vulnérabilités innovant et open source.</em></p>
<p>&nbsp;</p>
<p><strong><span lang="en-US">Nuremberg, le 11 mars 2025</span></strong><span lang="en-US"> – </span>Savoir-faire Linux, société de conseil et d&rsquo;ingénierie en logiciels libres et Open Source est fière d&rsquo;annoncer la sortie officielle de <strong>VulnScout.io</strong>, une solution Open Source de cybersécurité conçue pour aider les organisations à suivre, gérer et corriger efficacement les vulnérabilités logicielles de leurs produits. Faisant suite au lancement l&rsquo;année dernière de ses services professionnels spécialisés en cybersécurité, cette sortie confirme l&rsquo;engagement continu de Savoir-faire Linux envers l’open source, renforcé par son implication active au sein des communautés de la <strong>Linux Foundation</strong> et du <strong>projet Yocto</strong>.</p>
<blockquote><p>“L’open source fait partie de notre ADN<span lang="en-US">”, souligne </span><strong><span lang="en-US">Christophe Villemer</span></strong><span lang="en-US">, </span><span lang="en-US">vice-président exécutif de Savoir-faire Linux et membre du conseil de direction de la LF Energy</span><span lang="en-US">. “C&rsquo;est pourquoi nous avons choisi de publier VulnScout.io sous une licence libre. Notre profonde implication dans les initiatives de la Fondation Linux ainsi que notre expérience en matière de contributions au projet Yocto nous conforte dans le choix d&rsquo;offrir une solution communautaire et accessible à tous. </span><span lang="en-US">Avec VulnScout.io, nous offrons aux équipes de développement et aux industriels une réponse concrète aux défis croissants de conformité en matière de cybersécurité, particulièrement dans le contexte du Cyber Resilience Act bientôt applicable en Europe. &raquo;</span></p></blockquote>
<h2>Un outil open source dédié aux systèmes embarqués</h2>
<p><span lang="en-US"><a href="https://github.com/savoirfairelinux/vulnscout">VulnScout.io</a> </span>offre une boîte à outils efficace et pragmatique pour le suivi des vulnérabilités, conçue pour s&rsquo;intégrer de manière transparente dans les cycles de développement des produits embarqués. Ayant été testé en premier lieu sur des systèmes Linux embarqués développés avec le Projet Yocto &#8211; VulnScout.io permet d&rsquo;assurer une détection et une gestion complètes des vulnérabilités affectant la solution OS embarquée.</p>
<h2>Principales fonctionnalités de VulnScout.io</h2>
<ul>
<li><strong><span lang="en-US">SBOM et Gestion des vulnérabilités</span></strong><span lang="en-US"> – Automatise la génération de SBOM et la détection de CVE, offrant ainsi une vision en temps réel des menaces.</span></li>
<li><strong><span lang="en-US">Large compatibilité avec les formats standard de l&rsquo;industrie tels que </span></strong><strong><span lang="en-US">CycloneDX</span></strong><span lang="en-US"> et </span><a href="https://spdx.dev/"><strong><span lang="en-US">SPDX</span></strong></a><span lang="en-US">, ainsi qu&rsquo;avec </span><a href="https://github.com/openvex"><strong><span lang="en-US">OpenVEX</span></strong></a><span lang="en-US"> de l&rsquo;Open Source Security Foundation (<a href="https://openssf.org/">OpenSSF</a>). </span></li>
<li><span lang="en-US"><strong>Conçu pour les analystes et l&rsquo;intégration continue</strong> &#8211; Il s&rsquo;intègre de manière transparente dans les flux de travail d&rsquo;intégration continue existants, permettant ainsi aux équipes de développement et de sécurité de faire de la gestion des vulnérabilités une partie intégrante des flux de travail quotidiens.</span></li>
<li><strong>Dévoué à la communauté Open Source</strong> &#8211; Hébergé ouvertement sur GitHub, VulnScout.io bénéficie de l&rsquo;innovation collective et des contributions extérieures, reflétant ainsi l&rsquo;éthique Open Source de Savoir-faire Linux.</li>
</ul>
<h2>Répondre aux défis du Cyber Resilience Act européen</h2>
<p>Avec l&rsquo;arrivée imminente du Cyber Resilience Act (CRA) en Europe, VulnScout.io offre une approche transparente et automatisée pour générer et gérer les données de la Software Bill of Materials (SBOM). Cette démarche proactive permet aux organisations d&rsquo;anticiper efficacement les vulnérabilités et de se préparer sereinement aux normes de conformité telles que IEC62443, IEC62304, UL2900 et DO-326A.</p>
<blockquote><p>“Des contrôleurs industriels complexes aux appareils IoT de nouvelle génération, les entreprises ont besoin d&rsquo;une solution robuste et évolutive<span lang="en-US">,” précise </span><strong><span lang="en-US">Jérôme Oufella</span></strong><span lang="en-US">, Vice-président Technologie chez Savoir-faire Linux </span><span lang="en-US">“De par notre expertise pointue des systèmes embarqués et notre expérience multi-secteurs, nous assurons une intégration naturelle de Vulnscout.io dans les processus de développement et d&rsquo;ingénierie produit. ”</span></p></blockquote>
<h2><strong><span lang="en-US">Présentation et démos à Embedded World 2025</span></strong></h2>
<p>Savoir-faire Linux présentera officiellement Vulnscout.io à l’événement <strong>Embedded World 2025</strong> à Nuremberg, du 11 au 13 mars, sur son <strong>stand 4-642</strong>. Les visiteurs pourront assister à des démonstrations pratiques illustrant comment les équipes de développement de systèmes embarqués peuvent utiliser Vulnscout.io pour améliorer continuellement la sécurité et la conformité de leurs produits. Simultanément, l&rsquo;entreprise sera également présente au salon <strong>Global Industrie à Lyon</strong>, dans le Village Captronic, pour promouvoir Vulnscout.io et ses services associés auprès des entreprises développant des produits embarqués et concernées par le CRA.</p>
<h2>Liens pertinents</h2>
<ul>
<li><a href="https://github.com/savoirfairelinux/vulnscout">https://github.com/savoirfairelinux/vulnscout</a></li>
<li><a href="https://savoirfairelinux.com/fr/services/cybers%C3%A9curit%C3%A9-pour-ing%C3%A9nierie-de-produit">https://savoirfairelinux.com/fr/services/cybers%C3%A9curit%C3%A9-pour-ing%C3%A9nierie-de-produit</a></li>
</ul>
<hr />
<div class="linkbox">
<h2><strong><span lang="en-US">À propos de Savoir-faire Linux</span></strong></h2>
<p>Fondée en 1999, Savoir-faire Linux est un chef de file en ingénierie logicielle Open Source, offrant des services de consultation, de formation et de développement sur mesure pour les systèmes embarqués et industriels. Avec des bureaux à Montréal (Québec) et à Rennes (France), l&rsquo;entreprise aide ses clients à travers le monde dans des domaines aussi variés que l&rsquo;énergie, le transport, les télécommunications, la robotique et les produits de consommation. En tant que contributeur actif à la Fondation Linux et au Projet Yocto, Savoir-faire Linux défend un développement collaboratif et transparent, établissant de nouvelles références pour une innovation sûre et durable dans le domaine de l&#8217;embarqué.</p>
<p>&nbsp;</p>
</div>
Check out blogsfl<p>The post <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca/2025/savoir-faire-linux-annonce-la-sortie-en-open-source-de-vulnscout-io/">Savoir-faire Linux annonce à Embedded World 2025 la sortie en Open Source de VulnScout.io</a> appeared first on <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca">Blogue de Savoir-faire LInux</a>.</p>
]]></content:encoded>
										</item>
		<item>
		<title>Introducing DHTNet: Distributed Peer-to-Peer Networking Made Simple (Objets Connectés et Ingénierie Produits)</title>
		<link>https://blog.savoirfairelinux.com/fr-ca/2025/introducing-dhtnet-distributed-peer-to-peer-networking-made-simple/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=introducing-dhtnet-distributed-peer-to-peer-networking-made-simple</link>
				<pubDate>Fri, 07 Feb 2025 15:46:34 +0000</pubDate>
		<dc:creator><![CDATA[Adrien Béraud]]></dc:creator>
				<category><![CDATA[Objets Connectés et Ingénierie Produits]]></category>
		<category><![CDATA[OpenDHT]]></category>

		<guid isPermaLink="false">https://blog.savoirfairelinux.com/fr-ca/?p=14286</guid>
				<description><![CDATA[<p>This post was written by blogsfl This post was written by blogsfl Savoir-faire Linux est ravi d’annoncer DHTNet, une nouvelle bibliothèque en C++17 issue du projet Jami, conçue pour simplifier la connectivité pair-à-pair (P2P). DHTNet permet aux développeurs d’établir des connexions P2P sécurisées entre des appareils en utilisant uniquement des clés publiques, éliminant le besoin d’une infrastructure centralisée ou d’un adressage [&#8230;]Check out blogsfl</p>
<p>The post <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca/2025/introducing-dhtnet-distributed-peer-to-peer-networking-made-simple/">Introducing DHTNet: Distributed Peer-to-Peer Networking Made Simple</a> appeared first on <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca">Blogue de Savoir-faire LInux</a>.</p>
]]></description>
								<content:encoded><![CDATA[This post was written by blogsfl <p>Savoir-faire Linux est ravi d’annoncer DHTNet, une nouvelle bibliothèque en C++17 issue du projet Jami, conçue pour simplifier la connectivité pair-à-pair (P2P).</p>
<p>DHTNet permet aux développeurs d’établir des connexions P2P sécurisées entre des appareils en utilisant uniquement des clés publiques, éliminant le besoin d’une infrastructure centralisée ou d’un adressage IP direct.</p>
<p><span style="color: #999999">[L’introduction est en français, le reste du texte en anglais]</span></p>
<h3 class="western">Features</h3>
<ul>
<li><b>Connection Management</b>: DHTNet simplifies the establishment and management of connections to peers, streamlining the communication process.</li>
<li><b>Multiplexed Sockets</b>: It provides multiplexed sockets that allow multiple channels for data transmission, optimizing network resources.</li>
<li><b>UPnP Integration</b>: DHTNet seamlessly integrates with UPnP, enabling automatic port mapping and enhanced network connectivity.</li>
<li><b>Server TURN Support</b>: DHTNet includes support for server TURN, used as a fallback for connections if the NAT block all possible connections.</li>
</ul>
<h3 class="western">Technical Overview</h3>
<p>DHTNet is a C++17 library designed to serve as a network overlay that provides an IP network abstraction. Its main objective is to establish secure peer-to-peer connections using public-key authentication.</p>
<p>DHTnet allows you to connect with a device simply by knowing its public key and efficiently manages peer discovery and connectivity establishment, including NAT traversal.</p>
<p>At its core, DHTNet integrates several established standards and technologies to provide robust P2P connectivity:</p>
<ul>
<li><a href="https://opendht.net">OpenDHT</a> serves as the foundation for peer discovery on the distributed network</li>
<li>ICE (Interactive Connectivity Establishment) is handled by pjnath, supporting connection through NATs and firewalls</li>
<li>Security and authentication are implemented through GnuTLS</li>
</ul>
<p>The library implements a true peer-to-peer architecture where devices can discover and connect to each other through public key-based addressing. This approach eliminates the need for static IP addresses or central coordination servers, making it particularly suitable for dynamic network environments.</p>
<h3 class="western">Use Cases and Applications</h3>
<p>DHTNet is particularly well-suited for:</p>
<ul>
<li>Embedded systems and IoT devices that require direct peer-to-peer communication</li>
<li>Distributed applications that need to operate without central infrastructure</li>
<li>Systems where traditional client-server architectures are impractical</li>
<li>Development of decentralized networking protocols and applications</li>
</ul>
<h3 class="western">Technical Requirements</h3>
<ul>
<li>Build tested with:
<ul>
<li>GCC on GNU/Linux</li>
<li>Clang on Android, iOS and macOS</li>
<li>MSVC on Windows</li>
</ul>
</li>
<li>C++17 compatible compiler required</li>
<li>Dependencies:
<ul>
<li>OpenDHT</li>
<li>Our fork of pjproject, implementing ICE/TCP</li>
<li>GnuTLS</li>
</ul>
</li>
</ul>
<h3 class="western">Contributing</h3>
<p>DHTNet is an open-source project under the GPLv3+ licence, and contributions from the community are welcome. The codebase aims to maintain high standards of code quality and documentation to facilitate collaboration and maintainability.</p>
<h3 class="western">Future Development</h3>
<p>The development roadmap includes:</p>
<ul>
<li>Additional transport protocol support</li>
<li>Enhanced API documentation</li>
<li>Performance optimizations for constrained environments</li>
<li>Extended example implementations</li>
</ul>
<p>We encourage developers interested in distributed systems and peer-to-peer networking to explore DHTNet and provide feedback on its functionality and potential improvements.</p>
<p><a class="theme markdown__link" href="https://github.com/savoirfairelinux/dhtnet/" target="_blank" rel="noopener noreferrer">https://github.com/savoirfairelinux/dhtnet/</a></p>
<p><a class="theme markdown__link" href="https://github.com/savoirfairelinux/dhtnet/blob/master/BUILD.md" target="_blank" rel="noopener noreferrer">https://github.com/savoirfairelinux/dhtnet/blob/master/BUILD.md</a></p>
<p>&nbsp;</p>
Check out blogsfl<p>The post <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca/2025/introducing-dhtnet-distributed-peer-to-peer-networking-made-simple/">Introducing DHTNet: Distributed Peer-to-Peer Networking Made Simple</a> appeared first on <a rel="nofollow" href="https://blog.savoirfairelinux.com/fr-ca">Blogue de Savoir-faire LInux</a>.</p>
]]></content:encoded>
										</item>
	</channel>
</rss>
