Spaces:
Running on Zero
Running on Zero
| title: Computer vision e piante - percorsi 6-16 anni | |
| emoji: 🌱 | |
| colorFrom: green | |
| colorTo: gray | |
| sdk: gradio | |
| sdk_version: 5.49.1 | |
| app_file: app.py | |
| python_version: "3.10" | |
| license: apache-2.0 | |
| short_description: Percorsi didattici su immagini, piante e computer vision. | |
| startup_duration_timeout: 1h | |
| preload_from_hub: | |
| - Uminosachi/FastSAM FastSAM-s.pt | |
| # Computer vision e piante - percorsi 6-16 anni | |
| Lo Space mantiene un unico indirizzo e organizza quattro percorsi progressivi: | |
| - **6-9 anni:** preparazione di schede PDF con fotografie a quadretti; | |
| - **9-11 anni:** esplorazione di matrici di pixel, trasformazioni additive del colore e stima automatica del verde; | |
| - **11-14 anni:** confronto progressivo fra segmentazione HSV, indice ExG e FastSAM guidato da un punto; | |
| - **14-16 anni:** calibrazione del riferimento, segmentazione e misura, FastSAM e metodo ibrido. La documentazione tecnica dettagliata è mantenuta separata in `README_14-16.md`. | |
| ## Avvio rapido | |
| 1. Aprire la scheda della fascia interessata. | |
| 2. Caricare una fotografia. Nei moduli 6-9 e 11-14 è anche possibile usare il dataset sperimentale incluso. | |
| 3. Seguire i pulsanti nell'ordine indicato. | |
| 4. Controllare sempre la maschera o l'anteprima prima di interpretare un risultato numerico. | |
| 5. Aprire il PDF della fascia quando servono istruzioni didattiche più dettagliate. | |
| ## Dataset sperimentale | |
| La cartella `dataset/` contiene **48 fotografie**: | |
| - `NS` = assenza di stress idrico; | |
| - `S` = stress idrico; | |
| - `A`, `B`, `C` = repliche; | |
| - `06`, `09`, `11`, `14`, `16`, `19`, `23`, `26` = giorni dal trapianto. | |
| Il dataset completo non viene sostituito da una selezione ridotta. Può essere utilizzato quando la classe non produce fotografie proprie o quando serve confrontare immagini acquisite con un protocollo comune. | |
|  | |
| --- | |
| ## 6-9 - Piante a quadretti | |
|  | |
| ### Procedura | |
| 1. Caricare una fotografia oppure selezionare condizione, replica e giorno dal dataset. | |
| 2. Inserire il titolo dell'attività. | |
| 3. Scegliere il numero di righe e colonne, da 4 a 36. | |
| 4. Regolare lo schiarimento. Il valore iniziale è `0,50`. | |
| 5. Lasciare disattivata l'opzione colore per produrre una fotografia in bianco e nero; attivarla solo quando serve conservare i colori. | |
| 6. Premere **Genera la scheda PDF**. | |
| 7. Controllare l'anteprima e scaricare il PDF. | |
| Il PDF contiene: | |
| - titolo dell'attività; | |
| - fotografia schiarita con griglia; | |
| - indicazione della dimensione della griglia; | |
| - spazio finale per annotare a mano il numero di quadratini verdi identificati o colorati. | |
| Il programma non riconosce la pianta, non disegna contorni automatici e non introduce il conteggio dei quadratini parziali. | |
| Guida didattica: `assets/6-9/Guida_piante_a_quadretti.pdf`. | |
| --- | |
| ## 9-11 - Pixel, colore e confronto del verde | |
|  | |
| ### A scuola - un solo caricamento | |
| La fotografia viene caricata una sola volta e alimenta entrambe le attività scolastiche. | |
| #### 1. Esplora un patch 5 x 5 | |
| 1. Caricare la fotografia condivisa. | |
| 2. Fare click su un punto dell'immagine. | |
| 3. Scegliere `RGB` oppure `HSV`. | |
| 4. Osservare il grande patch 5 x 5. | |
| Il patch contiene i colori reali dei 25 pixel selezionati. Su ogni cella sono scritti direttamente i tre valori dello spazio scelto: | |
| - RGB: R, G e B da 0 a 255; | |
| - HSV: H in gradi, S e V in percentuale. | |
| Non viene mostrata una seconda matrice numerica separata: colore e valori convivono nello stesso ingrandimento. | |
| #### 2. Laboratorio del colore | |
| La stessa fotografia viene trasferita automaticamente nel pennello. Non serve un secondo caricamento. | |
| 1. Dipingere la zona da modificare. | |
| 2. Scegliere spazio di colore, canale e variazione additiva. | |
| 3. Premere **Applica la modifica alla zona dipinta**. | |
| 4. Usare **Ripristina la fotografia originale** per ricominciare dallo stesso caricamento. | |
| Per RGB i valori sono limitati fra 0 e 255. Per S e V sono limitati fra 0% e 100%. H è circolare: aumentando ripetutamente la tonalità si attraversa il cerchio cromatico e si ritorna al punto di partenza. | |
| ### Con la famiglia - Quale fotografia contiene più verde? | |
| 1. Caricare due fotografie, A e B. | |
| 2. Formulare una previsione prima di avviare il calcolo. | |
| 3. Premere **Confronta: quale fotografia contiene più verde?**. | |
| 4. Confrontare percentuali, overlay e maschere. | |
| Le due fotografie vengono elaborate con le stesse soglie HSV. Nel risultato: | |
| - la regione riconosciuta come verde conserva i colori originali; | |
| - tutto il resto viene fortemente desaturato e scurito; | |
| - la percentuale compare in grande sopra ogni fotografia; | |
| - il valore maggiore viene evidenziato e accompagnato da una corona; | |
| - le due maschere binarie utilizzate dal programma sono mostrate sotto i risultati. | |
| La percentuale resta una stima prodotta dalle soglie HSV e va interpretata osservando anche le maschere. | |
| Guida didattica: `assets/9-11/Guida_pixel_e_verde.pdf`. | |
| --- | |
| ## 11-14 - Confronta i metodi | |
|  | |
| La stessa fotografia viene utilizzata in quattro passaggi progressivi. | |
| ### 1. Metodo cromatico automatico | |
| Premere **Applica il metodo cromatico**. Lo Space usa soglie HSV iniziali e applica automaticamente una pulizia morfologica della maschera. Il kernel viene scelto in base alle dimensioni dell'immagine: | |
| - `3 × 3` per immagini più piccole; | |
| - `5 × 5` per immagini più grandi. | |
| ### 2. Modifica delle soglie HSV | |
| Nel pannello **Modifica le soglie nello spazio HSV**, già visibile, è possibile cambiare: | |
| - intervallo della tonalità H; | |
| - saturazione minima e massima; | |
| - luminosità minima e massima. | |
| Questa sezione serve a osservare come una trasformazione dei limiti numerici modifica la maschera. | |
| ### 3. Indice ExG | |
| Nel pannello **Prova l’indice ExG**, già visibile, l’indice viene calcolato per ogni pixel: | |
| `ExG = 2G - R - B` | |
| Il programma conserva i pixel per i quali ExG supera la soglia scelta e applica la stessa pulizia automatica usata dal metodo HSV. | |
| ### 4. FastSAM guidato da un punto | |
| 1. Caricare o selezionare la fotografia sorgente. | |
| 2. Raggiungere il pannello **Prova FastSAM**, già visibile nella sequenza. | |
| 3. Usare la copia sincronizzata dell'immagine presente nello stesso pannello: non è necessario tornare alla parte superiore della pagina. | |
| 4. Fare click sulla pianta e controllare il punto rosso. | |
| 5. Premere **Segmenta l'oggetto indicato**. | |
| 6. Attendere la comparsa della maschera e della sovrapposizione. | |
| Il click registra soltanto il punto. L'inferenza parte dal pulsante, così è possibile correggere la selezione prima dell'elaborazione. Le celle **Maschera FastSAM** e **Sovrapposizione FastSAM** restano nascoste fino alla produzione di un risultato e non richiedono caricamenti. | |
| FastSAM usa il punto come prompt e restituisce una maschera della regione associata all'oggetto selezionato. Il pulsante **Confronta l'ultimo metodo cromatico con FastSAM** affianca l'ultima sovrapposizione HSV o ExG alla sovrapposizione FastSAM. | |
| Guide: | |
| - `assets/11-14/Guida_confronto_segmentazioni.pdf`; | |
| - `assets/11-14/Approfondimenti_tecnici_docenti.pdf`. | |
| --- | |
| ## 14-16 - Laboratorio di analisi | |
| La sezione integra le funzioni del precedente `Plant_segmentation_edu` in sei pannelli sempre visibili: | |
| 1. caricamento unico della fotografia; | |
| 2. calibrazione automatica del riferimento, con regolazione manuale immediatamente disponibile; | |
| 3. segmentazione automatica ExG e misure, con confronto manuale fra ExG, HSV, RGB e Lab; | |
| 4. FastSAM guidato da un punto; | |
| 5. metodo ibrido automatico con più interrogazioni FastSAM e selezione finale tramite ExG; | |
| 6. esportazione e documentazione. | |
| Il dataset è lo stesso usato nelle altre fasce e rimane presente una sola volta nella cartella `dataset/`. Il modello FastSAM è condiviso con la sezione 11-14 e viene caricato una sola volta in memoria. | |
| La guida tecnica del precedente Space, completa delle schermate reali, è conservata separatamente: [`README_14-16.md`](README_14-16.md). | |
| Documenti originali della sezione: | |
| - `assets/14-16/Tutorial_setup_sperimentale.pdf`; | |
| - `assets/14-16/Scheda_esperimento.pdf`. | |
| ## Runtime ZeroGPU con FastSAM forzato su CPU | |
| Lo Space è predisposto per essere ospitato con hardware **ZeroGPU**, ma le funzioni visibili agli utenti restano sul processo CPU: | |
| - griglie, PDF, pixel, HSV, ExG e pulizia delle maschere vengono eseguiti su CPU; | |
| - FastSAM viene richiamato con `device="cpu"` e il modello viene mantenuto in cache dopo il primo caricamento; | |
| - una funzione minima decorata con `@spaces.GPU` è presente esclusivamente per soddisfare il controllo di avvio del runtime ZeroGPU e non è collegata all'interfaccia; | |
| - poiché la funzione decorata non viene richiamata, il normale uso dello Space non richiede l'assegnazione della GPU dinamica. | |
| Il peso `FastSAM-s.pt` viene precaricato dal repository pubblico `Uminosachi/FastSAM` durante il build. Il codice usa `hf_hub_download` per individuare il file nella cache e non dipende dal download automatico di Ultralytics durante il primo click. | |
| ### Test dopo la pubblicazione | |
| 1. Mantenere **ZeroGPU** nelle impostazioni hardware. | |
| 2. Sostituire tutti i file del repository con quelli di questo pacchetto. | |
| 3. Eseguire un **Factory reboot** per eliminare cache e dipendenze della revisione precedente. | |
| 4. Aprire la scheda 11-14 e caricare un'immagine del dataset. | |
| 5. Aprire la sezione FastSAM: la fotografia deve comparire automaticamente nel riquadro locale. | |
| 6. Fare click sulla pianta, controllare il punto rosso e premere **Segmenta l'oggetto indicato**. | |
| 7. Verificare nei container log la dicitura di avvio e, in caso di errore, il messaggio Python generato dal pulsante. Gli avvisi del browser relativi a sensori, PixiJS, telemetria o `awswaf.com` non descrivono l'errore del modello. | |
| ## Pubblicazione nello Space esistente | |
| Per mantenere invariati i link già presenti nelle schede: | |
| 1. aprire lo Space esistente; | |
| 2. sostituire i file con il contenuto di questa cartella, senza creare un nuovo slug; | |
| 3. verificare che `dataset/` contenga 48 immagini; | |
| 4. eseguire un Factory reboot; | |
| 5. provare prima una funzione CPU; | |
| 6. aprire FastSAM, selezionare il punto nella copia sincronizzata e avviare la segmentazione. | |
| ## Documenti allegati | |
| - `assets/14-16/Tutorial_setup_sperimentale.pdf`; | |
| - `assets/14-16/Scheda_esperimento.pdf`; | |
| - `assets/6-9/Guida_piante_a_quadretti.pdf`; | |
| - `assets/9-11/Guida_pixel_e_verde.pdf`; | |
| - `assets/11-14/Guida_confronto_segmentazioni.pdf`; | |
| - `assets/11-14/Approfondimenti_tecnici_docenti.pdf`. | |
| ## Fonti tecniche essenziali | |
| - FastSAM: https://docs.ultralytics.com/models/fast-sam/ | |
| - Gradio Image: https://www.gradio.app/docs/gradio/image | |
| - Gradio ImageEditor: https://www.gradio.app/docs/gradio/imageeditor | |
| - Hugging Face ZeroGPU: https://huggingface.co/docs/hub/spaces-zerogpu | |
| - Configurazione e `preload_from_hub`: https://huggingface.co/docs/hub/spaces-config-reference | |