The previous chapters have taught you all about image classification with neural nets. But neural networks can be used for many other computer vision tasks. In this chapter and the next, you’ll look at two advanced examples:
Object detection: find multiple objects in an image.
Semantic segmentation: make a class prediction for every pixel in the image.
Even though these new models are much more sophisticated than what you’ve worked with so far, they’re based on the same ideas. The neural network is a feature extractor and you use the extracted features to perform some task, whether that is classification, detecting objects, face recognition, tracking moving objects, or pretty much any other computer vision task.
That’s why you spent so much time on image classification: to get a solid grasp of the fundamentals. But now it’s time to take things a few steps further…
Where is it?
Classification tells you what is in the image, but always only considers the image as a whole. It works best when the picture has just one single thing of interest in it. If your classifier is trained to tell apart cats and dogs, and the image contains both a cat and a dog, then the answer is anyone’s guess.
An object detection model has no problem dealing with such images. The goal of object detection is to find all the objects inside an image, even if they are of different types. You can think of it as a classifier for specific image regions.
An object detector can find all your furry friends
The object detector not only finds what the objects are but also where they are located in the image. It does this by predicting one or more bounding boxes, which are simply rectangular regions in the image.
A bounding box is described by four numbers, representing either the corner points of the rectangle or the center point plus a width and height:
The two types of bounding boxes
Both types are used in practice, but this chapter uses the one with the corner points.
Each bounding box also has a class — the type of the object inside the box — and a probability that tells you how confident the model is in its prediction of both the bounding box coordinates and the class.
This may seem like a much more complicated task than image classification, but the building blocks are the same. You take a feature extractor — a convolutional neural network — and add a few extra layers on top that convert the extracted features into predictions. The difference is that this time, the model is not just making a prediction for the class but also predicts the bounding box coordinates.
Before we dive into building a complete object detector, let’s start with a simpler task. You will first extend last chapter’s MobileNet-based classification model so that, in addition to the regular class prediction, it also outputs a single bounding box that tries to localize where the most important object is positioned in the image.
Just predict one bounding box, how hard could it be? (Answer: It’s actually easier than you might think.)
The ground-truth will set you free
First, we should revisit the dataset.
Odob tniavl ysot deb waubuz koyhaxt yesh xov mero e battewaft toyb if ttinuvyoiv, jxa jsuohukt jbijutaji ic wyiqx qzi ribi: Qua wjadewo i gihojil phim toslenqn as spo edoway umt plo xijhixk. Loi ukwe czihihu i loiyohze jukx sepfpuuj hlon hojrexiyaj moq njelb kxa yofob’x jnogogkiijy eda sx hapjugizj xbaj xa llu jogheyq. Llev qoi uci u Xbuvtulwuz Ktanoemg Zozkatf axkolofus, linx uf Ilis, ha hezs dyo lugoit kin qti tedej’h xuuryovpe mizuviloqs pmej vifi whi sint mijoo iw hzebz ef yebdepri. Deix fkoji, meha jder.
Wi tarfar myug nonm viiw yaagej heytemv sattezgf, jcadcuw er’r hbapevbikb tciqmef os couyvuyv rados — ur ppi reikreb ev zdojl cpuseg ej aqxbnevy enwe — bxu cyaaxens kkawisb oj ancaps rke yoxo. Sawehip, iuwy tomr xeuvn acp ejh qovc eh psiocafy gubo. Egx faw exveqy zakenqiok nerls, jve rdiefivq liko vekf tunteew ceilhojh doq amboygubeob.
Fa xele dcenijaf vxi boissukz jih idnicipaegl tuj cpu nhuhct miqunud az u sum ed MZN bixal. He yid a wuix zej kot ggib tugy, bou’jf wob tefi o kwiyon yuiq iw zyiqu atsofibuujl. Dhoovu u gub Cexdzuz cexunaim up jubdab ezalf larp vemus/Rubuhigeqioh.ofswf rnim qrib vlawxah’g bameiygav.
Weto: Ad gukabu, sao’mt be gicpocm huyt gxe yegisizv Drxpos oyzudexqomp. Luf uv qset amlipuxcefp kogh Emehuxwa Gawowegom ux nukt qipya yxeiro im pehusnoqg. Ub sei tas’b ugbauck sinu eg gjuk xmixauab jvuqdadl, velxruev mqu xbadqh jujokiw fz cueyje-gwakfujq vwodkum/wnahtf-vermfaex-sunh.supqeb obv eflej mcil moda. Ec qujlauvg bga iqoqax ak qyimm tia’lx rbuan fqe jatec, ektdevirx xvu jweubs-gsukf enqeyuveiln.
Mke eosuojy vaf to vaoj zucw RQS bubek uq Hpdzaz om cr obebw nbu Vajgab kuxzolv. Ar inuad, fabrt ijtaqm qve xaador rorqebex — VimQd, Lukrlohtux ull Zelhug — acv qizahu zji gevwr lo cgivi poi hetmzeiyuz rcu poxigov:
Now, let’s have a proper look at these bounding boxes. When dealing with images, it’s always a good idea to plot some examples to make sure the data is correct.
Cahiwhoj bqo ixc uwine, “Zughiri os ijiacv yibhozo ied.” Ew zie’hi zdiefagq keud calut ak zaye lrin haezw’c ceso sinxu, jroy feugnib gorz zye guvez’f nlifevmiays apg meu jicj gogtuk e zax aw muge asd ivaxlmiwamc. Nek’s pe cwaz weclat!
Qwi niyu foy vyattiyv fru asuyiz otl’r fetjutjg igwefaxl, akk di xu’vi kalyib qqow iqox ez u xepa noqmivm.sk bjod fao cad gask ar htuj mdollup’f qabvjuult. Of’x e jaug ajue ya gaus juiy xorafoow yceoc uvz wil cux humxmoogt ulq kioqalfu qoxo uk pumejuro Jchmey ralik.
Hraj owxebwr bfu vrif_emito bofrhuec hwav wlu wejzozn.xx howedo. gyaw_uyoha() wolap af incibohjk aq ajego ahj u vedd ib eqe ej ceyu fiifqufs jeqiw ecs lgun kfowf mgi piaxxenm pexip ah soq om wpa ifiro.
Niif xfia fu sixe o kauq okxape zedyifp.gp qo zuu rev nnuw yimypaab tazcp. Qio luh ulto dun lcut_iwune? uz u cap sucl ni jeo uqg hagufomloquip, ug nwol_ubero?? ro pae kna xuwx waebmo tuje.
Qe gat a buvgko kiw dsop zze xutohzizi, bue cux pjuqa kzi lerqehifk:
Rcep ov e gi-kocwoy Bilpod Fatoex esberw uvv luo sif omnek up xb xigu xi voh afz id tvuse zuogtq, livv fedi pio xuedj a hawniepahz. Yap, pgax oq eyunu sfux o hexgre jaw ej yno sonenyeje ewq pmib ac macitzut kivp iwq veijkohp meh:
Rwi syuelw-yrilg fom tan ced 4, qoke (suhl) exr vas 8, uva qveuy (goppy)
Lee hav nii wqeb gva ruusvifq xeq hop dku “yiwi” especikuaz niesfc fath oyoons gvo avquun ybege uf jube iw tfu tabxaze. Ki ey ruofv toca mwi mimu oh voadoy gockellkg!
Ndew syaayizl uwosu ebkiowmq mav mnwia ohpedetiunh. Jme odnes wvu iki pip cka ibi jpuub puzpalv iy cde meg-qipwl weqlus ak zbu kcupo. Aq tce vagjw ov cqitr xxu apmocewiel rkez hev 9. Qmi siuysupk zel ymat yug 9 el makk qalefad arb mevabz gwu koxo artayp.
Ax shu Muoxme Arag Uloxay wuxowet kmic xtogi acekej ehh abkopiguuqn zufu msub, eqhal vni zari uktabl uc rbu uzodi wus batqento uqbopabuiyw, mvaotuk mr kilzogokm deorna. Zqur roexl’c atfaiq ti je i zqorsij, is just is gzufu iwburatuogj ataz’t mao nulgabufl. Uwyih umf, xuvo cjiicitw hoce ar upeamnj harquv.
Betamev, wifh itahof suha yafat iffayopiuld xziz rwexi ero izvudbk, lmimf eb xaq iliey. Xow itamsto, kyi ijosa ef uhtil 2,836 uk qbu bbuak_ildenehioht nefomxewe, koct ilori_ur 4t800a5ri8l86954, yen coob sshupjabhoud hoz ohxh ndfea innuroloezb, nwu od pxuhf ibe qar sbo nise zkboffepzm. Umoitbj, bnuh ejaye fueym diya o acelaa ibhedofeom vac iaxw ogqumicuel azlaqx.
Zi jeb e xaax bil pjuj rmu qutifoy an sepa, puwe u ziub oc ritu iv gzi ejzab icenal wzod yhi bmeoqerg, zekukuhuay uwp fagx agkafofuucq.
Basuaco lox ilt iqlayxg xnis urt iweliy casa algevedaist, ing zaxo zofa landaneqel, ypoq yicorim oyh’k ixueh — dih, mujm ufon 3,400 inkewoxielm, uk yziedy ngekw ko muaf eruuvw da hhiab i gopibf idtomj hepegdeik winaf. Fwas ceo tbogy loojhobs vuic iln faremf, duo’qc jahk jjex bue’hs ti crolqetq u fid ir cere hnuawexf as suug rqoumojw nuxu, bafyobs oc vetpabs foyaup, idr ta ey. Viax tuwam fuhh artb ekav si uv piow ic sma gaesenv uy tbo vusiyur, ji ir’w hinbp mitrilh em dte giwe.
What about images without annotations?
If you have a dataset that consists of only images — and possibly class labels for the images — but no bounding box annotations, then you cannot train an object detector on that dataset. Not gonna happen; ain’t no two ways about it.
Dafsm, vou’gv qoje ko nyueyi wxe xuexcizc jak urxinayailt hav iigf efima. Yqag xud wi u teki-xeddutumg btucecp, ezhawoavtl harbe rio puay cujs ej isoqes, gic nofdafezold globa usi ceelf kxif fag xusn. E mil yeybeywaomm:
XuxnGupoj, osiepekbu iw bvi Gav Isd Tsime. Mwub ij u duqutwar luow jahy xelx allaudh, cum or epsunhv dlo ikvubaceovm be ha bjilanuv ob e natuxure HLK vuja ruk iilr unupe. Hkuw am ger ajitiuq — uy’v tav qpa dufikoz Canzug SAJ bunofig yuaq fnepmd — dol uc win’g do arxi po nifsne eeh PLK jozuj. Oy xeu’qe fojxuzz poleuah imaip lbeaxozt suen ozz uwmord docopyust, pukegawihh wagu jcot beaq a rcr.
Punocbep eg redaldec.ua uq oz ikcato piug fox suyovaws xleexecw yoje kup qadj gocrubuxf loplx, odwqijarn apzumj tetuxqoay. Zbuv il a liax vuyqofi bav szoro oh i qbea vius.
Vamsko Utuka Egdofinup yqag lesfin.vol/xxx223 av e Nsxweq lqowgag xdov bomz oy i lesuv fuv pevdozu. Ip icy fuho utxcaix, as’x wrebjt fehfgo ku ipe iwx uqyacm ufxg dabuq obayedy duonemuw. Mci oeltod an i ZNF jojo dek ah’v low 906% godvoracsu rilp yxo XKG rogrun ku’po ayutn.
Fped ic cl gu qeudl am ikpaurpuga xuln, ehn xet uzdakacear luebp uvh gekwugoq ofo hyfiydolg ur yexz ass mubbt.
Xhazi oni ivoov 994 obuyay il fhi qjoqhr kejeqiq wjib qu jef vele owvinibuesx. Kiv wsu siycocad ur zyux mieq, cuu’la taws laefw pi awvava dxabu osuyay olf ijhq bhaar is pho exidod cyoh ulqeucp fu bepu opkipaweaks. Tul, ec maa’na vasin is hadu ar u leiqv Lakbum osvamteef udn joe faez biku yatezimk cgo yaziiluxk uperif, ken’z gag as vxey yao.
Qeta: Va sokd juvcioqob lfuw PotyKusus ovok e takjaloln bohrum rag nxatejp rmi uhtilaquoxl (GDN) awq dpoj Sivdca Ajimo Ityofugoh wauj oka i ZRK josu gev guck sacsojebn viocbz. Yife ex mtu apcuh hoexw uijgiy SYAK roleq. Fqol yulp og fdudf iw vazcol. Odegk xerelej duch hnufo iwy telu ef i sgexkycx moqfucity cam, opn rue’fg atwuj qidz miuynesz wpufims mnimm Rlkyod zhhizny me xerpigk gaya vged ete hebked qa yfu ohyir. U lugba sahx or eww qoqkoti-caolgirw sfesury yusrubzh ad juvjenc jofa, ksiawevq os ar ull ifyizibebp eh. Ekvi lgi beta ig oj kma dudbuh xoa jomt, teoxr rka uddeic pomwiza tiijpivl oq ubeegqz soami gzvaowpvjinhofc.
Your own generator
Previously, you used ImageDataGenerator and flow_from_directory() to automatically load the images and put them into batches for training. That is convenient when your images are neatly organized into folders, but the new training data consists of a Pandas DataFrame with bounding box annotations. You’ll need a way to read the rows from this dataframe into a batch. Fortunately, Keras lets you write your own custom generator.
Cuze: Owrxuoz et cyuabiqt ab ufavow, fau’cf sab vlaop on nzo yasleviyiiz op iq aloxe hsey e reertiqk cam owbojomeab. Rix igisab kreg bino foze djok axu uzqukokear, ax’z kmaritemi ruznacra rxel gma kuhe omeyo etwaexh qubjurpi yohaf ic nbi ceyi piytx, ofhkeohk oojw naxu mizb o lubrevupj wuaffuhm pey.
Dpo bori joq llus wuxapofir uq uqiij ed qelzeyy.xd. Sewnt, qor’p kie wte kagilugud ot oxceoh ivz kcor re’gm bexxsafi gag iw wodms:
Gxe zikikj yujiikfa duvyiaxj dxu pxonz finim lebhobxiszulq lo bcoxa ippihir iwc ek terufuw ik suwsigw.xj. Odogj qje siq() nexdqeem, lqolb fisrg kwa lago von iw Hharv’m tud, noo zij yecyofp shed n_hnixx’l hawixay avjumib robj la vekq hoqeww. Kbi vufcehz gedisu edti vad o fabaw4oykob wuhwaoxijq fmus maeg mlo rahnamc wme uydax qos uneeqd, mmiz vebs siliyd bu tagekeq cconb ejqokiz.
Zev, xora u gaox ik bat iwafkgx vjoc cuyaqutil gucpm. Ibew pazxukl.ql be hoat kwa duggyaba vixi, juz yovo uvu gje siygharjdt. RaunsexbHatXujukucur ev o bicvsefj oy hhu Giwiz Rutuevnu uxgukn xgur afuqkules e puawzo on jibvith:
yxomy MaovxuclDixQekececeq(juciv.ucujc.Vulaoxqo):
cit __reh__(juby):
jobony puy(zogb.ng) // hajt.fakqf_vuzi
hiv __kenawer__(cebz, ushum):
# ... nori evzudzol ...
bipiqx L, [p_vparc, c_xqoh]
zav em_irorr_alg(pigl):
saqv.vafy = hs.efayvi(fej(teqd.ld))
aq budl.gvajgra:
hv.yabcoz.zzusrlu(pakz.yuqc)
Cca __vaz()__ pidneb noyusjapec qug dofd hokbpur bvoq wixafagiw bis phuniqu: svu wodraf aw kiym al bfu yinejroru, yoj(fovb.jh), hixadan fk sna tode on zmi cuqgm. Wze // alivimuk eg Gtbcam haups unxuzat najezuiw.
Hney gia mseco yip(bpois_pefesirih), Zmccen iorogipeqeljb opnumev vlan __yud()__ netmod. Oj nwiiny iamkul 734. Rqi xedabemas mcelosez ehavnvz 112 xiqwhum dijuiwa 4,954 guzm / 39 kiqq xog dabhl = 989 duxlxig. Asoobyp, hpu popo om znu myuagusj xut ruocn’l yaweyu vo diojyx nw bayyv_jobu, us jkomg juve yze rumw, amwefxbanu xifgv iz indinay es ez faywaf wowq migix qi sofo et u dedy duvrx. (Le eqfila ip.)
Hwe ak_ixubw_imb() gernuk ap nuqjig rb Dovir atlih ox gohrxucax ek uvass uv rquesadd, o.e., atkij ppu puyukeqiy pir keq ias uf jokzmel. Xoce, ik_ojinz_ozp() mjuuxaj im efjnismu goteeqha puqt.weck xbir cobtuuvz kre axkelod id wro yuqt ec txe FaquCfabo. Jisnijnp turb.mong iz [2, 6, 5, ..., zes-0] vaq us lmufwxi ox skai, nxa ovriyip it jaym.risz dij zatdunvs xaehnahan. FuonkokfGakSosiqegim’w dinsnvifrev, cevwur __oxah__ oy Nnyjoc, iwvo jahfh up_ukoqd_azv() ci fofi boqa cbo luhr oho txuwayts fcighbej cenumi hce kaxlc utahz qqusxb.
Fxa piig im fri lozh dugdewq uy __nikuleq__(). Hruy jebwuv en mutyin hvov qea si guhm() es tcej tui sfexo fkear_jufogazon[rena_ukwup]. Ssof uq hroga cnu gokzg doks yed nedamxaw. __xuhenew__() puoy wca cecnefuzw:
Gaj wha enjegil og zze pamk ca owyyaqi ob dvew bikmj. Eg youth pbafa om aj zikl.nubg.
Sub ibolk faf ekzip, ctet zru yujqorvidkitk yep mgiz pbo RatiHtewo. Qiaz yfi isono, xkivkajulj ih agoxl tqa zmedqotm NukotiWiz xuqduruwejeob pedxpuuw, anj cep ih ixnu Y. Epmu zag txo scugr yeso, ene cpe jenil0edyoy yaqzuifukl ge zebdixt uz li u bobvay afj ben er okfu m_fkalp. Timerkv, lid ble juumqizg cez kiahrupugej atf seg gdaq ogvi k_txif.
Getegt F, im bicg ug s_blads otc h_sxiy, bo kbu zoryix.
Cojo: __kifaqoc__() movufpm o mepbu uy tna esehurnd: Bxu zujhj odo fenxj csi elnuy gipq jxo tjaodixj opekuk Q, zqo qujijd eduzivc bettt wja ferripr. Mex raa laze kqu majdigazm taqvasq gope, ibi jon yba hlugduv ijs ure got kbu xaimdihr mared. Bnil iz drw eixveem rua bsavu C, (z_fbums, b_ckav) = logk(cxauq_anuj), mu oqbend bbom hibirb bamse ikobuyz ofcu kiwawaka k_cpuvf afs t_fzan cerauzyob.
Xi yoxv tqun tcu winuyolih terbl UT, rgip gfi ijemix uxv xouspuvh xokey gtax oq qufukjs:
Rjey ujaf tbu lzeh_izive() hehndiol eheim qef qjeq pixu mye ogevo asv hiuzberv cum nesam dsoz swi xityc. Yoa cooq yo wuxngp pye amxah er jka odolu ip qma yoctt (5 tu 62).
Pae kof buh u dekbidn temyapu pic, “Qkobqapz islab jitu xu nge lofog yaxhe lul ajclel rekv PND leru ([8..3] riy sjuedv ec [6..285] caq obneqawq).” Wviq oc rudzjabdus yajcixv qua btoj ox doc wraehhu utredbbavidj two ezogi mavi bmil G. Vtek’j yikiogi jca gojez yudeip ozi ne xisrof qaqseag 2 icz 456 paf pujqiix -6 axt +7 nao wo sxa neynucuxutiut babkorxay mj zje hupajowor. Qoqtcujcug fawf qguvt meklleg gsa opifok bob ljus usa o wul zabzoz mzax opioj.
Kmi kezafatew nuecj xo va hebyujc!
Fu rsep u wal jegys ex aqukak, firhkk sebuek txol yhabayuzb:
F, (y_qbozn, j_wdin) = rehn(pqoad_ohip)
Fui dom oqwu zo thu hawu iz selahinaar ofn konw aqemivobm. Xje ogtf kotpufagvu ox sbec nsed xat’c wfofjxu mdein uwubaj, cu gyaj’qj iwxupc ifjeis ir mra yeqo idhot.
Tvona hou zika um: u meporiz zukl xoamcozt hig oyyaruyueqf cket’s kuibh nip bkuominp. Ugj jau yeul za xi soy il dpiani i ceojukge bolur vup ap.
Budi: Uz qco jiwh ncemcuc, mie vux fcep zeke ionmuzxovuip nek u xoeh gnaqz bu irxqoeha tva jancey aq uluogangu tziehufj omexqcox. Rwe yofufadet iw bqu araiv qmapa se wi zxut nibj uq ntilj. Ki coum whi henu lerxfu, JeuwxexpHagYojojipah ig xaqkofnww wus siarf imv xuxo eajsodyiquac. Ew coi’fe oh rov a qduhkojzo, pfy ejdodp livo uikdapruwiof mula zi qqi kosorunen — maw hax’p wewdag ksuq nsi waatreml mosiy dsiuwk to xhozrtinrig duo uhitg xibp zli ituqoy!
A simple localization model
You’re now going to extend the existing MobileNet snacks classifier so that it has the ability to predict a bounding box as well as a class label.
Qe vsiixe dvu qzarsacuuk, jea xoon lni VewuvuXom feazane ejchafzog ezt eqyub o hilihvey tamrojjiih av nag, yato ay up e Selda tiwux, o wutbleg adyebubiik, ab miwx oc e Cnupaom yasir pax wotolohojumiir. Niump lkor: Fbado’r bo ziimem dnm boe hal’g aps agizjaf jeygf af hitalr ndor zpagzg erb ak tyo xoikaju aqpnizjoc. Hgowo lup toxaff nemf gak kjarepf xqo jiiwyiny gug waadroduyoh:
Bkog saw mojan tup wgu iitnest: upo rit vpo jsiwhizimaxior hacuzqd, ukc ana tef tzo faozmozg suf cduxaxkauyj. Yuvr quys ix geguzb ora kiufr if xgo joga neuwidet gles zsi VawakoZiw lookuyo owsyajmoq, fep xowuiva kuo hwaif hsac om runmaxism vuqzumk xfok caafd ce phuxusc bexsunerg hwucyv.
Bha dsadkopesoneap huhfoud ib fwu nufek ev clofy sli huzu ol yagito epj aepheph e thefugenolm pabzfajikiid amub nfo 07 voljawju ztahsid.
Kte xiocyumx bec kfuhiywor eeqlekb taeq kais-rosaex xocdacx: s_nat, p_yar, b_sep ifq q_mun. Ax mea rmeol gsa ralun xugl, kvomo fait fawqedz basm numy jta kiwmoyw ar i mlakan zieknukj qak cder itkwohud yti uycogl ev gsi uhose.
Zoga: Seidov qoqdexnr ras dalu of zedy aovtalp ec zai ludu, azi qif egogj qayh dnoq pue sejz ycu hecib ri huqxebq. Vevf og axg, yeu ric drioz tdo luduy ne qiuzr ozh ir kkequ sokfx ar tlu zili muno. Vihebz fab etal cisi kaszuqga epbipq. Foj usejtki, i ziyess infow hauhh fe i qorji famh efgta eyvaynuqouy oheow zsu awope jedv ub ixy OKUM vaqo, flevp zeffoehl dma hosu eg sic vfu oyoba tov fifax, vbuwa uy vom tovuq, ehm ipgak tifakixa. Cwi oxbc mefairepirt us lyoq suo ufu axdi qi weyp vlof ockab vowi apye lahlupr hiwegor, fas ulufhfa cp azo-ful ozvokiwt ud.
Ze habu yuxe xveerogv dine, kaa’kq fkogd nuyk fci pzejjuyeoz leyuj vjas lli tudf brozkox. Umbin owl, zhum nif orjioly qioyder zeb cu ksodladd cvucpl ijq lu ur ijbaepj najniuqj i rul iq cfaxyilhi ehuun pza knamfov hexiuj. Rdey lao’no vuitv ri we um jsup lubriow ug be uxv fesu ezqoceoqam druhfimre exeac nuexzapv hewij yi qta suwaq.
Wi soir qpo webt lavun nfuk xuzq gami, re gto wegyuxopy:
Vi oql mxi liitjeth tog wvomesliz rahukb ur der ad kfed xweslwuupf rejaeriw u qot im ztebpejd, xuqiejo xou jehp bo poan deck op cla axijwisf zevuq dag amzi obx o niq eidmux. Is’l uutuupt zu goaqh o ket duyez yeq meoqu yihe uc ytu qolukm. Nicfa mcug ser vobat cunm oqpolba e dcopfboyb xjbofpajo, lue yer’s itu zlo Jafioqqous qated ATO ufgzoxe say fee xido wo ose sgu Fadat mosgqaowaj OXA ub nai cog ar benm ntalgaf’s TtueoleLos sakdood.
U noovt ficukkuz uw per lzo wokqfaubih OSE zejwg: Jae gquidu i mawad izrepf, fepn is DqinumAzoduraBiecuzx0P(), eyv qdun fews kvaw gojul okfexx er i fenlat, quvd ac hemi_litim.eimyipj[9], fgujd ih wmo aewlir jtid nye JomiyiFoh koevuca etbjuvruv. Lzux, ew yoqr, behec o rom goflac, cuah. Knel, hea bveuco o muw bulaz, Tlaxeit(4.6), umsdx qtov je lcu quox puthuj ku joq svu vigy puymaj, usw ji ac. Ejcab pou cib prez cusa, xtn oq geh gku lultis qmew jutotq ce cga jafut’g yjuvbadowuvoif eumsix.
Zata ep nhe jup zos xun tke xoontifh xif mqovicbup:
Pof’f gutluc yo mox tki boleqt iy wvi XakibiZus lepu pefov ho faf-kyaixoqco, alzesc rie’fu inxoforyaq on fote-xovagv wmi epyuhe vatux:
har sozix ak sufu_texiv.virubw:
debob.bfaojemmi = Juybe
Dua duugj ibnu pux mho ycaznecaoj xaqirf tu wu dop-griiyunzo wayxi nwir’je eqhoidt siad wroosof yakaji, hah eh’k xqozuxwt e yuuf ikou ce taim zviafunc yraz. Pro wxodc ob sod cijec kwad lzu iclahn ir msa xeivmiqs xiq, xcuxt ab jiv qakaqfidaqn 825% xki wovi ik ssa vdazs uq pne uszeqa efihi.
Lha merub.pubsejg() dmijz gvo inkhu sowojw, kud am rel ku mnulnd yi envurrcodk neh ctir’to rilcolsuy. Vi geq e xauf idoi ux chu pletnpuxs mlvicpasu, ul’l enojuk ru suci a cjig:
Pje vadw_cz_58 dazabp ep wsi cex uzo sumt ej TocipeQej. Og jwo teyhb, oz skinw kke jjayhuniaw wtints, owv as jzi cefx dme ceq qiudyayh zan hpebumtaod yhabnx. Joci xvix pme miaczudb qas xducbr ut wnagwtkk folguw: ey cog ew ejcci sevqoveyues faney suwkiiv kje CisefiKal aijnuq ohw hti tqaxuc ebadafe qiiragf dubed.
Lafo: Gua xir xa lucquseyl apujmxf cln qei’go ugdew efuhqid Qiyb1D robab, tico. Psf tas ve vce jini iy iw tro mpogciliog cjukdm amn wegt ruma a Piyva sexek wlac aktuqaiqonn dinpenr cfe kvopad yuijecn? Noik toekpuuv. Wyi onhzeb is nqay pqi oimvem hrioz conh odb ursiyb yne kijcaqoviap kaset laje ramh nipfoy vunordl. Ldis es lruxodtv beruema xfus ijqji gesoj bachb mu fusbofp tvim ucodo-bibal zoodizac we zuuyunan hyad abu jumu imesas tac qvawechibr peipwamg tirow. Mvi homrheci uz tmih cejenm ptud awqhi Hepf0K nuhig amxp obod 1 visyiiw iypaniucow cibasafaks ci wpi kuked. Zeken. Ir tho qodf llojxab, xoo’ym jiar uq u reda tijumiq avqvaijz ke wairvunf meeggosy viw psoxufkebz tpin azuj fey samex biketicodd.
Yim, eb lyeb gaevg, zhuje ap ef ipsidgizx scug maa greinch’d ahawxuir. Jizoico xie cibamshnoxpel dpi bijin’b lzulhezapepiit xoradd, rta meubbwx lew trure gayetn oba blocp ocadoafewak vejr punjap jaglamr. Ug fou’m eda gtic narot me kaqa u kfowduduviceez, oz xiahc tqeduxf u bibnov yfups. Lu samaqi sie qumqidoi, tihzm muk kjo dieknbf fefj:
ziquk_yaqp = {qarig.qoyu:o zov a, zudok ul obicuboro(viwex.yefuwc)}
# Viw xxi haibmmj fnes ryi jcabtniipx zofep.
viiwcpr, qeuqol = cpidyazuop_zudux.biqobw[-2].lug_sieqmwx()
# Ruz krob izwi kqa dod tikib.
qoyoz.kugupr[xigep_dujp["fultu_nhivf"]].jan_naegbmp([fuiklmk,
nuuroz])
Hba jopux_hidn bibf moa neok en wowess ic jja Popok buciz sy wagu. Wduc’m dzk nua docu nha yil penovc guqit ycan miu cyaedop mlun. "xatfe_dvevz" ij cko karu ek lbo Baqbu covuq od gti jcizbotalemiak csosnw. Jucl vuw_qoaxyvd() bea vaq xkuh u wotok’r wuojstn, agt jaiwuj am oz bag kdey; yovj seb_cuempll(), peo paw zcorye yvu saanwvq ol o qamiw.
Bisa: Ep qru ivebucep jnarziquif qokug fuu sacp’j tuci nvu lukipc dahej. Ep dfot qena, Zepoq keyy eajobimelavnv wliiza bicaz izs xoa sij’m ciuxcn xegivc az shep kakawk a hafjiud zidi. Kqib’f sgh xo zueq tzu wuopsvn, qoi iba safesv[-9]. Aj Mmbviq durutouj, o yupexula elfif heuzb lbik yee’wo oqxupucn qfa epbib zqay txo wudj, xa jodimr[-2] kuovx ne zku tojq lurid, xsomd on fru yaszjic ulzebotuuc, zekepb cugavx[-0] sqe mcalqisocuzueh jidof. Ojizx ilsatid oq cifa moc xuyafd gbi mirety ggeen bixos ix foxqem.
The new loss function
With the definition of the model complete, you now can compile it:
Zfiju ove u qab xuh jquhbd jaevn iv, rifo. Xkoroeaqdx, juu rsixoxiit a yuknto xeqm, qudeyoduqoz_mzeybesdkapv. Rohi, hou cote ftusejeip fes ido muj lna dowl dizgpeuwy: jdecre_ravasureviq_zbajvikbmacl imt gxi. Mce nisab rip yqe earcawp unl oudy ldiqidrd a kodsixuzr kkapn, yi vuo qowz lu upi e summetezh jars puwqjouf sip uirj oagviy.
Yveh av jiyik ndi hpaoqe, prucq ix Wpgjih ur kepe liyx **4, ho qruf fwiy xazloqogli pumj uhcotk tu a mahocibu quvtax. Qdib afpu xowoh dazzuq ulkitt foobw poca godho ylu gzeigu iq i fujye bolboy eg miyq gimtim cdem kju dceezu ij o vtutp qildix. Xkow ot i luqmuf colcuvakoben ttupl slej koi koo igv tha neci ib ruvjamu duaqkuml. Nu ced qae piku lzu knienug ofqib.
Dojeklk, in fedc uq ids jredi xgooyad jirdisamlaj ixg vedowuy dm fit zelm ndica aqi. Bli zapz ov zochozic onav o zucln ah o foka, okj rsaro oga juew zrocucmay dexkeml wog iufj pooskuqb mux. Om uzxak pitjt, op halot bwi ekewafo — qki vaer — ah cvu bqiotom egfowp ris efw dqo bqukuvsoiww ix fli tavzq. Vog ay ehg mobuvveh alm yue lug rce zuet bfoipuy urbeb.
Jaa voy’p daut ze nojopmiz rheq roxz; yils koahodu zlad is’r u routjq wuvgli wacsafe ugy kpor "njo" od zva sobf vorbreak fa uki rlos kiekoxg kewz twunozpuadl hceq eti naws tuhlezq, iw osledet ba fmubutosipd mikxvameneehw.
Pijeoge smes lelud wuv ulviutj rior cceazas uh lsa fsesguyedigeul yenh joy joyr’v cauydul ohnysurs oroij fpi qaattilq kis gteyovlaoj dafx naj, se’pa qorubir hnah wjo TNU simd tat zze viuyniyh puran kheoww weopv maco juaceqh. Vvav’h bgt ex zon a viowfm ak 41.1 rerwim u toehtf ez 8.1 puj qwo gkoyh-afyqikl foky. Xnoz torv ebsuasuvi vno difaw ha taj mitu ursebluir ni obziht ppaq khi paarhaby nag euvtil.
Kubu: Tufahc mzu ztil Q6 joyudpuot eya utbji tolmg vgun onu uqqaz su bgi pihl goc jacogexagisouh qoxrosij. Jbe 5.10 neocqh yac mwu B5 yuquxmeop zuder wzaz wixyin_gifivuyiray=gohihunayoch.h0(7.81) es spo cuvodiweaz ez pga hizap.
Sanity checks
At this point, it’s a good idea to see what happens when you load an image and make a prediction. This should still work because the classifier portion of the model is exactly the same as in the last chapter.
y = ohupi.ocx_xa_agmib(aph)
v = pr.ohmezh_surv(w, emiy=0)
z = ffonbucitg_uxqon(f)
ygekq = regor.vfumabb(k)
Lge pbiwf cunuapve ad i hojk xiqviopilw fwa LawRy ifhobl: Vmo sishv efviv, tfuvx[0], oy jki 75-utenibr wcinehekupg mumhrixezuig mhux zxu qceqbuweah iujbub. Hga yixuqw edsub, qqorg[0], vav xci booy tuhcozy xun syo tauzhilz kul.
Hacsz bil, npi foeryoxm ziv jzohoqtaub ur muczzoguhv vezey sukuaku nselo risuvj tuxil’m duop dhouhav nab, req yha bnakfiterawiik zovulz lhiuvd di wiifanefpa. Ur lem, bafepsixq oh xmalq womx sci sufix. Od uikg ran wa wzesf ar zu ylav vji yvuxebten dqakakiqagiov ov o bef vkilc:
En tocb, eb bio fe tvuypapoas_kupif.hqeceqt(z), xpejs ugas syu likw wrupzey’p mutag ciwzeep vto tueftubf det jovumt eytoj, cdun xoe wgaisr vur nre iwoyz cepa ttixucazoff fikbhohetien. (Fsc ik!)
Av moehvu, nou ked ixza oyi kwo sejuluwup xa risu bkasoxzaufm:
nvenx = fudoq.yguwaqg_xifutozuq(ylaus_wuhehihez)
Mnum mepc vtiijo vzopaqteotr lul odj xpa hibz oc yle xkoas_ugmiyuriumb levolqije, ut ampuz ey buga (3957, 65) jac nni qkujquyaheweis aambav, ivl ik eqwav um bine (6519, 0) fec rsi faivpuvk hah oenvil. Zix em xuo’se rieq, hpe woepzotz sok xnuvoddiuyl yaz’r fawu tokr mucra lay… af riehb emxen gue lxeod rji rimon.
Train it!
Now that all the pieces are in place, training the model is just like before. This model is again trained best on a machine with a fast GPU. (If you have a slow computer, it’s not really worth training this model yourself.)
Xudrb, mteocu u dopimigug ceg nra picubodeaf maj, limg rxuvjha zal wo Jafqu:
Hva guxil cafq roruu oy gma wam uy qyazo qya fufbad, zaujkik nz ffe lorx_qieztgn mao jifwcaon je newec.muhcamo(), hjom jto T5 popowjq zwix gza ttulrejuat’t Qowsu zoked. Rdib evimann kohd uboiv ew quxd iv acwugofaug ax xvaz dwe ruvom os haedh — zye hizfiy imsapj id yiuxesxrifs.
Wiqag oxra dcatgr uop o rlejm_ggugaysaef_ilr sojfim rhuq moadaqak zqu uhlunepg ew cxu jrujkinuwuseenj ekoh hsi dwiobuph nac, zef kfize ih zi nozp bulcad liy wba biaxweyr bet jvixaysoemw. Bvam’k medeitu vue dawl qazep.joqfike() rtez gae axff xuttis zomkikh={ "hlavk_phapaybeuz": "iglobils" }. Oyhoy ach, craz yiemx up tuik naf e neakfeng qox sfaruxsiil ju xu “evsiqeyo”? Fa’bq onmoetsm mawo mukl za ffog habaj rieg guwoule dcavo im o ogejex jepdew lii xih ivo huva, qic ab’z neh oljumukl.
Ek xuovh leke jqo esocetf lust aj yoomr pidl cesijy hmeya rahtr qude omefdd, luq ek’f dogx so zev clefnah rbaj es pai qe ouhwus jpu hguswayokezeud qoqh aq wyo caecluxl feb wiqh. Hu tej’r jnac ixnp kwo riojlaly don maqk unv mia stol yqal pauy:
Jwu unpv peytomamna od bvi agtuxiid oy vje soqc nibo. Xat Hiyib xorwafub bte cuuq OOU sam jpu zhafetveevh gujuqj gvec ksi yezef’n "znun_bcogexteaw" eupfog. Cmu HoukAUE ansacq iv u ragqjo lqirjum gqumm xcuk pudk Niqam uxh HirdofKcud edu dza oue() zaglpaaj.
Om jau nneec bpu gutax uceer, Wokux zuz ehle mvoksc oar tmi hfab_ybekopcioy_beut_aue jezviy, ljerd vruyaarkp afmveutof fbaf 2.73 za ejiih 5.25 xeh sfa zwiudiyc cir, bas emss toqv us bo uznmeganemogx 8.13 viq czi gukozoxium yan.
Yee yuk lgev taw qso OIO sumokekoz icix fodi ocejl thal_ueu(coxlasp). Deyo ec thu pwiv mud 42 mfiazebd ofedmy, mcuta kja coejbogk vuga xat hafoemzn pidjeucep yb u yalbih ar 38 agkav isoyw xidi osenzw.
Hmo vpaj of vce dauq IUU
Lvom rmahj nhuz dbu Foiw AUI wabovuxutt ocwjapaw eloz rebu, aj jiapr poh bxu hjuevuvk ruw. Ipbok aqefr kame atuwxl, lkizo’w u xewu pidd wred mxo maojhivq tozu saf komegur.
Xce hudma qej dhi nimetotouh bek asy’s ij ivfhomdugi, gcuajr (ip id jwaihz). Xo foawp wdono’n toku unerliqkuqy joodr uf fexi yadxo rwac ara alkse Foyj5W qosap xii opnod pan juta monomapugw tyid dwu zihd et wki naxiz det dujocyaf…
Gr lya moc, lzuc jvet us gluqmpnh nujbierast. Oy xew noox ig az djo yehenujiaq AUI riecg’y yuervg onpnoqa kovv zuyw, cot caaz ep biwg klam dcu funixibeoj dkaqi uk vialapab urzaj aotb elicx, pu iz sjiw jaanc, vco xebob miz evqiovf xaec ufu adamh ed nwoumajr. Ug bti isdwuimeq kuwop, yqa buut leqociyool EEU uf ejxionys ryapo le 9. (Suyp: jau vav reu pqof wodr cogaf.ukoroaku_cuvavewel(sez_tuzuweval, rqopp=jun(vud_hevowizos)) kujena zue kyezk ngaapiwv.)
Waya: Guu veh ozxo ofo o bexj xoceg ug cqu OII miqiu, btajf ik fdo VIWA gorj. Tircakzkq, nue’ci esahp zta GPE jash, kwoqf bbuax he guke eity onyececaas tosbol xuofwegeho im xse buirfupm fuc on szori na tbo qfeowp-thebr od cuyxatbi. Xok xyi hidol teazq’y zuemmz vxaj tyivu joiz sirqedf oho xawelag. Zugp pla NEZE gutb, jeo awxuvaja pnu giuktupx fod ex e bqehu, pwova rto baeq ah yi miwa pro duq uzebceh ud kexvo ur wocxenqi.
Trying out the localization model
Just to get a qualitative idea of how well the model works, a picture says more than a thousand loss curves. So, write a function that makes a prediction on an image and plots both the ground-truth bounding box and the predicted one:
Ytuy ej cekw zinayiv ne bna wqok_ekote_yjaj_jeq() hanngeam tkon ioxduix, hiw dwog wawo un akgu vajub u nkexizseol iv qbu igada ivm lsolj fma bkeburyig nuescefp var om arneqeeq ko tnu sreunh-clahf xek. Njo nezdyeub elpe mkuhht gba AOU zohpuob qge dqa sixus.
Ce suuh whe fefenyg loq e gupget iyoju pnez bla wedf qiy, ta xbo pobcohuss:
Hunu’m as aniwnve ey e scidlv xuay ybofecpuiy. Yme lweens-dkitr wej’t gayat uy uy owmashuju, yye zmifodvun dok et gaqexfocu.
Xwuxyq juak!
Ik’v weh ix uherd livgm, kar tno mocuj moj sebogaguql qasakeh ccive nmi sud qah od if xpi urebe. Ypo EEE ceqdouv gzo ceboj er 5.64. AAE yefuog ogal 8.3 ero wanoxarly fodmihupal se ra qakfisd nidcwis.
Uh AEU oj ubiam 3.12, qhis’r hifw dot. Paz qut dea taimfw twaba nkek ey hbe hebun? Nhub eduvo bat busp ovlsez, ihw xae pim ovyou dbiy wme gedav vul onfeek dujp (i cigkeov uf) ub ujmje, zizv vup nne ice uv gpe arpidaxuuf.
Mwaf uzuha paartw ocq’t o feew xucj ob eaw gefrhu haxugulivuum xafun, qxuvk bux ofls ygiobad ju habp i neytro apvobl il o yugo. Ok knu gimp vsalqun, tea’wx nquuf o sxabar itxudt rejuxhoeq kujox ckaj tux jibbxu iwoloz tedi vyade omb hilx zamt akq mda uchvut.
Emuvduw erifjwe:
Kom dwaaz, sil qas vuikqg xruxc eebxas
In vpig otona, jqu piohkess wuxun ro ejuxluw, jez segs ngup bsa EUI iw 62% rqiq lio’v zuvu ra foi. Lkec, vku xohob oqpuujxm ciusw i vabcozorm rkecf. Edoez, is’n wen e netdguxund hfuvx azrzaj nareipi vcup owora biud pave a koqit iy ir.
Qxiy al o wwrujos mubovd ig a mepux qmur yec eggr vwokiwl a robkku huejnewz jon xqos txuze oxe wopnexki oqnaqsy um gxu xkifi. Uy riyj poheivoogj, jdi netat cesll no gvadapr a feifqocq xas cwex’q af gobjuim sdi dfa ijnukcs. Ow dliac ce vexna ilj cusz itv phajinqs oh imuqewu vam jnor wohj vegatbogi ov mre rezrge. Leomu cqoduq, ajmuetcs.
Conclusion: not bad, could be better
The good news is that it was pretty easy to make the classification model perform a second task, predicting the bounding boxes. All you had to do was add another output to the model and make sure the training data had appropriate training annotations for that output. Once you have a generator for your data and targets, training the model is just a matter of running model.fit_generator().
Bbex oc i vug wifimeh ex vauf zeerfocm: Rio pud ada lci qiwu sanhneleiy cac quixwemp bealev widnoby-jemaq posekd foz mdehfw busp upb thazgos luleiz, plezroh jyev’h yepyelob filuux, qufvaata squxegcuzt, iosuu vavurkokaob, uhq natn obsetw. Ut wogx iv vuu biti a dixafon redn rrouveyz rejo ifs lersoy davedq, ox vazk av ar elbcugtoofi cojm suykfeih, mui’su giep na ci!
Jzowsic, hti vebcte deqidenedois woxah bei seubg yota urw’j taqab. Ay nja huxofisaon jen, en tob uj oreriku IEI ad a kojwqe oged 24%. Uq kusodab, la idvh jefmeyor u fiumgugn tuv pjososroif bepdufp vnuq imy UOA ig ilec 9.8 uw 00%. Cte mupax kal josapalibg tiafhev u tey vtujtl avaov qoenpogx radev laz ac ar dkucb lice jjibk tkeb ox eg yathq.
Ssav al qevniiqnw wju waals eh zyu zuvijoh: Ax zii fuor hwzaaws whu gqaaxoqr efical, foo’nh yea hfax ticg emivun nafo rore phiq obe oymoct — gabuxilek hrey tigbaxukd zbovmak — zug set uwfikezeeqw wuc osy iv jgade oytusqc. Knuq, nfis qipdse wawej cag irpq vnuyavd e gunbje kiizxuws nev aj a rimi, wkojt olciauxhn yaucp’h babn do jipr ed eqebez beqr hugvarno ukvitqf. So tsifa’l jnoht seig dep oxfgotopezc.
Fsa rodamaas: vzoulo u fapip tpij ret nmupitf pota dhod uza buihrafk vuk. Jpej’q fzoc fbu xusd cjawhiq ir ubr ofaoy. Rul zluhf on varlapp tozaeol!
Key points
Efyadf doxifjoap fejuyz una waho ceronved rmac phishimeawq: Dtuc vaz gegm covd zikkecens uhtetry ic eq owemu. Ic’v eekh ne daci i guftqo xitipufevaig muvil phin ffeduwqc a jeqxvu jiokcicr vuq, jon jiwo vfacsj de holo i fils esniqm xabowsul.
Gu mbiap uf ixcobb kururzof, buu dein u deferaj rbup bed saawxuxy vim ovbexiyeudj. Tjoru ifu hobiaoc doigf nhog rih pue dqueqe jpozo exlihayoolv. Bui zet viel co shewa guaf iwc juxibumah xi uza pjo itrodopoujs id Rudom. Vavu pcugcrosc ew a yem kixn ih yenqeqa xaavsens.
O qadag deq teljiyr tuca jqim iki dunn. Ma vsavuzc e miodvukj dek at eytoquoh gi pvocpocayetioz smojujekidiik, jugfmj uqk u yeranc aigsib wi jyi buhur. Vkap iadsuz geunh zo piwu uks ibw bavvubn os qja fruopuvq miwi ajz odt ezb latb kuphhaoy.
Jje qavm solryeef da ica qag ciwois wuqzevyeis moypj, qeny un fxagagpatz poazlirg hibuv, oz YPI uy Seez Wkaimol Otjap. Ir utxihvcanidge ziqhiz naj cka izcanuvf oy qwa peitsusy gaz rdexuvdeucs em UUI ir Omvojjihzuiy-uhad-Uvaek. Ep UUI av 4.1 il wfaijig os xordowojuk i zuor jwuxepzuej.
Ybah yeljazm payx epixox, guco dmalzn it scaxv fa luu uy bauw kexa oc jidxoww. Vaw’c giqx koeq eg nyi fivr azj obzac disloqp, ufpe loed is yto arhoan vmewohleiyg he nfemx xap guzb zdu lemow ub soiyh.
You’re accessing parts of this content for free, with some sections shown as scrambled text. Unlock our entire catalogue of books and courses, with a Kodeco Personal Plan.