{"id":54494,"date":"2019-12-27T00:00:00","date_gmt":"2019-12-26T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning"},"modified":"2020-02-18T14:02:30","modified_gmt":"2020-02-18T11:02:30","slug":"dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning","status":"publish","type":"post","link":"https:\/\/prohoster.info\/et\/blog\/news\/dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning","title":{"rendered":"Jedi tehnika konvolutsiooniliste v\u00f5rkude v\u00e4hendamiseks \u2014 pruning","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Jedi tehnika konvolutsiooniliste v\u00f5rkude v\u00e4hendamiseks \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/cca85b86c64843707a2167a7fed19867.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Ees on j\u00e4lle objektide tuvastamise \u00fclesanne. Prioriteet on t\u00f6\u00f6 kiirus vastuv\u00f5etava t\u00e4psuse juures. V\u00f5ta arhitektuur YOLOv3 ja \u00f5pi seda edasi. T\u00e4psus (mAp75) \u00fcle 0,95. Kuid l\u00e4biviimise kiirus on endiselt madal. Kurat. <\/p>\n<p><\/p>\n<p>T\u00e4na j\u00e4tame kvantiseerimise k\u00f5rvale. Ja allpool vaatame \u00fcle <strong>Mudeli k\u00e4rpimine<\/strong> \u2014 \u00fcleliigsete osade eemaldamine v\u00f5rgust, et kiirendada j\u00e4reldusi ilma t\u00e4psuse kaotuseta. Visuaalselt \u2014 kust, kui palju ja kuidas saab k\u00e4rpida. Uurime, kuidas seda k\u00e4sitsi teha ja kus saab automatiseerida. L\u00f5pus \u2014 reposoitor keras'ele.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"vvedenie\">Sissejuhatus<\/h3>\n<p><\/p>\n<p>Eelmises t\u00f6\u00f6kohas, Permi Macroscopis, omandasin harjumuse \u2014 alati j\u00e4lgida algoritmide t\u00e4itmise aega. Ja v\u00f5rgu t\u00f6\u00f6tlemise aega kontrolida alati adekvaatsuse filtri kaudu. Tavaliselt ei l\u00e4binud state-of-the-art tootmisest seda filtrit, mis viis mind k\u00e4rpimise juurde. <\/p>\n<p><\/p>\n<p>K\u00e4rpimine \u2014 vana teema, millest r\u00e4\u00e4giti <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=eZdOkDtYMoo\">Stanfordi loengutes<\/a><\/noindex> 2017. aastal. Peamine idee \u2014 treenitud v\u00f5rgu suuruse v\u00e4hendamine ilma t\u00e4psuse kaotuseta, eemaldades erinevaid s\u00f5lmu. K\u00f5lab vahvalt, aga harva kuulen selle rakendamisest. T\u00f5en\u00e4oliselt puuduvad rakendused, pole venekeelseid artikleid v\u00f5i arvavad k\u00f5ik, et k\u00e4rpimine on midagi uut ja vaikivad.<br \/>\nAga l\u00e4hme edasi uurima<\/p>\n<p><\/p>\n<h3 id=\"vzglyad-v-biologiyu\">Pilguheide bioloogiasse<\/h3>\n<p><\/p>\n<p>Mulle meeldib, kui s\u00fcva\u00f5ppes saavad inspiratsiooni ideed bioloogiast. Neile, nagu ka evolutsioonile, v\u00f5ib toetuda (ja kas teadsid, et ReLU sarnaneb v\u00e4ga <noindex><a rel=\"nofollow\" href=\"http:\/\/www.gatsby.ucl.ac.uk\/~lmate\/biblio\/dayanabbott.pdf\">aju neuronite aktiveerimisfunktsiooniga<\/a><\/noindex>?) <\/p>\n<p><\/p>\n<p>Mudeli k\u00e4rpimise protsess on samuti seotud bioloogiaga. V\u00f5rgu reaktsiooni saab v\u00f5rrelda aju plastilisusega. M\u00f5ned huvitavad n\u00e4ited on raamatus <noindex><a rel=\"nofollow\" href=\"https:\/\/www.litres.ru\/norman-doydzh\/plastichnost-mozga\/?utm_medium=cpc&amp;utm_source=google&amp;utm_campaign=DSA%7C149839530&amp;utm_term=&amp;utm_content=k50id%7Caud-499675211712%3Adsa-179513627318%7Ccid%7C149839530%7Caid%7C248455294996%7Cgid%7C6837176850%7Cpos%7C1t1%7Csrc%7Cg_%7Cdvc%7Cc%7Creg%7C1011993%7Crin%7C%7C&amp;k50id=6837176850%7Caud-499675211712%3Adsa-179513627318&amp;gclid=Cj0KCQiA0ZHwBRCRARIsAK0Tr-oKPqkmL7_Oxg62JZO8Jlk9zO-9nYKIRFxHi_lgoCvsQQadvUGxUzkaApgpEALw_wcB\">Norman Doidge<\/a><\/noindex>:<\/p>\n<p><\/p>\n<ol>\n<li>Naisel, kes s\u00fcndis ainult \u00fche poolega, p\u00f6\u00f6ras aju ennast \u00fcmber, et t\u00e4ita puudumise poole funktsioone<\/li>\n<li>Noormees lasi endal maha osa ajust, mis vastutas n\u00e4gemise eest. Aja jooksul v\u00f5tsid teised ajupiirkonnad need funktsioonid enda kanda. (ei proovi korrata)<\/li>\n<\/ol>\n<p><\/p>\n<p>Nii saab ka teie mudelist eemaldada osa n\u00f5rgemaid konvolutsioone. \u00c4\u00e4rmisel juhul aitavad j\u00e4\u00e4nud konvolutsioonid asendada eemaldatud osi. <\/p>\n<p><\/p>\n<h3 id=\"lyubish-transfer-learning-ili-uchish-s-nulya\">Kas armastad \u00fclekandmist \u00f5ppimist v\u00f5i \u00f5pid nullist?<\/h3>\n<p><\/p>\n<p><strong>Variant number \u00fcks.<\/strong> Sa kasutad Transfer Learning und Yolov3, Retina, Mask-RCNN v\u00f5i U-Net. Kuid sagedamini ei ole meil vaja tuvastada 80 objekti kategooriat nagu COCO-s. Minu praktikas piirduvad asjad 1-2 klassiga. V\u00f5ib arvestada, et 80 klassi arhitektuur on siin \u00fclearune. Tekkib m\u00f5te, et arhitektuuri tuleks v\u00e4hendada. Samal ajal tahaksin seda teha ilma olemasolevate eel\u00f5ppete kaalude kaotamata.<\/p>\n<p><\/p>\n<p><strong>Variant number kaks.<\/strong> V\u00f5ib-olla on sul palju andmeid ja arvutusressursse v\u00f5i vajad lihtsalt superkohandatud arhitektuuri. Pole vahet. Aga sa \u00f5petad v\u00f5rku nullist. Tavaline j\u00e4rjekord on - vaatame andmestruktuuri, valime \u00fcleliigse v\u00f5imsuse arhitektuuri ja maksimeerime dropout'ide abil \u00fcle\u00f5ppimise kaitset. Olen n\u00e4inud dropout'e 0.6, Karl. <\/p>\n<p><\/p>\n<p>M\u00f5lemal juhul saab v\u00f5rku v\u00e4hendada. Motivatsioon on olemas. N\u00fc\u00fcd liigume v\u00e4lja selgitama, mis asi on prune.<\/p>\n<p><\/p>\n<h3 id=\"obschiy-algoritm\">\u00dcldine algoritm<\/h3>\n<p><\/p>\n<p>Oleme otsustanud, et saame eemaldada konvolutsioonid. See n\u00e4eb v\u00e4lja \u00fcsna lihtne:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedi tehnika konvolutsiooniliste v\u00f5rkude v\u00e4hendamiseks \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/1c01fa318d08550c9738c88d52e36b2d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Iga konvolutsiooni eemaldamine on v\u00f5rgu jaoks stress, mis tavaliselt toob kaasa teatud t\u00f5usu veas. \u00dchest k\u00fcljest on see veat\u00f5us n\u00e4itaja, kui \u00f5igesti me konvolutsioone eemaldame (nt suur t\u00f5us n\u00e4itab, et me teeme midagi valesti). Kuid v\u00e4ike t\u00f5us on t\u00e4iesti lubatav ja tihti kaob see hilisema kerge t\u00e4iend\u00f5ppega v\u00e4ikese LR-iga. Lisame t\u00e4iend\u00f5ppe sammu:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedi tehnika konvolutsiooniliste v\u00f5rkude v\u00e4hendamiseks \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/d51df9606d65fd4e7e80209743f761c3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd peame aru saama, millal tahame meie LearningPruning ts\u00fcklit l\u00f5petada. Siin v\u00f5ivad olla eksootilised v\u00f5imalused, kui me peame v\u00f5rku v\u00e4hendama kindla suuruse ja t\u00f6\u00f6tlemiskiiruseni (nt mobiilseadmete jaoks). Kuid k\u00f5ige sagedasem variant on j\u00e4tkata ts\u00fcklit, kuni viga \u00fcletab lubatud taseme. Lisame tingimuse:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedi tehnika konvolutsiooniliste v\u00f5rkude v\u00e4hendamiseks \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/9032018847833b54402124a29d3acbb1.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nii et algoritm muutub selgeks. J\u00e4\u00e4b selgeks teha, kuidas m\u00e4\u00e4rata eemaldatavad konvolutsioonid.<\/p>\n<p><\/p>\n<h3 id=\"poisk-udalyaemyh-svertok\">Eemaldatavate konvolutsioonide otsimine<\/h3>\n<p><\/p>\n<p>\u041d\u0430\u043c \u043d\u0443\u0436\u043d\u043e \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u043a\u0430\u043a\u0438\u0435-\u0442\u043e \u0441\u0432\u0435\u0440\u0442\u043a\u0438. \u0420\u0432\u0430\u0442\u044c\u0441\u044f \u043d\u0430\u043f\u0440\u043e\u043b\u043e\u043c \u0438 &#171;\u043e\u0442\u0441\u0442\u0440\u0435\u043b\u0438\u0432\u0430\u0442\u044c&#187; \u043b\u044e\u0431\u044b\u0435 \u2014 \u043f\u043b\u043e\u0445\u0430\u044f \u0438\u0434\u0435\u044f, \u0445\u043e\u0442\u044c \u0438 \u0431\u0443\u0434\u0435\u0442 \u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c. \u041d\u043e \u0440\u0430\u0437 \u0435\u0441\u0442\u044c \u0433\u043e\u043b\u043e\u0432\u0430, \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u0443\u043c\u0430\u0442\u044c \u0438 \u043f\u043e\u043f\u044b\u0442\u0430\u0442\u044c\u0441\u044f \u0432\u044b\u0434\u0435\u043b\u0438\u0442\u044c \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0435\u043d\u0438\u044f &#171;\u0441\u043b\u0430\u0431\u044b\u0435&#187; \u0441\u0432\u0435\u0440\u0442\u043a\u0438. \u0412\u0430\u0440\u0438\u0430\u043d\u0442\u043e\u0432 \u0435\u0441\u0442\u044c \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e:<\/p>\n<p><\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/openreview.net\/pdf?id=rJqFGTslg\">V\u00e4ikseim L1-meetod v\u00f5i low_magnitude_pruning<\/a><\/noindex>. Idee, mis \u00fctleb, et v\u00e4ikese kaaluv\u00e4\u00e4rtusega konvolutsioonid annavad v\u00e4ikese panuse l\u00f5ppotsuse langetamisse. <\/li>\n<li>V\u00e4ikseim L1-meetod, arvestades keskmist ja standardh\u00e4lvet. T\u00e4iendame hindamise iseloomuga jaotuse.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/arxiv.org\/abs\/1512.08571\">Kooridneerimise peitmine ja v\u00e4hem m\u00f5juvatest tulemustest loobumine<\/a><\/noindex>. T\u00e4psem m\u00e4\u00e4ramine v\u00e4heolulistest koondustest, kuid aegan\u00f5udev ja ressursimahukas. <\/li>\n<li>Teised <\/li>\n<\/ol>\n<p><\/p>\n<p>Iga variandil on oma elu\u00f5igus ja rakenduse erip\u00e4rad. Siin vaatleme varianti, millel on madalaim L1-m\u00f5\u00f5t.<\/p>\n<p><\/p>\n<h3 id=\"ruchnoy-process-dlya-yolov3\">K\u00e4sitsi protsess YOLOv3 jaoks<\/h3>\n<p><\/p>\n<p>T\u00f5hususe arhitektuur sisaldab j\u00e4\u00e4kplokke. Kuid kuigi need on s\u00fcgavate v\u00f5rkude jaoks t\u00f5husad, v\u00f5ivad nad meile segadust tekitada. Probleem on selles, et nendes kihtides ei saa eemaldada erinevate indeksitega koondusi:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedi tehnika konvolutsiooniliste v\u00f5rkude v\u00e4hendamiseks \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/d516ab886a28d62a34e6a934fdd62c12.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Seega eristame kihti, millest saame koondusi vabalt eemaldada:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedi tehnika konvolutsiooniliste v\u00f5rkude v\u00e4hendamiseks \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/f9b69d9900d641e1d5835db9cc749189.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00fc\u00fcd loome t\u00f6\u00f6ts\u00fckli:<\/p>\n<p><\/p>\n<ol>\n<li>Eksportime aktiveerimised<\/li>\n<li>Hinnake, kui palju on vaja sisse l\u00f5igata <\/li>\n<li>L\u00f5ikame v\u00e4lja<\/li>\n<li>Koolitame 10 epohhi LR=1e-4 <\/li>\n<li>Testime <\/li>\n<\/ol>\n<p><\/p>\n<p>Koonduste eksportimine on kasulik, et hinnata, kui suurt osa saame kindlal sammul eemaldada. Eksportimise n\u00e4idised:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedi tehnika konvolutsiooniliste v\u00f5rkude v\u00e4hendamiseks \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/cd8202e6ce1aa0cc59fbdc4bd8562427.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>N\u00e4eme, et praktiliselt igal pool on 5% koondustest v\u00e4ga madala L1-normiga ja saame need eemaldada. Igal sammul kordus selline eksport ja tehti hinnang, millistest kihtidest ja kui palju on v\u00f5imalik eemaldada. <\/p>\n<p><\/p>\n<p>Kogu protsess mahtus 4 sammu (siin ja igal pool numbrid RTX 2060 Super jaoks):<\/p>\n<p><\/p>\n<table>\n<thead>\n<tr>\n<th>suudab t\u00e4ielikult eemaldada k\u00f5ik failid, mis asuvad kohaliku hoidla versioonis<\/th>\n<th>mAp75<\/th>\n<th>Parameetrite arv, mln<\/th>\n<th>V\u00f5rgu suurus, mb<\/th>\n<th>Algse, %<\/th>\n<th>Jooksuaeg, ms<\/th>\n<th>L\u00f5ikamise tingimus<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>0<\/td>\n<td>0.9656<\/td>\n<td>60<\/td>\n<td>241<\/td>\n<td>100<\/td>\n<td>180<\/td>\n<td>\u2014<\/td>\n<\/tr>\n<tr>\n<td>1<\/td>\n<td>0.9622<\/td>\n<td>55<\/td>\n<td>218<\/td>\n<td>91<\/td>\n<td>175<\/td>\n<td>5% k\u00f5igist<\/td>\n<\/tr>\n<tr>\n<td>2<\/td>\n<td>0.9625<\/td>\n<td>50<\/td>\n<td>197<\/td>\n<td>83<\/td>\n<td>168<\/td>\n<td>5% k\u00f5igist<\/td>\n<\/tr>\n<tr>\n<td>3<\/td>\n<td>0.9633<\/td>\n<td>39<\/td>\n<td>155<\/td>\n<td>64<\/td>\n<td>155<\/td>\n<td>15% kihtidest, kus on 400+ koondust<\/td>\n<\/tr>\n<tr>\n<td>4<\/td>\n<td>0.9555<\/td>\n<td>31<\/td>\n<td>124<\/td>\n<td>51<\/td>\n<td>146<\/td>\n<td>10% kihtidest, kus on 100+ koondust<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><\/p>\n<p>Teise sammu jooksul lisandus \u00fcks positiivne efekt \u2014 m\u00e4lu suutis mahutada bat\u0161i suurusega 4, mis kiirendas t\u00e4iendamisprotsessi oluliselt.<br \/>\nNeljandas etapis peatus protsess, kuna isegi pikem t\u00e4iendamine ei t\u00f5stnud mAp75 vanade v\u00e4\u00e4rtusteni.<br \/>\nKokkuv\u00f5ttes \u00f5nnestus kiirendada j\u00e4relevalvet <strong>15%<\/strong>, v\u00e4hendada suurust<strong> 35% <\/strong>ja mitte kaotada t\u00e4psuses. <\/p>\n<p><\/p>\n<h3 id=\"avtomatizaciya-dlya-bolee-prostyh-arhitektur\">Automatiseerimine lihtsama arhitektuuri jaoks<\/h3>\n<p><\/p>\n<p>Lihtsate v\u00f5rguarhitektuuride (ilma tingimuslike add, concat ja j\u00e4\u00e4kblokkideta) puhul on v\u00f5imalik t\u00f6\u00f6tlemine k\u00f5ikide koonduskihtide peal ning protsessi automatiseerimine.<\/p>\n<p><\/p>\n<p>Selle variandi rakendasin <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/PaginDm\/keras-L1-pruning\">siin<\/a><\/noindex>.<br \/>\nK\u00f5ik on lihtne: teilt on vaja ainult kaotuse funktsiooni, optimeerijat ja bat\u0161i genereerijaid:<\/p>\n<p><\/p>\n<pre><code class=\"python\">import pruning\nfrom keras.optimizers import Adam\nfrom keras.utils import Sequence\n\ntrain_batch_generator = BatchGenerator...\nscore_batch_generator = BatchGenerator...\n\nopt = Adam(lr=1e-4)\npruner = pruning.Pruner(\"config.json\", \"categorical_crossentropy\", opt)\n\npruner.prune(train_batch, valid_batch)<\/code><\/pre>\n<p><\/p>\n<p>Vajadusel saab konfigureerimise parameetreid muuta:<\/p>\n<p><\/p>\n<pre><code class=\"json\">{\n    \"input_model_path\": \"model.h5\",\n    \"output_model_path\": \"model_pruned.h5\",\n    \"finetuning_epochs\": 10, # epohide arvu, mis treenivad k\u00e4rpimise sammu vahel\n    \"stop_loss\": 0.1, # kaotus peatamiseks\n    \"pruning_percent_step\": 0.05, # osa konvolutsioonidest, mis kustutatakse igal k\u00e4rpimise sammul\n    \"pruning_standart_deviation_part\": 0.2 # nihke m\u00e4\u00e4ramine k\u00e4rpimise osale\n}<\/code><\/pre>\n<p><\/p>\n<p>\u0414\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e \u0440\u0435\u0430\u043b\u0438\u0437\u043e\u0432\u0430\u043d\u043e \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0435\u043d\u0438\u0435 \u043d\u0430 \u043e\u0441\u043d\u043e\u0432\u0430\u043d\u0438\u0438 \u0441\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u043d\u043e\u0433\u043e \u043e\u0442\u043a\u043b\u043e\u043d\u0435\u043d\u0438\u044f. \u0426\u0435\u043b\u044c \u2014 \u043e\u0433\u0440\u0430\u043d\u0438\u0447\u0438\u0442\u044c \u0447\u0430\u0441\u0442\u044c \u0443\u0434\u0430\u043b\u044f\u0435\u043c\u044b\u0445, \u0438\u0441\u043a\u043b\u044e\u0447\u0430\u044f \u0441\u0432\u0435\u0440\u0442\u043a\u0438 \u0441 \u0443\u0436\u0435 &#171;\u0434\u043e\u0441\u0442\u0430\u0442\u043e\u0447\u043d\u044b\u043c\u0438&#187; L1-\u043c\u0435\u0440\u0430\u043c\u0438:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedi tehnika konvolutsiooniliste v\u00f5rkude v\u00e4hendamiseks \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/c2733d01a4d5b6e9a97a1e683d87ff45.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nii v\u00f5imaldame eemaldada ainult n\u00f5rkade konvolutsioonide distributsioone, mis on sarnased paremale, ja mitte m\u00f5jutada eemaldamist distributsioonidest, mis on sarnased vasakule:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedi tehnika konvolutsiooniliste v\u00f5rkude v\u00e4hendamiseks \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/a9c9bee6322d268026ffb6713fc0bc86.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Jaotuste l\u00e4henedes normaalsele jaotusest, saab k\u00e4rpimise standardh\u00e4lbe osa sobitada j\u00e4rgmiselt:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedi tehnika konvolutsiooniliste v\u00f5rkude v\u00e4hendamiseks \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/efee3eda6b8263de42e8f52541a3e949.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nSoovitan lubada 2 sigmat. V\u00f5i ei pruugi sellele omadusele tugineda, j\u00e4ttes v\u00e4\u00e4rtuse &lt; 1.0.<\/p>\n<p><\/p>\n<p>Tulemuseks on graafik v\u00f5rgu suurusest, kadudest ja v\u00f5rgu t\u00f6\u00f6aja graafik kogu testi jooksul, normeeritud tasemele 1.0. N\u00e4iteks siin oli v\u00f5rgu suurust v\u00e4hendatud peaaegu kaks korda ilma kvaliteedi kadumiseta (v\u00e4ike konvolutsiooniv\u00f5rk 100k kaalu jaoks):<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedi tehnika konvolutsiooniliste v\u00f5rkude v\u00e4hendamiseks \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/1048ac38b12c753e54c8d8a2dc1dc394.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>T\u00f6\u00f6tlemise kiirus on tavalistele k\u00f5ikumistele alluv ja praktiliselt ei muutunud. Sellel on seletus:<\/p>\n<p><\/p>\n<ol>\n<li>Konvolutsioonide arv muutub mugavast (32, 64, 128) ebamugavateks videokaartidel \u2014 27, 51 jne. Siin v\u00f5in eksida, kuid t\u00f5en\u00e4oliselt m\u00f5jutab see.<\/li>\n<li>Arhitektuur ei ole lai, vaid j\u00e4rjestikune. Laiuse v\u00e4hendamisel ei muuda me s\u00fcgavust. Nii v\u00e4hendame koormust, kuid ei muuda kiirus.<\/li>\n<\/ol>\n<p><\/p>\n<p>Seet\u00f5ttu v\u00e4ljendus t\u00e4iustamine CUDA koormuse v\u00e4henemises t\u00f6\u00f6tlusel 20-30%, kuid mitte t\u00f6\u00f6tlemise aja v\u00e4henemises.<\/p>\n<p><\/p>\n<h3 id=\"itogi\">Summary<\/h3>\n<p><\/p>\n<p>M\u00f5elgem veidi. Vaatasime kahte k\u00e4rpimise varianti \u2014 YOLOv3 jaoks (kui tuleb k\u00e4sitsi t\u00f6\u00f6tada) ja v\u00f5rke lihtsama arhitektuuriga. N\u00e4htavalt on m\u00f5lemal juhul v\u00f5imalik saavutada v\u00f5rgu suuruse ja kiiruseta arvutamise v\u00e4henemist t\u00e4psuse kaotamata. Tulemused:<\/p>\n<p><\/p>\n<ul>\n<li>Suuruse v\u00e4henemine<\/li>\n<li>T\u00f6\u00f6tluse kiirus<\/li>\n<li>CUDA koormuse v\u00e4henemine<\/li>\n<li>Seet\u00f5ttu \u00f6koloogilisus (Optimeerime tulevikus arvutusressursside kasutamist. Kusagil r\u00f5\u00f5mustab \u00fcks <noindex><a rel=\"nofollow\" href=\"https:\/\/meduza.io\/feature\/2019\/12\/12\/kto-takaya-greta-tunberg-i-pochemu-ona-stala-chelovekom-goda-zhurnal-time\">Greta Thunberg<\/a><\/noindex>)<\/li>\n<\/ul>\n<p><\/p>\n<h3 id=\"appendix\">Lisa<\/h3>\n<p><\/p>\n<ul>\n<li>P\u00e4rast k\u00e4rpimise sammu saab edendada ja kvantimist (n\u00e4iteks TensorRT-ga)<\/li>\n<li>Tensorflow pakub v\u00f5imalusi <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tensorflow.org\/model_optimization\/guide\/pruning\/pruning_with_keras\">low_magnitude_pruning<\/a><\/noindex>. T\u00f6\u00f6tab.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/PaginDm\/keras-L1-pruning\">Repo<\/a><\/noindex> soovin edasi areneda ja oleksin t\u00e4nulik abi eest<\/li>\n<\/ul>\n<p>Allikas: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/482050\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041f\u0435\u0440\u0435\u0434 \u0442\u043e\u0431\u043e\u0439 \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u0434\u0430\u0447\u0430 \u0434\u0435\u0442\u0435\u043a\u0442\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432. \u041f\u0440\u0438\u043e\u0440\u0438\u0442\u0435\u0442 \u2014 \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u0440\u0430\u0431\u043e\u0442\u044b \u043f\u0440\u0438 \u043f\u0440\u0438\u0435\u043c\u043b\u0435\u043c\u043e\u0439 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438. \u0411\u0435\u0440\u0435\u0448\u044c \u0430\u0440\u0445\u0438\u0442\u0435\u043a\u0442\u0443\u0440\u0443 YOLOv3 \u0438 \u0434\u043e\u043e\u0431\u0443\u0447\u0430\u0435\u0448\u044c. \u0422\u043e\u0447\u043d\u043e\u0441\u0442\u044c(mAp75) \u0431\u043e\u043b\u044c\u0448\u0435 0.95. \u041d\u043e \u0441\u043a\u043e\u0440\u043e\u0441\u0442\u044c \u043f\u0440\u043e\u0433\u043e\u043d\u0430 \u0432\u0441\u0451 \u0435\u0449\u0435 \u043d\u0438\u0437\u043a\u0430\u044f. \u0427\u0435\u0440\u0442. \u0421\u0435\u0433\u043e\u0434\u043d\u044f \u043e\u0431\u043e\u0439\u0434\u0451\u043c \u0441\u0442\u043e\u0440\u043e\u043d\u043e\u0439 \u043a\u0432\u0430\u043d\u0442\u0438\u0437\u0430\u0446\u0438\u044e. \u0410 \u043f\u043e\u0434 \u043a\u0430\u0442\u043e\u043c \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c Model Pruning \u2014 \u043e\u0431\u0440\u0435\u0437\u0430\u043d\u0438\u0435 \u0438\u0437\u0431\u044b\u0442\u043e\u0447\u043d\u044b\u0445 \u0447\u0430\u0441\u0442\u0435\u0439 \u0441\u0435\u0442\u0438 \u0434\u043b\u044f \u0443\u0441\u043a\u043e\u0440\u0435\u043d\u0438\u044f Inference \u0431\u0435\u0437 \u043f\u043e\u0442\u0435\u0440\u0438 \u0442\u043e\u0447\u043d\u043e\u0441\u0442\u0438. \u041d\u0430\u0433\u043b\u044f\u0434\u043d\u043e \u2014 \u043e\u0442\u043a\u0443\u0434\u0430, \u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0438 \u043a\u0430\u043a [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-54494","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041f\u0435\u0440\u0435\u0434 \u0442\u043e\u0431\u043e\u0439 \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u0434\u0430\u0447\u0430.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/et\/blog\/news\/dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"et_EE\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0414\u0436\u0435\u0434\u0430\u0439\u0441\u043a\u0430\u044f \u0442\u0435\u0445\u043d\u0438\u043a\u0430 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0440\u0442\u043e\u0447\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \u2014 pruning | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041f\u0435\u0440\u0435\u0434 \u0442\u043e\u0431\u043e\u0439 \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u0434\u0430\u0447\u0430.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/et\/blog\/news\/dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2019-12-26T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:02:30+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Jedi tehnika konvolutsiooniv\u00f5rkude v\u00e4hendamiseks \u2014 k\u00e4rpimine | ProHoster","description":"Sinu ees on j\u00e4lle \u00fclesanne.","canonical_url":"https:\/\/prohoster.info\/et\/blog\/news\/dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"et_EE","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0414\u0436\u0435\u0434\u0430\u0439\u0441\u043a\u0430\u044f \u0442\u0435\u0445\u043d\u0438\u043a\u0430 \u0443\u043c\u0435\u043d\u044c\u0448\u0435\u043d\u0438\u044f \u0441\u0432\u0435\u0440\u0442\u043e\u0447\u043d\u044b\u0445 \u0441\u0435\u0442\u0435\u0439 \u2014 pruning | ProHoster","og:description":"\u041f\u0435\u0440\u0435\u0434 \u0442\u043e\u0431\u043e\u0439 \u0441\u043d\u043e\u0432\u0430 \u0437\u0430\u0434\u0430\u0447\u0430.","og:url":"https:\/\/prohoster.info\/et\/blog\/news\/dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2019-12-26T21:00:00+00:00","article:modified_time":"2020-02-18T11:02:30+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"54494","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":"2026-01-24 11:34:22","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:29:04","updated":"2026-01-24 11:34:22","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/54494","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/comments?post=54494"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/posts\/54494\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/media?parent=54494"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/categories?post=54494"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/et\/wp-json\/wp\/v2\/tags?post=54494"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}