04 February 2020

Hacken voor dummies, beginners en gevorderden. Beeldherkenningssoftware ObsIdentify is makkelijk te misleiden (deel 6)

Hacken voor dummies


Zo hack je ObsIdentify (O ) in 2 stappen: 
  1. creëer een png file van 200 x 200 pixels met witte achtergrond
  2. zet 1 zwarte pixel op coördinaten x=98; y=97 (nulpunt is linkerbovenhoek)

volgens ObsIdentify is dit een gierzwaluw
met 66,0% zekerheid. (200x200 pixels)

Upload dit plaatje naar ObsIdentify (waarneming.nl) en U zult zien dat U een gierzwaluw met 66,0% zekerheid heeft gecreëerd! Gefeliciteerd met Uw eerste hack! Zo simpel kan het zijn om O te hacken: 1 pixel op de juiste plaats.



Met nog twee simpele stappen kunt U het percentage nog verder opvoeren:
  1. geef de pixel de kleur #1a1014
  2. geef de achtergrond de kleur #bfcaff
en upload deze weer naar waarneming.nl

volgens O: gierzwaluw met zekerheid 89,3%
200x200. 591 bytes
U zult zien dat U een gierzwaluw met 89,3% zekerheid heeft gecreëerd! Gefeliciteerd!

NB: de precieze positie van het pixel in het 200x200 plaatje is van belang. Zet U de pixel in het eerste voorbeeld per ongeluk op positie [98,98] dan krijgt U 53.6% in plaats van 66,0%. Dat scheelt toch maar eventjes 12,4%! Alle directe buren scoren lager. Is de afmeting niet precies 200x200 dan is het resultaat duidelijk slechter [6]. En een willekeurige positie in het plaatje is helemaal kansloos. Dat kunt U vergeten. De achtergrondkleur is zeer belangrijk. De juiste achtergrondkleur kan het percentage met zo'n 20% verhogen. Verder geeft de kleur van het ene pixel een bijdrage van plm. +1%. In dit voorbeeld is de kleur van het pixel met het blote oog niet te onderscheiden van zwart. Het is belangrijk dat U Uw plaatje saved als .png file. Het file type .jpg is hiervoor niet geschikt, zelfs als U Quality=100% kiest (kan aan GIMP liggen). Volgens O is de essentie van een gierzwaluw dus:
200x200; [98,97]; #1a1014; #bfcaff
Ik raad U aan om in ieder geval mijn plaatje te uploaden omdat U het anders niet zult geloven. Immers, het is toch absurd dat 1 pixel voldoende is voor 89,3%? [2]. Vogelaars doen er jaren over om een paar honderd soorten te kennen. Zo ziet een gierzwaluw er in het echt uit:
gierzwaluw ©waarneming.nl (O = 99.2%) [ 800x535 ]
deze foto is gekozen door waarneming.nl als dé standaard gierzwaluw.
Een voorbeeld van een veel voorkomende foto illustreert de moeilijkheidsgraad:
O: gierzwaluw 80,7% (©waarneming.nl)

ObsIdentify hacken voor gevorderden

Zeker voor een plaatje met 1 pixel is 89,3% een extreem hoge score. Maar onze hack kan nog veel beter. Met 4 pixels haalt U 96,6% en met 27 pixels haalt U zelfs 99,9% zekerheid gierzwaluw:

gierzwaluw 96,6%
4 pixels: gierzwaluw 96,6% ©GK
200x200. 559 bytes.
gierzwaluw 99,9%
27 pixels: gierzwaluw 99,9% ©GK
200x200. 639 bytes
In bovenstaande plaatjes heb ik alle niet noodzakelijke pixels weggelaten. Je houdt zo alleen de noodzakelijke pixels over (maximaal 27 voor de gierzwaluw 99,9%). Met meer pixels haal je geen beter resultaat. Dat komt omdat er neutrale pixels bestaan die niet noodzakelijk zijn voor herkenning, maar wel hetzelfde percentage geven. Zo krijg je het kleinst aantal pixels dat het hoogste resultaat geeft. Dat onthult de minimum hoeveelheid data die O  echt nodig heeft voor herkenning met 99,9% zekerheid. Toch zijn de files tussen de 600 en 700 bytes groot. Dat komt omdat png files verliesloze datacompressie hebben en een file bevat sowieso noodzakelijke overhead data (zoals een comment, etc).

waarneming.nl
perfecte gierzwaluw foto (O geeft maar 60,1%)
©waarneming.nl
de beste gierzwaluw foto geeft 80,9% waarneming.nl
haarscherp, goed belicht, alle details te zien.

 

Discussie

Waarom leveren perfecte gierzwaluw foto's geen 100%? Waarom produceert een fake plaatje een gierzwaluw met 99,9% zekerheid? Waarom produceert zo'n fake plaatje nu specifiek een gierzwaluw en geen andere soort? Ik heb werkelijk geen idee. De gierzwaluwen kwamen spontaan opduiken in experimenten met willekeurige pixels in een wit vierkant. Toen ik zag dat je het percentage kon opvoeren tot 99,9%, ben ik eens gaan kijken naar foto's van echte gierzwaluwen in waarneming.nl om te kijken of daar een verklaring ligt. Ik heb 30 goedgekeurde gierzwaluw foto's (met groen vinkje ) op waarneming.nl getest. Er werden maar liefst 11 door O als Vale gierzwaluw geïdentificeerd (een in Nederland zeldzame soort) met percentages oplopend tot 99,9% (zie: data) (heb ik aan waarneming.nl doorgegeven). De plaatjes die correct als gierzwaluw werden geïdentificeerd, waren meestal minder 100%. In één goedgekeurde gierzwaluw ziet O zelfs een Roodpootvalk! Daarnaast heb je nog de zeldzame dwaalgast Siberische gierzwaluw die door O wordt geïdentificeerd als Vale Gierzwaluw. De Alpengierzwaluw wordt met 100% zekerheid herkent. De ondersoort (subspecies) gierzwaluw apus wordt met 100% zekerheid herkent als de gewone gierzwaluw. Dit had ik niet verwacht van goedgekeurde foto's. Tijdgebrek van de redactie? Het is waar dat de gierzwaluw extreem moeilijk te fotograferen is. Hij vliegt continu met hoge snelheden en doorgaans vrij hoog. Je kunt hem bijna niet zittend fotograferen. Zou dit alles kunnen verklaren waarom O zo makkelijk te hacken is? Aan de andere kant zijn er perfecte foto's zoals bovenstaande (60,1%). Bovendien zijn er 10.905 gierzwaluw foto's aanwezig. Dat moet meer dan voldoende zijn voor een goede trainings-set. Effecten van trainingsmethode, de software zelf en moeilijkheidsgraad van de soorten zullen tegelijk een rol spelen.

Uiteindelijk kan ik niet verklaren waarom O zo sterk reageert op een 200x200 plaatje met 1 pixel. Het is wel duidelijk dat O aan sterke informatie reductie moet toepassen. Maar het is uitgesloten dat 1 gekleurde pixel op 1 positie op een gekleurd 200x200 vierkant typerend zou zijn voor een gierzwaluw. Wat is er zo uniek aan dat pixel? Een pixel op die positie kan van iedere soort zijn! En een gierzwaluw en iedere andere soort heeft nooit een vaste positie ten opzichte van de rand van de foto. Hij kan in het midden, links, rechts, onder en boven zitten. Er zijn oneindig veel mogelijke manieren waarop een dier gefotografeerd kan worden [1]. Het kan niet zo zijn dat 1 pixel doorslaggevend is. Het is een false positive in extreme mate. Maar false positives sluiten overduidelijk geen true positives uit. Kennelijk is het een balans tussen beide. Is het algoritme zo gevoelig afgesteld om zoveel mogelijk true positives te krijgen? met als onvermijdelijk gevolg bizarre false positives? Of is het gewoon een bug of een neveneffect van de techniek? Ik weet het niet.

De enige manier om verder te komen is dat ik O zelf kan trainen met fake plaatjes als controle, waar bij O moet antwoorden 'kan ik niet identificeren' of 'plaatje bevat te weinig details'. Ik ben zeer benieuwd of O daarna beter presteert op echte soorten. 



Veelbelovende methode

De gierzwaluw hack heeft me veel trial-and-error experimenten gekost om uiteindelijk tot die ene pixel te komen die hoog scoort. Maar je kunt ook geluk hebben. De Grote Zilverreiger heb ik in 5 minuten van 77% naar 98,9% opgevoerd. Gewoon wat kliederen en klooien met wit en nog wat kleurtjes. O helpt je daarbij door steeds kwantitatieve aanwijzingen te geven: dat is hetzelfde (%); dat is beter (%); dat is slechter (%).
Grote zilverreiger 98,9%
Grote zilverreiger 100% (©waarneming.nl)















Op die manier heb ik ook de mij volstrekt onbekende alg Staurastrum pileolatum gevonden met 97,8% zekerheid beginnend met een kindertekening:

ObsIdentify voorspelt Staurastrum pileolatum
met zekerheid 97.8%

In beide gevallen gaat het snel in het begin en dan loop je tegen het glazen plafond aan. Je ziet het niet aankomen, maar je merkt het wel. En dan is vooruitgang extreem moeilijk.
wilde zwaan ©waarneming.nl

Wilde zwaan 99,1% ©GK
115x110 (jpg)















Dit plaatje ziet er uit als een kindertekening of -zo U wilt- een echte Picasso. Ziet U welke vogel het is? O ziet een Wilde zwaan met 99,1% zekerheid.

Parallelspletige brokkelspoorzwam 99,4%
is een paddenstoel
RGB 200x200 png ©GK
Vale gier 99,9%
RBG 200x200 png ©GK















Vale gier ©waarneming.nl

De Vale gier (hierboven) is een voorbeeld van een kindertekening (van een gezicht) die je in 5 min van plm. 30% (rode gebied) met grote stappen tot 60% (blauwe gebied) brengt, en daarna heb je nog minstens een uur nodig om hem met vele kleine stapjes tot 99,9% (groene gebied) te brengen. Het lijkt er op dat kliederen met streepjes en pixels de meest veelbelovende techniek is om redelijk snel resultaat te behalen. O is zo vriendelijk je steeds de goede richting op te sturen. Niet door te zeggen wat de volgende stap moet zijn, maar of je goed gegokt hebt en hoe ver je er naast zit.


De Nachtzwaluw is een bewijs dat je met een handmatige methode 100% zekerheid kan halen:
Nachtzwaluw 100%
200x200 RGB png ©GK
Nachtzwaluw 97,2%
standaard nachtzwaluw van ©waarneming.nl 800x533
De gehackte gierzwaluw wordt volledig gespecificeerd door 26 pixels en een file van 265 bytes [7]. Dat is vrijwel niets in vergelijking met normale foto's die 10 miljoen bytes groot kunnen zijn. Voor een echte Nachtzwaluw geeft O maar 97,2%. Bizar is weer de vereiste precisie van de locatie van de pixels.
[9 feb 2020 toegevoegd].



Londense politie gebruikt voortaan gezichtsherkenning

Het is leuk, leerzaam en verslavend om O te hacken. Maar er zitten ook serieuze kanten aan. In waarneming.nl komen duizenden nieuwe foto's per dag binnen. Die moeten allemaal beoordeeld worden wil dit alles wetenschappelijk nut hebben. Automatische identificatie van foto's is daarbij een onmisbaar hulpmiddel geworden. Alle percentages boven de 90% krijgen automatisch het kenmerk 'zeker' en daaronder 'onzeker' [3]. We hebben hier boven gezien hoe makkelijk je boven de 90% komt met fake plaatjes. Daarom is aandacht voor software fouten zo belangrijk. Dat geldt helemaal voor een verwante tak van sport: gezichtsherkenning. De Londense politie ziet zich voor dezelfde taak gesteld: uit de duizenden voorbijgangers de gezochte crimineel herkennen. Wired wijst erop dat een onafhankelijke analyse van de University of Essex tot de conclusie kwam dat het systeem in 81% van de gevallen onterecht tot een match van gezichten kwam [4],[5]. Beeldherkenningssoftware moet niet alleen op juiste uitkomsten getest worden, maar ook hoe makkelijk de software te hacken is.



Data


Noten

  1. Duizenden verschillende foto's van een soort: denk aan: belichting (zon,bewolkt, richting van de zon, tegenlicht), vooraanzicht, zijaanzicht, kop naar links/rechts, vliegend, staand, zittend, afstand (dus klein/groot), gedeelte bedekt door takken, bladeren. Dit is alleen fototechnisch, daarnaast: jong/volwassene, man/vrouw, zomer/winterkleed; ondersoort, etc. NB: foto is altijd 2D! O herkent nu 14.000+ soorten.
  2. Ik heb eerder 1 pixel plaatjes [1x1] onderzocht maar die kwamen nooit tot dit soort hoge percentages zekerheid.
  3. zie: Disclaimer ObsIdentify: "De beeldherkenning zet de waarneming automatisch op onzeker als je een soortsuggestie van ObsIdentify accepteert en het resultaat onder de 90% herkenning zit."
  4. Londense politie gaat camera's met realtime gezichtsherkenning gebruiken, tweakers, 24 jan 2020
  5. The Met Police will start using live facial recognition across London,  Wired, 24 Jan 2020
  6. Voeg je aan hetzelfde plaatje witte randen van 1 pixel toe (afmeting 202x202 gecentreerd) dan zegt O: gierzwaluw 61.5% in plaats van 66,6%. De relatieve positie van het ene pixel is hetzelfde, maar de absolute grootte van het plaatje is groter geworden. Bij 210x210 daalt het perc. zelfs tot 58,3%. Waarom heeft dat invloed? De positie van het beest op de foto mag toch niet uitmaken? [ 9 feb 2020 ]
  7. De kleinste png file krijg je door alle opties die mogelijk opslagruimte kosten uit te vinken: Interlacing; background color; gamma, layer offset; resolution; creation time; comment. Als je die file saved als een jpg file met 100% quality levert dat een file op van 2,5 kB en O geeft: Nachtzwaluw 55,5%! Hetzelfde plaatje! [ 10 feb 2020 ]

 

Alle blogs over ObsIdentify

  1. 30 September 2019 Test van ObsIdentify algoritme voor automatische identificatie van dieren en planten deel 1
  2. 21 Oktober 2019 ObsIdentify software gekraakt! Vlinders identificeren zonder te weten wat een vlinder is... deel 2
  3. 19 November 2019 ObsIdentify (3) Who is afraid of red, yellow and blue? De Vlinder Turing test voor mens en AI deel 3
  4.  4 December 2019 ObsIdentify herkent Kuifeend, Kikker, Kiekendief en vele andere soorten in plaatjes van 1 pixel deel 4
  5. 23 december 2019 Hoe zeker is 100%? Soorten met 100% zekerheid herkennen in random pixels. deel 5
  6.  4 Feb 2020 Hacken voor dummies en gevorderden. Beeldherkenningssoftware ObsIdentify is makkelijk te misleiden. deel 6

01 January 2020

Een goed 2020 voor alle blogbezoekers!

Op nieuwjaarsdag lag er een dichte mist over het landschap
het was koud
een paartje knobbelzwanen was aan het foerageren in het ondiepe water


Human Nature

De uitzending van gisteravond 8 januari over de CRISPR DNA techniek Human Nature is terug te zien op: NPO Start

Ik weet niet hoe lang die er blijft staan, dus wacht niet te lang! De film is zeker de moeite waard, ook al weet je wat CRISPR-CAS9 is. Niet alleen de ontdekkers van het eerste uur, maar ook personen die betrokken waren bij de ontwikkeling van toepassingen worden geïnterviewt en steeds wordt met korte animaties uitgelegd hoe de techniek werkt. Ook de ethiek komt aan de orde.

10 jaar blogspot ! 

Ik zie nu pas dat mijn oudste blog bij blogspot in 2010 was! Dat is dus 10 jaar geleden! Het allereerste blog was op 25 October 2010. Dus nog even wachten...

23 December 2019

ObsIdentify (5) Hoe zeker is 100%? Soorten met 100% zekerheid herkennen in random pixel plaatjes

Vraagstelling

ObsIdentify (O) is software voor PC en smartphone die planten en dieren op soortnaam kan brengen aan de hand van foto's. Bij het identificeren van soorten geeft O altijd aan hoe zeker de identificatie is met percentages tussen 0 en 100%. Een percentage tussen 0 en 40% betekent onzeker (rode gebied), tussen 40% en 90% betekent redelijk zeker (blauw); groter dan 90% is vrijwel zeker (groen) en 100% is helemaal zeker. 100% is per definitie zeker, geen twijfel mogelijk. Klopt dat wel? Hoe zeker is 100%? De ultieme vraag is: is de identificatie altijd correct bij 100%? Dat is een belangrijke, maar niet eenvoudig te beantwoorden vraag.
Uit eerder onderzoek bleek dat O nooit 100% zekerheid gaf met egaal gekleurde vlakken en 1-pixel plaatjes. Het maximum was 95.5%. De verklaring kan zijn dat O nooit 100% zekerheid geeft omdat het simpelweg nep plaatjes zijn. Maar misschien zijn er niet genoeg verschillende nep plaatjes aangeboden. Het aantal beschikbare kleuren is 16.777.216 (16 miljoen). Deze kunnen nooit allemaal handmatig getest worden. Een alternatieve manier is de computer random gekleurde pixels laten genereren en deze door O laten beoordelen. Het genereren van random plaatjes is een makkelijke manier om een eindeloze hoeveelheid kleurschakeringen en patronen beschikbaar te hebben. Veel meer dan handmatig mogelijk is. Omdat er zo'n 16.000 soorten in de database van O zitten, zal er wellicht eentje bij zitten die herkend wordt. Het gaat er niet om bij een van te voren gekozen soort een score van 100% te bereiken, maar of er überhaupt soorten herkend worden met 100% zekerheid.

Resultaten

Bosvleermuis 100%
200x200 R=25 G=10 B=95

Vale vleermuis 100%
115x110 R=25 G=10 B=99

sterk uitvergroot detail van plaatje hierboven.
1 vierkantje is 1 pixel

Alle random pixel plaatjes geproduceerd met RGB-noise worden door O geïdentificeerd als vogels, vissen, vleermuizen, vlinders, planten en paddenstoelen met verschillende percentages zekerheid. Bijna alle blijven ruim onder de 90% en de meeste onder de 40%. Meer specifiek, alle plaatjes geproduceerd met RGB-noise R=25; G=10; B=99 worden door O geïdentificeerd als Vale Vleermuis (Myotis myotis) met zekerheid percentages tussen de 50% en 100%. De meerderheid van de percentages ligt zelfs boven de 90% en 12 plaatjes hebben 99.9%. De laagste is 54,6%. Tot nu toe zijn er 4 plaatjes met 100% zekerheid Vale Vleermuis (zie screenshot hieronder) gevonden. Ook de Bosvleermuis is in een random pixel plaatje met 100% zekerheid geïdentificeerd. Ze zijn hier te downloaden om zelf te testen.

ObsIdentify voorspelt Vale Vleermuis met zekerheid 100.0%
testfile: 115x110RGBnoise-025-010-99.jpg
Een andere serie plaatjes met RGB noise waardes R=30; G=10; B=100 geeft consistent hogere waardes boven 90% waaronder ook 100%. De succesvolle RGB waardes liggen dichtbij bij elkaar in het RGB kleurenuniversum. De plaatjes voor de Vale vleermuis zien er overwegend geel-groen uit. De Vale Vleermuis kan met meerdere RGB parameters geproduceerd worden.

Een andere soort die hoog scoort met random pixel plaatjes is de Veldleeuwerik (Alauda arvensis) die 90.3% heeft gehaald. En de Witwangstern (Chlidonias hybrida) heeft met  R=37; G=26; B=60 een zekerheid van 96.2% gehaald [5]. In die serie zijn er 19 plaatjes met zekerheden boven de 90% gevonden. In totaal zijn er door O tot nu toe met alle geteste RGB waardes 69 soorten gevonden, waarvan 53 met zekerheden hoger dan 90.0%. Percentages  boven de 90% zijn voor O zeker in die zin dat de vermelding "ObsIdentify is helaas niet zeker" achterwege blijft en er een groene achtergrondkleur verschijnt.
Een enkele soort (Killdeerplevier) bereikt spontaan het blauwe gebied (tussen 40% en 90%).
Verder is geconstateerd dat van de 69 geteste perfecte foto's in waarneming.nl, die opgenomen zijn als illustratie bij de officiële soortbeschrijving, maar 27 foto's 100% opleveren en dat er zelfs 7 soorten fout geïdentificeerd worden. Zie hier voor de tabel met alle soorten.

Conclusie

Hierboven is bewezen dat met random pixel plaatjes een 100% zekere identificatie verkregen kan worden van Vale vleermuis en Bosvleermuis. De stelling dat 100% zekerheid altijd correct is, is gefalsifieerd. Een zekerheid van 100% kan fout zijn. Daarnaast zijn er series random plaatjes die zekerheden boven de 90.0% geven. Op moment van schrijven zijn er in totaal 70 soorten door O geïdentificeerd in random pixel plaatjes. Tegelijkertijd zijn er foto's in waarneming.nl die door de redactie zijn uitgekozen als perfecte illustratie van hoe een soort eruit ziet, die géén 100% zekerheid opleveren in ObsIdentify.

Discussie

Deze resultaten zijn voor zover mij bekend nieuw. In de literatuur [1],[2] worden percentages genoemd van 99.12%, 95,5%, 99.6% en 99.99%. Dus geen 100%. Deze resultaten zijn nogal subversief. Foto's in waarneming.nl die met 100% zekerheid zijn geaccepteerd zijn dus niet meer 100% zeker. De logica van hoe hoger het percentage, hoe betrouwbaarder, wordt hier op zijn kop gezet. Nep plaatjes met een lage zekerheid zou je nog acceptabel kunnen noemen, maar met 100% zekerheid zijn ze een serieus probleem. Nep plaatjes zouden 0% op moeten leveren. Wat mij ook verontrust is het relatieve gemak waarmee ik de 100% nep plaatjes op een handmatige manier heb kunnen vinden. Misschien heb ik geluk gehad. Mijn inschatting is dat er met een geautomatiseerd systeem en toegang tot een interface met O er in korte tijd duizenden false positives met hoge zekerheid inclusief 100% gevonden zouden kunnen worden.

Zijn de vier soorten met hoge scores uitzonderingen? Zelfs als het bij deze vier blijft is de claim dat 100% zeker, ook écht 100% zeker is, definitief gefalsifieerd. Immers, je hoeft maar één zwarte zwaan te zien om de stelling 'alle zwanen zijn wit' definitief te weerleggen. Dit onderzoek heeft betrekking op hoe de software werkt, de onderliggende techniek, en die geldt voor alle soorten. Dat kan niet anders want er is geen aparte software voor vogels en vlinders, etc. Het lijkt dat deze tekortkoming inherent is aan de software. Een alternatieve verklaring kan zijn dat het aan de trainingsplaatjes ligt.

Dat er in random plaatjes tot nu toe slechts drie soorten gevonden zijn met een score hoger dan 90% komt vooral omdat de testen steekproeven zijn. Soms wat uitgebreidere, maar het blijven steekproeven. Het is een kwestie van tijd om er meer te vinden. Er zijn in totaal 61 soorten gevonden met lagere percentages (zie tabel hier). Deze kunnen hogere percentages opleveren door met kleine stapjes de RGB waardes te variëren.

Een bezwaar tegen mijn conclusie kan zijn dat de conclusie niet opgaat voor échte foto's van échte planten en dieren. De resultaten zouden in de dagelijkse praktijk van waarneming.nl niet van belang zijn. Natuurlijk worden er in de praktijk geen nepplaatjes aangeboden. Maar mijn resultaten zeggen wel degelijk iets over de software. Dit onderzoek raakt aan wat er onder de motorkap gebeurd. Mogelijk kan dit onderzoek licht werpen op tekortkomingen van de software en aanleiding zijn voor verbeteringen. Als er bij nep plaatjes 100% gescoord kan worden, dan zouden foto's van slechte kwaliteit ook wel eens 100% score kunnen opleveren. En dat is een serieus probleem in de dagelijkse praktijk van waarneming.nl waar duizenden nieuwe waarnemingen per dag worden ingevoerd.

Een andere vraag is waarom juist deze drie soorten, en in mindere mate 61 andere soorten, boven komen drijven. Een afdoende verklaring heb ik niet. Mogelijk zijn soorten als Vale vleermuis, Bosvleermuis, Witwangstern en Veldleeuwerik 'moeilijke soorten' die O niet goed kent en daardoor misschien hoog scoren in random plaatjes. Als je een blik werpt op het soort foto's die er in Observation.org aanwezig is van de Vale vleermuis, dan is het geen wonder dat O daar grote moeite mee heeft. Als er geen strenge selectie heeft plaatsgevonden bij de foto's voor de trainings-set lijkt het een hopeloze opgave om een Vale vleermuis te identificeren. In feite mis-identificeert O een uitstekende foto van de Vale Vleermuis als Gewone Grootoorvleermuis Plecotus auritus (74.7%). Dat is de foto waarmee ik dit blog opende en die als illustratie dient van de soort beschrijving op waarneming.nl.
ObsIdentify:
Rode poon Trigla lucerna (47.5%)
Een close-up foto van de Vale vleermuis identificeert O zelfs als Rode poon Trigla lucerna (47.5%)! Dat is een vis! Dus O herkent de Vale vleermuis niet en dat kan verklaren waarom O zich zo makkelijk laat misleiden door nep plaatjes? Deze verklaring impliceert echter dat O geen weet heeft van haar eigen zwakheden. Mensen zouden zeggen: ik ben niet zo goed in vleermuizen. En zouden in dat geval zeker geen claims met 100% zekerheid doen. Ik ben slecht in paddenstoelen, en ik twijfel dan ook als O een paddenstoel identificeert. Maar O zou zich juist met 'moeilijke' soorten moeten onthouden van ieder oordeel [4], zeker van 100% zekerheid. Het probleem is de combinatie van de slechte kennis van deze vleermuis en de hoge zekerheid bij een nep plaatje. Dat mag niet gebeuren. Als een
Witwangstern (Waarneming.nl)
O geeft terecht 100% zekerheid
placebo plaatje het beter doet dan het echte beest dan is er toch wel iets aan de hand.
Als een placebo al 100% oplevert, dan kan een échte foto daar niet bovenuit komen. Moeilijke soort of niet, de software heeft de soort kennelijk in zijn database, en dan moeten er passende onzekerheden gegeven worden.

In het geval van de Witwangstern betreft het weliswaar een zeldzame soort, maar er zijn 6.000 foto's en O kan de soort terecht met 100% zekerheid identificeren. Aan de andere kant: laat je alleen de kop zien, dan maakt O er een Blauwe Reiger (12.5%) van! Niet te begrijpen.
In het geval van de Veldleeuwerik komt O met een perfecte foto (die uitgekozen is door de redactie van waarneming.nl) niet verder dan 73,5%. Dit zou bijna per definitie 100% moeten zijn [3].
O: Veldleeuwerik 73,5%...
Het is zeer problematisch dat O perfecte foto's niet, en random plaatjes wel met 100% zekerheid identificeert. Sommige soorten lijken echt een random vlekken patroon te hebben, zoals de Veelhuizige populierenroest, de (Amerikaanse) wintertaling of Klein koolwitje. Maar die heb ik nog niet gevonden in random plaatjes. Samenvattend: het is niet duidelijk waarom bepaalde soorten boven komen drijven in tests met random plaatjes. Misschien kan de maker van O een tipje van de sluier oplichten?

Op zich is het niet relevant dat de software op een totaal andere manier (pixel statistieken!) soorten herkent dan de mens. Het gaat immers om de resultaten. Als de resultaten goed zijn, dan is de techniek geen probleem. Maar als de resultaten fout zijn, begint de onderliggende techniek wel relevant te worden.
Wintertaling
random patroon?
Klein koolwitje
random onderkant vleugel?

Dit onderzoek heeft niet als bedoeling om ObsIdentify als onbetrouwbaar weg te zetten. Het is zonder meer een aanwinst voor waarneming.nl. Het bevordert interesse in het leren identificeren van soorten bij een groter publiek en kan als wetenschappelijk instrument ingezet worden. Mijn onderzoek is ontstaan uit nieuwsgierigheid. Het sluit aan bij internationaal onderzoek naar Artificial Intelligence [1], [2]. De resultaten geven aanleiding tot verder onderzoek. Misschien kunnen deze resultaten aanzetten tot het verbeteren van het algoritme.


Methode

RGB instellingen Vale Vleermuis 100.0%
Om plaatjes te genereren en te bewerken gebruik ik GIMP image editor 2.8 (Ubuntu 16.04 LTS). Om de random plaatjes te genereren heb ik in het Filters menu: Noise: RGB noise gekozen met instellingen: Independent RGB; non-correlated RGB; Resolution: X:72; Y:72 pixels/inch tegen een witte achtergrond. Alle plaatjes zijn van het type jpg 100% quality (dus zonder compressie). De afmetingen van de plaatjes zijn 115x110 pixel (12.650 pixels totaal), tenzij anders aangegeven. De gegenereerde files worden hier beschikbaar gesteld.
Het vinden van plaatjes die door O met een hoge zekerheid als een soort worden geïdentificeerd is een trial-and-error proces: 1) met grote stappen verschillende combinaties van Red, Green en Blue uitproberen totdat de percentages die O geeft boven de 40% uitkomen. 2) met kleinere stappen rondom de succesvolle RGB waardes net zolang variëren tot de percentages van O blijven stijgen. Een pixel bestaat uit een R, G en B component. De R,G,B parameters in het RGB noise algoritme bepalen (waarschijnlijk) hoe vaak een kleurcomponent gebruikt wordt bij de aanmaak van de kleur van een pixel. Als R,G,B op maximaal staan, worden er altijd 3 kleurencomponenten gebruikt bij de aanmaak van een pixel. Staat een RGB parameter op nul, dan wordt die kleurcomponent niet gebruikt. Ieder plaatje dat gegenereerd wordt is uniek omdat op een random manier gekozen wordt hoeveel van iedere RGB component gebruikt wordt binnen de parameters die door de gebruiker gekozen zijn (zie afbeelding). Bijvoorbeeld de instelling R=0.25 G=0.10 B=0.99 zal bij iedere generatie een ander plaatje opleveren. Je kunt er eindeloos plaatjes mee produceren. Wordt hetzelfde plaatje meerdere malen aan O aangeboden, dan is het resultaat steeds hetzelfde.
ObsIdentify (O) in Firefox 71.0 (Ubuntu 16.04 LTS) via het invoerscherm van waarneming.nl


Updates

26 Dec 2019: Inmiddels is een random pixel plaatje gevonden die een Bosvleermuis met 100% zekerheid oplevert. zie: Data

11 Jan 2020: Witwangstern is opgelopen tot 99,4%. Zekerheidspercentages van referentie foto's in waarneming.nl zijn toegevoegd aan de tabel. Zie: data.


Data



Noten

  1. It is alarmingly easy to trick image recognition systems. Slate.
  2. Deep neural networks are easily fooled: High confidence predictions for unrecognizable images, Evolving Artificial Intelligence Laboratory.
  3. Is er een maatstaf voor een 'moeilijke soort' onafhankelijk van een laag percentage? Het aantal trainings-foto's? Ik heb O nooit betrapt op de uitspraak: "kan foto niet beoordelen'. Wel 'foto bijsnijden', maar dan heeft O al een voorspelling gedaan. Om altijd maar een voorspelling toe doen lijkt me niet goed. Een voorspelling met 1,9% zekerheid is niet zinnig. In de app heb ik zelfs een voorspelling met 0% gezien (in het rijtje alternatieven)! De redactie van waarneming.nl heeft de soortengroep tjiftjaf-fitis in de Disclaimer aangemerkt als moeilijk. Toch gaat O er vrolijk mee in de fout. Een door de redactie uitgezochte perfecte foto van de tjiftjaf krijgt: "ObsIdentify voorspelt Siberische Tjiftjaf Phylloscopus collybita tristis met zekerheid 98.5%". Fout dus. Geef dan geen oordeel.
  4. Goede uitzonderingen zijn uitslagen als: 'Dwergvleermuis onbekend' en 'Vleermuis onbekend'.
  5. Ondertussen is het O percentage Witwangstern opgelopen tot 99,4% met handmatig pixels toevoegen aan random pixel plaatjes. Zie: Data. 11 jan 2020.

 

Alle ObsIdentify blogs

  1. 30 September 2019 Test van ObsIdentify algoritme voor automatische identificatie van dieren en planten deel 1
  2. 21 Oktober 2019 ObsIdentify software gekraakt! Vlinders identificeren zonder te weten wat een vlinder is... deel 2
  3. 19 November 2019 ObsIdentify (3) Who is afraid of red, yellow and blue? De Vlinder Turing test voor mens en AI deel 3
  4.  4 December 2019 ObsIdentify herkent Kuifeend, Kikker, Kiekendief en vele andere soorten in plaatjes van 1 pixel deel 4
  5. 23 december 2019 Hoe zeker is 100%? Soorten met 100% zekerheid herkennen in random pixels. deel 5
  6.  4 Feb 2020 Hacken voor dummies en gevorderden. Beeldherkenningssoftware ObsIdentify is makkelijk te misleiden. deel 6