ABONAMENTE VIDEO REDACȚIA
RO
EN
NOU
Numărul 150
Numărul 149 Numărul 148 Numărul 147 Numărul 146 Numărul 145 Numărul 144 Numărul 143 Numărul 142 Numărul 141 Numărul 140 Numărul 139 Numărul 138 Numărul 137 Numărul 136 Numărul 135 Numărul 134 Numărul 133 Numărul 132 Numărul 131 Numărul 130 Numărul 129 Numărul 128 Numărul 127 Numărul 126 Numărul 125 Numărul 124 Numărul 123 Numărul 122 Numărul 121 Numărul 120 Numărul 119 Numărul 118 Numărul 117 Numărul 116 Numărul 115 Numărul 114 Numărul 113 Numărul 112 Numărul 111 Numărul 110 Numărul 109 Numărul 108 Numărul 107 Numărul 106 Numărul 105 Numărul 104 Numărul 103 Numărul 102 Numărul 101 Numărul 100 Numărul 99 Numărul 98 Numărul 97 Numărul 96 Numărul 95 Numărul 94 Numărul 93 Numărul 92 Numărul 91 Numărul 90 Numărul 89 Numărul 88 Numărul 87 Numărul 86 Numărul 85 Numărul 84 Numărul 83 Numărul 82 Numărul 81 Numărul 80 Numărul 79 Numărul 78 Numărul 77 Numărul 76 Numărul 75 Numărul 74 Numărul 73 Numărul 72 Numărul 71 Numărul 70 Numărul 69 Numărul 68 Numărul 67 Numărul 66 Numărul 65 Numărul 64 Numărul 63 Numărul 62 Numărul 61 Numărul 60 Numărul 59 Numărul 58 Numărul 57 Numărul 56 Numărul 55 Numărul 54 Numărul 53 Numărul 52 Numărul 51 Numărul 50 Numărul 49 Numărul 48 Numărul 47 Numărul 46 Numărul 45 Numărul 44 Numărul 43 Numărul 42 Numărul 41 Numărul 40 Numărul 39 Numărul 38 Numărul 37 Numărul 36 Numărul 35 Numărul 34 Numărul 33 Numărul 32 Numărul 31 Numărul 30 Numărul 29 Numărul 28 Numărul 27 Numărul 26 Numărul 25 Numărul 24 Numărul 23 Numărul 22 Numărul 21 Numărul 20 Numărul 19 Numărul 18 Numărul 17 Numărul 16 Numărul 15 Numărul 14 Numărul 13 Numărul 12 Numărul 11 Numărul 10 Numărul 9 Numărul 8 Numărul 7 Numărul 6 Numărul 5 Numărul 4 Numărul 3 Numărul 2 Numărul 1
×
▼ LISTĂ EDIȚII ▼
Numărul 63
Abonament PDF

Monitorizarea brandurilor în cadrul rețelelor de socializare

Petra Ivașcu
Software developer @ Halcyon Mobile



PROGRAMARE

Dezvoltarea bruscă a rețelelor de socializare a dus la crearea unor instrumente ce au ca scop monitorizarea conținutului scris publicat în cadrul acestora. Soluțiile acestea software devin ineficiente atunci când sunt puse să analizeze un context bogat vizual, dar sărac în ceea ce privește informația scrisă.

Principalul scop al domeniului computer vision este recunoașterea obiectelor, iar recunoașterea de logo-uri este considerată parte din aceasta. Chiar dacă problema este una deja studiată, taskul de a depăși state of the art-ul actual nu este unul obișnuit.

Recunoașterea de logo-uri este o problemă importantă în cadrul protejării proprietății intelectuale, dar ea poate fi întâlnită și în plasamentul de reclame și validarea acestuia și în managementul online al brandurilor. Drept urmare, prin găsirea unei soluții viabile, putem acoperi mai multe domenii care își centrează activitatea în jurul celor mai sus menționate.

Content Marketing Institute afirmă că 63% din postările în cadrul rețelelor de socializare sunt conțin imagini, iar în termen de vizualizări conținutul care înglobează imagini are cu 94% mai multe accesări decât cel fără. Astfel, putem afirma cu multă siguranță că imaginile domină rețelele de socializare.

Odată cu brusca evoluție a mediei sociale moderne de la începutul anilor 2000, companiile au introdus mijloace de urmărire a conținutului scris pentru rețele de socializare ca Facebook, Twitter etc. . Uneltele devin redundante în cazul în care imaginile nu sunt acompaniate de scris. Fără capacități de interpretare vizuale, aceste imagini își pierd valoarea, iar odată cu aceasta marii producători pierd și informație importantă. Fenomenul este întâlnit în cadrul rețelelor ca Instagram, Pinterest, care sunt masiv dominate de conținut vizual, dar în ultimii ani chiar și Facebook și Twitter au evoluat spre o strategie similară.

Dacă analizăm cazul Instagramului, unde softuri specializate ar putea extrage informația doar din hashtaguri sau puținul scris asociat imaginii, se poate ușor lua în calcul faptul că utilizatorul ar putea asocia greșit un hashtag. Drept urmare, ar putea apărea neconcordanțe între conținutul scris și cel vizual.

Oricare companie are o serie de utilizatori care sunt cu adevărat pasionați cu privire la brand într-o asemenea măsură încât devin promotori pentru el. Această categorie este cea care distribuie și creează material nou menit să promoveze într-un mod pozitiv sau negativ produsele brandului.

Industria marketingului poate beneficia mult dacă un produs software este capabil să identifice logo-ul brandului tău și să te alerteze în cazul în care postările sunt negative. Astfel posibile controverse pot fi evitate înainte de a începe.

De aceea, problema ce se dorește a fi rezolvată are ca scop final recunoașterea mai multor logo-uri ale unor companii celebre. Ea se împarte în două taskuri mari și anume: detecția și recunoașterea logo-urilor.

În cadrul detecției, scopul principal este identificarea instanțelor ce descriu un logo în cadrul imaginilor sau a video-urilor.

Procesul de recunoaștere se referă la încadrarea unei instanțe ce reprezintă un logo în una din cele "n" categorii pe care un algoritm a fost antrenat.

Câteva din rezultatele ce au la bază arhitecturi neuronale menite să recunoască logo-urile au fost publicate la sfârșitul anilor '90. Rețelele neuronale au jucat un rol important în cadrul detectării de logo-uri. O astfel de rețea neuronală recurentă a fost folosită pentru clasificarea logo-urilor alb negru. Pentru detectarea watermarkurilor la televiziune s-a încercat folosirea unui rețele neuronale convenționale cu două straturi de convoluție.

Luând în considerare faptul că problema de clasificare s-a încercat a fi rezolvată folosind rețele neuronale, dar din cauza faptului că arhitectura normală de straturi în totalitate interconectate nu a dat rezultate remarcabile, s-a încercat o altă abordare. Astfel s-a ajuns la rețele neuronale convenționale, a cărei natură permite să ia în considerare spațialitatea unei imagini. Spre exemplu, ea nu tratează pixelii de intrare care sunt depărtați unul de celălalt la fel ca pe cei apropiați. Din cauza acestui fapt, o astfel de alegere se pretează foarte bine pentru clasificarea de imagini. Rețelele neuronale care folosesc convoluții au trei idei de bază: local receptive fields, shared weights, și pooling.

Local receptive fields sunt ferestre de pixeli de dimensiune pătrată folosite pe stratul de input al rețelei, aceasta își schimbă poziția în care se află mutându-se mai la dreapta sau în jos cu un număr de coloane sau rânduri, în funcție de dimensiunea stride-ului. Numărul de pixeli cu care se mută local receptive fields este numit stride. Acesta de regulă are valoare 1, dar se poate experimenta și cu alte valori. Fiecare element din cadrul ferestrei se leagă de un neuron de pe un strat ascuns imediat următor, având un weight și un bias general pentru fiecare fereastră. Elementele obținute de la fiecare pixel sunt puse într-o sumă, acestea numindu-se feature maps. Toate weighturile și, respectiv, baisurile ce ajung într-o structură ca aceasta, sunt numite shared weights și shared bias. În final, în cadrul unui neuron de pe stratul ascuns imediat următor se află valoarea sumei:

unde sigma este o funcție de activare ca cea sigmoidală sau rectified linear untis (ReLU), cea din urmă fiind folosită în cadrul algoritmului și n este dimensiunea ferestrei. Se deduce astfel, că toți neuronii din primul strat ascuns detectează aceleași caracteristici doar că la locații diferite ale imaginii de input.

În idei puțin mai clare, să presupunem că weighturile și bias-ul sunt de o așa natură că pot selecta trăsături drept colțuri verticale într-un anume receptive field. Această abilitate dobândită e posibil să fie utilă și în alte locuri ale imaginii. Astfel este util să aplicăm același detector de caracteristici peste tot în cadrul imaginii.

Un strat de pooling simplifică informația primită ca output de la stratul de convoluție. Acest procedeu urmează de regulă imediat după stratul de convoluție. Stratul de pooling constă în crearea unei ferestre de o dimensiune n x n care se mișcă în cadrul inputului colectând o anumită valoare. Unde n este dimensiunea ferestrei, aceasta putând fi diferită de cea din cadrul local receptive fieldsurilor. În cazul acesta am folosit max pooling, unde dintr-o regiune se ia valoarea maximă.

Figura 1: Operația de max pooling având dimensiunea 2x2. Din acesta se extrage elementul maxim.

Ultimul strat al unei rețele de tipul acesta este conectat în totalitate, astfel fiecare neuron provenit de pe stratul de pooling este conectat cu fiecare neuron din stratul final.

Pentru ca o rețea de tipul acesta să fie eficientă trebuie să existe mai multe straturi de convoluție și mai multe de pooling. De asemenea, un feature map nu este suficient pentru a face recunoaștere de imagini. Foarte important de menționat în acest caz este că dacă lucrăm cu imagini color vom avea trei caracteristici de tip input pentru fiecare pixel, corespunzând canalului roșu, verde și albastru, toate acestea find adiționale feature map-urilor deja existente.

Figura 2: Schema unei rețele convoluțională aplicată peste o imagine color (cu 3 canale: RGB), având un singur strat de convoluție fiind descrise 3 feature maps, urmate de un strat de max pooling cu un număr egal de feature maps ca cel anterior. De asemenea, este vizibil și stratul final în întregime conectat cu fiecare pixel din stratul de pooling³.

Deoarece acest experiment vizează învățarea supervizată vom folosi baza de date FlickrLogos-32. Acest cluster de imagini adnotate conține logo-uri pentru 32 de branduri diferite, fiind alcătuit din 8240 de imagini, dintre care 4280 pentru antrenare și 3960 pentru testare. Toate imaginile au o etichetă care reflectă brandul prezentat.

Antrenamentul a fost făcut folosind o rețea VGG19 pre-antrenată pe setul de date ImageNet. CNN-ul este scris în Tensorflow folosind Python ca limbaj de programare. Această rețea va fi folosită exclusiv pentru cerința de recunoaștere.

VGG19 este constituit din mai multe straturi de convoluție urmate de max pooling, iar la final avem trei straturi în totalitate conectate. Ultimul strat este cel decizional pe care este aplicat o funcție softmax pentru a obține unt tensor 32 de probabilități. Acestea reprezentând predicțiile făcute de algoritm pentru o anumită imagine. În general, tensorul conține același număr de clase ca cele definite la începutul antrenamentului. Deoarece algoritmul inițial a fost pre-antrenat pe ImageNet, stratul decizional returna un tensor cu 1000 de probabilități. Am schimbat acest lucru tăind stratul decizional și weighturile aferente și în final reantrenând pentru doar 32 de clase.

Figura 3: Reprezintă arhitectura rețelei VGG19 cu straturile de convoluție urmate de operația de max pooling, în final având 3 straturi în tonalitate conectate, dintre care unul e strat decizional.

Singurele preprocesări făcute pe imagini au fost decuparea logo-urilor pentru a minimiza zgomotul, urmată de o redimensionare a setului de date la 224x224 păstrând proporțiile inițiale.

Antrenarea folosește batches a câte 10 imagini, rata de învățare de 0.001, iar pentru a diminua overfittingul, algoritmul folosește un dropout cu valoarea de 0.5. Am decis ca la anumite valori ale lossului acuratețea algoritmului să fie verificată, iar în tabelul de mai jos sunt menționate valorile obținute. Pentru un loss în valoare de 0.01 am obținut un procent de acuratețe de ≈81%. După ce am lăsat algoritmul să conveargă, acuratețea a crescut la 91.2%.

Mai jos în Figura 4, am inserat rezultatele oferite în urma evaluării imaginii din partea dreaptă. Rezultatele prezintă o listă de probabilități ordonate descrescător, ultimul element având cea mai mare probabilitate, poziția lui în final determină și clasa din care face parte imaginea. Imaginea dată ca input a fost recunoscută cu o probabilitate de 99.9%.

Figura 4: Prezintă rezultatele obținute în urma evaluării produsului "Ritter Sport" din dreapta.

În concluzie, calitatea și varietatea setului de date este importantă, dar trebuie luat în considerare faptul că un brand poate avea mai mult variații ale logo-ului. De exemplu, Disney în ultimii 27 de ani și-au schimbat logo-ul de mai mult de 30 de ori. Doar imaginați-vă cum ar trebui să arate un set de date care ar include companii ca Disney.

Datorită faptului că am ales să rezolvăm doar partea de recunoaștere a problemei pentru imaginile venite ca input, se face un crop central care se trimite spre evaluare. Dacă acesta nu conține o parte a logo-ului, algoritmul nu va clasifica corect inputul. Totodată algoritmul funcționează doar pe variațiile de logo-uri pe care a fost antrenat. De aceea, VGG19 nu va recunoaște produse ce conțin noul logo "Adidas".

NUMĂRUL 149 - Development with AI

Sponsori

  • Accenture
  • BT Code Crafters
  • Accesa
  • Bosch
  • Betfair
  • MHP
  • BoatyardX
  • .msg systems
  • P3 group
  • Ing Hubs
  • Cognizant Softvision
  • Colors in projects