import gradio as gr import pandas as pd import torch import torchvision.transforms as transforms from PIL import Image import lightning as L from src.models.classifier import ImageNetClassifier # Define the class names (replace with your actual class names) # Add your dog breed classes here # Example: # "Labrador", "German Shepherd", "Golden Retriever", etc. class_names = [ "n01443537", "n01828970", "n02093859", "n02115913", "n02480495", "n02879718", "n03272562", "n03710637", "n03961711", "n04310018" "n04599235" "n01440764", "n01824575", "n02093754", "n02115641", "n02457408", "n02877765", "n03272010", "n03710193", "n03958227", "n04296562" "n04597913" "n01484850", "n01829413", "n02093991", "n02116738", "n02480855", "n02883205", "n03290653", "n03710721", "n03967562", "n04311004" "n04604644" "n01491361", "n01833805", "n02094114", "n02117135", "n02481823", "n02892201", "n03291819", "n03717622", "n03970156", "n04311174" "n04606251" "n01494475", "n01843065", "n02094258", "n02119022", "n02483362", "n02892767", "n03297495", "n03720891", "n03976467", "n04317175" "n04612504" "n01496331", "n01843383", "n02094433", "n02119789", "n02483708", "n02894605", "n03314780", "n03721384", "n03976657", "n04325704" "n04613696" "n01498041", "n01847000", "n02095314", "n02120079", "n02484975", "n02895154", "n03325584", "n03724870", "n03977966", "n04326547" "n06359193" "n01514668", "n01855032", "n02095570", "n02120505", "n02486261", "n02906734", "n03337140", "n03729826", "n03980874", "n04328186" "n06596364" "n01514859", "n01855672", "n02095889", "n02123045", "n02486410", "n02909870", "n03344393", "n03733131", "n03982430", "n04330267" "n06785654" "n01518878", "n01860187", "n02096051", "n02123159", "n02487347", "n02910353", "n03345487", "n03733281", "n03983396", "n04332243" "n06794110" "n01530575", "n01871265", "n02096177", "n02123394", "n02488291", "n02916936", "n03347037", "n03733805", "n03991062", "n04335435" "n06874185" "n01531178", "n01872401", "n02096294", "n02123597", "n02488702", "n02917067", "n03355925", "n03742115", "n03992509", "n04336792" "n07248320" "n01532829", "n01873310", "n02096437", "n02124075", "n02489166", "n02927161", "n03372029", "n03743016", "n03995372", "n04344873" "n07565083" "n01534433", "n01877812", "n02096585", "n02125311", "n02490219", "n02930766", "n03376595", "n03759954", "n03998194", "n04346328" "n07579787" "n01537544", "n01882714", "n02097047", "n02127052", "n02492035", "n02939185", "n03379051", "n03761084", "n04004767", "n04347754" "n07583066" "n01558993", "n01883070", "n02097130", "n02128385", "n02492660", "n02948072", "n03384352", "n03763968", "n04005630", "n04350905" "n07584110" "n01560419", "n01910747", "n02097209", "n02128757", "n02493509", "n02950826", "n03388043", "n03764736", "n04008634", "n04355338" "n07590611" "n01580077", "n01914609", "n02097298", "n02128925", "n02493793", "n02951358", "n03388183", "n03769881", "n04009552", "n04355933" "n07613480" "n01582220", "n01917289", "n02097474", "n02129165", "n02494079", "n02951585", "n03388549", "n03770439", "n04019541", "n04356056" "n07614500" "n01592084", "n01924916", "n02097658", "n02129604", "n02497673", "n02963159", "n03393912", "n03770679", "n04023962", "n04357314" "n07615774" "n01601694", "n01930112", "n02098105", "n02130308", "n02500267", "n02965783", "n03394916", "n03773504", "n04026417", "n04366367" "n07684084" "n01608432", "n01943899", "n02098286", "n02132136", "n02504013", "n02966193", "n03400231", "n03775071", "n04033901", "n04367480" "n07693725" "n01614925", "n01944390", "n02098413", "n02133161", "n02504458", "n02966687", "n03404251", "n03775546", "n04033995", "n04370456" "n07695742" "n01616318", "n01945685", "n02099267", "n02134084", "n02509815", "n02971356", "n03417042", "n03776460", "n04037443", "n04371430" "n07697313" "n01622779", "n01950731", "n02099429", "n02134418", "n02510455", "n02974003", "n03424325", "n03777568", "n04039381", "n04371774" "n07697537" "n01629819", "n01955084", "n02099601", "n02137549", "n02514041", "n02977058", "n03425413", "n03777754", "n04040759", "n04372370" "n07711569" "n01630670", "n01968897", "n02099712", "n02138441", "n02526121", "n02978881", "n03443371", "n03781244", "n04041544", "n04376876" "n07714571" "n01631663", "n01978287", "n02099849", "n02165105", "n02536864", "n02979186", "n03444034", "n03782006", "n04044716", "n04380533" "n07714990" "n01632458", "n01978455", "n02100236", "n02165456", "n02606052", "n02980441", "n03445777", "n03785016", "n04049303", "n04389033" "n07715103" "n01632777", "n01980166", "n02100583", "n02167151", "n02607072", "n02981792", "n03445924", "n03786901", "n04065272", "n04392985" "n07716358" "n01641577", "n01981276", "n02100735", "n02168699", "n02640242", "n02988304", "n03447447", "n03787032", "n04067472", "n04398044" "n07716906" "n01644373", "n01983481", "n02100877", "n02169497", "n02641379", "n02992211", "n03447721", "n03788195", "n04069434", "n04399382" "n07717410" "n01644900", "n01984695", "n02101006", "n02172182", "n02643566", "n02992529", "n03450230", "n03788365", "n04070727", "n04404412" "n07717556" "n01664065", "n01985128", "n02101388", "n02174001", "n02655020", "n02999410", "n03452741", "n03791053", "n04074963", "n04409515" "n07718472" "n01665541", "n01986214", "n02101556", "n02177972", "n02666196", "n03000134", "n03457902", "n03792782", "n04081281", "n04417672" "n07718747" "n01667114", "n01990800", "n02102040", "n02190166", "n02667093", "n03000247", "n03459775", "n03792972", "n04086273", "n04418357" "n07720875" "n01667778", "n02002556", "n02102177", "n02206856", "n02669723", "n03000684", "n03461385", "n03793489", "n04090263", "n04423845" "n07730033" "n01669191", "n02002724", "n02102318", "n02219486", "n02672831", "n03014705", "n03467068", "n03794056", "n04099969", "n04428191" "n07734744" "n01675722", "n02006656", "n02102480", "n02226429", "n02676566", "n03016953", "n03476684", "n03796401", "n04111531", "n04429376" "n07742313" "n01677366", "n02007558", "n02102973", "n02229544", "n02687172", "n03017168", "n03476991", "n03803284", "n04116512", "n04435653" "n07745940" "n01682714", "n02009229", "n02104029", "n02231487", "n02690373", "n03018349", "n03478589", "n03804744", "n04118538", "n04442312" "n07747607" "n01685808", "n02009912", "n02104365", "n02233338", "n02692877", "n03026506", "n03481172", "n03814639", "n04118776", "n04443257" "n07749582" "n01687978", "n02011460", "n02105056", "n02236044", "n02699494", "n03028079", "n03482405", "n03814906", "n04120489", "n04447861" "n07753113" "n01688243", "n02012849", "n02105162", "n02256656", "n02701002", "n03032252", "n03483316", "n03825788", "n04125021", "n04456115" "n07753275" "n01689811", "n02013706", "n02105251", "n02259212", "n02704792", "n03041632", "n03485407", "n03832673", "n04127249", "n04458633" "n07753592" "n01692333", "n02017213", "n02105412", "n02264363", "n02708093", "n03042490", "n03485794", "n03837869", "n04131690", "n04461696" "n07754684" "n01693334", "n02018207", "n02105505", "n02268443", "n02727426", "n03045698", "n03492542", "n03838899", "n04133789", "n04462240" "n07760859" "n01694178", "n02018795", "n02105641", "n02268853", "n02730930", "n03047690", "n03494278", "n03840681", "n04136333", "n04465501" "n07768694" "n01695060", "n02025239", "n02105855", "n02276258", "n02747177", "n03062245", "n03495258", "n03841143", "n04141076", "n04467665" "n07802026" "n01697457", "n02027492", "n02106030", "n02277742", "n02749479", "n03063599", "n03496892", "n03843555", "n04141327", "n04476259" "n07831146" "n01698640", "n02028035", "n02106166", "n02279972", "n02769748", "n03063689", "n03498962", "n03854065", "n04141975", "n04479046" "n07836838" "n01704323", "n02033041", "n02106382", "n02280649", "n02776631", "n03065424", "n03527444", "n03857828", "n04146614", "n04482393" "n07860988" "n01728572", "n02037110", "n02106550", "n02281406", "n02777292", "n03075370", "n03529860", "n03866082", "n04147183", "n04483307" "n07871810" "n01728920", "n02051845", "n02106662", "n02281787", "n02782093", "n03085013", "n03530642", "n03868242", "n04149813", "n04485082" "n07873807" "n01729322", "n02056570", "n02107142", "n02317335", "n02783161", "n03089624", "n03532672", "n03868863", "n04152593", "n04486054" "n07875152" "n01729977", "n02058221", "n02107312", "n02319095", "n02786058", "n03095699", "n03534580", "n03871628", "n04153751", "n04487081" "n07880968" "n01734418", "n02066245", "n02107574", "n02321529", "n02787622", "n03100240", "n03535780", "n03873416", "n04154565", "n04487394" "n07892512" "n01735189", "n02071294", "n02107683", "n02325366", "n02788148", "n03109150", "n03538406", "n03874293", "n04162706", "n04493381" "n07920052" "n01737021", "n02074367", "n02107908", "n02326432", "n02790996", "n03110669", "n03544143", "n03874599", "n04179913", "n04501370" "n07930864" "n01739381", "n02077923", "n02108000", "n02328150", "n02791124", "n03124043", "n03584254", "n03876231", "n04192698", "n04505470" "n07932039" "n01740131", "n02085620", "n02108089", "n02342885", "n02791270", "n03124170", "n03584829", "n03877472", "n04200800", "n04507155" "n09193705" "n01742172", "n02085782", "n02108422", "n02346627", "n02793495", "n03125729", "n03590841", "n03877845", "n04201297", "n04509417" "n09229709" "n01744401", "n02085936", "n02108551", "n02356798", "n02794156", "n03126707", "n03594734", "n03884397", "n04204238", "n04515003" "n09246464" "n01748264", "n02086079", "n02108915", "n02361337", "n02795169", "n03127747", "n03594945", "n03887697", "n04204347", "n04517823" "n09256479" "n01749939", "n02086240", "n02109047", "n02363005", "n02797295", "n03127925", "n03595614", "n03888257", "n04208210", "n04522168" "n09288635" "n01751748", "n02086646", "n02109525", "n02364673", "n02799071", "n03131574", "n03598930", "n03888605", "n04209133", "n04523525" "n09332890" "n01753488", "n02086910", "n02109961", "n02389026", "n02802426", "n03133878", "n03599486", "n03891251", "n04209239", "n04525038" "n09399592" "n01755581", "n02087046", "n02110063", "n02391049", "n02804414", "n03134739", "n03602883", "n03891332", "n04228054", "n04525305" "n09421951" "n01756291", "n02087394", "n02110185", "n02395406", "n02804610", "n03141823", "n03617480", "n03895866", "n04229816", "n04532106" "n09428293" "n01768244", "n02088094", "n02110341", "n02396427", "n02807133", "n03146219", "n03623198", "n03899768", "n04235860", "n04532670" "n09468604" "n01770081", "n02088238", "n02110627", "n02397096", "n02808304", "n03160309", "n03627232", "n03902125", "n04238763", "n04536866" "n09472597" "n01770393", "n02088364", "n02110806", "n02398521", "n02808440", "n03179701", "n03630383", "n03903868", "n04239074", "n04540053" "n09835506" "n01773157", "n02088466", "n02110958", "n02403003", "n02814533", "n03180011", "n03633091", "n03908618", "n04243546", "n04542943" "n10148035" "n01773549", "n02088632", "n02111129", "n02408429", "n02814860", "n03187595", "n03637318", "n03908714", "n04251144", "n04548280" "n10565667" "n01773797", "n02089078", "n02111277", "n02410509", "n02815834", "n03188531", "n03642806", "n03916031", "n04252077", "n04548362" "n11879895" "n01774384", "n02089867", "n02111500", "n02412080", "n02817516", "n03196217", "n03649909", "n03920288", "n04252225", "n04550184" "n11939491" "n01774750", "n02089973", "n02111889", "n02415577", "n02823428", "n03197337", "n03657121", "n03924679", "n04254120", "n04552348" "n12057211" "n01775062", "n02090379", "n02112018", "n02417914", "n02823750", "n03201208", "n03658185", "n03929660", "n04254680", "n04553703" "n12144580" "n01776313", "n02090622", "n02112137", "n02422106", "n02825657", "n03207743", "n03661043", "n03929855", "n04254777", "n04554684" "n12267677" "n01784675", "n02090721", "n02112350", "n02422699", "n02834397", "n03207941", "n03662601", "n03930313", "n04258138", "n04557648" "n12620546" "n01795545", "n02091032", "n02112706", "n02423022", "n02835271", "n03208938", "n03666591", "n03930630", "n04259630", "n04560804" "n12768682" "n01796340", "n02091134", "n02113023", "n02437312", "n02837789", "n03216828", "n03670208", "n03933933", "n04263257", "n04562935" "n12985857" "n01797886", "n02091244", "n02113186", "n02437616", "n02840245", "n03218198", "n03673027", "n03935335", "n04264628", "n04579145" "n12998815" "n01798484", "n02091467", "n02113624", "n02441942", "n02841315", "n03220513", "n03676483", "n03937543", "n04265275", "n04579432" "n13037406" "n01806143", "n02091635", "n02113712", "n02442845", "n02843684", "n03223299", "n03680355", "n03938244", "n04266014", "n04584207" "n13040303" "n01806567", "n02091831", "n02113799", "n02443114", "n02859443", "n03240683", "n03690938", "n03942813", "n04270147", "n04589890" "n13044778" "n01807496", "n02092002", "n02113978", "n02443484", "n02860847", "n03249569", "n03691459", "n03944341", "n04273569", "n04590129" "n13052670" "n01817953", "n02092339", "n02114367", "n02444819", "n02865351", "n03250847", "n03692522", "n03947888", "n04275548", "n04591157" "n13054560" "n01818515", "n02093256", "n02114548", "n02445715", "n02869837", "n03255030", "n03697007", "n03950228", "n04277352", "n04591713" "n13133613" "n01819313", "n02093428", "n02114712", "n02447366", "n02870880", "n03259280", "n03706229", "n03954731", "n04285008", "n04592741" "n15075141" "n01820546", "n02093647", "n02114855", "n02454379", "n02871525", "n03271574", "n03709823", "n03956157", "n04286575", "n04596742"] mapping_file = 'LOC_synset_mapping.txt' mapping_file_df = pd.read_csv(mapping_file, header = None, sep =':') mapping_file_dict = dict(zip(mapping_file_df.iloc[:, 0].str.strip(), mapping_file_df.iloc[:, 1].str.strip())) class_names_dict = {'n01440764': 0, 'n01443537': 1, 'n01484850': 2, 'n01491361': 3, 'n01494475': 4, 'n01496331': 5, 'n01498041': 6, 'n01514668': 7, 'n01514859': 8 , 'n01518878': 9, 'n01530575': 10, 'n01531178': 11, 'n01532829': 12, 'n01534433': 13, 'n01537544': 14, 'n01558993': 15, 'n01560419': 16 , 'n01580077': 17, 'n01582220': 18, 'n01592084': 19, 'n01601694': 20, 'n01608432': 21, 'n01614925': 22, 'n01616318': 23, 'n01622779': 24 , 'n01629819': 25, 'n01630670': 26, 'n01631663': 27, 'n01632458': 28, 'n01632777': 29, 'n01641577': 30, 'n01644373': 31, 'n01644900': 32 , 'n01664065': 33, 'n01665541': 34, 'n01667114': 35, 'n01667778': 36, 'n01669191': 37, 'n01675722': 38, 'n01677366': 39, 'n01682714': 40 , 'n01685808': 41, 'n01687978': 42, 'n01688243': 43, 'n01689811': 44, 'n01692333': 45, 'n01693334': 46, 'n01694178': 47, 'n01695060': 48 , 'n01697457': 49, 'n01698640': 50, 'n01704323': 51, 'n01728572': 52, 'n01728920': 53, 'n01729322': 54, 'n01729977': 55, 'n01734418': 56 , 'n01735189': 57, 'n01737021': 58, 'n01739381': 59, 'n01740131': 60, 'n01742172': 61, 'n01744401': 62, 'n01748264': 63, 'n01749939': 64 , 'n01751748': 65, 'n01753488': 66, 'n01755581': 67, 'n01756291': 68, 'n01768244': 69, 'n01770081': 70, 'n01770393': 71, 'n01773157': 72 , 'n01773549': 73, 'n01773797': 74, 'n01774384': 75, 'n01774750': 76, 'n01775062': 77, 'n01776313': 78, 'n01784675': 79, 'n01795545': 80 , 'n01796340': 81, 'n01797886': 82, 'n01798484': 83, 'n01806143': 84, 'n01806567': 85, 'n01807496': 86, 'n01817953': 87, 'n01818515': 88 , 'n01819313': 89, 'n01820546': 90, 'n01824575': 91, 'n01828970': 92, 'n01829413': 93, 'n01833805': 94, 'n01843065': 95, 'n01843383': 96 , 'n01847000': 97, 'n01855032': 98, 'n01855672': 99, 'n01860187': 100, 'n01871265': 101, 'n01872401': 102, 'n01873310': 103, 'n01877812': 104 , 'n01882714': 105, 'n01883070': 106, 'n01910747': 107, 'n01914609': 108, 'n01917289': 109, 'n01924916': 110, 'n01930112': 111, 'n01943899': 112 , 'n01944390': 113, 'n01945685': 114, 'n01950731': 115, 'n01955084': 116, 'n01968897': 117, 'n01978287': 118, 'n01978455': 119, 'n01980166': 120 , 'n01981276': 121, 'n01983481': 122, 'n01984695': 123, 'n01985128': 124, 'n01986214': 125, 'n01990800': 126, 'n02002556': 127, 'n02002724': 128 , 'n02006656': 129, 'n02007558': 130, 'n02009229': 131, 'n02009912': 132, 'n02011460': 133, 'n02012849': 134, 'n02013706': 135, 'n02017213': 136 , 'n02018207': 137, 'n02018795': 138, 'n02025239': 139, 'n02027492': 140, 'n02028035': 141, 'n02033041': 142, 'n02037110': 143, 'n02051845': 144, 'n02056570': 145, 'n02058221': 146, 'n02066245': 147, 'n02071294': 148, 'n02074367': 149, 'n02077923': 150 , 'n02085620': 151, 'n02085782': 152, 'n02085936': 153, 'n02086079': 154, 'n02086240': 155, 'n02086646': 156, 'n02086910': 157, 'n02087046': 158, 'n02087394': 159, 'n02088094': 160, 'n02088238': 161, 'n02088364': 162, 'n02088466': 163, 'n02088632': 164 , 'n02089078': 165, 'n02089867': 166, 'n02089973': 167, 'n02090379': 168, 'n02090622': 169, 'n02090721': 170, 'n02091032': 171, 'n02091134': 172, 'n02091244': 173, 'n02091467': 174, 'n02091635': 175, 'n02091831': 176, 'n02092002': 177, 'n02092339': 178 , 'n02093256': 179, 'n02093428': 180, 'n02093647': 181, 'n02093754': 182, 'n02093859': 183, 'n02093991': 184, 'n02094114': 185, 'n02094258': 186, 'n02094433': 187, 'n02095314': 188, 'n02095570': 189, 'n02095889': 190, 'n02096051': 191, 'n02096177': 192 , 'n02096294': 193, 'n02096437': 194, 'n02096585': 195, 'n02097047': 196, 'n02097130': 197, 'n02097209': 198, 'n02097298': 199, 'n02097474': 200, 'n02097658': 201, 'n02098105': 202, 'n02098286': 203, 'n02098413': 204, 'n02099267': 205, 'n02099429': 206 , 'n02099601': 207, 'n02099712': 208, 'n02099849': 209, 'n02100236': 210, 'n02100583': 211, 'n02100735': 212, 'n02100877': 213, 'n02101006': 214, 'n02101388': 215, 'n02101556': 216, 'n02102040': 217, 'n02102177': 218, 'n02102318': 219, 'n02102480': 220 , 'n02102973': 221, 'n02104029': 222, 'n02104365': 223, 'n02105056': 224, 'n02105162': 225, 'n02105251': 226, 'n02105412': 227, 'n02105505': 228, 'n02105641': 229, 'n02105855': 230, 'n02106030': 231, 'n02106166': 232, 'n02106382': 233, 'n02106550': 234 , 'n02106662': 235, 'n02107142': 236, 'n02107312': 237, 'n02107574': 238, 'n02107683': 239, 'n02107908': 240, 'n02108000': 241, 'n02108089': 242, 'n02108422': 243, 'n02108551': 244, 'n02108915': 245, 'n02109047': 246, 'n02109525': 247, 'n02109961': 248 , 'n02110063': 249, 'n02110185': 250, 'n02110341': 251, 'n02110627': 252, 'n02110806': 253, 'n02110958': 254, 'n02111129': 255, 'n02111277': 256, 'n02111500': 257, 'n02111889': 258, 'n02112018': 259, 'n02112137': 260, 'n02112350': 261, 'n02112706': 262 , 'n02113023': 263, 'n02113186': 264, 'n02113624': 265, 'n02113712': 266, 'n02113799': 267, 'n02113978': 268, 'n02114367': 269, 'n02114548': 270, 'n02114712': 271, 'n02114855': 272, 'n02115641': 273, 'n02115913': 274, 'n02116738': 275, 'n02117135': 276 , 'n02119022': 277, 'n02119789': 278, 'n02120079': 279, 'n02120505': 280, 'n02123045': 281, 'n02123159': 282, 'n02123394': 283, 'n02123597': 284, 'n02124075': 285, 'n02125311': 286, 'n02127052': 287, 'n02128385': 288, 'n02128757': 289, 'n02128925': 290 , 'n02129165': 291, 'n02129604': 292, 'n02130308': 293, 'n02132136': 294, 'n02133161': 295, 'n02134084': 296, 'n02134418': 297, 'n02137549': 298, 'n02138441': 299, 'n02165105': 300, 'n02165456': 301, 'n02167151': 302, 'n02168699': 303, 'n02169497': 304 , 'n02172182': 305, 'n02174001': 306, 'n02177972': 307, 'n02190166': 308, 'n02206856': 309 , 'n02219486': 310, 'n02226429': 311, 'n02229544': 312, 'n02231487': 313, 'n02233338': 314, 'n02236044': 315, 'n02256656': 316, 'n02259212': 317, 'n02264363': 318, 'n02268443': 319, 'n02268853': 320, 'n02276258': 321, 'n02277742': 322, 'n02279972': 323, 'n02280649': 324, 'n02281406': 325 , 'n02281787': 326, 'n02317335': 327, 'n02319095': 328, 'n02321529': 329, 'n02325366': 330, 'n02326432': 331, 'n02328150': 332, 'n02342885': 333, 'n02346627': 334, 'n02356798': 335, 'n02361337': 336, 'n02363005': 337, 'n02364673': 338, 'n02389026': 339, 'n02391049': 340, 'n02395406': 341 , 'n02396427': 342, 'n02397096': 343, 'n02398521': 344, 'n02403003': 345, 'n02408429': 346, 'n02410509': 347, 'n02412080': 348, 'n02415577': 349, 'n02417914': 350, 'n02422106': 351, 'n02422699': 352, 'n02423022': 353, 'n02437312': 354, 'n02437616': 355, 'n02441942': 356, 'n02442845': 357 , 'n02443114': 358, 'n02443484': 359, 'n02444819': 360, 'n02445715': 361, 'n02447366': 362, 'n02454379': 363, 'n02457408': 364, 'n02480495': 365, 'n02480855': 366, 'n02481823': 367, 'n02483362': 368, 'n02483708': 369, 'n02484975': 370, 'n02486261': 371, 'n02486410': 372, 'n02487347': 373 , 'n02488291': 374, 'n02488702': 375, 'n02489166': 376, 'n02490219': 377, 'n02492035': 378, 'n02492660': 379, 'n02493509': 380, 'n02493793': 381, 'n02494079': 382, 'n02497673': 383, 'n02500267': 384, 'n02504013': 385, 'n02504458': 386, 'n02509815': 387, 'n02510455': 388, 'n02514041': 389 , 'n02526121': 390, 'n02536864': 391, 'n02606052': 392, 'n02607072': 393, 'n02640242': 394, 'n02641379': 395, 'n02643566': 396, 'n02655020': 397, 'n02666196': 398, 'n02667093': 399, 'n02669723': 400, 'n02672831': 401, 'n02676566': 402, 'n02687172': 403, 'n02690373': 404, 'n02692877': 405 , 'n02699494': 406, 'n02701002': 407, 'n02704792': 408, 'n02708093': 409, 'n02727426': 410, 'n02730930': 411, 'n02747177': 412, 'n02749479': 413, 'n02769748': 414, 'n02776631': 415, 'n02777292': 416, 'n02782093': 417, 'n02783161': 418, 'n02786058': 419, 'n02787622': 420, 'n02788148': 421 , 'n02790996': 422, 'n02791124': 423, 'n02791270': 424, 'n02793495': 425, 'n02794156': 426, 'n02795169': 427, 'n02797295': 428, 'n02799071': 429, 'n02802426': 430, 'n02804414': 431, 'n02804610': 432, 'n02807133': 433, 'n02808304': 434, 'n02808440': 435, 'n02814533': 436, 'n02814860': 437 , 'n02815834': 438, 'n02817516': 439, 'n02823428': 440, 'n02823750': 441, 'n02825657': 442, 'n02834397': 443, 'n02835271': 444, 'n02837789': 445, 'n02840245': 446, 'n02841315': 447, 'n02843684': 448, 'n02859443': 449, 'n02860847': 450, 'n02865351': 451, 'n02869837': 452, 'n02870880': 453 , 'n02871525': 454, 'n02877765': 455, 'n02879718': 456, 'n02883205': 457, 'n02892201': 458, 'n02892767': 459, 'n02894605': 460, 'n02895154': 461, 'n02906734': 462, 'n02909870': 463, 'n02910353': 464, 'n02916936': 465, 'n02917067': 466, 'n02927161': 467, 'n02930766': 468, 'n02939185': 469 , 'n02948072': 470, 'n02950826': 471, 'n02951358': 472, 'n02951585': 473, 'n02963159': 474, 'n02965783': 475, 'n02966193': 476, 'n02966687': 477, 'n02971356': 478, 'n02974003': 479, 'n02977058': 480, 'n02978881': 481, 'n02979186': 482, 'n02980441': 483, 'n02981792': 484, 'n02988304': 485 , 'n02992211': 486, 'n02992529': 487, 'n02999410': 488, 'n03000134': 489, 'n03000247': 490, 'n03000684': 491, 'n03014705': 492, 'n03016953': 493, 'n03017168': 494, 'n03018349': 495, 'n03026506': 496, 'n03028079': 497, 'n03032252': 498, 'n03041632': 499, 'n03042490': 500 , 'n03045698': 501, 'n03047690': 502, 'n03062245': 503, 'n03063599': 504, 'n03063689': 505, 'n03065424': 506, 'n03075370': 507, 'n03085013': 508, 'n03089624': 509, 'n03095699': 510, 'n03100240': 511, 'n03109150': 512, 'n03110669': 513, 'n03124043': 514, 'n03124170': 515, 'n03125729': 516 , 'n03126707': 517, 'n03127747': 518, 'n03127925': 519, 'n03131574': 520, 'n03133878': 521, 'n03134739': 522, 'n03141823': 523, 'n03146219': 524, 'n03160309': 525, 'n03179701': 526, 'n03180011': 527, 'n03187595': 528, 'n03188531': 529, 'n03196217': 530, 'n03197337': 531, 'n03201208': 532 , 'n03207743': 533, 'n03207941': 534, 'n03208938': 535, 'n03216828': 536, 'n03218198': 537, 'n03220513': 538, 'n03223299': 539, 'n03240683': 540, 'n03249569': 541, 'n03250847': 542, 'n03255030': 543, 'n03259280': 544, 'n03271574': 545, 'n03272010': 546, 'n03272562': 547, 'n03290653': 548 , 'n03291819': 549, 'n03297495': 550, 'n03314780': 551, 'n03325584': 552, 'n03337140': 553, 'n03344393': 554, 'n03345487': 555, 'n03347037': 556, 'n03355925': 557, 'n03372029': 558, 'n03376595': 559, 'n03379051': 560, 'n03384352': 561, 'n03388043': 562, 'n03388183': 563, 'n03388549': 564 , 'n03393912': 565, 'n03394916': 566, 'n03400231': 567, 'n03404251': 568, 'n03417042': 569, 'n03424325': 570, 'n03425413': 571, 'n03443371': 572, 'n03444034': 573, 'n03445777': 574, 'n03445924': 575, 'n03447447': 576, 'n03447721': 577, 'n03450230': 578, 'n03452741': 579, 'n03457902': 580 , 'n03459775': 581, 'n03461385': 582, 'n03467068': 583, 'n03476684': 584, 'n03476991': 585, 'n03478589': 586, 'n03481172': 587, 'n03482405': 588, 'n03483316': 589, 'n03485407': 590, 'n03485794': 591, 'n03492542': 592, 'n03494278': 593, 'n03495258': 594, 'n03496892': 595, 'n03498962': 596 , 'n03527444': 597, 'n03529860': 598, 'n03530642': 599, 'n03532672': 600, 'n03534580': 601, 'n03535780': 602, 'n03538406': 603, 'n03544143': 604, 'n03584254': 605, 'n03584829': 606, 'n03590841': 607, 'n03594734': 608, 'n03594945': 609, 'n03595614': 610, 'n03598930': 611, 'n03599486': 612, 'n03602883': 613, 'n03617480': 614, 'n03623198': 615 , 'n03627232': 616, 'n03630383': 617, 'n03633091': 618, 'n03637318': 619, 'n03642806': 620, 'n03649909': 621, 'n03657121': 622, 'n03658185': 623, 'n03661043': 624, 'n03662601': 625, 'n03666591': 626, 'n03670208': 627, 'n03673027': 628, 'n03676483': 629, 'n03680355': 630, 'n03690938': 631 , 'n03691459': 632, 'n03692522': 633, 'n03697007': 634, 'n03706229': 635, 'n03709823': 636, 'n03710193': 637, 'n03710637': 638, 'n03710721': 639, 'n03717622': 640, 'n03720891': 641, 'n03721384': 642, 'n03724870': 643, 'n03729826': 644, 'n03733131': 645, 'n03733281': 646, 'n03733805': 647 , 'n03742115': 648, 'n03743016': 649, 'n03759954': 650, 'n03761084': 651, 'n03763968': 652, 'n03764736': 653, 'n03769881': 654, 'n03770439': 655, 'n03770679': 656, 'n03773504': 657, 'n03775071': 658, 'n03775546': 659, 'n03776460': 660, 'n03777568': 661, 'n03777754': 662, 'n03781244': 663, 'n03782006': 664, 'n03785016': 665 , 'n03786901': 666, 'n03787032': 667, 'n03788195': 668, 'n03788365': 669, 'n03791053': 670, 'n03792782': 671, 'n03792972': 672, 'n03793489': 673, 'n03794056': 674, 'n03796401': 675, 'n03803284': 676, 'n03804744': 677, 'n03814639': 678, 'n03814906': 679, 'n03825788': 680, 'n03832673': 681 , 'n03837869': 682, 'n03838899': 683, 'n03840681': 684, 'n03841143': 685, 'n03843555': 686, 'n03854065': 687, 'n03857828': 688, 'n03866082': 689, 'n03868242': 690, 'n03868863': 691, 'n03871628': 692, 'n03873416': 693, 'n03874293': 694, 'n03874599': 695, 'n03876231': 696, 'n03877472': 697 , 'n03877845': 698, 'n03884397': 699, 'n03887697': 700, 'n03888257': 701, 'n03888605': 702, 'n03891251': 703, 'n03891332': 704, 'n03895866': 705, 'n03899768': 706, 'n03902125': 707, 'n03903868': 708, 'n03908618': 709, 'n03908714': 710, 'n03916031': 711, 'n03920288': 712, 'n03924679': 713 , 'n03929660': 714, 'n03929855': 715, 'n03930313': 716, 'n03930630': 717, 'n03933933': 718, 'n03935335': 719, 'n03937543': 720, 'n03938244': 721, 'n03942813': 722, 'n03944341': 723, 'n03947888': 724, 'n03950228': 725, 'n03954731': 726, 'n03956157': 727, 'n03958227': 728, 'n03961711': 729 , 'n03967562': 730, 'n03970156': 731, 'n03976467': 732, 'n03976657': 733, 'n03977966': 734, 'n03980874': 735, 'n03982430': 736, 'n03983396': 737, 'n03991062': 738, 'n03992509': 739, 'n03995372': 740, 'n03998194': 741, 'n04004767': 742, 'n04005630': 743, 'n04008634': 744, 'n04009552': 745 , 'n04019541': 746, 'n04023962': 747, 'n04026417': 748, 'n04033901': 749, 'n04033995': 750, 'n04037443': 751, 'n04039381': 752, 'n04040759': 753, 'n04041544': 754, 'n04044716': 755, 'n04049303': 756, 'n04065272': 757, 'n04067472': 758, 'n04069434': 759, 'n04070727': 760, 'n04074963': 761 , 'n04081281': 762, 'n04086273': 763, 'n04090263': 764, 'n04099969': 765, 'n04111531': 766, 'n04116512': 767, 'n04118538': 768, 'n04118776': 769, 'n04120489': 770, 'n04125021': 771, 'n04127249': 772, 'n04131690': 773, 'n04133789': 774, 'n04136333': 775, 'n04141076': 776, 'n04141327': 777 , 'n04141975': 778, 'n04146614': 779, 'n04147183': 780, 'n04149813': 781, 'n04152593': 782, 'n04153751': 783, 'n04154565': 784, 'n04162706': 785, 'n04179913': 786, 'n04192698': 787, 'n04200800': 788, 'n04201297': 789, 'n04204238': 790, 'n04204347': 791, 'n04208210': 792, 'n04209133': 793 , 'n04209239': 794, 'n04228054': 795, 'n04229816': 796, 'n04235860': 797, 'n04238763': 798, 'n04239074': 799, 'n04243546': 800, 'n04251144': 801, 'n04252077': 802, 'n04252225': 803, 'n04254120': 804, 'n04254680': 805, 'n04254777': 806, 'n04258138': 807, 'n04259630': 808, 'n04263257': 809 , 'n04264628': 810, 'n04265275': 811, 'n04266014': 812, 'n04270147': 813, 'n04273569': 814, 'n04275548': 815, 'n04277352': 816, 'n04285008': 817, 'n04286575': 818, 'n04296562': 819, 'n04310018': 820, 'n04311004': 821, 'n04311174': 822, 'n04317175': 823, 'n04325704': 824, 'n04326547': 825 , 'n04328186': 826, 'n04330267': 827, 'n04332243': 828, 'n04335435': 829, 'n04336792': 830, 'n04344873': 831, 'n04346328': 832, 'n04347754': 833, 'n04350905': 834, 'n04355338': 835, 'n04355933': 836, 'n04356056': 837, 'n04357314': 838, 'n04366367': 839, 'n04367480': 840, 'n04370456': 841 , 'n04371430': 842, 'n04371774': 843, 'n04372370': 844, 'n04376876': 845, 'n04380533': 846, 'n04389033': 847, 'n04392985': 848, 'n04398044': 849, 'n04399382': 850, 'n04404412': 851, 'n04409515': 852, 'n04417672': 853, 'n04418357': 854, 'n04423845': 855, 'n04428191': 856, 'n04429376': 857 , 'n04435653': 858, 'n04442312': 859, 'n04443257': 860, 'n04447861': 861, 'n04456115': 862, 'n04458633': 863, 'n04461696': 864, 'n04462240': 865, 'n04465501': 866, 'n04467665': 867, 'n04476259': 868, 'n04479046': 869, 'n04482393': 870, 'n04483307': 871, 'n04485082': 872, 'n04486054': 873 , 'n04487081': 874, 'n04487394': 875, 'n04493381': 876, 'n04501370': 877, 'n04505470': 878, 'n04507155': 879, 'n04509417': 880, 'n04515003': 881, 'n04517823': 882, 'n04522168': 883, 'n04523525': 884, 'n04525038': 885, 'n04525305': 886, 'n04532106': 887, 'n04532670': 888, 'n04536866': 889 , 'n04540053': 890, 'n04542943': 891, 'n04548280': 892, 'n04548362': 893, 'n04550184': 894, 'n04552348': 895, 'n04553703': 896, 'n04554684': 897, 'n04557648': 898, 'n04560804': 899 , 'n04562935': 900, 'n04579145': 901, 'n04579432': 902, 'n04584207': 903, 'n04589890': 904, 'n04590129': 905, 'n04591157': 906, 'n04591713': 907, 'n04592741': 908, 'n04596742': 909, 'n04597913': 910, 'n04599235': 911, 'n04604644': 912, 'n04606251': 913, 'n04612504': 914, 'n04613696': 915 , 'n06359193': 916, 'n06596364': 917, 'n06785654': 918, 'n06794110': 919, 'n06874185': 920, 'n07248320': 921, 'n07565083': 922, 'n07579787': 923, 'n07583066': 924, 'n07584110': 925, 'n07590611': 926, 'n07613480': 927, 'n07614500': 928, 'n07615774': 929, 'n07684084': 930, 'n07693725': 931 , 'n07695742': 932, 'n07697313': 933, 'n07697537': 934, 'n07711569': 935, 'n07714571': 936, 'n07714990': 937, 'n07715103': 938, 'n07716358': 939, 'n07716906': 940, 'n07717410': 941, 'n07717556': 942, 'n07718472': 943, 'n07718747': 944, 'n07720875': 945, 'n07730033': 946, 'n07734744': 947 , 'n07742313': 948, 'n07745940': 949, 'n07747607': 950, 'n07749582': 951, 'n07753113': 952, 'n07753275': 953, 'n07753592': 954, 'n07754684': 955, 'n07760859': 956, 'n07768694': 957, 'n07802026': 958, 'n07831146': 959, 'n07836838': 960, 'n07860988': 961, 'n07871810': 962, 'n07873807': 963 , 'n07875152': 964, 'n07880968': 965, 'n07892512': 966, 'n07920052': 967, 'n07930864': 968, 'n07932039': 969, 'n09193705': 970, 'n09229709': 971, 'n09246464': 972, 'n09256479': 973, 'n09288635': 974, 'n09332890': 975, 'n09399592': 976, 'n09421951': 977, 'n09428293': 978, 'n09468604': 979 , 'n09472597': 980, 'n09835506': 981, 'n10148035': 982, 'n10565667': 983, 'n11879895': 984, 'n11939491': 985, 'n12057211': 986, 'n12144580': 987, 'n12267677': 988, 'n12620546': 989, 'n12768682': 990, 'n12985857': 991, 'n12998815': 992, 'n13037406': 993, 'n13040303': 994, 'n13044778': 995 , 'n13052670': 996, 'n13054560': 997, 'n13133613': 998, 'n15075141': 999} class_names_dict = dict(sorted(class_names_dict.items(), key=lambda x: x[1])) class_names_2 = list(class_names_dict.keys()) def load_model(): # Load the trained model model = ImageNetClassifier.load_from_checkpoint( "logs/checkpoints/epoch=59-val_loss=1.46.ckpt", map_location="cuda" if torch.cuda.is_available() else "cpu", #lr=6.28E-02, # This parameter is required but won't be used for inference num_classes=1000 # Make sure this matches your trained model ) model.eval() return model # Initialize the model model = load_model() model.eval() # Define the preprocessing transforms transform = transforms.Compose([ transforms.Resize(size=256, antialias=True), transforms.CenterCrop(224), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), transforms.ToTensor(), ]) def predict_breed(image): # Convert to PIL Image if needed if not isinstance(image, Image.Image): image = Image.fromarray(image) # Preprocess the image # Convert to tensor to_tensor = transforms.ToTensor() img_tensor = to_tensor(image).unsqueeze(0) # Make prediction with torch.no_grad(): outputs = model(img_tensor) probabilities = torch.nn.functional.softmax(outputs, dim=1) # Get top 5 predictions top5_prob, top5_indices = torch.topk(probabilities, 5) print('top5_prob', top5_prob) print('top5_indices', top5_indices) # Create results dictionary results = { class_names_2[idx.item()]: prob.item() for prob, idx in zip(top5_prob[0], top5_indices[0]) } print(results) results = {mapping_file_dict[old_key]: results[old_key] for old_key in results.keys()} print(results) return results # Create Gradio interface iface = gr.Interface( fn=predict_breed, inputs=gr.Image(), outputs=gr.Label(num_top_classes=5), title="ImageNet-1K ResNet50 Classifier", description="Upload a image to identify its classification!", examples=[ # Add paths to example images here # ["examples/dog1.jpg"], # ["examples/dog2.jpg"] # ['data/test/ILSVRC2012_test_00000004.JPEG'], # ['data/test/ILSVRC2012_test_00000178.JPEG'], # ["data/test/ILSVRC2012_test_00000188.JPEG"], # ["data/test/ILSVRC2012_test_00000158.JPEG"], ] ) # Launch the app if __name__ == "__main__": iface.launch()