Segmentazione delle immagini senza supervisione


10

Sto provando a implementare un algoritmo in cui data un'immagine con diversi oggetti su una tabella piana, desiderato è l'output di maschere di segmentazione per ogni oggetto. A differenza della CNN, l'obiettivo qui è quello di rilevare oggetti in un ambiente sconosciuto. Quali sono gli approcci migliori a questo problema? Inoltre, ci sono esempi di implementazione disponibili online?

Modifica: mi dispiace, la domanda potrebbe essere stata un po 'fuorviante. Quello che intendevo per "ambiente non familiare" è che gli oggetti potrebbero essere sconosciuti all'algoritmo. L'algoritmo non dovrebbe aver bisogno di capire quale sia l'oggetto, ma dovrebbe solo rilevare l'oggetto. Come dovrei affrontare questo problema?


"diversamente dalle CNN" non ha senso; Le CNN sono un tipo di modello, non un tipo di attività con un obiettivo. La segmentazione delle immagini senza supervisione può essere eseguita anche utilizzando le CNN
Nathan,

Risposte:


4

Risposta rapida

Mean Shift LSH che è un aggiornamento in del famoso algoritmo Mean Shift in noto per la sua capacità di segmentazione delle immaginiO(n)O(n2)

Alcune spiegazioni

Se desideri un vero approccio non supervisionato alle immagini segmentate, usa gli algoritmi di clustering . Il fatto è che esistono molti algoritmi con complessità e specificità temporali diverse . Prendi il più famoso, il -Means, è in così veloce ma devi specificare quanti cluster vuoi che non è quello che intendi esplorando un'immagine sconosciuta senza alcuna informazione su quante forme sono presenta in esso. Inoltre, anche se supponi di sapere quante forme sono presenti, possiamo supporre che ci siano forme casuali che è un altro punto in cui i Me falliscono perché è designato per trovare cluster ellittici e NONKO(n)K quelli a forma casuale.

Al contrario, abbiamo lo spostamento medio che è in grado di trovare automaticamente il numero di cluster, utile quando non sai cosa stai cercando, con forme casuali .

Ovviamente sostituisci il parametro di Mezzi con altri parametri Mean Shift che possono essere difficili da perfezionare, ma non esiste uno strumento che ti permetta di fare magie se non ti stai esercitando per fare magie.KK

Un consiglio per il clustering della segmentazione delle immagini

Trasforma il tuo spazio colore da RGB a LUV che è meglio per la distanza euclidea.

K Media vs media Shift LSH complessità temporale

  • Spostamento medio:O(α.n)
  • Mezzi K:O(β.n)
  • α>β

Mean Shift LSH è più lento ma si adatta meglio alle tue esigenze. Rimane ancora lineare ed è anche scalabile con l'implementazione menzionata.

PS: La mia immagine del profilo è un'applicazione di Mean Shift LSH su me stesso se può aiutare a capire come funziona.


3

Potrebbe essere necessario dare un'occhiata a questo lavoro presentato e accettato per CVPR 2018: Imparare a segmentare ogni cosa

In questo lavoro, provano a segmentare tutto, anche gli oggetti non noti alla rete. È stata utilizzata la maschera R-CNN, combinata con una sottorete di apprendimento del trasferimento, che ottengono ottimi risultati nel segmentare quasi tutto.


2

Lo stato dell'arte (SOTA) per la segmentazione delle immagini sarebbe Mask-RCNN di Facebook .

Mentre di solito viene addestrato su set di dati come COCO o Pascal che presentano oggetti della vita reale, è possibile riqualificarlo su un set di dati di propria scelta, reale o no.

Facebook fornisce un'implementazione ( Detectron ) sotto la licenza Apache2. Provaci!


In realtà penso di aver posto la domanda in modo fuorviante, mia cattiva. Ho appena pubblicato una modifica, puoi rivederla?
MuhsinFatih,

2

In realtà, il tuo compito è supervisionato. Segnetpuò essere una buona architettura per il tuo scopo a cui è possibile accedere a una delle sue implementazioni qui . SegNet impara a prevedere etichette di classe pixel-saggio dall'apprendimento supervisionato. Pertanto abbiamo bisogno di un set di dati di immagini di input con corrispondenti etichette di verità di base. Etichettare le immagini devono essere singolo canale, con ogni pixel marcato con la sua classe ... .

Inoltre, dai un'occhiata alle reti convoluzionali che si adattano perfettamente al tuo compito.


Sulla base delle modifiche nella domanda, aggiungo ulteriori informazioni. Esistono numerosi metodi che possono essere applicati per questa attività. Fondamentalmente il più semplice è usare un'etichetta di sfondo e classificare quelle classi che non conosci come sfondo utilizzando le architetture menzionate. In questo modo avrai etichette che possono sovrapporsi per la classe di fondo che è un probabile svantaggio di questo approccio ma il suo vantaggio è che nei casi in cui le tue etichette addestrate sono frequentemente utilizzate negli input, puoi avere una versione relativamente leggera dell'architettura che riconosce le classi sconosciute.


In realtà penso di aver posto la domanda in modo fuorviante, mia cattiva. Ho appena pubblicato una modifica, puoi rivederla?
MuhsinFatih,

@MuhsinFatih modificato.
Media,

Sarebbe certamente più facile e raggiungere migliori prestazioni se questo fosse un compito supervisionato, ma è possibile anche la segmentazione delle immagini senza supervisione.
Nathan,

@Nathan Ho suggerito la mia opinione in quel momento. Sicuramente, è possibile.
Media

1

Questo potrebbe essere qualcosa che stai cercando. Dato che chiedi la segmentazione dell'immagine e non la semantic / instancesegmentazione, suppongo che non richieda l'etichettatura per ogni segmento dell'immagine.

Il metodo è chiamato scene-cutche segmenta un'immagine in regioni agnostiche di classe in modo non supervisionato. Funziona molto bene in caso di ambienti interni ingombra.

Collegamento carta: arxiv

Codice: codice

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.