{"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\/cs\/blog\/news\/dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning","title":{"rendered":"Jedi technika sni\u017eov\u00e1n\u00ed konvolu\u010dn\u00edch s\u00edt\u00ed \u2014 pruning","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Jedi technika sni\u017eov\u00e1n\u00ed konvolu\u010dn\u00edch s\u00edt\u00ed \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/cca85b86c64843707a2167a7fed19867.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u0159ed v\u00e1mi je op\u011bt \u00fakol detekce objekt\u016f. Prioritou je rychlost pr\u00e1ce p\u0159i p\u0159ijateln\u011b p\u0159esn\u00e9 detekci. Berete architekturu YOLOv3 a d\u00e1le ji tr\u00e9nujete. P\u0159esnost (mAp75) je vy\u0161\u0161\u00ed ne\u017e 0,95. Ale rychlost zpracov\u00e1n\u00ed je st\u00e1le n\u00edzk\u00e1. Sakra. <\/p>\n<p><\/p>\n<p>Dnes se vyhneme kvantizaci. A pod \u010dl\u00e1nkem si probereme <strong>O\u0159ez\u00e1v\u00e1n\u00ed modelu<\/strong> \u2014 odstran\u011bn\u00ed nadbyte\u010dn\u00fdch \u010d\u00e1st\u00ed s\u00edt\u011b pro urychlen\u00ed inference bez ztr\u00e1ty p\u0159esnosti. P\u0159ehledn\u011b \u2014 odkud, kolik a jak lze vy\u0159\u00edznout. Probereme, jak to ud\u011blat ru\u010dn\u011b a kde je mo\u017en\u00e9 to automatizovat. Na z\u00e1v\u011br \u2014 repozit\u00e1\u0159 na keras.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3 id=\"vvedenie\">\u00davod<\/h3>\n<p><\/p>\n<p>Na p\u0159edchoz\u00edm m\u00edst\u011b pr\u00e1ce, v Permu v Macroscopu, jsem si vytvo\u0159il jednu zvyk \u2014 v\u017edy sledovat dobu prov\u00e1d\u011bn\u00ed algoritm\u016f. A dobu zpracov\u00e1n\u00ed s\u00edt\u00ed v\u017edy kontrolovat prost\u0159ednictv\u00edm filtru adekv\u00e1tnosti. Obvykle state-of-the-art v produkci tento filtr neproch\u00e1zej\u00ed, co\u017e m\u011b p\u0159ivedlo k o\u0159ez\u00e1v\u00e1n\u00ed. <\/p>\n<p><\/p>\n<p>O\u0159ez\u00e1v\u00e1n\u00ed \u2014 t\u00e9ma star\u00e9, o kter\u00e9 se mluvilo na <noindex><a rel=\"nofollow\" href=\"https:\/\/www.youtube.com\/watch?v=eZdOkDtYMoo\">stanfordsk\u00fdch p\u0159edn\u00e1\u0161k\u00e1ch<\/a><\/noindex> v roce 2017. Hlavn\u00ed my\u0161lenkou je sn\u00ed\u017een\u00ed velikosti nau\u010den\u00e9 s\u00edt\u011b bez ztr\u00e1ty p\u0159esnosti odstran\u011bn\u00edm r\u016fzn\u00fdch uzl\u016f. Zn\u00ed to skv\u011ble, ale z\u0159\u00eddka sly\u0161\u00edm o jeho aplikaci. Pravd\u011bpodobn\u011b chyb\u00ed implementace, nen\u00ed dostatek \u010dl\u00e1nk\u016f v ru\u0161tin\u011b nebo si v\u0161ichni mysl\u00ed, \u017ee o\u0159ez\u00e1v\u00e1n\u00ed je know-how a ml\u010d\u00ed.<br \/>\nAle poj\u010fme to prozkoumat<\/p>\n<p><\/p>\n<h3 id=\"vzglyad-v-biologiyu\">Pohled do biologie<\/h3>\n<p><\/p>\n<p>Miluji, kdy\u017e se do Deep Learning dost\u00e1vaj\u00ed my\u0161lenky p\u0159ich\u00e1zej\u00edc\u00ed z biologie. Na n\u011b se d\u00e1 spolehnout, stejn\u011b jako na evoluci (v\u011bd\u011bl jsi, \u017ee ReLU je velmi podobn\u00e1 <noindex><a rel=\"nofollow\" href=\"http:\/\/www.gatsby.ucl.ac.uk\/~lmate\/biblio\/dayanabbott.pdf\">aktiva\u010dn\u00ed funkci neuron\u016f v mozku<\/a><\/noindex>?) <\/p>\n<p><\/p>\n<p>Proces o\u0159ez\u00e1v\u00e1n\u00ed modelu je tak\u00e9 bl\u00edzk\u00fd biologii. Reakci s\u00edt\u011b zde lze srovnat s plastickost\u00ed mozku. P\u00e1r zaj\u00edmav\u00fdch p\u0159\u00edklad\u016f je v knize <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\">Normana Doidge<\/a><\/noindex>:<\/p>\n<p><\/p>\n<ol>\n<li>Mozek \u017eeny, kter\u00e1 od narozen\u00ed m\u011bla pouze jednu polovinu, se s\u00e1m p\u0159eprogramoval na vykon\u00e1v\u00e1n\u00ed funkc\u00ed chyb\u011bj\u00edc\u00ed poloviny.<\/li>\n<li>Chlapec si vyst\u0159elil \u010d\u00e1st mozku, kter\u00e1 odpov\u00eddala za zrak. Postupem \u010dasu p\u0159evzaly jin\u00e9 \u010d\u00e1sti mozku tyto funkce. (zkou\u0161et neopakujeme)<\/li>\n<\/ol>\n<p><\/p>\n<p>Tak i z va\u0161eho modelu lze vy\u0159\u00edznout \u010d\u00e1st slab\u00fdch konvoluc\u00ed. V nouzov\u00e9m p\u0159\u00edpad\u011b zbyl\u00e9 konvoluce pomohou nahradit vy\u0159\u00edznut\u00e9. <\/p>\n<p><\/p>\n<h3 id=\"lyubish-transfer-learning-ili-uchish-s-nulya\">M\u00e1\u0161 r\u00e1d Transfer Learning nebo se u\u010d\u00ed\u0161 od nuly?<\/h3>\n<p><\/p>\n<p><strong>Varianta \u010d\u00edslo jedna.<\/strong> Pou\u017e\u00edv\u00e1\u0161 Transfer Learning na Yolov3, Retina, Mask-RCNN nebo U-Net. Ale v\u011bt\u0161inou nemus\u00edme rozpozn\u00e1vat 80 t\u0159\u00edd objekt\u016f, jako v COCO. V m\u00e9 praxi je to v\u011bt\u0161inou omezeno na 1-2 t\u0159\u00eddy. Lze p\u0159edpokl\u00e1dat, \u017ee architektura pro 80 t\u0159\u00edd je zde nadbyte\u010dn\u00e1. Napad\u00e1 m\u011b, \u017ee architekturu je t\u0159eba zmen\u0161it. R\u00e1d bych to ud\u011blal bez ztr\u00e1ty existuj\u00edc\u00edch p\u0159edtr\u00e9novan\u00fdch vah.<\/p>\n<p><\/p>\n<p><strong>Varianta \u010d\u00edslo dva.<\/strong> Mo\u017en\u00e1 m\u00e1\u0161 hodn\u011b dat a v\u00fdpo\u010detn\u00edch zdroj\u016f, nebo jen pot\u0159ebuje\u0161 vysoce p\u0159izp\u016fsobenou architekturu. Je to jedno. Ale tr\u00e9nuje\u0161 s\u00ed\u0165 od nuly. Obvykl\u00fd postup \u2014 pod\u00edv\u00e1me se na strukturu dat, vybereme nadbyte\u010dnou architekturu a sni\u017eujeme dropouty na p\u0159etr\u00e9nov\u00e1n\u00ed. Vid\u011bl jsem dropouty 0.6, Karle. <\/p>\n<p><\/p>\n<p>V obou p\u0159\u00edpadech lze s\u00ed\u0165 zmen\u0161ovat. Motivovali jsme se. Te\u010f se jdeme pod\u00edvat, co to je pruning.<\/p>\n<p><\/p>\n<h3 id=\"obschiy-algoritm\">Obecn\u00fd algoritmus<\/h3>\n<p><\/p>\n<p>Rozhodli jsme se, \u017ee m\u016f\u017eeme odstra\u0148ovat konvoluce. Vypad\u00e1 to velmi jednoduch\u011b:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedi technika sni\u017eov\u00e1n\u00ed konvolu\u010dn\u00edch s\u00edt\u00ed \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/1c01fa318d08550c9738c88d52e36b2d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Odstran\u011bn\u00ed jak\u00e9koli konvoluce je stres pro s\u00ed\u0165, kter\u00fd obvykle vede k ur\u010dit\u00e9mu n\u00e1r\u016fstu chyby. Na jedn\u00e9 stran\u011b tento n\u00e1r\u016fst chyby ukazuje, jak spr\u00e1vn\u011b odstra\u0148ujeme konvoluce (nap\u0159\u00edklad velk\u00fd n\u00e1r\u016fst nazna\u010duje, \u017ee d\u011bl\u00e1me n\u011bco \u0161patn\u011b). Ale mal\u00fd n\u00e1r\u016fst je docela p\u0159ijateln\u00fd a \u010dasto se odstran\u00ed n\u00e1sledn\u00fdm lehk\u00fdm dolad\u011bn\u00edm s mal\u00fdm LR. P\u0159id\u00e1v\u00e1me krok dolad\u011bn\u00ed:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedi technika sni\u017eov\u00e1n\u00ed konvolu\u010dn\u00edch s\u00edt\u00ed \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/d51df9606d65fd4e7e80209743f761c3.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Te\u010f pot\u0159ebujeme pochopit, kdy chceme zastavit n\u00e1\u0161 cyklus Learning&lt;-&gt;Pruning. Existuj\u00ed exotick\u00e9 mo\u017enosti, kdy mus\u00edme zmen\u0161it s\u00ed\u0165 na ur\u010ditou velikost a rychlost b\u011bhu (nap\u0159\u00edklad pro mobiln\u00ed za\u0159\u00edzen\u00ed). Nicm\u00e9n\u011b, nej\u010dast\u011bj\u0161\u00ed mo\u017enost\u00ed je pokra\u010dovat v cyklu, dokud chyba nep\u0159ekro\u010d\u00ed p\u0159ijatelnou \u00farove\u0148. P\u0159id\u00e1v\u00e1me podm\u00ednku:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedi technika sni\u017eov\u00e1n\u00ed konvolu\u010dn\u00edch s\u00edt\u00ed \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/9032018847833b54402124a29d3acbb1.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Tak\u017ee algoritmus se st\u00e1v\u00e1 jasn\u00fdm. Zb\u00fdv\u00e1 rozebrat, jak ur\u010dit odstra\u0148ovan\u00e9 konvoluce.<\/p>\n<p><\/p>\n<h3 id=\"poisk-udalyaemyh-svertok\">Hled\u00e1n\u00ed odstra\u0148ovan\u00fdch konvoluc\u00ed<\/h3>\n<p><\/p>\n<p>Mus\u00edme odstranit n\u011bkter\u00e9 svazky. Roztrh\u00e1vat je bez rozmyslu a \"st\u0159\u00edlet\" po v\u0161ech je \u0161patn\u00fd n\u00e1pad, i kdy\u017e to bude fungovat. Pokud v\u0161ak pou\u017eijeme hlavu, m\u016f\u017eeme p\u0159em\u00fd\u0161let a pokusit se vy\u010dlenit pro odstran\u011bn\u00ed \"slab\u00e9\" svazky. Mo\u017enost\u00ed je n\u011bkolik:<\/p>\n<p><\/p>\n<ol>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/openreview.net\/pdf?id=rJqFGTslg\">Nejmen\u0161\u00ed L1-metr nebo low_magnitude_pruning<\/a><\/noindex>. My\u0161lenka, \u017ee konvoluce s mal\u00fdmi hodnotami vah p\u0159isp\u00edvaj\u00ed jen m\u00e1lo k v\u00fdsledn\u00e9mu rozhodnut\u00ed. <\/li>\n<li>Nejmen\u0161\u00ed L1 metrika zohled\u0148uj\u00edc\u00ed pr\u016fm\u011br a sm\u011brodatnou odchylku. Dopl\u0148uje hodnocen\u00ed charakteru rozd\u011blen\u00ed.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/arxiv.org\/abs\/1512.08571\">Maskov\u00e1n\u00ed konvoluc\u00ed a vylou\u010den\u00ed nejm\u00e9n\u011b vlivn\u00fdch na kone\u010dnou p\u0159esnost.<\/a><\/noindex>. P\u0159esn\u011bj\u0161\u00ed ur\u010den\u00ed nev\u00fdznamn\u00fdch konvoluc\u00ed, ale zna\u010dn\u011b \u010dasov\u011b a zdrojov\u011b n\u00e1ro\u010dn\u00e9. <\/li>\n<li>Dal\u0161\u00ed <\/li>\n<\/ol>\n<p><\/p>\n<p>Ka\u017ed\u00e1 z variant m\u00e1 pr\u00e1vo na existenci a sv\u00e9 specifick\u00e9 proveden\u00ed. Zde se zam\u011b\u0159\u00edme na variantu s nejmen\u0161\u00ed L1 metrikou.<\/p>\n<p><\/p>\n<h3 id=\"ruchnoy-process-dlya-yolov3\">Ru\u010dn\u00ed proces pro YOLOv3.<\/h3>\n<p><\/p>\n<p>V p\u016fvodn\u00ed architektu\u0159e se nach\u00e1zej\u00ed zbytkov\u00e9 bloky. Ale a\u0165 jsou jak\u00e9koli komplikovan\u00e9 pro hlubok\u00e9 s\u00edt\u011b, pon\u011bkud n\u00e1m p\u0159ek\u00e1\u017eej\u00ed. Probl\u00e9m je v tom, \u017ee nelze odstra\u0148ovat konvoluce s r\u016fzn\u00fdmi indexy v t\u011bchto vrstv\u00e1ch:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedi technika sni\u017eov\u00e1n\u00ed konvolu\u010dn\u00edch s\u00edt\u00ed \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/d516ab886a28d62a34e6a934fdd62c12.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Proto vyprofilujeme vrstvy, ze kter\u00fdch m\u016f\u017eeme konvoluce svobodn\u011b odstra\u0148ovat:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedi technika sni\u017eov\u00e1n\u00ed konvolu\u010dn\u00edch s\u00edt\u00ed \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/f9b69d9900d641e1d5835db9cc749189.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Nyn\u00ed postav\u00edme pracovn\u00ed cyklus:<\/p>\n<p><\/p>\n<ol>\n<li>Extrahujeme aktivace.<\/li>\n<li>Odhadneme, kolik vy\u0159\u00edznout. <\/li>\n<li>Vy\u0159ez\u00e1v\u00e1me.<\/li>\n<li>U\u010d\u00edme 10 epoch s LR=1e-4. <\/li>\n<li>Testujeme. <\/li>\n<\/ol>\n<p><\/p>\n<p>Extrahov\u00e1n\u00ed konvoluc\u00ed je u\u017eite\u010dn\u00e9 pro vyhodnocen\u00ed, jakou \u010d\u00e1st m\u016f\u017eeme ur\u010dit\u00fdm krokem odstranit. P\u0159\u00edklady extrakce:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedi technika sni\u017eov\u00e1n\u00ed konvolu\u010dn\u00edch s\u00edt\u00ed \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/cd8202e6ce1aa0cc59fbdc4bd8562427.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Vid\u00edme, \u017ee t\u00e9m\u011b\u0159 v\u0161ude 5% konvoluc\u00ed m\u00e1 velmi n\u00edzkou L1 normu a m\u016f\u017eeme je odstranit. P\u0159i ka\u017ed\u00e9m kroku byla tato extrakce opakov\u00e1na a prov\u00e1d\u011bno hodnocen\u00ed, z jak\u00fdch vrstev a kolik m\u016f\u017eeme vy\u0159\u00edznout. <\/p>\n<p><\/p>\n<p>Cel\u00fd proces se ve\u0161el do 4 krok\u016f (tady a v\u0161ude jsou \u010d\u00edsla pro RTX 2060 Super):<\/p>\n<p><\/p>\n<table>\n<thead>\n<tr>\n<th>Krok<\/th>\n<th>mAp75<\/th>\n<th>Po\u010det parametr\u016f, mil.<\/th>\n<th>Velikost s\u00edt\u011b, mb.<\/th>\n<th>Od p\u016fvodn\u00ed, %<\/th>\n<th>Doba b\u011bhu, ms.<\/th>\n<th>Podm\u00ednka o\u0159ez\u00e1n\u00ed.<\/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>&#8212;<\/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% ze v\u0161ech.<\/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% ze v\u0161ech.<\/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% pro vrstvy s 400+ konvolucemi.<\/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% pro vrstvy s 100+ konvolucemi.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><\/p>\n<p>K 2. kroku p\u0159ibyl jeden pozitivn\u00ed efekt \u2014 do pam\u011bti se ve\u0161el batch-size 4, co\u017e zna\u010dn\u011b urychlilo proces dodate\u010dn\u00e9ho u\u010den\u00ed.<br \/>\nVe 4. kroku byl proces zastaven, proto\u017ee ani dlouh\u00e9 dodate\u010dn\u00e9 u\u010den\u00ed nezv\u00fd\u0161ilo mAp75 na star\u00e9 hodnoty.<br \/>\nNakonec se poda\u0159ilo urychlit inference o <strong>15%<\/strong>, zmen\u0161it velikost o<strong> 35% <\/strong>a neztratit na p\u0159esnosti. <\/p>\n<p><\/p>\n<h3 id=\"avtomatizaciya-dlya-bolee-prostyh-arhitektur\">Automatizace pro jednodu\u0161\u0161\u00ed architektury.<\/h3>\n<p><\/p>\n<p>Pro jednodu\u0161\u0161\u00ed architektury s\u00edt\u00ed (bez podm\u00edn\u011bn\u00fdch add, concatenate a residual blok\u016f) je mo\u017en\u00e9 orientovat se na zpracov\u00e1n\u00ed v\u0161ech konvolu\u010dn\u00edch vrstev a automatizovat proces o\u0159ez\u00e1v\u00e1n\u00ed konvoluc\u00ed.<\/p>\n<p><\/p>\n<p>Tento variant jsem implementoval. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/PaginDm\/keras-L1-pruning\">zde<\/a><\/noindex>.<br \/>\nV\u0161echno je jednoduch\u00e9: pouze pot\u0159ebujete funkci ztr\u00e1ty, optimaliz\u00e1tor a batch gener\u00e1tory:<\/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>Pokud je to nutn\u00e9, lze zm\u011bnit parametry konfigurace:<\/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, # po\u010det epoch pro tr\u00e9nink mezi kroky o\u0159ez\u00e1v\u00e1n\u00ed\n    \"stop_loss\": 0.1, # ztr\u00e1ta pro zastaven\u00ed procesu\n    \"pruning_percent_step\": 0.05, # \u010d\u00e1st konvoluc\u00ed k odstran\u011bn\u00ed v ka\u017ed\u00e9m kroku o\u0159ez\u00e1v\u00e1n\u00ed\n    \"pruning_standart_deviation_part\": 0.2 # posun pro limitaci \u010d\u00e1sti o\u0159ez\u00e1v\u00e1n\u00ed\n}<\/code><\/pre>\n<p><\/p>\n<p>D\u00e1le bylo implementov\u00e1no omezen\u00ed na z\u00e1klad\u011b sm\u011brodatn\u00e9 odchylky. C\u00edlem je omezit \u010d\u00e1st odstra\u0148ovan\u00fdch, s v\u00fdjimkou svazk\u016f s ji\u017e \"dostate\u010dn\u00fdmi\" L1-m\u011bry:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedi technika sni\u017eov\u00e1n\u00ed konvolu\u010dn\u00edch s\u00edt\u00ed \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/c2733d01a4d5b6e9a97a1e683d87ff45.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>T\u00edmto umo\u017e\u0148ujeme odstranit pouze slab\u00e9 konvoluce z distribuc\u00ed podobn\u00fdch prav\u00e9mu a neovliv\u0148ovat odstra\u0148ov\u00e1n\u00ed z distribuc\u00ed podobn\u00fdch lev\u00e9mu:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedi technika sni\u017eov\u00e1n\u00ed konvolu\u010dn\u00edch s\u00edt\u00ed \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/a9c9bee6322d268026ffb6713fc0bc86.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>P\u0159i p\u0159ibli\u017eov\u00e1n\u00ed distribuce k norm\u00e1ln\u00ed lze koeficient pruning_standart_deviation_part nastavit z:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedi technika sni\u017eov\u00e1n\u00ed konvolu\u010dn\u00edch s\u00edt\u00ed \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/efee3eda6b8263de42e8f52541a3e949.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\nDoporu\u010duji toleranci 2 sigma. Nebo se na tuto vlastnost nemus\u00edte orientovat a nechat hodnotu &lt; 1.0.<\/p>\n<p><\/p>\n<p>Na v\u00fdstupu vznik\u00e1 graf velikosti s\u00edt\u011b, ztr\u00e1ty a doby b\u011bhu s\u00edt\u011b po cel\u00e9m testu, normalizovan\u00e9 na 1.0. Nap\u0159\u00edklad, zde byla velikost s\u00edt\u011b sn\u00ed\u017eena t\u00e9m\u011b\u0159 2x bez ztr\u00e1ty kvality (mal\u00e1 konvolu\u010dn\u00ed s\u00ed\u0165 na 100k vah):<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Jedi technika sni\u017eov\u00e1n\u00ed konvolu\u010dn\u00edch s\u00edt\u00ed \u2014 pruning\" src=\"\/wp-content\/uploads\/2019\/12\/1048ac38b12c753e54c8d8a2dc1dc394.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Rychlost b\u011bhu je ovlivn\u011bna norm\u00e1ln\u00edmi fluktuacemi a prakticky se nezm\u011bnila. K tomu existuje vysv\u011btlen\u00ed:<\/p>\n<p><\/p>\n<ol>\n<li>Po\u010det konvoluc\u00ed se m\u011bn\u00ed z pohodln\u00e9ho (32, 64, 128) na m\u00e9n\u011b pohodln\u00e9 pro grafick\u00e9 karty \u2014 27, 51 atd. Tady se mohu m\u00fdlit, ale pravd\u011bpodobn\u011b to m\u00e1 vliv.<\/li>\n<li>Architektura nen\u00ed \u0161irok\u00e1, ale sekven\u010dn\u00ed. Sni\u017eov\u00e1n\u00edm \u0161\u00ed\u0159ky nezasahujeme do hloubky. T\u00edmto sni\u017eujeme z\u00e1t\u011b\u017e, ale nem\u011bn\u00edme rychlost.<\/li>\n<\/ol>\n<p><\/p>\n<p>Proto se zlep\u0161en\u00ed projevilo ve sn\u00ed\u017een\u00ed z\u00e1t\u011b\u017ee CUDA p\u0159i b\u011bhu o 20-30%, ale ne ve sn\u00ed\u017een\u00ed doby b\u011bhu.<\/p>\n<p><\/p>\n<h3 id=\"itogi\">Z\u00e1v\u011bry<\/h3>\n<p><\/p>\n<p>Poj\u010fme se zamyslet. Zv\u00e1\u017eili jsme 2 varianty o\u0159ez\u00e1v\u00e1n\u00ed \u2014 pro YOLOv3 (kdy je nutn\u00e9 pracovat ru\u010dn\u011b) a pro s\u00edt\u011b s jednodu\u0161\u0161\u00edmi architekturami. Je vid\u011bt, \u017ee v obou p\u0159\u00edpadech lze dos\u00e1hnout sn\u00ed\u017een\u00ed velikosti s\u00edt\u011b a urychlen\u00ed bez ztr\u00e1ty p\u0159esnosti. V\u00fdsledky:<\/p>\n<p><\/p>\n<ul>\n<li>Sn\u00ed\u017een\u00ed velikosti<\/li>\n<li>Zrychlen\u00ed b\u011bhu<\/li>\n<li>Sn\u00ed\u017een\u00ed z\u00e1t\u011b\u017ee CUDA<\/li>\n<li>Jako d\u016fsledek, ekologi\u010dnost (Optimalizujeme budouc\u00ed vyu\u017e\u00edv\u00e1n\u00ed v\u00fdpo\u010detn\u00edch zdroj\u016f. N\u011bkde se raduje jedna <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\">P\u0159\u00edloha<\/h3>\n<p><\/p>\n<ul>\n<li>Po kroku o\u0159ez\u00e1v\u00e1n\u00ed lze doladit i kvantizaci (nap\u0159\u00edklad s TensorRT)<\/li>\n<li>Tensorflow nab\u00edz\u00ed mo\u017enosti pro <noindex><a rel=\"nofollow\" href=\"https:\/\/www.tensorflow.org\/model_optimization\/guide\/pruning\/pruning_with_keras\">low_magnitude_pruning<\/a><\/noindex>. Funguje.<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/PaginDm\/keras-L1-pruning\">Repozit\u00e1\u0159<\/a><\/noindex> chci se rozv\u00edjet a budu r\u00e1d za pomoc<\/li>\n<\/ul>\n<p>Zdroj: <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.3 - 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\/cs\/blog\/news\/dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"cs_CZ\" \/>\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\/cs\/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 technika sni\u017eov\u00e1n\u00ed konvolu\u010dn\u00edch s\u00edt\u00ed \u2014 pruning | ProHoster","description":"P\u0159ed tebou je op\u011bt \u00fakol.","canonical_url":"https:\/\/prohoster.info\/cs\/blog\/news\/dzhedajskaya-tehnika-umensheniya-svertochnyh-setej-pruning","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"cs_CZ","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\/cs\/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\/cs\/wp-json\/wp\/v2\/posts\/54494","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/comments?post=54494"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/posts\/54494\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/media?parent=54494"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/categories?post=54494"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/cs\/wp-json\/wp\/v2\/tags?post=54494"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}