Rilevamento visivo dei gatti mediante rilevazione di anomalie


17

Ho un progetto di hobby che sto pensando di impegnarmi come un modo per aumentare la mia esperienza finora limitata di apprendimento automatico. Ho preso e completato il MOOC di Coursera sull'argomento. La mia domanda riguarda la fattibilità del progetto.

L'attività è la seguente:

Di tanto in tanto i gatti vicini visitano il mio giardino, cosa che non mi piace dato che tendono a defecare sul mio prato. Vorrei avere un sistema di allarme che mi avvisa quando è presente un gatto, in modo da poterlo inseguire usando il mio super soaker. Per semplicità, dì che mi interessa solo un gatto con colorazione in bianco e nero.

Ho installato un Raspberry Pi con un modulo videocamera in grado di catturare video e / o immagini di una parte del giardino.

Immagine di esempio:

Immagine del giardino di esempio

La mia prima idea è stata quella di formare un classificatore per identificare oggetti simili a quelli di un gatto, ma dopo aver realizzato che non sarò in grado di ottenere un numero sufficiente di campioni positivi, l'ho abbandonato a favore del rilevamento di anomalie.

Stimo che se avessi scattato una foto ogni secondo della giornata, avrei finito con forse cinque foto contenenti gatti (su circa 60.000 con la luce solare) al giorno.

È possibile utilizzare il rilevamento anomalie? In tal caso, quali caratteristiche suggeriresti? Le mie idee fino ad ora sarebbero semplicemente contare il numero di pixel con quello che ha determinati colori; eseguire una sorta di rilevamento BLOB / segmentazione delle immagini (cosa che non so come fare e che quindi vorrei evitare) ed eseguire la stessa analisi del colore su di essi.


1
Forse questa domanda è più adatta al sito SE di validazione incrociata, ora che ci penso. La distinzione non è abbastanza chiara per me ...
Frost,

4
Penso che la domanda sia molto adatta a questo sito, poiché tratta un'applicazione pratica dell'apprendimento automatico. a proposito, domanda stupida, perché così poche foto di gatti? Vengono solo per soli cinque secondi?
insys

@insys, le voci sulla mia vigilanza con il soaker sembrano essersi diffuse nella comunità felina. Tendono a non indugiare come una volta. Immagino che sia una buona cosa l'obiettivo reale di liberare il mio giardino di gatti, anche se complica la mia soluzione preferita e più sofisticata.
Frost,

2
Sembra che il prossimo passo ovvio (dopo che hai fatto funzionare la rilevazione del gatto) sia un super soaker controllato da lampone :-)
Kryten,

Risposte:


8

È possibile semplificare in modo significativo il problema utilizzando un approccio di rilevamento del movimento / cambiamento. Ad esempio, è possibile confrontare ogni immagine / fotogramma con uno fin dall'inizio (ad es. Un minuto prima), quindi considerare solo i pixel che sono cambiati rispetto ai tempi precedenti. È quindi possibile estrarre la regione rettangolare di modifica e utilizzarla come base per la classificazione o il rilevamento delle anomalie.

Adottare questo tipo di approccio può semplificare in modo significativo il tuo classificatore e ridurre il tuo tasso di falsi target perché puoi ignorare qualsiasi cosa che non abbia approssimativamente le dimensioni di un gatto (ad esempio, una persona o un uccello). Dovresti quindi utilizzare le aree di modifica estratte che non sono state filtrate per formare il set di addestramento per il tuo classificatore (o rilevatore di anomalie).

Assicurati solo di ottenere un tasso di falsi target sufficientemente basso prima di montare una torretta laser sul sistema di rilevamento delle intrusioni feline.


1
Questa è una buona idea per un ambiente controllato, ma non sono sicuro della sua applicabilità in questo caso, dal momento che abbiamo a che fare con l'ambiente naturale in cui vi è un cambiamento continuo, cioè un cambiamento del tempo, della posizione del sole, delle piante e degli alberi a causa di vento, stagioni, ecc. Credo che la regione del cambiamento che descriveresti sarebbe comunque vicina alla dimensione dell'intera immagine.
insys

@insys - Vedo il tuo punto ma non sono d'accordo - credo che renda il rivelatore più resistente al cambiamento. La differenza di tempo tra i fotogrammi relativi dovrebbe essere piccola (da ~ secondi a un minuto), quindi sole, stagione, tempo dovrebbero essere trascurabili. Concordo sul fatto che il vento farà muovere le piante, ma la fase di classificazione può evitare quelle poiché le loro dimensioni / forma / colore sono diverse da quelle di un gatto. Inoltre, l'utilizzo di due fotogrammi in momenti simili consente di normalizzare le intensità dei pixel per gestire meglio le diverse condizioni di illuminazione (ad esempio, un gatto in una giornata di sole o nuvoloso).
Bogatron,

In realtà, sono più confuso riguardo alla tua risposta ora che ho letto il tuo commento :) Forse ho frainteso, ma se usi effettivamente le "regioni di cambiamento estratte" per formare i tuoi campioni positivi, come menzionato nella tua domanda, come fai a fare sicuro che sono gatti? Potrebbero essere qualsiasi cosa. Come tale, il tuo passo di classificazione non riuscirebbe a rilevare nulla ma ciò che viene insegnato a rilevare - cioè cambiamenti di qualsiasi tipo. Quindi in realtà sta ripetendo il lavoro del rivelatore "cambia".
insys

Inoltre, le condizioni di illuminazione sono sicuramente fonte di preoccupazione, ma, se capisco bene il punto, non è chiaro quali due immagini simili, scattate con una differenza di 1 minuto, offrirebbero per normalizzare le intensità dei pixel?
insys,

Le regioni estratte possono rappresentare esempi positivi o negativi: sono ciò che useresti per addestrare il classificatore di gatti. Per quanto riguarda le intensità, supponiamo che il classificatore sia addestrato da regioni estratte principalmente da immagini assolate. Il classificatore potrebbe quindi facilmente trovare gatti con una pelliccia bianca brillante ma che non funzionerà bene più tardi in una giornata nuvolosa (quando la pelliccia bianca non è altrettanto brillante) o vicino al crepuscolo. L'esecuzione di una normalizzazione delle due immagini aiuta a mitigare quel problema (ovvero, una coppia di immagini luminose e una coppia di immagini scure sembrerebbero simili al classificatore).
Bogogon,

4

Questo è un progetto interessante e anche abbastanza ambizioso :)

Non sono sicuro che il rilevamento di anomalie (almeno nel senso descritto nel corso che hai seguito) sarebbe un algoritmo molto appropriato in questo caso.

Considererei un approccio più praticabile quello che è stato discusso alla fine del corso in cui è stato dimostrato un flusso di lavoro di Photo OCR.

L'approccio consisterebbe nel segmentare la tua immagine in "blocchi" più piccoli e nel superarli uno a uno utilizzando un algoritmo di apprendimento supervisionato e provare a classificare ciascun blocco in base al fatto che contenga o meno un gatto. Se un blocco contiene un gatto, l'allarme si attiva. Come bonus, ottieni anche la posizione del gatto, in modo da poter pensare di incorporare una risposta "automatica" come un passo futuro per il tuo progetto.

Il vantaggio qui è che non dovrai addestrare il tuo algoritmo utilizzando un set di dati specifico per il tuo giardino (che, come dici, è difficile da creare), ma puoi usare immagini di gatti tolti dalla rete (ad esempio forse puoi cercare "gatto sull'erba" o qualcosa del genere), e forse macchie di foto dai tuoi (o altri) giardini. Pertanto non devi dedicare il tuo tempo alla raccolta di foto dalla tua fotocamera ed eviti il ​​rischio di avere un campione molto piccolo (comparabile) di aspetti positivi (ad esempio i gatti).

Ora, ovviamente, quanto è facile costruire un rilevatore di gatti accurato è un altro argomento.


E cosa accadrebbe se il tuo blocco divide il taglio in due o più sezioni? La strategia di blocco è un approccio molto comune, ma quando ho una telecamera completamente fissa su una certa posizione, il rilevamento del movimento è un approccio migliore e che richiede meno tempo, dal mio punto di vista.
adesantos,

@adesantos - Quello che dici potrebbe essere vero, e per la previsione la differenziazione tra parti in movimento e parti in movimento ha i suoi vantaggi. Ma per l'allenamento, il modo in cui è descritto da Bogogon, non è chiaro quali benefici appaia sul tavolo. Nel complesso, la mia opinione è che aggiunge complessità, il che allunga notevolmente i tempi di debug. Il vantaggio di spostare la finestra è nella sua semplicità.
insys

A proposito, per quanto riguarda la divisione menzionata, una strategia ovvia è quella di far sovrapporre le finestre, in modo che la posizione della divisione non influisca sul classificatore.
insys

Aggiungerei alla mia proposta (rilevazione del movimento) l'uso dell'algoritmo SIFT con una trama gatto. Il metodo SIFT può anche essere utilizzato con quella strategia di blocchi, ma in tal caso confronterai più blocchi di quelli necessari. Notare che un gatto si muove, ma un albero o un cespuglio non molto.
adesantos,

3

La strategia di rilevamento del movimento / cambiamento è certamente adeguata, ma aggiungerei un'operazione aggiuntiva. Vorrei rilevare quelle regioni che hanno maggiori probabilità di essere cambiate, ad esempio la scala sembra un luogo in cui gli esseri umani possono essere (anche i gatti) e l'erba dove possono essere cani, gatti o umani.

Catturerei una mappa con dimensioni dell'oggetto e della traiettoria e con questo creerei un cluster con l'obiettivo di rilevare un oggetto (con dimensioni specifiche all'interno dell'immagine in termini di pixel) che si muove con una certa velocità e traiettoria.

È possibile ottenere ciò utilizzando R o suggerirei OpenCV al fine di rilevare il movimento e seguire diversi oggetti.


2

La sottrazione in background di OpenCV troverà oggetti che si muovono attorno al tuo indurimento. Successivamente è possibile utilizzare un classificatore o un'analisi della forma per distinguere tra gatti, persone, alberi e così via.


1

È un uccello? È un gatto? Abbiamo dimensioni di gatto in bianco e nero! gazze qui. così fallirebbe.

La prima cosa sarebbe escludere tutte le aree verdi, i gatti raramente sono verdi.

Quindi confronta il resto con un'immagine di riferimento per rimuovere elementi statici come pietre e scale.

Dovrebbe essere possibile rilevare oggetti di dimensioni minime, ma per una classificazione la risoluzione è troppo bassa. Potrebbe anche essere il tuo vicino a provare il suo nuovo drone telecomandato.

Con due telecamere è possibile eseguire una mappatura 3d degli oggetti ed eliminare gli oggetti volanti.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.