Apprentissage automatique en TypeScript : aperçu des bibliothèques clés
\n\nTypeScript — une surcouche à typage statique de JavaScript — est de plus en plus utilisé dans les projets liés à l'apprentissage automatique (ML). Grâce à son typage strict, une meilleure lisibilité du code et un excellent support des IDE, TypeScript permet de créer des applications ML fiables, fonctionnant à la fois dans le navigateur et sur le serveur (Node.js). Dans cet article, nous examinerons les principales bibliothèques d'apprentissage automatique en TypeScript, leurs fonctionnalités et fournirons des exemples pratiques.
\n\n1. TensorFlow.js — le fleuron de l'apprentissage automatique en TypeScript
\n\nTensorFlow.js est un portage du célèbre framework TensorFlow pour JavaScript et TypeScript. Il permet d'exécuter des modèles d'apprentissage automatique directement dans le navigateur ou sur Node.js sans infrastructure serveur. La bibliothèque prend en charge toutes les étapes principales du ML : chargement de modèles pré-entraînés, entraînement de nouveaux modèles, inférence (prédiction) et même réglage fin (fine-tuning).
\n\nInstallation :
\nnpm install @tensorflow/tfjs\nnpm install @tensorflow/tfjs-node # pour Node.js (avec accélération)\n\nExemple : classification d'images avec le modèle pré-entraîné MobileNet
\nimport * as tf from '@tensorflow/tfjs';\nimport { loadGraphModel } from '@tensorflow/tfjs-converter';\n\nasync function classifyImage(imageElement: HTMLImageElement) {\n // Chargement du modèle pré-entraîné MobileNet\n const model = await loadGraphModel(\n 'https://tfhub.dev/google/tfjs-model/imagenet/mobilenet_v2_100_224/classification/3/default/1'\n );\n\n // Conversion de l'image en tenseur\n const tensor = tf.browser.fromPixels(imageElement)\n .resizeNearestNeighbor([224, 224])\n .toFloat()\n .expandDims();\n\n // Obtention de la prédiction\n const prediction = model.predict(tensor) as tf.Tensor;\n const topK = tf.topk(prediction, 3);\n const indices = await topK.indices.data();\n const values = await topK.values.data();\n\n console.log('Top-3 prédictions :', indices, values);\n}\n\n// Utilisation\nconst img = document.getElementById('myImage') as HTMLImageElement;\nclassifyImage(img);\n\nTensorFlow.js est idéal pour les tâches de vision par ordinateur, de traitement du texte (NLP) et de séries temporelles. En TypeScript, vous bénéficiez de l'autocomplétion pour toutes les méthodes, ce qui accélère considérablement le développement.
\n\n2. ML5.js — une interface conviviale pour le ML créatif
\n\nML5.js est construit au-dessus de TensorFlow.js, mais propose une API plus simple et de plus haut niveau. Cette bibliothèque est destinée aux artistes, designers et développeurs qui souhaitent ajouter rapidement des fonctionnalités ML sans plonger profondément dans les mathématiques. ML5.js prend en charge des tâches telles que la classification d'images, la détection d'objets, la génération de texte, l'analyse audio et bien plus encore.
\n\nInstallation :
\nnpm install ml5\n\nExemple : détection d'objets avec COCO-SSD
\nimport ml5 from 'ml5';\n\nasync function detectObjects(videoElement: HTMLVideoElement) {\n // Chargement du modèle de détection d'objets\n const objectDetector = await ml5.objectDetector('cocossd');\n\n // Exécution de la détection sur la vidéo\n const results = await objectDetector.detect(videoElement);\n\n results.forEach((obj: any) => {\n console.log(`Objet : ${obj.label}, confiance : ${obj.confidence.toFixed(2)}`);\n console.log(`Coordonnées : x=${obj.x}, y=${obj.y}, largeur=${obj.width}, hauteur=${obj.height}`);\n });\n}\n\n// Utilisation avec la webcam\nconst video = document.getElementById('webcam') as HTMLVideoElement;\nnavigator.mediaDevices.getUserMedia({ video: true })\n .then(stream => { video.srcObject = stream; })\n .then(() => detectObjects(video));\n\nML5.js est parfait pour le prototypage, les projets éducatifs et les installations interactives. En TypeScript, vous pouvez définir des types pour les résultats de détection, ce qui rend