Introduzione
Questa guida ti aiuterà a integrare un modello di Teachable Machine per classificare immagini nel tuo sito web. Seguiremo una struttura chiara e modulare, permettendoti di personalizzare facilmente il codice.
1. Strutturare il Codice
Il codice è suddiviso in tre parti principali:
- HTML: Struttura della pagina web
- CSS: Stile della pagina
- JavaScript: Logica per caricare il modello e classificare le immagini
Potrai integrare questi blocchi nel tuo sito senza dover riscrivere tutto da zero.
2. Inserire il Codice HTML nella Tua Pagina
Per aggiungere il sistema di classificazione al tuo sito, devi copiare e incollare il seguente codice HTML all’interno della tua pagina.
Dove inserirlo nel tuo sito?
- Se hai già una pagina dedicata alle immagini, incolla questo codice all’interno della sezione
<main>o in una<section>esistente. - Se vuoi una nuova sezione per la classificazione, incollalo dove desideri nel tuo HTML.
Codice HTML
<section class="container">
<h2>Carica un'immagine per la classificazione</h2>
<input type="file" id="imageUpload" accept="image/*">
<br>
<img id="imagePreview" style="height: 300px; display: none;" />
<br>
<div id="result-container">
<div id="class-1" class="result-box" style="display: none;">
<h3>Questa immagine appartiene alla Classe <span class="predicted-class"></span></h3>
<p>Precisione: <span class="accuracy"></span>%</p>
</div>
<div id="class-2" class="result-box" style="display: none;">
<h3>Questa immagine appartiene alla Classe <span class="predicted-class"></span></h3>
<p>Precisione: <span class="accuracy"></span>%</p>
</div>
</div>
</section>
📌 Nota: Questo codice crea una sezione con un campo per il caricamento dell’immagine, un’anteprima dell’immagine e due blocchi di risultato per mostrare la classificazione.
3. Collegare il Modello e gli Script JavaScript
Dopo aver aggiunto la sezione HTML, devi collegare il modello di Machine Learning e il file JavaScript.
Dove inserirlo?
Copia e incolla questo codice prima della chiusura di </body> nel tuo file HTML.
<script>
const URL = 'https://teachablemachine.withgoogle.com/models/BSHtIwvoT/';
const CLASSI = {
'class-1': 'Baseball',
'class-2': 'Hockey'
};
</script>
<script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@latest/dist/tf.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@teachablemachine/image@latest/dist/teachablemachine-image.min.js"></script>
<script src="script.js"></script>
📌 Nota: Assicurati di salvare il file script.js nella stessa cartella del tuo file HTML.
📌 Nota: Compila il campo URL inserendo l’url del tuo modello di classificazione.
📌 Nota: Compila il campo CLASSI inserendo a destra dei due punti i nomi delle classi che andrai a predire.
4. Aggiungere il CSS per Personalizzare lo Stile
Per migliorare l’aspetto della sezione, aggiungi questo codice nel tuo file stile.css.
body {
font-family: Arial, sans-serif;
text-align: center;
margin: 20px;
}
.container {
max-width: 500px;
margin: auto;
padding: 20px;
border: 1px solid #ccc;
border-radius: 10px;
background-color: #f9f9f9;
}
.result-box {
margin-top: 20px;
padding: 15px;
border-radius: 8px;
font-weight: bold;
}
#class-1 {
background-color: #D4EDDA;
color: #155724;
}
#class-2 {
background-color: #F8D7DA;
color: #721C24;
}
5. Creare il File script.js e Aggiungere la Logica
Ora crea un file chiamato script.js e incolla questo codice.
let model, maxPredictions;
async function init() {
model = await tmImage.load(URL + 'model.json', URL + 'metadata.json');
maxPredictions = model.getTotalClasses();
}
async function predict() {
const image = document.getElementById('imagePreview');
const prediction = await model.predict(image, false);
prediction.sort((a, b) => b.probability - a.probability);
const bestResult = prediction[0];
Object.keys(CLASSI).forEach(key => {
document.getElementById(key).style.display = 'none';
});
let selectedClass = Object.keys(CLASSI).find(key => CLASSI[key] === bestResult.className);
if (selectedClass) {
document.getElementById(selectedClass).style.display = 'block';
document.querySelector(`#${selectedClass} .accuracy`).textContent = (bestResult.probability * 100).toFixed(2);
document.querySelector(`#${selectedClass} .predicted-class`).textContent = bestResult.className;
}
}
function readImageAndPredict(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function (e) {
const imgElement = document.getElementById('imagePreview');
imgElement.src = e.target.result;
imgElement.style.display = 'block';
init().then(() => {
predict();
});
};
reader.readAsDataURL(input.files[0]);
}
}
document.getElementById('imageUpload').addEventListener('change', function () {
readImageAndPredict(this);
});
6. Elenco dei Segnaposti e Come Usarli
Questi segnaposti ti permettono di personalizzare la tua pagina:
| Segnaposto | Funzione |
|---|---|
id="imageUpload" | Input per il caricamento delle immagini |
id="imagePreview" | Visualizzazione dell’immagine caricata |
class="accuracy" | Mostra la percentuale di accuratezza |
class="predicted-class" | Nome della classe predetta |
id="class-1" / id="class-2" | Sezioni per mostrare i risultati |
Esempio di utilizzo
<p>
La classe predetta è <span class="predicted-class"></span>
con un'accuratezza del <span class="accuracy"></span>%
</p>