DeveloperBreeze

Machine Learning Programming Tutorials, Guides & Best Practices

Explore 1+ expertly crafted machine learning tutorials, components, and code examples. Stay productive and build faster with proven implementation strategies and design patterns from DeveloperBreeze.

Tutorial
javascript

Leveraging Machine Learning Models in Real-Time with TensorFlow.js and React: Building AI-Powered Interfaces

import React, { useState, useEffect } from 'react';
import * as tf from '@tensorflow/tfjs';
import '@tensorflow/tfjs-backend-cpu';
import '@tensorflow/tfjs-backend-webgl';

function ImageClassifier() {
  const [image, setImage] = useState(null);
  const [model, setModel] = useState(null);
  const [predictions, setPredictions] = useState(null);

  useEffect(() => {
    const loadModel = async () => {
      const loadedModel = await tf.loadGraphModel('https://path-to-model/model.json');
      setModel(loadedModel);
    };

    loadModel();
  }, []);

  const handleImageUpload = (event) => {
    const file = event.target.files[0];
    const reader = new FileReader();

    reader.onload = async () => {
      const img = new Image();
      img.src = reader.result;
      img.onload = async () => {
        const tensor = tf.browser.fromPixels(img)
          .resizeNearestNeighbor([224, 224])
          .toFloat()
          .expandDims();

        const predictions = await model.predict(tensor).data();
        setPredictions(predictions);
      };
    };

    if (file) {
      reader.readAsDataURL(file);
    }
  };

  return (
    <div>
      <input type="file" accept="image/*" onChange={handleImageUpload} />
      {image && <img src={image} alt="Uploaded" />}
      {predictions && (
        <ul>
          {predictions.map((pred, index) => (
            <li key={index}>{pred}</li>
          ))}
        </ul>
      )}
    </div>
  );
}

export default ImageClassifier;

You can enhance the user experience by displaying the predictions in a user-friendly format, such as showing the top 3 predictions with confidence scores.

Aug 20, 2024
Read More