Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Voyagez avec TensorFlow.js

Voyagez avec TensorFlow.js

Un peu de JS, pas mal d'IA, beaucoup de passion !

Marius Mézerette

June 27, 2019
Tweet

Other Decks in Programming

Transcript

  1. Voyagez avec TensorFlow.js Un peu de JS, pas mal d'IA,

    beaucoup de passion JSSophia – 27 Juin 2019 Marius Mézerette
  2. ET TOI C’EST QUOI TA PASSION ? J’utilise des satellites

    qui coûtent des millions pour chercher des boites Tupperware dans la forêt
  3. Une app pour scanner les codes trackables facilement avec de

    l’IA https://github.com/MariusMez/TrackableOrNot
  4. Entraînement de 3 modèles d’IA spécialisés DÉTECTION D’OBJETS SSD -

    MOBILENET – Pretrained Coco Précision : 99% (val) – 96% (prod) Taille modèle : 23 MB - ~5s inférence CLASSIFIEUR IMAGE DENSENET – FineTuning ImageNet Précision : 98% (val) – 83% (prod) Taille modèle : 51 MB - ~1s inférence OCR INTELLIGENT { "code": "GSN57D", "probability": 1.00, "ocr_time": "0.06s » } { "code": "CT10WH", "probability": 0.13, "ocr_time": "0.06s » } { "code": "4RVHEN ", "probability": 0.96, "ocr_time": "0.15s » } ATTENTION-BASED OCR Précision : 93% (val) – ??% (prod) Taille modèle : 32 MB { "code": "DT0M6J", "probability": 0.99, "ocr_time": "0.09s » } https://www.tbscanner.com/api/
  5. Développement de nouveaux modèles Réentraînement de modèles Exécution de modèles

    existant https://www.tensorflow.org/js .js is a library for developing and training ML models in JavaScript, and deploying in browser or on Node.js • Core • Layers • Data • Converters ! repository packages
  6. BUILD / TRAIN en pratique : transfer learning ! https://github.com/tensorflow/tfjs-node

    https://github.com/tensorflow/tfjs-models MobileNet PoseNet KNN Classifier Coco SSD BodyPix Toxicity SpeechCommand
  7. RUN de modèles existant ? https://github.com/tensorflow/tfjs-converter Note: Session bundle and

    Frozen model formats have been deprecated in TensorFlow.js 1.0. Please use the TensorFlow.js 0.15.x backend to convert these formats, available in tfjs-converter 0.8.6. CLASSIFIEUR IMAGE DÉTECTION D’OBJETS OCR INTELLIGENT $ pip install tensorflowjs==0.8.6 $ tensorflowjs_converter \ --input_format=tf_saved_model \ --output_format=tensorflowjs \ --saved_model_tags=serve \ --output_node_names='detection_boxes,detection_classes ,detection_scores,num_detections' \ ./od_mobilenet/saved_model \ ./od_mobilenet/web_model $ ls od_mobilenet/web_model/ group1-shard1of6 group1-shard2of6 group1-shard3of6 group1-shard4of6 group1-shard5of6 group1-shard6of6 tensorflowjs_model.pb weights_manifest.json $ git clone [email protected]:tensorflow/tfjs-converter.git $ cd tfjs-converter && yarn $ yarn ts-node tools/pb2json_converter.ts od_mobilenet/web_model/ json_model_directory/ ! Bien lire le README et la FAQ
  8. RUN du modèle TensorFlow.js DÉTECTION D’OBJETS $ ls json_model_directory/ group1-shard1of6

    (4.2 MB) group1-shard2of6 (4.2 MB) group1-shard3of6 (4.2 MB) group1-shard4of6 (4.2 MB) group1-shard5of6 (4.2 MB) group1-shard6of6 (1.1 MB) model.json (282 KB) // TensorFlow.js 0.x.x const MODEL_URL = '/model/tensorflowjs_model.pb' const WEIGHTS_URL = '/model/weights_manifest.json’ const model = await tf.loadFrozenModel(MODEL_URL, WEIGHTS_URL) // TensorFlow.js 1.x.x const MODEL_URL = '/json_model_directory/model.json’ const model = await tf.loadGraphModel(MODEL_URL) Chargement des modèles <!-- load TensorFlow.js --> <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs"></script> // via npm install @tensorflow/tfjs import * as tf from '@tensorflow/tfjs';
  9. RUN du modèle Pre-processing des entrées du modèle à Inférence

    du modèle à export interface DetectedObject { bbox: [number, number, number, number]; // [x, y, width, height] class: string; score: number; } à
  10. Avantages / Inconvénients Analyse en temps-réél Usage hors-ligne Confidentialité Facilité

    de déploiement Coûts ! " # $ Temps de chargement initial (nous sommes loin de respecter le budget si la taille mémoire des modèles > 10mo) ü Pas d’échanges réseau pour les prédictions ü Analyse vidéo en flux continu ü Compatible PWA % ü Les données ne voyagent pas Le modèle d’IA entrainé est accessible publiquement ü Rien à installer, utilise WebGL, compatible avec tous les GPUs ! ü On économise des coûts de puissance de calcul et de réseau Compatibilité de certains navigateurs
  11. Ressources • Projet TensorFlow.js : https://www.tensorflow.org/js & https://github.com/tensorflow/tfjs • Codelabs

    prise en main de l’API : https://codelabs.developers.google.com/codelabs/tensorflowjs-teachablemachine-codelab/index.html#0 • Blogpost : https://rangle.io/blog/bringing-artificial-intelligence-to-the-browser-with-tensorflow-js/ • Entrainement de modèles dans le navigateur : https://thekevinscott.com/image-classification-with-javascript/ • Object Detection avec TFJS : https://medium.com/@erdemisbilen/building-realtime-object-detection-webapp-with-tensorflow-js-and-angular-a4ff5062bdf1 • Tips pour optimiser ses modèles : https://itnext.io/18-tips-for-training-your-own-tensorflow-js-models-in-the-browser-3e40141c9091 • Fun : https://medium.com/@timanglade/how-hbos-silicon-valley-built-not-hotdog-with-mobile-tensorflow-keras-react-native-ef03260747f3