Sisällysluettelo[Piilottaa][Näytä]
On rohkaisevaa tietää, että olemme onnistuneet saamaan robotit sisään luontaisilla kyvyillämme oppia esimerkillä ja havaita ympäristönsä. Perushaasteena on se, että tietokoneiden opettaminen "näkemään" ihmisten tavoin vaatisi paljon enemmän aikaa ja vaivaa.
Kuitenkin, kun otetaan huomioon käytännön arvo, jonka tämä taito tällä hetkellä tarjoaa organisaatioille ja yrityksille, ponnistus kannattaa. Tässä artikkelissa opit kuvien luokittelusta, sen toiminnasta ja sen käytännön toteutuksesta. Aloitetaanpa.
Mikä on kuvien luokittelu?
Kuvan syöttäminen a neuroverkkomallien ja sitä, että se tuottaa jonkinlaisen etiketin tälle kuvalle, kutsutaan kuvantunnistukseksi. Verkon lähtötunniste vastaa ennalta määritettyä luokkaa.
Kuvalle voi olla useita luokkia tai vain yksi. Kun on vain yksi luokka, termiä "tunnistus" käytetään usein, kun taas kun luokkia on useita, käytetään usein termiä "luokitus".
Objektien havaitseminen on kuvaluokituksen osajoukko, jossa tietyt esineet, kuten eläimet, ajoneuvot tai ihmiset, havaitaan kuuluvan tiettyyn luokkaan.
Miten kuvien luokittelu toimii?
Pikselien muodossa oleva kuva analysoidaan tietokoneella. Se saavuttaa tämän käsittelemällä kuvaa kokoelmana matriiseja, joiden koko määräytyy kuvan resoluution mukaan. Yksinkertaisesti sanottuna kuvien luokittelu on tilastotietojen tutkimusta algoritmeja hyödyntäen tietokoneen näkökulmasta.
Kuvan luokittelu suoritetaan digitaalisessa kuvankäsittelyssä ryhmittelemällä pikselit ennalta määrättyihin ryhmiin tai "luokkiin". Algoritmit jakavat kuvan peräkkäin huomionarvoisia ominaisuuksia, mikä vähentää lopullisen luokittelijan taakkaa.
Nämä ominaisuudet kertovat luokittelijalle kuvan merkityksestä ja mahdollisesta luokittelusta. Koska muut kuvan luokitteluprosessit ovat siitä riippuvaisia, ominaispoimintamenetelmä on kriittisin vaihe.
- toimitetut tiedot algoritmiin on myös ratkaiseva kuvan luokittelu, erityisesti valvottu luokittelu. Verrattuna hirvittävään tietojoukkoon, jossa on luokkaan perustuva epätasapaino ja alhainen kuvan ja merkintöjen laatu, hyvin optimoitu luokitustietojoukko toimii ihailtavasti.
Kuvien luokittelu Tensorflow & Kerasin avulla pythonissa
Käytämme CIFAR-10 tietojoukko (joka sisältää lentokoneet, lentokoneet, linnut ja muut 7 asiaa).
1. Asennusvaatimukset
Alla oleva koodi asentaa kaikki edellytykset.
2. Riippuvuuksien tuonti
Tee train.py-tiedosto Pythonissa. Alla oleva koodi tuo Tensorflow- ja Keras-riippuvuudet.
3. Parametrien alustus
CIFAR-10 sisältää vain 10 kuvaluokkaa, joten luokkien lukumäärä viittaa yksinkertaisesti luokiteltavien kategorioiden määrään.
4. Ladataan tietojoukkoa
Funktio käyttää Tensorflow Datasets -moduulia datajoukon lataamiseen, ja määritämme infolla True saadaksemme tietoja siitä. Voit tulostaa sen nähdäksesi mitkä kentät ja niiden arvot ovat, ja haemme tietojen perusteella koulutus- ja testaussarjojen näytteiden lukumäärän.
5. Mallin luominen
Nyt rakennamme kolme kerrosta, joista jokainen koostuu kahdesta ConvNetistä, joissa on max-pooling ja ReLU-aktivointitoiminto, ja sen jälkeen täysin yhdistetty 1024 yksikön järjestelmä. Verrattuna ResNet50:een tai Xceptioniin, jotka ovat huippuluokan malleja, tämä saattaa olla suhteellisen pieni malli.
6. Mallin kouluttaminen
Käytin Tensorboardia mittaamaan tarkkuutta ja häviötä kullakin aikakaudella ja tarjoamaan meille ihanan näytön tietojen tuonnin ja mallin luomisen jälkeen. Suorita seuraava koodi; CPU:sta/GPU:sta riippuen harjoittelu kestää useita minuutteja.
Jos haluat käyttää tensorboardia, kirjoita seuraava komento nykyisen hakemiston terminaaliin tai komentokehotteeseen:
Huomaat, että validointihäviö vähenee ja tarkkuus nousee noin 81 prosenttiin. Se on fantastista!
Testaa malli
Kun harjoitus on päättynyt, lopullinen malli ja painot tallennetaan tuloskansioon, jolloin voimme harjoitella kerran ja tehdä ennusteita milloin haluamme. Seuraa koodia uudessa python-tiedostossa, jonka nimi on test.py.
7. Apuohjelmien tuonti testausta varten
8. Python-hakemiston tekeminen
Tee Python-sanakirja, joka kääntää jokaisen kokonaisluvun arvon tietojoukon asianmukaiseksi tunnisteeksi:
9. Ladataan testitietoja ja mallia
Seuraava koodi lataa testitiedot ja mallin.
10. Arviointi ja ennustaminen
Seuraava koodi arvioi ja tekee ennusteita sammakkokuvista.
11. tulokset
Malli ennusti sammakon 80.62 %:n tarkkuudella.
Yhteenveto
Okei, tämä oppitunti on valmis. Vaikka 80.62 % ei ole hyvä pienelle CNN:lle, suosittelen vahvasti sinua muuttamaan mallia tai katsomaan ResNet50:tä, Xceptionia tai muita huippuluokan malleja saadaksesi parempia tuloksia.
Nyt kun olet rakentanut ensimmäisen kuvantunnistusverkkosi Keraan, sinun kannattaa kokeilla mallia selvittääksesi, miten eri parametrit vaikuttavat sen suorituskykyyn.
Jätä vastaus