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 Februari 2020 Hacken voor dummies en gevorderden. Beeldherkenningssoftware ObsIdentify is makkelijk te misleiden. deel 6
  7. 18 maart 2020 ObsIdentify geeft ALTIJD foute antwoorden buiten zijn eigen domein. Ook met hoge zekerheden. deel 7 
  8. Voor alle volgende blogs over ObsIdentify klik op label ObsIdentify

7 comments:

  1. Gert,

    FYI: de Android app Google Lens kan ook van alles over plaatjes vertellen, meer dan alleen over flora en fauna.

    Ik heb overigens geen idee waarom je O aan dit onderzoek onderwerpt.
    Het lijkt wel of je een poging tot reverse engineering wil doen. Zou je niet beter contact met de bron van O kunnen opnemen?

    Bij complexe kunstmatige neurale netwerken is vaak niet duidelijk hoe die tot conclusies komen. Er worden wel pogingen gedaan om dit transparanter te maken. Of dit bereikt kan worden door alleen de in- en output te bestuderen
    -zoals jij doet- betwijfel ik.
    Je zult dan minstens ook de tussenliggende lagen moeten bekijken als je inzicht wil krijgen waar goede en foute beslissingen genomen worden.

    ReplyDelete
  2. Hoi Bert, stel dat je geen verstand hebt van vleermuizen, en je hebt een foto van een onbekende vleermuis aan O aangeboden, en die zegt: "ObsIdentify voorspelt Vale vleermuis met zekerheid 100.0%", zou je dat vertrouwen, gezien de resultaten van dit blog?

    ReplyDelete
  3. Hoi Bert, bedankt voor je tip van Google Lens (die kende ik niet). Bert schreef "Het lijkt wel of je een poging tot reverse engineering wil doen.". Alle wetenschap is reverse engineering. Zo werkt de biologie in ieder geval. Ik schreef al dat mijn onderzoek is ontstaan uit pure nieuwsgierigheid en fascinatie, zoals alle wetenschap. En je ervaart de thrill van een hacker die er in slaagt een systeem binnen te dringen (ethisch hacken). Het geeft een enorme kick om als eerste een systeem gekraakt te hebben met 100%! Het is verslavend. Deze ambitieuze A.I. systemen VRAGEN er gewoon om om onderzocht te worden. Maar dan onafhankelijk onderzoek, niet de slager keurt zijn eigen vlees. Ik vind de mensen die blind de autopilot van Tesla vertrouwen zonder meer onnozel. Ik heb wel contact opgenomen met waarneming.nl (druk, druk, druk) en de auteur van O. (kwam een reactie op het forum n.a.v. 2e blog). Geen van de betrokkenen heeft (tot nu toe) op de blogs gereageerd middels een comment. Het leven van een blogger is hard... Gelukkig zijn er nog anderen die wel reageren!

    ReplyDelete
  4. Hallo, Ik kwam een artikel tegen waarin men probeert dit verschijnsel te verklaren https://arxiv.org/abs/1412.6572.
    Veel plezier met het lezen en begrijpen !

    ReplyDelete
  5. Hartelijk dank Driehoek voor de verwijzing naar: Explaining and Harnessing Adversarial Examples. Uit de abstract begrijp ik dat het een algemeen verschijnsel is dat machine learning programma's makkelijk te misleiden zijn en foute antwoorden geven met hoog percentage zekerheid. Hun verklaring (in het abstract) ontgaat mij totaal. Het hele artikel is als gratis pdf te lezen. Inderdaad, het ziet er nogal wiskundig uit! Ik doe mijn best :-) Hartelijk dank!
    Ondertussen heb ik gemerkt dat de nieuwe versie O 1.2 nog steeds hetzelfde type fouten maakt, hoewel er verschillen zijn.

    ReplyDelete
  6. Het is wel raar dat ruis als zekere vleermuis wordt betiteld maar een probleem is het niet. Vroeger of later wordt die eruit gevist en handmatig afgekeurd. Uitsluitend handmatig goedgekeurde foto's worden gebruikt als voedsel voor een nieuwe versie van ObsI.

    Dat met die veldleeuw is ook geen probleem. Het zou verdacht zijn als O 100% geeft, want O weet helemaal niets, die weet niet waar te kijken en mensen weten dat wel. En dus kunnen mensen zulke lastige soorten wel met 100% zekerheid determineren en O niet. Mensen vergeten het hele plaatje en kijken naar twee of drie minieme details. Dat geeft zekerheid. O heeft alleen het hele plaatje (inclusief achtergrond), en komt er dus niet helemaal uit.

    Detailfoto's zoals van die vleermuis gaan fout omdat O niet snapt dat het een detailfoto is. O weet wederom niets en wij wel.

    ReplyDelete
  7. Ik ben het met je eens dat random pixels in de praktijk geen probleem zullen zijn. Maar het is zeer intrigerend omdat het raadsel hoe het programma werkt alleen maar groter wordt.

    "Detailfoto's zoals van die vleermuis gaan fout omdat O niet snapt dat het een detailfoto is."
    Ja, dat is het leuke! Maar, O zou toch getraind kunnen worden op detail foto's? Net zoals op macro- en micro fotos's?

    ReplyDelete

Comments to posts >30 days old are being moderated.
Safari causes problems, please use Firefox or Chrome for adding comments.