21 October 2019

ObsIdentify software gekraakt! Vlinders identificeren zonder te weten wat een vlinder is...

In een vorig blog heb ik met ObsIdentify software (hierna met O aangeduid) in waarneming.nl wat verkennende experimenten uitgevoerd. O is een ideale, geduldige en onvermoeibare proefpersoon. Maar, hoe goed is het programma in het herkennen van soorten? Is het bestand tegen onscherpte, kleurafwijkingen, manipulatie? 

Hoe meer de afbeelding afweek van de natuur, hoe onzekerder O werd. Steeds bleef O binnen de soortgrenzen (Atalanta in dit geval) wanneer je de vlinder zelf modificeerde.
Nu heb ik een reeks experimenten gedaan waarbij O een verkeerde soort voorspelde op basis van zeer subtiele maar totaal irrelevante manipulaties in de achtergrond van de vlinder. Ik noem dat een hack. Dit alles binnen het kader van de ethische hacker want mijn bedoeling is meer inzicht en misschien zelfs het programma verbeteren.

Voor de volgende tests heb ik een Atalanta uit de Elseviers vlindergids genomen [1]. Een geïdealiseerde vlinder met alle karakteristieke kenmerken van zijn soort tegen een schone, witte achtergrond. Alles begon met deze afbeelding:


Atalanta  (Elseviers vlindergids, 1971) O: 61,3%
750 x 556 pixels

O herkent deze Atalanta met 61,3% zekerheid. De lage zekerheid komt waarschijnlijk door subtiele kleurafwijkingen. Bijvoorbeeld: het wit op de vleugel is niet wit genoeg. Maar deze afbeelding is wel een goed uitgangspunt om uit te proberen hoe je de zekerheid omhoog kunt krijgen. Bij de eerste test had ik het percentage in de afbeelding gezet en ter controle testte ik de vlinder nog een keer:


Atalanta met zekerheid 73,4%

 

Tot mijn verbazing steeg het zekerheidspercentage van 61,3% naar 73,4%! Dat kan toch niet waar zijn! Aan de vlinder zelf was niets gewijzigd. Is O echt zo onbetrouwbaar? Is dit een reproduceerbaar effect of een toevallige variatie?

Atalanta met zekerheid 95,2%

 

Als je het getal er 4x in zet (zie afbeelding) dan stijgt de zekerheid tot 95,2% ! Een gigantisch effect! Wat is hier aan de hand? Totaal irrelevante informatie verhoogt de zekerheid. O moet die getallen aanzien voor kleine vlekjes. Dus ik begon met zwarte, rode en gele stippen te experimenteren. En steeds was er merkbaar effect op het zekerheidspercentage. Hier met twee gele cirkels in de achtergrond:

Atalanta 60,5% (2 gele stippen size: 30)

Toen ik de 2 gele stippen stapsgewijs groter maakte van 30 naar 35 pixels, zag O plotseling een Kleine vos met een zekerheid 52,4%! Zie hieronder:

Kleine Vos 52,4% (2 gele stippen size: 35)

Ten overvloede: zo ziet een Kleine vos er uit:

Kleine vos (ObsIdentify: 100.0% zeker) ©wikipedia

Het omslagpunt ligt exact bij de overgang van 34 naar 35 pixels. Dus O gaat van een Atalanta naar een Kleine Vos door 1 pixel verschil! Een verschil dat met het blote oog niet te zien is. En bovendien pixels die zich buiten de vlinder zelf bevinden. Dat O gevoelig is voor zeer subtiele verschillen is prima, maar stippen in de achtergrond van de vlinder kan niet de bedoeling zijn. Maak je nog grotere zwarte stippen dan weet O voor 88% zeker dat een Atalanta een Kleine vos is! [2]. En voor de duidelijkheid: O weet met 100% zekerheid hoe een Kleine Vos er uitziet. 

Dit was wel het allerlaatste wat ik verwacht had. Als er ergens het onderscheid tussen vlinder en achtergrond duidelijk is, dan is het wel in deze afbeeldingen. Dit zou nooit mogen gebeuren. Wat zegt dit over de werking van de software? Hoe kan O überhaupt vlinders op naam brengen als hij dit soort bizarre fouten maakt? En tòch kan hij/zij het.



Computer says: Kleine Vos 99,6% [ 10 Nov 2019 ]
Fout! het is nog steeds een Atalanta!

Ik heb nog andere manieren ontdekt om O op een dwaalspoor te brengen. Het is me gelukt om de zekerheid voor Kleine vos op te voeren tot 99,6% met louter toevoegingen in de achtergrond! (zie afbeelding). Geen mens twijfelt er aan dat dit nog steeds een Atalanta is. Computer says: Kleine Vos 99,6%.



Conclusie

Als je weet hoe je software subtiel moet manipuleren om een fout antwoord te genereren, noem ik dat een hack. Je hebt een zwakke plek in de software gevonden. Dat simpele stippen in de achtergrond voldoende zijn om de ene soort in de andere soort te transformeren, betekent dat de software geen flauw idee heeft wat het verschil is tussen vlinder en de achtergrond. Met andere woorden: hij weet domweg niet wat een vlinder is! Dat is best verbazingwekkend als je bedenkt dat een achtergrond van een vlinder altijd verschillend is. Een indicatie dat O moeite heeft met een verwarrende achtergrond is de vaak herhaalde aanbeveling: "Probeer de foto bij te snijden."
Ik heb nog vele andere aanvallen uitgevoerd, en er zijn nog vele andere denkbaar. In dit blog heb ik me beperkt tot de meest spectaculaire die ik tot nu toe gevonden heb. Ondanks dit alles werkt O in de dagelijkse praktijk prima. Maar: O is een black box: je stopt er foto's in, en er komen namen uit, maar wat er precies in het hoofd van O omgaat is voor ons een groot mysterie.

Een recente publicatie in Nature [3] constateert dat zelfs de beste machine learning AI programma's gevoelig zijn voor hacks en dat het zeer moeilijk is om AI programma's te beveiligen tegen iedere denkbare aanval. Nu ligt niemand –behalve misschien sommige biologen– wakker van het feit dat software een vlinder fout identificeert. Maar als de onderliggende software ook gebruikt wordt in beveiliging van smartphones met gezichts- iris-, stem- of vingerafdrukherkenning, of de toegang tot je bankrekening, dan is dit zeer verontrustend nieuws. Denk ook aan de recent door de politie ingevoerde automatische herkenning van bellende automobilisten. Of denk aan autopilot software in Tesla's die alle mogelijke objecten zoals tegenliggers, fietsers, voetgangers, overstekende wilde zwijnen razend snel met 100% zekerheid moet kunnen herkennen om botsingen te voorkomen. Letterlijk dodelijk zijn de aanvalsdrones die zelf het slachtoffer uitzoeken op basis van gezichtsherkenning. Als je op de hoogte bent van de zwakheden van 'intelligente software', dan zet ik mijn leven niet op het spel.


Update 10 Nov 2019: Atalanta toegevoegd: 99,6%


Postscript

27 Okt 2019
 
Het blijkt dat de auteur van ObsIdentify Laurens Hogeweg is. Volgens zijn Linkedin profiel is hij Senior Software Engineer at Naturalis Biodiversity Center, en is hij tevens verbonden aan de Radboud Universiteit Nijmegen. Recentelijk heeft hij gepubliceerd over ObsIdentify: Machine Learning Model for Identifying Dutch/Belgian Biodiversity (20 Aug 2019)


Noten

  1. In die gids staan samengestelde vlinders: de bovenkant van de vleugels links en de onderkant rechts. Om de vlinder compleet te maken heb ik de rechtervleugel vervangen door een gespiegelde kopie van de linkervleugel.
  2. Deze bug kan te maken hebben met de beginsituatie van minder dan 100% zekerheid (60%). Maak je het wit in de vleugels witter, dan is O veel zekerder en maakt het de fout niet meer. Maar in de natuur zijn de omstandigheden ook nooit ideaal! Lichtval is steeds anders.
  3. Douglas Heaven (2019) Why deep-learning AIs are so easy to fool, Nature, 9 Oct 2019 (gratis toegang)

Alle ObsIdentify blogs

  1. 30 Sep 2019 Test van ObsIdentify algoritme voor automatische identificatie van dieren en planten. deel 1.
  2. 21 Okt 2019 ObsIdentify software gekraakt! Vlinders identificeren zonder te weten wat een vlinder is.... deel 2
  3. 19 Nov 2019: ObsIdentify (3) Who is afraid of red, yellow and blue? De Vlinder Turing test voor mens en AI doe ik o.a. het voorstel voor een Turing test tussen mens en ObsIdentify: wie kan het snelst 1000 soorten correct identificeren aan de hand van foto's? deel 3
  4. 04 Dec 2019 : ObsIdentify (4). ObsIdentify herkent Kuifeend, Kikker, Kiekendief en vele andere soorten in plaatjes van 1 pixel. deel 4
  5. 23 Dec 2019: ObsIdentify (5) Hoe zeker is 100%? Soorten met 100% zekerheid herkennen in random pixels. deel 5
  6. 04 Feb 2020 : Hacken voor dummies en gevorderden. Beeldherkenningssoftware ObsIdentify is makkelijk te misleiden (deel 6)
  7. 18 Mar 2020: ObsIdentify geeft ALTIJD foute antwoorden buiten zijn eigen domein. Ook met hoge zekerheden deel 7
  8. 30 Mei 2020: Obsidentify voorspelt Wespendief, Buizerd en Ruigpootbuizerd op basis van foto's van dezelfde vogel. deel 8
  9. 26 Jun 2020: Toch nog een wespendief! deel 9
  10. 22 Jul 2020: Tesla beeldherkenning en ObsIdentify beeldherkenning: steeds beter, maar maken nog steeds klassieke fouten deel 10
  11. 11 Jan 2021: ObsIdentify herkent Cetti's zanger op tegenlicht foto met 99% zekerheid deel 11
  12. 4 Mar 2021 : Perfecte camouflage citroenvlinder misleidt ObsIdentify software. deel 12.
  13. 25 mei 2021: Onwaarschijnlijk goede prestaties van ObsIdentify met blauwborst en ree. deel 13.
  14. 21 juni 2021: ObsIdentify en het mysterie van de Gouden Loopkever. Het Randblindheid effect bewezen. deel 14.
  15. Voor alle volgende blogs over ObsIdentify klik op label ObsIdentify.  

 

12 comments:

  1. "hij (ObsIdentify) weet domweg niet wat een vlinder is! Dat is best verbazingwekkend"

    Verbazingwekkend?

    ReplyDelete
  2. Beste blogbezoeker, dank voor je comment. Voor de zekerheid: ik zeg niet dat het programma dom is. Ik zeg alleen dat (ObsIdentify) weet domweg niet wat een vlinder is.

    Met verbazingwekkend bedoel ik: hoe kan een programma dat succesvol objecten kan herkennen, zo sterk misleid worden door irrelevante pixels in de achtergrond van het object?
    Dat vind ik best verbazingwekkend omdat het herkennen van objecten volgens mijn bescheiden mening impliceert dat het programma onderscheid kan maken tussen object en achtergrond. Het herkent immers objecten en geen achtergronden. Dan zou ik verwachten dat het pixels in de achtergrond negeert. Wat dus niet het geval is. Snap jij dat?

    ReplyDelete
  3. het Nature artikel waar U naar verwijst, is slechts één van de vele dat duidelijk maakt dat de huidige AI's heel anders 'leren' en vooral heel anders 'kijken' dan mensen, laat staan dat ze objecten en (pixels in) achtergronden kunnen 'herkennen' of 'negeren' zoals wij.

    Geen mens heeft ook eerst miljoenen voorbeelden nodig om iets te kunnen herkennen, en is dan ook niet simpel door een paar pixels te misleiden. Nog sterker, geen mens heeft ook ooit maar één pixel gezien- zelfs niet vanaf een computerscherm.

    ReplyDelete
  4. Ja, AI en mens doen dat heel anders, maar het is zo suggestief dat software net als de mens ook moet leren vogels, vlinders en libellen te herkennen. Bij mensen gaan daar jaren over heen voordat je soorten direct herkent. Ook mensen moeten getraind worden met veel voorbeelden, met behulp van ervaren kenners,of boekjes, etc. Het verschil is dat mensen net als andere dieren van nature in staat zijn om objecten te isoleren van hun omgeving. Voor de mens is dat gemakkelijk omdat vogels, vlinders, libellen bewegen ten opzichte van hun omgeving. En dan weet je automatisch wat een object is en wat omgeving. Beeldherkenning zoals ObsIdentify werkt met stilstaande beelden en dat is een stuk moeilijker!

    OK, een mens is niet te misleiden door een pixel, maar er zijn honderden optical illusions waardoor het menselijk brein misleid wordt. Daar zijn boeken vol over geschreven. Die illusions zijn -grappig genoeg- ook (meestal?) artificieel, speciaal geconstrueerde om de mens te misleiden. Die illusies zijn ook een overeenkomst tussen mens en computer. Optical illusions = het menselijk brein hacken.

    ReplyDelete
  5. "AI en mens doen dat heel anders"

    Totaal anders. En dat geldt niet alleen voor waarneming.

    Zie bijv- voor een update, een overzicht: arXiv:1905.10985v1

    ReplyDelete
  6. Gert,

    Het volgende is hoe ik dit zie.

    Mensen leren inderdaad heel anders dan machines omdat er bij machines geen sprake is van rijke waarnemingen.

    Waarschijnlijk moet O het doen met een afbeelding die een beperkt aantal pixels bevat die eerst genormaliseerd wordt en die daarna wordt vergeleken met een aantal mallen waarbij de mal met de hoogste overeenkomst gekozen wordt.

    Globaal gaat het bij mensen niet anders maar het verschil zit hem in de details. In beide gevallen is voor het maken van iedere mal een aantal waarnemingen nodig.

    In tegenstelling tot een machine leren mensen een bepaald soort vlinder niet kennen door het bekijken van een zeer groot aantal verschillende statische afbeeldingen van alleen dat soort vlinder.

    We leren eerst het algemene concept van een vlinder wat een samenstelling is van de onderdelen van vlinders zoals gekleurde symmetrische vleugels met een karakteristieke vlindervorm, romp, poten, kop en voelsprieten. We leren dit concept ook te herkennen onder verschillende perspectieven, lichtomstandigheden en achtergronden. Hierdoor zijn wij in staat het beeld van een vlinder te isoleren van storende elementen. Hiervoor is het aandachtig gadeslaan van een paar levende en bewegende vlinders al voldoende.
    Voor de verschillende soorten vlinders hoeven dan alleen nog de bijzonderheden geleerd te worden die de onderdelen van die soort vertonen. Ook hiervoor zijn niet heel veel waarnemingen nodig.

    Mijn conclusie is dat dit verklaart waarom mensen veel beter in staat zijn vlindersoorten te herkennen dan machines.
    Dat betekent ook dat machines dit veel beter zouden kunnen als ze op soortgelijke wijze zouden werken.
    Bij het herkennen van gezichten zijn machines inmiddels al beter geworden dan mensen en daar maakt de Chinese overheid gebruik van.
    https://youtu.be/_yKga54tx6U

    ReplyDelete
  7. Gert,

    Nog een paar vraagjes.
    Hoever zou een machine moeten gaan om te kunnen zeggen dat die weet wat een vlinder is?
    Weten mensen eigenlijk wel wat een vlinder is of leggen we de lat bij mensen minder hoog dan bij machines?

    ReplyDelete
  8. Anoniem zei: "Zie bijv- voor een update, een overzicht: arXiv:1905.10985v1."
    Dank voor het artikel: ik ben aan het lezen!

    ReplyDelete
  9. Bert, leuk je terug te zien op dit blog. Je maakt goede opmerkingen. Ik ben bezig met een vervolg blog.
    "Hoever zou een machine moeten gaan om te kunnen zeggen dat die weet wat een vlinder is?" dat is een goede, terechte vraag!
    Ik zou zeggen dat een AI programma bij onzekerheid niet mag concluderen tot een dier uit een heel andere categorie: kikker, nachtvlinder, sprinkhaan, plant, etc. dat zijn fouten die onthullen dat dat hij niet weet wat een vlinder is. Kom ik op terug.

    De Chinese overheid heeft een te groot vertrouwen in de betrouwbaarheid van AI net zo optimistisch als Tesla is over zijn autopilot, en net als vele Tesla rijders!
    Dit is belangrijke en serieuze materie.

    ReplyDelete
  10. Anonymous Monday, November 11, 2019 at 9:03:00 PM GMT+1

    "... dat duidelijk maakt dat de huidige AI's heel anders 'leren' en vooral heel anders 'kijken' dan mensen, laat staan dat ze objecten en (pixels in) achtergronden kunnen 'herkennen' of 'negeren' zoals wij."

    Als ObsIdentify succesvol een Atalanta van een Kleine Vos kan onderscheiden, dan is dat toch op basis van kenmerken van de vlinder zelf en niet op basis van de achtergrond? Want de achtergrond is altijd verschillend. Zeker als je duizenden foto's in de trainings set hebt. Hij kan op een witte muur of een bruin hek zitten. Het enige gemeenschappelijke in al die foto's is de vlinder zelf. Daarom mag ik verwachten dat de achtergrond irrelevant is. En dat ObsIdentify die achtergrond negeert. Maar dat doet die dus niet. Dat heb ik laten zien in het blog.

    ReplyDelete
  11. Ik zou beginnen dat je ObsIdentify niet toepast op een vlinder, de Atalanta, maar op een tekening. De mens neemt die tekening waar als een Atalanta maar het is in feite niet meer dan verschillende kleuren inkt op papier, geen Atalanta. Dat de mens daar in trapt wil niet zeggen dat de computer dat ook moet doen....

    ReplyDelete
  12. Dank voor je comment dr. M. !
    Ik zie dat zo: zowel een tekening uit een vlindergids als een foto van een echte vlinder worden door een fototoestel vertaald in een serie pixels in een plat vlak. Wat dat betreft is er geen verschil tussen een tekening en een foto. ObsIdentify (NIA) krijgt die pixels aangeboden en daar moet hij het mee doen. ObsIdentify krijgt uitsluitend een eindeloze rij pixels.

    ReplyDelete

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