Kuinka automatisoida valvonta helposti syvän oppimisen avulla

Tämä artikkeli on nopea opetusohjelma tarkkailujärjestelmän toteuttamiseksi, joka käyttää syväoppimiseen perustuvaa objektien havaitsemista. Siinä verrataan myös erilaisten objektintunnistusmallien suorituskykyä GPU-moniprosessoinnin avulla päätelmien tekemiseksi jalankulkijoiden havainnoinnissa.

Valvonta on olennainen osa turvallisuutta ja partiointia. Suurimmaksi osaksi työ vaatii pitkiä aikoja tarkkailla jotain toivottavaa tapahtua. On ratkaisevan tärkeää, että teemme tämän, mutta se on myös erittäin arkipäiväinen tehtävä.

Eikö elämä olisi paljon yksinkertaisempaa, jos olisi jotain, joka voisi tehdä "katselun ja odottamisen" meille? No, sinulla on onnea. Viime vuosina tapahtuneen tekniikan kehityksen ansiosta voimme kirjoittaa joitain skriptejä yllä olevien tehtävien automatisoimiseksi - ja sekin melko helposti. Mutta ennen kuin sukellamme syvemmälle, kysyämme itseltämme:

Ovatko koneet hyviä kuin ihmiset?

Jokainen syvän oppimisen tunteva tietäisi, että kuvan luokittelijat ovat ylittäneet inhimillisen tason tarkkuuden.

ImageNet-tietojoukon virhetaso ajan myötä ihmisille, perinteiselle tietokonevisiolle (CV) ja syvälle oppimiseen. (Kuvan lähde: Linkki)

Joten kyllä, kone voi pitää etsimässä esineitä, jotka ovat saman standardin (tai paremman) verrattuna ihmiseen. Tästä huolimatta tekniikan käyttö valvontaan on paljon tehokkaampaa.

  • Valvonta on toistuva ja arkipäiväinen tehtävä. Tämä voi aiheuttaa suorituskyvyn laskua meille ihmisille. Antamalla tekniikan suorittaa valvonnan, voisimme keskittyä toimiin, jos jotain menee väärin.
  • Suureen maa-alueiden mittaamiseen tarvitaan paljon henkilöstöä. Kiinteillä kameroilla on myös rajoitettu näyttöalue. Mobiileilla valvontalaitteilla (kuten mikroherroilla) näitä ongelmia voidaan lieventää.

Lisäksi samaa tekniikkaa voidaan käyttää monissa sovelluksissa, jotka eivät rajoitu turvallisuuteen, kuten vauvavalvontalaitteissa tai automaattisissa tuotteiden toimituksissa.

Ymmärrän kyllä. Mutta kuinka me automatisoimme sen?

Ennen kuin haastamme monimutkaisia ​​teorioita, ajatelkaamme kuinka valvonta toimii normaalisti. Katsomme videosyötettä ja jos havaitsemme jotain epänormaalia, ryhdymme toimenpiteisiin. Joten pohjimmiltaan tekniikkamme tulisi perehtyä videon jokaiseen kehykseen toivoen havaitsevan jotain epänormaalia. Soittaako tämä prosessi kelloa?

Kuten olet ehkä arvata, tämä on objektin tunnistus lokalisoinnin avulla. Se eroaa luokittelusta hieman siitä, että meidän on tiedettävä kohteen tarkka sijainti. Lisäksi meillä voi olla useita objekteja yhdessä kuvassa.

Tarkan sijainnin löytämiseksi algoritmimme tulisi tarkistaa jokainen kuvan osa löytääkseen luokan olemassaolon. Se on vaikeampaa kuin miltä kuulostaa. Mutta vuodesta 2014 lähtien jatkuvassa iteratiivisessa tutkimuksessa Deep Learning -palvelussa on otettu käyttöön raskaasti suunniteltuja hermoverkkoja, jotka voivat havaita kohteita reaaliajassa.

Katso kuinka suorituskyky kasvoi vain kahden vuoden aikana!

On olemassa useita syvän oppimisen arkkitehtuureja, jotka käyttävät erilaisia ​​menetelmiä sisäisesti saman tehtävän suorittamiseksi. Suosituimmat variantit ovat Faster RCNN, YOLO ja SSD-verkot.

Nopeus vs tarkkuus vaihto. Suurempi mAP ja pienempi GPU-aika on optimaalinen.

Jokainen malli riippuu perusluokittelijasta, mikä vaikuttaa suuresti lopulliseen tarkkuuteen ja mallin kokoon. Lisäksi kohdedetektorin valinta voi vaikuttaa voimakkaasti laskennalliseen monimutkaisuuteen ja lopulliseen tarkkuuteen.

Objektintunnistusalgoritmia valittaessa on aina Nopeus vs Tarkkuus vs Koko -vaihto.

Tässä blogiviestissä opitaan kuinka rakentaa yksinkertainen mutta tehokas valvontajärjestelmä Object Detection -sovelluksen avulla. Keskustelemme ensin rajoituksista, joihin olemme sitoutuneet valvontatehtävän luonteen vuoksi.

Rajoitteet syvälle oppimiseen valvonnassa

Usein haluamme pitää katseen suurella maa-alueella. Tämä tuo esiin pari tekijää, jotka meidän on ehkä otettava huomioon ennen valvonnan automatisointia.

1. Videosyöte

Luonnollisesti saatamme vaatia useita kameroita, jotta voidaan pitää näkymä suurella alueella. Lisäksi näiden kameroiden on tallennettava nämä tiedot jonnekin; joko paikallisesti tai syrjäiseen sijaintiin.

Tyypilliset valvontakamerat. (Kuva Scott Webb on Unsplash)

Korkealaatuisempi video vie paljon enemmän muistia kuin heikompilaatuinen. Lisäksi RGB-tulovirta on 3x suurempi kuin BW-tulovirta. Koska voimme tallentaa vain rajallisen määrän syöttövirtaa, laatua heikennetään usein tallennuksen maksimoimiseksi.

Siksi skaalautuvan valvontajärjestelmän tulisi kyetä tulkitsemaan heikkolaatuisia kuvia. Siksi Deep Learning -algoritmiamme on koulutettava myös tällaisiin heikkolaatuisiin kuviin.

2. Käsittelyteho

Nyt kun olemme ratkaisseet syöttörajoituksen, voimme vastata isompaan kysymykseen. Missä käsittelemme kameralähteistä saatuja tietoja? Tähän on kaksi tapaa.

  • Käsittely keskitetyllä palvelimella:

Kameroiden videovirrat käsitellään kehyksittäin etäpalvelimessa tai klusterissa. Tämä menetelmä on vankka ja antaa meille mahdollisuuden hyötyä monimutkaisista malleista, joilla on korkea tarkkuus. Ilmeinen ongelma on viive; tarvitset nopean Internet-yhteyden rajoitettuun viiveeseen. Lisäksi, jos et käytä kaupallista sovellusliittymää, palvelimen asennus- ja ylläpitokustannukset voivat olla korkeat.

Muistin kulutus vs. päättely GPU-aika (millisekuntia). Useimmat korkean suorituskyvyn mallit kuluttavat paljon muistia. (Lähde)
  • Käsittely reunalla:

Kiinnittämällä pieni mikrokontrolleri voimme suorittaa reaaliaikaisen päättelyn itse kameraan. Lähetyksen viivettä ei ole, ja poikkeavuudet voidaan ilmoittaa nopeammin kuin edellinen menetelmä. Lisäksi tämä on erinomainen lisä mobiililaitteille, joten niitä ei tarvitse rajoittaa käytettävissä olevan WiFi / Bluetooth-alueen avulla. (kuten mikrodroneja).

Erilaisten objektintunnistimien FPS-kyky. (Lähde)

Haittana on, että mikro-ohjaimet eivät ole yhtä tehokkaita kuin GPU: t, ja siksi saatat joutua käyttämään malleja, joiden tarkkuus on alhaisempi. Tätä ongelmaa voidaan kiertää käyttämällä sisäänrakennettuja GPU: ita, mutta se on kallis ratkaisu. Mielenkiintoinen ratkaisu olisi käyttää ohjelmistoa, kuten TensorRT, joka voi optimoida ohjelman päätelmistä.

Valvontajärjestelmän kouluttaminen

Tässä osiossa tarkistamme, kuinka jalankulkijat voidaan tunnistaa objektintunnistuksen avulla. Käytämme TensorFlow-objektien havaitsemisliittymää Object Detection -moduulimme luomiseen. Tutkimme lyhyesti, kuinka API voidaan asettaa ja kouluttaa sitä valvontatehtäväämme varten. Tarkempia selityksiä varten voit kassalla tämän blogiviestin.

Koko prosessi voidaan tiivistää kolmeen vaiheeseen:

  1. Tietojen valmistelu
  2. Kouluta malli
  3. Päättely
Object Detection -mallin kouluttamiseen liittyvä työnkulku.

Jos tunnet tulosten näkevän motivoivan sinua kokeilemaan sitä enemmän, vieritä vapaasti vaiheeseen 3!

Vaihe 1: Tietojen valmistelu

Vaihe 1: Hanki tietojoukko

Aikaisemmin otetut seurantamateriaalit ovat luultavasti tarkin saatu tietojoukko. Mutta useimmissa tapauksissa on usein vaikea saada tällaista seurantamateriaalia. Tällöin voimme kouluttaa esineilmaisimen tunnistamaan tavoitteemme yleensä normaalikuvista.

Näyte merkitty kuva tietokannasta.

Kuten aiemmin keskusteltiin, kamerasi kuvat saattavat olla heikompaa laatua. Joten sinun on koulutettava mallisi toimimaan sellaisissa olosuhteissa. Erittäin tyylikäs tapa tehdä tämä on suorittaa tietojen lisäämistä, joka selitetään yksityiskohtaisesti tässä. Pohjimmiltaan meidän on lisättävä melua hajottaaksesi tietojoukon kuvanlaatua. Voimme myös kokeilla epäterävyyttä ja eroosioita.

Käytämme TownCentre-tietojoukkoa esineiden havaitsemiseen. Käytämme videon ensimmäisiä 3600 kehystä koulutukseen ja validointiin ja loput 900 testiin. Voit purkaa tietojoukon GitHub-repo-ohjelmistoni skripteillä.

Vaihe 2: Merkitse tietojoukko

Voit käyttää merkintöjä esimerkiksi LabelImg-työkalun avulla. Tämä on työläs tehtävä, mutta tärkeä. Merkinnät tallennetaan XML-tiedostoina.

Onneksi TownCentre-tietojoukon omistajat ovat toimittaneet merkinnät csv-muodossa. Kirjoitin nopean komentosarjan muuntaaksesi merkinnät vaadittuun XML-muotoon, jonka löydät GitHub-repo-tiedostostani.

Vaihe 3: Klooni arkisto

Klooni arkisto. Suorita seuraavat komennot vaatimusten asentamiseksi, käännä joitain Protobuf-kirjastoja ja aseta polkumuuttajat

pip install -r vaatimukset.txt
sudo apt-get install protobuf-kääntäjä
protoc object_detection / protos / * .proto --python_out =.
vie PYTHONPATH = $ PYTHONPATH: "pwd": "pwd" / ohut

Vaihe 4: Valmistele tukitulot

Meidän on annettava tunnus tavoitteellemme. Määrittelemme tunnisteen tiedostossa nimeltä_map.pbtxt seuraavasti

esine {
 tunnus: 1
 nimi: 'kohde'
}

Seuraavaksi sinun on luotava tekstitiedosto, jossa on XML- ja kuvatiedostojen nimet. Jos esimerkiksi tietoaineistossasi on img1.jpg, img2.jpg ja img1.xml, img2.xml, sinun trainval.txt-tiedoston tulee näyttää tältä:

img1
img2

Erota tietojoukko kahteen kansioon, nimittäin kuviin ja merkintöihin. Sijoita label_map.pbtxt ja trainval.txt merkintöjen kansioon. Luo merkintöjen kansioon xmls-niminen kansio ja sijoita kaikki XML-tiedostot sen sisälle. Hakemistohierarkian tulisi näyttää tällaiselta:

-base_directory
| -kuvia
| -annotations
|| -xmls
|| -label_map.pbtxt
|| -trainval.txt

Vaihe 5: Luo TF-tietueet

API hyväksyy syötteet TFRecords-tiedostomuodossa. Muunna tietojoukot TFRecords-tiedostoihin käyttämällä repossani tarjoamaa create_tf_record.py-tiedostoa. Sinun tulisi suorittaa seuraava komento perushakemistossa:

python luoda_tf_record.py \
    --data_dir = `pwd` \
    --output_dir = `pwd`

Löydät kaksi tiedostoa, train.record ja val.record, kun ohjelma on suorittanut loppuun suorituksen.

Vaihe 2: Mallin kouluttaminen

Vaihe 1: Mallin valinta

Kuten aiemmin mainittiin, nopeuden ja tarkkuuden välillä on kompromissi. Kohteentunnistimen rakentaminen ja kouluttaminen tyhjästä olisi myös erittäin aikaa vievää. Joten, TensorFlow Object Detection -sovellusliittymä tarjoaa joukon valmiiksi koulutettuja malleja, joita voit hienosäätää käyttökohteesi mukaan. Tätä prosessia kutsutaan siirto-oppimiseksi, ja se nopeuttaa koulutusprosessiasi valtavasti.

Joukko malleja, jotka on ennalta koulutettu MS COCO -datan avulla

Lataa yksi näistä malleista ja purkaa sisältö perushakemistoon. Saat mallin tarkistuspisteet, jäädytetyn päättelygraafin ja pipeline.config-tiedoston.

Vaihe 2: Harjoitustyön määritteleminen

Sinun on määritettävä ”harjoitustyö” pipeline.config-tiedostossa. Sijoita tiedosto perushakemistoon. Tärkeää on tiedoston muutaman viimeisen rivin valinta - sinun on asetettava korostetut arvot vain tiedoston sijaintiisi.

kaltevuus_leikkaus_by_normin: 10,0
  fine_tune_checkpoint: "model.ckpt"
  from_detection_checkpoint: totta
  numero_vaiheet: 200000
}
train_input_reader {
  label_map_path: "annotations / label_map.pbtxt"
  tf_record_input_reader {
    input_path: "train.record"
  }
}
eval_config {
  numero_esimerkkejä: 8000
  enimmäisvuodet: 10
  use_moving_a vidur: vääriä
}
eval_input_reader {
  label_map_path: "annotations / label_map.pbtxt"
  sekoitus: väärä
  numerot: 1
  lukijalukija: 1
  tf_record_input_reader {
    input_path: "val.record"
  }
}

Vaihe 3: Aloita koulutus

Suorita alla oleva komento aloittaaksesi harjoitustyön. Harjoitteluprosessin nopeuttamiseksi on suositeltavaa käyttää konetta, jossa on tarpeeksi suuri GPU (edellyttäen, että olet asentanut tensorflowin gpu-version).

python object_detection / train.py \
--logtostderr \
--pipeline_config_path = pipeline.config \
--train_dir = juna

Vaihe 3: päätelmät

Vaihe 1: Vie koulutettu malli

Ennen kuin voit käyttää mallia, sinun on vietävä koulutetut tarkistustiedostot jäädytettyyn päättelygraafiin. Se on itse asiassa helpompaa kuin sanottiin - suorita vain alla oleva koodi (Korvaa 'xxxxx' tarkistuspisteen numerolla):

python object_detection / export_inference_graph.py \
--input_type = image_tensor \
--pipeline_config_path = pipeline.config \
--koulutettu_tarkistuspiste_prefix = juna / malli.ckpt-xxxxx \
--output_directory = ulostulo

Saat tiedoston nimeltä frozen_inference_graph.pb sekä joukko tarkistustiedostoja.

Vaihe 2: Käytä sitä videovirrassa

Meidän on poistettava yksittäiset ruudut videolähteestämme. Se voidaan tehdä käyttämällä OpenCV: n VideoCapture-menetelmää seuraavasti:

korkki = cv2.VideoCapture ()
lippu = totta
kun taas (lippu):
    lippu, kehys = cap.read ()
    ## - Objektintunnistuskoodi -

Vaiheessa 1 käytetty tiedonkeruukoodi luo automaattisesti kansion 'test_images' testijoukkojemme kanssa. Voimme ajaa malliamme testijoukolla suorittamalla seuraavat:

python object_detection / inference.py \
--input_dir = {PATH} \
--output_dir = {PATH} \
--label_map = {PATH} \
--frozen_graph = {PATH} \
--num_output_classes = 1 \
--n_jobs = 1 \
--delay = 0

kokeilut

Kuten aikaisemmin mainittiin, nopeuden ja tarkkuuden välillä on kompromisseja objektinilmaisumallin valinnassa. Suoritin joitain kokeita, joissa mitattiin kolmella eri mallilla havaittujen ihmisten FPS ja tarkkuus. Lisäksi kokeita ajettiin erilaisilla resurssirajoituksilla (GPU-rinnakkaisuusrajoitukset). Näiden kokeilujen tulokset voivat antaa sinulle arvokkaita oivalluksia objektin havaitsemismallin valinnassa.

Perustaa

Seuraavat mallit valittiin kokeiluomme. Ne ovat saatavilla TensorFlow-objektien havaitsemisliittymän malli-eläintarhassa.

  • Nopeampi RCNN ResNet 50: llä
  • SSD MobileNet v1: llä
  • SSD InceptionNet v2: lla

Kaikki mallit koulutettiin Google Colab -sovelluksessa 10 kt: n vaiheille (tai kunnes tappio oli kylläinen). Päätelmäksi käytettiin AWS p2.8xlarge -esimerkkiä. Laskennan tarkkuus mitattiin vertaamalla mallin havaitsemia ihmisten lukumäärää ja maa-totuutta. Päättelynopeus kehyksissä sekunnissa (FPS) testattiin seuraavilla rajoituksilla:

  • Yksi GPU
  • Kaksi GPU: ta samanaikaisesti
  • Neljä GPU: ta samanaikaisesti
  • Kahdeksan GPU: ta samanaikaisesti

tulokset

Tässä on ote FasterRCNN: n avulla tuotetusta tuotosta testisarjoissamme. Olen lisännyt tämän blogin lopussa myös videon, jossa verrataan kunkin mallin tuottamia tuloksia. Voit vierittää alas ja tarkistaa sen!

Harjoitteluaika

Alla oleva käyrä näyttää ajan, joka tarvitaan kunkin mallin kouluttamiseen 10 kt: n askelta (tunneina). Tämä ei sisällä aikaa, joka tarvitaan hyperparametrien hakuun.

Kun sovelluksesi eroaa suuresti esiopetetusta mallista, jota käytät siirto-oppimiseen, saatat joutua säätämään voimakkaasti hyperparametreja. Kuitenkin, kun sovelluksesi on samanlainen, sinun ei tarvitse tehdä laajaa hakua. Siitä huolimatta saatat joutua kokeilemaan koulutusparametreja, kuten oppimisnopeus ja optimoijan valinta.

Nopeus (kehyksiä sekunnissa)

Tämä oli mielenkiintoisin osa kokeilumme. Kuten aiemmin todettiin, mittasimme kolmen mallimme FPS-suorituskykyä viidellä erilaisella resurssirajoituksella. Tulokset esitetään alla:

SSD-levyt ovat erittäin nopeita ja lyövät helposti nopeampaa RCNN: n nopeutta käytettäessä yhtä GPU: ta. Nopeampi RCNN tarttuu kuitenkin nopeasti SSD: hen, kun lisäämme GPU: ien määrää (toimivat samanaikaisesti). Sanomattakin on selvää, että SSN ja MobileNet ovat paljon nopeampia kuin SSD InceptionNet kanssa matalassa GPU-ympäristössä.

Yksi yllä olevan kaavion huomattava ominaisuus on, että FPS laskee hiukan, kun lisäämme SSD: n GPU: ien lukumäärää MobileNetin avulla. Tähän ilmeiseen paradoksiin on oikeastaan ​​yksinkertainen vastaus. Osoittautuu, että asennusohjelmamme käsitteli kuvia nopeammin kuin kuvien lukutoiminto toimitti ne!

Videonkäsittelyjärjestelmän nopeus ei voi olla suurempi kuin nopeus, jolla kuvat syötetään järjestelmään.

Hypoteesin todistamiseksi annoin kuvanlukutoiminnolle etumatkan. Seuraava kaavio näyttää SSD: n FPS: n parannuksen MobileNetillä, kun viive lisättiin. FPS: n pieni pieneneminen aikaisemmassa kaaviossa johtuu siitä, että mukana olevat yleiskustannukset johtuvat useista syöttöä pyytävistä GPU: ista.

Tarpeetonta sanoa, että havaitsemme FPS: n voimakkaan kasvun, jos otamme käyttöön viiveitä. Tärkeintä on, että meillä on oltava optimoitu kuvansiirtoputki nopeuden pullonkaulan estämiseksi. Mutta koska aiomme käyttää tapaustamme on valvonta, meillä on ylimääräinen pullonkaula. Valvontakameran FPS asettaa järjestelmän FPS: n ylärajan.

Laskennan tarkkuus

Määrittelemme laskentatarkkuuden prosenttimäärä ihmisistä, jotka esineiden havaitsemisjärjestelmämme tunnistaa oikein. Minusta tuntui, että se on sopivampi valvontaan. Näin kukin mallisi suoriutui:

Tarpeetonta sanoa, että Faster RCNN on tarkin malli. Myös yllättäen MobileNet toimii paremmin kuin InceptionNet.

Kokeiden perusteella on selvää, että nopeuden ja tarkkuuden välillä on todellakin kompromissi. Voimme kuitenkin käyttää mallia, jolla on korkea tarkkuus hyvällä FPS-nopeudella, jos resursseja on riittävästi. Huomaa, että nopeampi RCNN ResNet-50: llä tarjoaa parhaan tarkkuuden ja erittäin hyvän FPS-luokituksen, kun sitä käytetään 4 + GPU: lla samanaikaisesti.

Se oli paljon askelta!

No .. En väittäisi. Se on todellakin paljon vaiheita. Lisäksi pilvijärjestelmän asettaminen tälle mallille toimimaan reaaliajassa olisi työlästä ja kallista.

Parempi ratkaisu olisi käyttää palvelimille jo asennettua API-palvelua, jotta voit vain huolehtia tuotteesi kehittämisestä. Siellä Nanonets alkaa. Heidän API on asennettu laadukkaaseen laitteistoon GPU: n kanssa niin, että saat hullua suorituskykyä ilman mitään vaivaa!

Muunnin olemassa olevat XML-huomautukseni JSON-muotoon ja syötin sen Nanonets-sovellusliittymään. Itse asiassa, jos et halua merkitä tietoaineistoasi manuaalisesti, voit pyytää heitä merkitsemään sen sinulle. Tässä on vähentynyt työnkulku, kun Nanonets huolehtii raskaasta nostamisesta.

Pienempi työnkulku Nanonets-laitteilla

Aiemmin mainitsin, kuinka liikkuvat valvontayksiköt, kuten mikroherrokset, voivat parantaa tehokkaasti. Voimme luoda sellaisia ​​drooneja melko helposti mikroohjaimilla, kuten Raspberry Pi, ja voimme käyttää API-puheluita päätellä.

Objektintunnistusta koskevan Nanonets-sovellusliittymän käytön aloittaminen on melko helppoa, mutta saat hyvin selitetyn oppaan kassalla tämän blogin.

Tulokset Nanonetsilla

Nanonetsilla kesti noin 2 tuntia koulutusprosessin loppuunsaattamiseen. Tämä sisältää ajan, joka tarvitaan hyperparametrien hakuun. Koulutukseen käytetyn ajan suhteen Nanonets on selvä voittaja. Nanonets voitti myös FasterRCNN: n laskentatarkkuuden suhteen.

NopeampiRCNN-tarkkuus = 88,77%
Nanonets-laskentatarkkuus = 89,66%

Tässä on kaikkien neljän testimalliston suorituskyky. On selvää, että molemmat SSD-mallit ovat vähän epävakaita ja niiden tarkkuus on alhaisempi. Lisäksi, vaikka FasterRCNN: llä ja Nanonetsilla on vertailukelpoinen tarkkuus, jälkimmäisellä on raja-alueet, jotka ovat vakaampia.

Onko automaattinen valvonta vastuussa?

Syväoppiminen on uskomaton työkalu, joka tarjoaa esimerkillisiä tuloksia helposti. Mutta missä määrin voimme luottaa valvontajärjestelmäämme toimimaan yksinään? On olemassa muutamia tapauksia, joissa automaatio on kyseenalaista.

Päivitys: GDPR: n ja alla esitettyjen syiden valossa on ehdottomasti pohdittava valvonnan automatisointia koskevia laillisuus- ja eettisiä kysymyksiä. Tämä blogi on tarkoitettu vain koulutustarkoituksiin ja siinä käytettiin julkisesti saatavilla olevaa aineistoa. Sinun vastuullasi on varmistaa, että automatisoitu järjestelmäsi noudattaa alueesi lakia.

1. Kaksoispäätelmät

Emme tiedä kuinka syvän oppimisen algoritmi päätyy lopputulokseen. Vaikka tietojen syöttämisprosessi olisi moitteeton, vääriä osumia voi olla paljon. Esimerkiksi tämä brittiläisen poliisin käyttämä AI-rumaus-suodatin poisti hiekkadyynien kuvia ajatellen, että ne olivat säädytöntä. Tekniikat, kuten ohjattu jäljennöinti, voivat selittää päätökset jossain määrin, mutta meillä on vielä pitkä tie kuljettavanaan.

2. Kiertohyökkäykset

Syvän oppimisen järjestelmät ovat hauraita. Kielen vastaiset hyökkäykset ovat samankaltaisia ​​kuvan luokittelijoiden optisten illuusioiden kanssa. Mutta pelottava osa on, laskettu huomaamaton häiriö voi pakottaa syvän oppimisen mallin luokittelemaan väärin. Samaa periaatetta tutkijat ovat kyenneet kiertämään syvälle oppimiseen perustuvilla valvontajärjestelmillä käyttämällä ”vastustajan laseja”.

3. Väärä positiivisuus

Toinen ongelma on, mitä teemme väärien positiivisten tapausten varalta. Aiheen vakavuus riippuu itse sovelluksesta. Esimerkiksi väärän positiivisen rajavartiolaitoksen järjestelmä voi olla merkittävämpi kuin puutarhavalvontajärjestelmä. Ihmisten tulisi toimia jonkin verran väärinkäytösten välttämiseksi.

4. Samankaltaiset kasvot

Valitettavasti ulkoasu ei ole yhtä ainutlaatuinen kuin sormenjälkesi. Kaksi ihmistä (tai enemmän) voi näyttää hyvin samanlaiselta. Identtiset kaksoset ovat yksi esimerkkejä. Raportoitiin, että Apple Face ID ei pystynyt erottamaan kahta etuyhteydetöntä kiinalaista työtoveria. Tämä voisi vaikeuttaa seurantaa ja ihmisten tunnistamista.

5. Tietokantojen monimuotoisuuden puute

Syvän oppimisen algoritmit ovat vain yhtä hyviä kuin tiedot, jotka ne tarjoavat. Ihmisten kasvojen suosituimmista aineistoista on vain näytteitä valkoisista. Vaikka lapselle voi vaikuttaa itsestään selvältä, että ihmiset voivat esiintyä eri väreissä, syvän oppimisen algoritmit ovat tavallaan tyhmä. Itse asiassa Google joutui vaikeuksiin, koska se luokitteli mustan henkilön väärin gorillaksi.

Tietoja Nanonetsista: Nanonets rakentaa sovellusliittymiä yksinkertaistamaan syvää oppimista kehittäjille. Käy lisää osoitteessa https://www.nanonets.com)