-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbozza_relazione.txt
40 lines (25 loc) · 4.45 KB
/
bozza_relazione.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
IDEA
Il problema da affrontare era quello di dover capire come distinguere se una pagina di un prodotto appartenesse o meno ad una specifica categoria. L'idea è stata quella di replicare il modo in cui un osservatore umano riesca a fare la distinzione.
Quindi, la prima cosa che ci permette di riconoscere un prodotto su una pagina di ecommerce è senza dubbio la sua immagine. Pensandoci è anche il modo più agnostico. Il classificatore utilizzato da foxlink utilizza un approccio Bayesiano basato su keywords.
L'approccio è senza dubbio efficiente ed efficace, probabilmente il più intelligente ed indicato. Tuttavia dipende dal testo e dalle parole chiave, quindi dalla lingua in cui le pagine sono scritte. Inoltre per essere efficace necessita un dataset di addestramento
da etichettare manualmente, cosa che vorremmo evitare.
Sfruttando quindi la conoscenza di una rete neurale complessa come InceptionResnetV2 addestrata sul dataset imagenet da Google, l'idea è stata quella di replicare il processo di riconoscimento agnostico attraverso l'immagine addestrando un semplice classificatore costituito da una rete neurale fully connected a due layer posta in cascata al modello addestrato dal colosso californiano. Questo ci permette di poter addestrare il nostro nuovo classificatore con pochissime immagini (un migliaio) applicando il principio di "transfer learning".
Abbiamo addestrato il modello su un training set di 1k immagini, di cui 500 appartenenti alla verticale (biciclette) e altre 500 raffiguranti prodotti generici.
- Tutte le immagini sono state pescate da google immagini e google shopping, per essere sicuri che provenissero da siti di ecommerce e raffigurassero quindi dei prodotti in vendita.
- L'estrazione delle immagini è avvenuta automaticamente grazie ad un plugin di chrome <imageDownloader>, quindi abbiamo limitato il costo di preparazione del dataset.
PREPARAZIONE DEL DATASET
- Abbiamo un modo per scaricare automaticamente immagini: risolto utilizzando un plugin
- Abbiamo cercato il modo più efficiente per avere immagini appartenenti a prodotti sulla stessa pagina: risolto utilizzando google immagini e google shopping per avere esempi variegati di prodotti. In particolare, abbiamo usato come query un sito di ecommerce che avesse molti prodotti indicizzati (amazon, mediaworld, aliexpress, gearbest etc...)
- Abbiamo processato le immagini scaricate con uno script ad hoc, che le converte tutte in jpeg (il resize non è importante perchè ci pensa il modello) e le rinomina in base alla verticale scelta suddividendole in due categorie: "bikes"-"generic"
- L'intero processo può richiedere max 20min per creare un dataset di 1,1k immagini (1k training - 100 test)
(Tempo speso per automatizzare questo processo: un paio d'ore)
- trivia: le immagini sono variegate e non hanno tutte lo sfondo bianco.
test serve per testare il modello che abbiamo addestrato utilizzando il test set.
le parole chiave sono 2:
TEST SET:
Per testare sullo stesso dataset i due classificatori abbiamo ne abbiamo creato uno poiché quello che arrivava in ingresso al modulo dai passi precedenti non era soddisfacente, in quanto ci saremmo aspettati soltanto, o quasi, pagine di prodotti.
Abbiamo annotato un centinaio di pagine partendo da google shopping, equamente distribuiti tra prodotti appartenenti alla verticale e non.
Abbiamo volutamente inserito nel set delle pagine inerenti alla sfera semantica della verticale ma non appartenenti alla verticale stessa (ad esempio, manubri di biciclette, ruote), coerentemente con quanto foxlink stesso dovrebbe generare dai passi precedenti; questo ci ha permesso di mettere in difficoltà i due classificatori.
Infatti, in questi casi, la nostra ipotesi è che il bayesiano possa trova pagine con keyword frequenti molto attinenti alla verticale essendo messo a dura prova; allo stesso tempo, il nostro classificatore può essere messo in crisi riconoscendo parti di biciclette.
Infatti, dopo 80 epoche di addestramento la precision non era altissima e gli errori più grossolani commessi, ispezionando manualmente i risultati ottenuti, erano proprio dovuti a questo tipo di pagine; L'immagine di una ruota di bicicletta veniva classificata come bicicletta, ad esempio.
Abbiamo valutato l'idea di inserire questo genere di informazioni del training set, somministrando quindi nell'addestramento pagine di questo tipo; tuttavia abbiamo prima provato ad addestrare il modello per più epoche; Con 200 epoche siamo arrivati ad una precision del 90% circa.