Theivaprakasham's picture
Update app.py
ff5d561 verified
from PIL import Image
import torch
import timm
import torchvision
import torchvision.transforms as T
from timm.data.constants import IMAGENET_DEFAULT_MEAN, IMAGENET_DEFAULT_STD
import gradio as gr
torch.set_grad_enabled(False);
categories = ['Abisara bifasciata', 'Abisara chela', 'Abisara echerius', 'Abisara fylla', 'Abisara neophron', 'Abrota ganga', 'Acraea issoria', 'Acraea terpsicore', 'Acytolepis lilacea', 'Acytolepis puspa', 'Aemona amathusia', 'Aeromachus dubius', 'Aeromachus pygmaeus', 'Aeromachus stigmata', 'Aglais caschmirensis', 'Allotinus drumila', 'Amathusia phidippus', 'Amathuxidia amythaon', 'Amblypodia anita', 'Ampittia dioscorides', 'Ancema blanka', 'Ancema ctesia', 'Ancema sudica', 'Ancistroides nigrita', 'Anthene emolus', 'Anthene lycaenina', 'Apharitis lilacinus', 'Aporia agathon', 'Appias albina', 'Appias galba', 'Appias indra', 'Appias lalage', 'Appias libythea', 'Appias lyncida', 'Appias olferna', 'Araotes lapithis', 'Araschnia dohertyi', 'Argynnis castetsi', 'Argynnis childreni', 'Argynnis hybrida', 'Argynnis hyperbius', 'Argynnis kamala', 'Argynnis westphali', 'Arhopala abseus', 'Arhopala alea', 'Arhopala amantes', 'Arhopala atrax', 'Arhopala bazaloides', 'Arhopala bazalus', 'Arhopala birmana', 'Arhopala centaurus', 'Arhopala dodonaea', 'Arhopala eumolphus', 'Arhopala fulla', 'Arhopala ganesa', 'Arhopala paramuta', 'Arhopala perimuta', 'Arhopala rama', 'Arhopala silhetensis', 'Ariadne ariadne', 'Ariadne merione', 'Aricia agestis', 'Arnetta atkinsoni', 'Arnetta mercara', 'Arnetta vindhiana', 'Astictopterus jama', 'Athyma asura', 'Athyma cama', 'Athyma inara', 'Athyma jina', 'Athyma kanwa', 'Athyma nefte', 'Athyma opalina', 'Athyma orientalis', 'Athyma perius', 'Athyma pravara', 'Athyma ranga', 'Athyma selenophora', 'Athyma zeroca', 'Atrophaneura aidoneus', 'Atrophaneura varuna', 'Aulocera swaha', 'Auzakia danava', 'Azanus jesous', 'Azanus ubaldus', 'Azanus uranus', 'Badamia exclamationis', 'Baoris chapmani', 'Baoris farri', 'Baoris pagana', 'Baracus hampsoni', 'Baracus subditus', 'Bassarona durga', 'Bassarona teuta', 'Belenois aurota', 'Bhagadatta austenia', 'Bhutanitis lidderdalii', 'Bhutanitis ludlowi', 'Bibasis sena', 'Bindahara moorei', 'Bindahara phocides', 'Borbo cinnara', 'Burara amara', 'Burara gomata', 'Burara harisa', 'Burara jaina', 'Burara oedipodea', 'Burara vasutana', 'Byasa dasarada', 'Byasa polla', 'Byasa polyeuctes', 'Byblia ilithyia', 'Caleta decidia', 'Caleta elna', 'Caleta roxus', 'Calinaga brahma', 'Calinaga gautama', 'Callerebia annada', 'Callerebia hybrida', 'Callerebia nirmala', 'Callerebia orixa', 'Callerebia scanda', 'Caltoris canaraica', 'Caltoris kumara', 'Caltoris philippina', 'Caprona agama', 'Caprona alida', 'Caprona ransonnettii', 'Carterocephalus avanti', 'Castalius rosimon', 'Catapaecilma major', 'Catochrysops panormus', 'Catochrysops strabo', 'Catopsilia pomona', 'Catopsilia pyranthe', 'Celaenorrhinus ambareesa', 'Celaenorrhinus aurivittata', 'Celaenorrhinus fusca', 'Celaenorrhinus leucocera', 'Celaenorrhinus putra', 'Celaenorrhinus ratna', 'Celastrina lavendularis', 'Celatoxia albidisca', 'Celatoxia marginata', 'Cephrenes acalle', 'Cepora nadina', 'Cepora nerissa', 'Cethosia biblis', 'Cethosia cyane', 'Cethosia mahratta', 'Charana mandarinus', 'Charaxes agrarius', 'Charaxes aristogiton', 'Charaxes arja', 'Charaxes bernardus', 'Charaxes bharata', 'Charaxes delphis', 'Charaxes dolon', 'Charaxes eudamippus', 'Charaxes kahruba', 'Charaxes marmax', 'Charaxes moori', 'Charaxes psaphon', 'Charaxes schreiber', 'Charaxes solon', 'Cheritra freja', 'Chersonesia intermedia', 'Chersonesia risa', 'Chilades lajus', 'Chilades pandava', 'Chilades parrhasius', 'Chliaria kina', 'Chliaria nilgirica', 'Choaspes benjaminii', 'Chrysozephyrus syla', 'Cigaritis vulcanus', 'Cirrochroa aoris', 'Cirrochroa thais', 'Cirrochroa tyche', 'Coladenia agni', 'Coladenia indrani', 'Colias erate', 'Colias fieldii', 'Colias nilagiriensis', 'Colotis amata', 'Colotis aurora', 'Colotis danae', 'Colotis etrida', 'Colotis fausta', 'Colotis vestalis', 'Creon cleobis', 'Creteus cyrina', 'Ctenoptilum vasava', 'Cupha erymanthis', 'Cupitha purreea', 'Curetis acuta', 'Curetis bulis', 'Curetis saronis', 'Curetis siva', 'Curetis thetis', 'Cyllogenes janetae', 'Cyrestis cocles', 'Cyrestis thyodamas', 'Dacalana penicilligera', 'Danaus chrysippus', 'Danaus genutia', 'Danaus melanippus', 'Darpa hanria', 'Delias acalis', 'Delias agostina', 'Delias belladonna', 'Delias berinda', 'Delias descombesi', 'Delias eucharis', 'Delias hyparete', 'Delias pasithoe', 'Delias sanaca', 'Dercas verhuelli', 'Deudorix epijarbas', 'Dichorragia nesimachus', 'Dilipa morgiana', 'Discolampa ethion', 'Discophora lepida', 'Discophora sondaica', 'Dodona adonira', 'Dodona dipoea', 'Dodona durga', 'Dodona egeon', 'Dodona eugenes', 'Dodona ouida', 'Doleschallia bisaltide', 'Dophla evelina', 'Elymnias caudata', 'Elymnias cottonis', 'Elymnias hypermnestra', 'Elymnias malelas', 'Elymnias nesaea', 'Elymnias patna', 'Elymnias peali', 'Elymnias vasudeva', 'Enispe euthymius', 'Erionota torus', 'Esakiozephyrus icana', 'Ethope himachala', 'Euaspa milionia', 'Euchrysops cnejus', 'Euploea algea', 'Euploea andamanensis', 'Euploea core', 'Euploea klugii', 'Euploea midamus', 'Euploea mulciber', 'Euploea radamanthus', 'Euploea sylvester', 'Eurema andersoni', 'Eurema blanda', 'Eurema brigitta', 'Eurema hecabe', 'Eurema laeta', 'Eurema nilgiriensis', 'Euripus consimilis', 'Euripus nyctelius', 'Euthalia aconthea', 'Euthalia acontius', 'Euthalia alpheda', 'Euthalia anosia', 'Euthalia franciae', 'Euthalia lubentina', 'Euthalia monina', 'Euthalia nais', 'Euthalia nara', 'Euthalia patala', 'Euthalia phemius', 'Euthalia telchinia', 'Everes diporides', 'Everes huegelii', 'Everes lacturnus', 'Faunis canens', 'Faunis eumeus', 'Flos adriana', 'Flos areste', 'Freyeria putli', 'Freyeria trochylus', 'Gandaca harina', 'Gangara thyrsis', 'Gerosis bhagava', 'Gerosis phisara', 'Gerosis sinica', 'Gomalia elma', 'Gonepteryx amintha', 'Gonepteryx rhamni', 'Graphium agamemnon', 'Graphium agetes', 'Graphium antiphates', 'Graphium aristeus', 'Graphium chironides', 'Graphium cloanthus', 'Graphium doson', 'Graphium eurypylus', 'Graphium macareus', 'Graphium mandarinus', 'Graphium nomius', 'Graphium sarpedon', 'Graphium teredon', 'Graphium xenocles', 'Halpe aucma', 'Halpe hindu', 'Halpe porus', 'Halpe zema', 'Hasora badra', 'Hasora chromus', 'Hasora taminatus', 'Hasora vitta', 'Hebomoia glaucippe', 'Heliophorus brahma', 'Heliophorus epicles', 'Heliophorus indicus', 'Heliophorus kohimensis', 'Heliophorus moorei', 'Heliophorus sena', 'Heliophorus tamu', 'Herona marathus', 'Hestina persimilis', 'Hestinalis nama', 'Heteropsis malsara', 'Hidari bhawani', 'Horaga onyx', 'Horaga viola', 'Hyarotis adrastus', 'Hypolimnas bolina', 'Hypolimnas misippus', 'Hypolycaena erylus', 'Hypolycaena narada', 'Hypolycaena nilgirica', 'Hypolycaena othona', 'Iambrix salsala', 'Idea agamarschana', 'Idea malabarica', 'Ionolyce helicon', 'Iraota timoleon', 'Issoria isaeea', 'Iton semamora', 'Ixias marianne', 'Ixias pyrene', 'Jamides alecto', 'Jamides bochus', 'Jamides celeno', 'Jamides elpis', 'Jamides pura', 'Junonia almana', 'Junonia atlites', 'Junonia hierta', 'Junonia iphita', 'Junonia lemonias', 'Junonia orithya', 'Kallima horsfieldii', 'Kallima inachus', 'Kallima knyvettii', 'Kaniska canace', 'Kirinia eversmanni', 'Koruthaialos butleri', 'Koruthaialos rubecula', 'Koruthaialos sindu', 'Lampides boeticus', 'Lamproptera curius', 'Lamproptera meges', 'Lasiommata schakra', 'Lasippa viraja', 'Lebadea martha', 'Leptosia nina', 'Leptotes plinius', 'Lestranicus transpectus', 'Lethe baladeva', 'Lethe bhairava', 'Lethe chandica', 'Lethe confusa', 'Lethe drypetis', 'Lethe europa', 'Lethe gulnihal', 'Lethe isana', 'Lethe kansa', 'Lethe latiaris', 'Lethe mekara', 'Lethe nicetas', 'Lethe rohria', 'Lethe scanda', 'Lethe sidonis', 'Lethe sinorix', 'Lethe sura', 'Lethe verma', 'Lethe vindhya', 'Lexias dirtea', 'Libythea laius', 'Libythea lepita', 'Libythea myrrha', 'Lobocla liliana', 'Logania distanti', 'Losaria rhodifer', 'Loxura atymnus', 'Luthrodes pandava', 'Lycaena panava', 'Lycaena phlaeas', 'Mahathala ameria', 'Matapa aria', 'Matapa cresta', 'Matapa sasivarna', 'Meandrusa lachinus', 'Meandrusa payeni', 'Megisba malaya', 'Melanitis leda', 'Melanitis phedima', 'Melanitis zitenius', 'Miletus chinensis', 'Mimathyma ambica', 'Mimathyma chevana', 'Moduza procris', 'Mooreana trichoneura', 'Mycalesis adamsonii', 'Mycalesis anaxias', 'Mycalesis francisca', 'Mycalesis gotama', 'Mycalesis junonia', 'Mycalesis mineus', 'Mycalesis perseus', 'Mycalesis subdita', 'Mycalesis visala', 'Nacaduba berenice', 'Nacaduba beroe', 'Nacaduba hermus', 'Nacaduba kurava', 'Nacaduba pactolus', 'Neope bhadra', 'Neope pulaha', 'Neope yama', 'Neopithecops zalmora', 'Neptis ananta', 'Neptis clinia', 'Neptis harita', 'Neptis hylas', 'Neptis jumbah', 'Neptis magadha', 'Neptis miah', 'Neptis namba', 'Neptis nata', 'Neptis pseudovikasi', 'Neptis sankara', 'Neptis sappho', 'Neptis zaida', 'Neurosigma siva', 'Niphanda cymbia', 'Notocrypta curvifascia', 'Notocrypta feisthamelii', 'Notocrypta paralysos', 'Ochlodes brahma', 'Ochus subvittatus', 'Odontoptilum angulata', 'Oreolyce vardhana', 'Oriens concinna', 'Oriens gola', 'Oriens goloides', 'Orinoma damaris', 'Orsotriaena medus', 'Orthomiella pontis', 'Pachliopta aristolochiae', 'Pachliopta hector', 'Pachliopta pandiyana', 'Pantoporia hordonia', 'Pantoporia paraka', 'Pantoporia sandaka', 'Papilio agestor', 'Papilio alcmenor', 'Papilio arcturus', 'Papilio bianor', 'Papilio bootes', 'Papilio buddha', 'Papilio castor', 'Papilio clytia', 'Papilio crino', 'Papilio demoleus', 'Papilio dravidarum', 'Papilio epycides', 'Papilio helenus', 'Papilio krishna', 'Papilio liomedon', 'Papilio machaon', 'Papilio mayo', 'Papilio memnon', 'Papilio nephelus', 'Papilio paris', 'Papilio polymnestor', 'Papilio polytes', 'Papilio protenor', 'Papilio slateri', 'Parantica aglea', 'Parantica melaneus', 'Parantica nilgiriensis', 'Parantica pedonga', 'Parantica sita', 'Parantirrhoea marshalli', 'Parasarpa dudu', 'Parasarpa zayla', 'Pareronia avatar', 'Pareronia ceylanica', 'Pareronia hippia', 'Parnara spp', 'Parnassius hardwickei', 'Parthenos sylvia', 'Pedesta masuriensis', 'Pelopidas agna', 'Pelopidas assamensis', 'Pelopidas conjuncta', 'Pelopidas mathias', 'Pelopidas subochracea', 'Penthema lisarda', 'Petrelaea dana', 'Phaedyma columella', 'Phalanta alcippe', 'Phalanta phalantha', 'Pieris brassicae', 'Pieris canidia', 'Pieris melete', 'Pieris rapae', 'Pithauria stramineipennis', 'Polytremis discreta', 'Polytremis eltola', 'Polytremis lubricans', 'Pontia daplidice', 'Poritia hewitsoni', 'Potanthus spp', 'Pratapa deva', 'Pratapa icetas', 'Prioneris philonome', 'Prioneris sita', 'Prioneris thestylis', 'Prosotas aluta', 'Prosotas dubiosa', 'Prosotas lutea', 'Prosotas nora', 'Prosotas noreia', 'Pseudergolis wedah', 'Pseudocoladenia dan', 'Pseudocoladenia fatih', 'Pseudocoladenia fatua', 'Pseudozizeeria maha', 'Psolos fuligo', 'Pyroneura margherita', 'Quedara basiflava', 'Rachana jalindra', 'Ragadia crisilda', 'Rapala iarbus', 'Rapala lankana', 'Rapala manea', 'Rapala nissa', 'Rapala pheretima', 'Rapala selira', 'Rapala tara', 'Rapala varuna', 'Rathinda amor', 'Remelana jangala', 'Rhaphicera moorei', 'Rhinopalpa polynice', 'Rohana parisatis', 'Salanoemia sala', 'Sarangesa dasahara', 'Sarangesa purendra', 'Scobura cephala', 'Scobura cephaloides', 'Scobura isota', 'Scobura parawoolletti', 'Sebastonyma dolopia', 'Sephisa chandra', 'Sephisa dichroa', 'Seseria dohertyi', 'Seseria sambara', 'Sinthusa chandrana', 'Sinthusa nasaka', 'Sovia hyrtacus', 'Spalgis epeus', 'Spalgis epius', 'Spialia galba', 'Spindasis abnormis', 'Spindasis elima', 'Spindasis ictis', 'Spindasis lohita', 'Spindasis nipalicus', 'Spindasis rukmini', 'Spindasis schistacea', 'Spindasis syama', 'Spindasis vulcanus', 'Stibochiona nicea', 'Stiboges nymphidia', 'Stichophthalma camadeva', 'Suasa lisides', 'Suastus gremius', 'Suastus minuta', 'Sumalia daraxa', 'Sumalia zulema', 'Surendra quercetorum', 'Symbrenthia hypselis', 'Symbrenthia lilaea', 'Symbrenthia niphanda', 'Symbrenthia silana', 'Symphaedra nais', 'Tagiades gana', 'Tagiades japetus', 'Tagiades litigiosa', 'Tagiades menaka', 'Tajuria cippus', 'Tajuria jehana', 'Tajuria maculata', 'Tajuria melastigma', 'Talicada nyseus', 'Tanaecia cibaritis', 'Tanaecia jahnu', 'Tanaecia julii', 'Tanaecia lepidea', 'Tapena thwaitesi', 'Taractrocera ceramas', 'Taractrocera danna', 'Taractrocera maevius', 'Taraka hamada', 'Tarucus ananda', 'Tarucus balkanicus', 'Tarucus callinara', 'Tarucus indica', 'Tarucus nara', 'Tarucus venosus', 'Taxila haquinus', 'Telicota bambusae', 'Telicota colon', 'Telinga adolphei', 'Telinga davisoni', 'Telinga malsarida', 'Telinga nicotia', 'Telinga oculus', 'Thaduka multicaudata', 'Thaumantis diores', 'Thoressa astigmata', 'Thoressa cerata', 'Thoressa evershedi', 'Thoressa honorei', 'Thoressa hyrie', 'Thoressa sitala', 'Ticherra acte', 'Tirumala limniace', 'Tirumala septentrionis', 'Troides aeacus', 'Troides helena', 'Troides minos', 'Udara akasa', 'Udara albocaeruleus', 'Udara dilecta', 'Udaspes folus', 'Una usta', 'Vagrans egista', 'Vanessa cardui', 'Vanessa indica', 'Vindula erota', 'Virachola isocrates', 'Virachola perse', 'Yasoda tripunctata', 'Ypthima asterope', 'Ypthima baldus', 'Ypthima ceylonica', 'Ypthima chenui', 'Ypthima huebneri', 'Ypthima inica', 'Ypthima nareda', 'Ypthima newara', 'Ypthima nikaea', 'Ypthima sakra', 'Ypthima singala', 'Ypthima striata', 'Ypthima tabella', 'Ypthima ypthimoides', 'Zeltus amasa', 'Zemeros flegyas', 'Zesius chrysomallus', 'Zinaspa todara', 'Zipaetis saitis', 'Zipaetis scylax', 'Zizeeria karsandra', 'Zizina otis', 'Zizula hylax', 'Zographetus ogygia', 'Zographetus satwa']
transform = T.Compose([
T.Resize(256, interpolation=3),
T.CenterCrop(224),
T.ToTensor(),
T.Normalize(IMAGENET_DEFAULT_MEAN, IMAGENET_DEFAULT_STD),
])
model = torch.jit.load('686_convnext_base_siamfly_backbone_jit.pt')
def inference(im):
img = transform(im).unsqueeze(0)
# compute the predictions
out = model(img)
# and convert them into probabilities
scores = torch.nn.functional.softmax(out, dim=-1)[0]
# finally get the index of the prediction with highest score
topk_scores, topk_label = torch.topk(scores, k=5, dim=-1)
d = {}
for i in range(5):
pred_name = categories[topk_label[i]]
pred_name = f"{pred_name:<25}"
score = topk_scores[i]
score = f"{score:.3f}"
d[pred_name] = score
return d
inputs = gr.Image(type='pil', label="Original Image")
outputs = gr.Label(num_top_classes=5)
title = "Butterfly identification"
description = "Gradio demo for 686 Indian Butterfly Species. To use it, simply upload your image, or click one of the examples to load them."
examples = [
['2.jpg'],
['3.jpg'],
['4.jpg'],
['5.jpg'],
['6.jpg'],
['7.jpg']
]
gr.Interface(inference, inputs, outputs, title=title, description=description, examples=examples).launch()