Innehållsförteckning[Dölj][Visa]
Det är betryggande att veta att vi har lyckats genomsyra robotar med våra medfödda förmågor att lära genom exempel och uppfatta sin omgivning. Den grundläggande utmaningen är att lära datorer att "se" som om människor skulle behöva mycket mer tid och ansträngning.
Men när vi tänker på det praktiska värdet som denna färdighet för närvarande ger organisationer och företag, är ansträngningen värt besväret. I den här artikeln kommer du att lära dig om bildklassificering, hur det fungerar och dess praktiska implementering. Låt oss börja.
Vad är bildklassificering?
Jobbet att mata in en bild i en neurala nätverk och att låta den mata ut någon form av etikett för den bilden kallas bildigenkänning. Nätverkets utdataetikett kommer att motsvara en fördefinierad klass.
Det kan finnas många klasser tilldelade bilden, eller bara en. När det bara finns en klass används termen "igenkänning" ofta, medan termen "klassificering" ofta används när det finns flera klasser.
Objektdetektering är en delmängd av bildklassificering där särskilda instanser av objekt upptäcks som tillhörande en given klass såsom djur, fordon eller människor.
Hur fungerar bildklassificering?
En bild i form av pixlar analyseras av en dator. Den åstadkommer detta genom att behandla bilden som en samling matriser, vars storlek bestäms av bildupplösningen. Enkelt uttryckt är bildklassificering studiet av statistiska data som använder algoritmer från en dators perspektiv.
Bildklassificering åstadkoms i digital bildbehandling genom att gruppera pixlar i förutbestämda grupper, eller "klasser". Algoritmerna delar upp bilden i en rad anmärkningsvärda egenskaper, vilket minskar bördan för den slutliga klassificeraren.
Dessa egenskaper informerar klassificeraren om bildens betydelse och potentiella klassificering. Eftersom resten av processerna för att klassificera en bild är beroende av den, är den karakteristiska extraktionsmetoden den mest kritiska fasen.
Smakämnen tillhandahållna uppgifter till algoritmen är också avgörande vid bildklassificering, särskilt övervakad klassificering. Jämfört med en fruktansvärd datauppsättning med dataobalans baserad på klass och låg bild- och anteckningskvalitet, presterar en väloptimerad klassificeringsdatasättning beundransvärt.
Bildklassificering med Tensorflow & Keras i python
Vi kommer att använda CIFAR-10 dataset (som inkluderar flygplan, flygplan, fåglar och andra 7 saker).
1. Installationskrav
Koden nedan kommer att installera alla förutsättningar.
2. Importera beroenden
Gör en train.py-fil i Python. Koden nedan kommer att importera Tensorflow och Keras beroenden.
3. Initiering av parametrar
CIFAR-10 innehåller bara 10 bildkategorier, så num-klasser refererar helt enkelt till antalet kategorier som ska klassificeras.
4. Laddar datauppsättningen
Funktionen använder modulen Tensorflow Dataset för att ladda datamängden, och vi ställer in med info till True för att få lite information om det. Du kan skriva ut den för att se vilka fält och deras värden är, och vi använder informationen för att hämta antalet prover i tränings- och testseten.
5. Skapa modellen
Nu ska vi bygga tre lager, som vart och ett består av två ConvNets med en max-pooling och ReLU-aktiveringsfunktion, följt av ett fullt anslutet 1024-enhetssystem. I jämförelse med ResNet50 eller Xception, som är toppmoderna modeller, kan detta vara en jämförelsevis liten modell.
6. Utbilda modellen
Jag använde Tensorboard för att mäta noggrannheten och förlusten i varje epok och förse oss med en härlig skärm efter att ha importerat data och genererat modellen. Kör följande kod; beroende på din CPU/GPU kommer träningen att ta flera minuter.
För att använda tensorboard, skriv bara följande kommando i terminalen eller kommandotolken i den aktuella katalogen:
Du kommer att se att valideringsförlusten minskar och att noggrannheten stiger till cirka 81 %. Det är fantastiskt!
Testa modellen
När träningen är klar sparas den slutliga modellen och vikterna i resultatmappen, vilket gör att vi kan träna en gång och göra förutsägelser när vi vill. Följ koden i en ny python-fil med namnet test.py.
7. Importera verktygen för testning
8. Skapa en pythonkatalog
Gör en Python-ordbok som översätter varje heltalsvärde till datasetets lämpliga etikett:
9. Laddar testdata & modell
Följande kod laddar testdata och modell.
10. Utvärdering och förutsägelse
Följande kod kommer att utvärdera och göra förutsägelser på grodabilderna.
11. Resultat
Modellen förutspådde grodan med 80.62 % noggrannhet.
Slutsats
Okej, vi är klara med den här lektionen. Även om 80.62 % inte är bra för lite CNN, rekommenderar jag starkt att du ändrar modellen eller tittar på ResNet50, Xception eller andra banbrytande modeller för bättre resultat.
Nu när du har byggt ditt första nätverk för bildigenkänning i Keras bör du experimentera med modellen för att upptäcka hur olika parametrar påverkar dess prestanda.
Kommentera uppropet