Техникаи Jedi барои кам кардани шабакаҳои конволютсионӣ - навдаро

Техникаи Jedi барои кам кардани шабакаҳои конволютсионӣ - навдаро

Дар назди шумо боз вазифаи ошкор кардани объектҳост. Афзалият суръати кор бо дақиқии қобили қабул аст. Шумо меъмории YOLOv3-ро мегиред ва онро минбаъд таълим медиҳед. Дақиқӣ (mAp75) аз 0.95 зиёдтар аст. Аммо суръати кор хануз паст аст. Аҷаб.

Имрӯз мо квантизатсияро давр мезанем. Ва дар зери буриш мо мебинем Буридани модел — буридани қисмҳои зиёдатии шабака барои суръат бахшидан ба хулосабарорӣ бидуни талафоти дақиқ. Дар куҷо, чӣ қадар ва чӣ тавр буридан равшан аст. Биёед бифаҳмем, ки чӣ тавр ин корро дастӣ ва дар куҷо шумо метавонед онро автоматӣ кунед. Дар охир анбори керас мавҷуд аст.

Муқаддима

Дар ҷои корам, Макроскоп дар Перм, ман як одат пайдо кардам - ​​ҳамеша назорат кардани вақти иҷрои алгоритмҳо. Ва ҳамеша вақти кори шабакаро тавассути филтри мувофиқ тафтиш кунед. Одатан замонавӣ дар истеҳсолот аз ин филтр намегузарад, ки маро ба Бурда бурданд.

Буридани як мавзӯи кӯҳнаест, ки дар он баррасӣ шудааст Лекцияҳои Стэнфорд дар 2017. Идеяи асосӣ кам кардани андозаи шабакаи таълимшуда бидуни аз даст додани дақиқӣ тавассути нест кардани гиреҳҳои гуногун мебошад. Ин аҷиб садо медиҳад, аммо ман дар бораи истифодаи он кам мешунавам. Эҳтимол, амалияҳо кофӣ нестанд, мақолаҳои русӣ вуҷуд надоранд ва ё ҳама онро навдаро ноу-хау мешуморанд ва хомӯш мемонанд.
Аммо биёед онро ҷудо кунем

Як назар ба биология

Вақте ки Deep Learning ба ғояҳое, ки аз биология бармеоянд, ман онро дӯст медорам. Ба онҳо, ба монанди эволютсия, метавон бовар кард (оё шумо медонистед, ки ReLU хеле монанд аст вазифаи фаъолсозии нейронҳо дар майна?)

Раванди буридани намунавӣ низ ба биология наздик аст. Ҷавоби шабакаро дар ин ҷо метавон бо пластикии майна муқоиса кард. Дар китоб якчанд мисоли ҷолиб оварда шудааст. Норман Доидҷ:

  1. Майнаи зане, ки танҳо бо як ним таваллуд шудааст, худро барои иҷрои вазифаҳои нисфи гумшуда барномарезӣ кардааст.
  2. Бача қисми майнаи худро, ки барои биниш масъул аст, паррондааст. Бо гузашти вақт, қисмҳои дигари майна ин вазифаҳоро ба ӯҳда гирифтанд. (мо кӯшиш намекунем, ки такрор кунем)

Ба ҳамин монанд, шумо метавонед баъзе конволютсияҳои заифро аз модели худ буред. Ҳамчун чораи охирин, бастаҳои боқимонда барои иваз кардани бастаҳои бурида кӯмак мекунанд.

Оё шумо Transfer Learning-ро дӯст медоред ё шумо аз сифр меомӯзед?

Варианти рақами як. Шумо Transfer Learning -ро дар Yolov3 истифода мебаред. Retina, Mask-RCNN ё U-Net. Аммо аксар вақт ба мо лозим нест, ки 80 синфҳои объектро эътироф кунем, ба монанди COCO. Дар амалияи ман хама чиз бо синфхои 1—2 махдуд мешавад. Фарз кардан мумкин аст, ки меъмории 80 синф дар ин ҷо зиёдатист. Ин нишон медиҳад, ки меъморӣ бояд хурдтар карда шавад. Зиёда аз ин, ман мехостам, ки ин корро бе талафи вазнҳои қаблан омодашуда иҷро кунам.

Варианти рақами дуюм. Шояд шумо миқдори зиёди маълумот ва захираҳои компютерӣ дошта бошед ё танҳо ба як меъмории фармоишӣ ниёз доред. Фарқ надорад. Аммо шумо шабакаро аз сифр меомӯзед. Тартиби муқаррарӣ ин аст, ки ба сохтори додаҳо назар андозед, меъмориро интихоб кунед, ки қудрати ЗИЁДА дорад ва тарки мактабро аз бозомӯзӣ тела диҳед. Ман 0.6 нафар тарки мактабро дидам, Карл.

Дар ҳарду ҳолат, шабака метавонад кам карда шавад. Барангезанда. Акнун биёед бифаҳмем, ки буридани хатна чӣ гуна аст

Алгоритми умумӣ

Мо қарор додем, ки мо метавонем бастаҳоро хориҷ кунем. Ин хеле оддӣ ба назар мерасад:

Техникаи Jedi барои кам кардани шабакаҳои конволютсионӣ - навдаро

Бартараф кардани ҳама гуна конволютсия барои шабака стресс аст, ки одатан боиси афзоиши хатогиҳо мегардад. Аз як тараф, ин афзоиши хатогӣ нишондиҳандаи он аст, ки мо конволютсияҳоро то чӣ андоза дуруст нест мекунем (масалан, афзоиши калон нишон медиҳад, ки мо кори нодуруст карда истодаем). Аммо афзоиши каме қобили қабул аст ва аксар вақт тавассути омӯзиши минбаъдаи нури иловагӣ бо LR хурд бартараф карда мешавад. Қадами иловагии омӯзишро илова кунед:

Техникаи Jedi барои кам кардани шабакаҳои конволютсионӣ - навдаро

Ҳоло мо бояд бифаҳмем, ки кай мо мехоҳем ҳалқаи омӯзишии худро қатъ кунем<->Pruning. Дар ин ҷо шояд имконоти экзотикӣ вуҷуд дошта бошанд, вақте ки мо бояд шабакаро ба андоза ва суръати муайян кам кунем (масалан, барои дастгоҳҳои мобилӣ). Бо вуҷуди ин, варианти маъмултарин ин идома додани давра аст, то хатогӣ аз қобили қабул баландтар шавад. Шарт илова кунед:

Техникаи Jedi барои кам кардани шабакаҳои конволютсионӣ - навдаро

Ҳамин тавр, алгоритм равшан мешавад. Фаҳмидани он ки чӣ гуна конволютсияҳои ҳазфшударо муайян кардан мумкин аст.

Ҷустуҷӯи бастаҳои ҳазфшуда

Мо бояд баъзе конволютсияҳоро бартараф кунем. Ба пеш шитоб кардан ва касеро «паррондан» фикри бад аст, гарчанде ки он кор хоҳад кард. Аммо азбаски шумо сар доред, шумо метавонед фикр кунед ва кӯшиш кунед, ки конволютсияҳои "заиф" -ро барои бартараф кардан интихоб кунед. Якчанд вариант вуҷуд дорад:

  1. Хурдтарин L1-ченак ё буридани_бағй. Идеяи он, ки конволютсияҳо бо вазнҳои хурд ба қарори ниҳоӣ саҳми кам доранд
  2. Хурдтарин L1-ченак бо назардошти миёна ва инҳирофи стандартӣ. Мо баҳодиҳии хусусияти тақсимотро илова мекунем.
  3. Ниқоб кардани гардишҳо ва истиснои онҳое, ки ба дақиқии ниҳоӣ камтар таъсир мерасонанд. Аниқтар муайян кардани конволютсияҳои ночиз, вале хеле вақт ва захираҳо сарф мекунанд.
  4. Дигар

Ҳар яке аз вариантҳо ҳуқуқи ҳаёт ва хусусиятҳои татбиқи худро доранд. Дар ин ҷо мо вариантро бо хурдтарин L1-ченак баррасӣ мекунем

Раванди дастӣ барои YOLOv3

Меъмории аслӣ дорои блокҳои боқимонда мебошад. Аммо новобаста аз он ки онҳо барои шабакаҳои амиқ чӣ қадар сард ҳастанд, онҳо ба мо то андозае халал мерасонанд. Мушкилот дар он аст, ки шумо наметавонед мувофиқатҳоро бо индексҳои гуногун дар ин қабатҳо нест кунед:

Техникаи Jedi барои кам кардани шабакаҳои конволютсионӣ - навдаро

Аз ин рӯ, биёед қабатҳоеро интихоб кунем, ки аз онҳо мо метавонем мусолиҳаҳоро озодона нест кунем:

Техникаи Jedi барои кам кардани шабакаҳои конволютсионӣ - навдаро

Акнун биёед як давраи кориро созем:

  1. Боркунии фаъолсозӣ
  2. Муайян кунед, ки чӣ қадар буридан лозим аст
  3. Буред
  4. Омӯзиши 10 давра бо LR = 1e-4
  5. Санҷиш

Борфарорӣ кардани конволютсияҳо барои ҳисоб кардани он, ки мо дар як қадами муайян чӣ қадар қисматро хориҷ карда метавонем, муфид аст. Намунаҳои борфарорӣ:

Техникаи Jedi барои кам кардани шабакаҳои конволютсионӣ - навдаро

Мо мебинем, ки кариб дар хама чо 5 фоизи конво-люцияхо нормаи хеле пасти L1-ро доранд ва мо метавонем онхоро бартараф кунем. Дар хар кадам ин борфарорй такрор карда, бахо дода мешуд, ки кадом кабат ва чандтоашро буридан мумкин аст.

Тамоми раванд дар 4 қадам анҷом ёфт (рақамҳо дар ин ҷо ва дар ҳама ҷо барои RTX 2060 Super):

Қадами mAp75 Шумораи параметрҳо, миллион Андозаи шабака, mb Аз ибтидо, % Вақти кор, ms Ҳолати хатна
0 0.9656 60 241 100 180 -
1 0.9622 55 218 91 175 5% аз ҳама
2 0.9625 50 197 83 168 5% аз ҳама
3 0.9633 39 155 64 155 15% барои қабатҳои дорои 400+ convolutions
4 0.9555 31 124 51 146 10% барои қабатҳои дорои 100+ convolutions

Як таъсири мусбат ба қадами 2 илова карда шуд - андозаи партияи 4 ба хотира мувофиқат кард, ки ин раванди омӯзиши иловагиро хеле суръат бахшид.
Дар қадами 4, раванд қатъ карда шуд, зеро хатто таълими иловагии дарозмуддат mAp75-ро ба арзишхои кухна баланд намебардошт.
Дар натиҷа, мо тавонистем хулосабарориро суръат бахшем 15%, андозаи онро кам кунед 35% ва маҳз аз даст надиҳед.

Автоматизатсия барои меъмории соддатар

Барои сохторҳои соддатари шабака (бе блокҳои шартӣ, пайвастагӣ ва боқимонда) имкон дорад, ки диққати худро ба коркарди ҳама қабатҳои конволютсионӣ ва автоматикунонии раванди буридани конволютсияҳо равона созад.

Ман ин вариантро амалӣ кардам дар ин ҷо.
Ин оддӣ аст: ба шумо танҳо функсияи талафот, оптимизатор ва генераторҳои партия лозим аст:

import pruning
from keras.optimizers import Adam
from keras.utils import Sequence

train_batch_generator = BatchGenerator...
score_batch_generator = BatchGenerator...

opt = Adam(lr=1e-4)
pruner = pruning.Pruner("config.json", "categorical_crossentropy", opt)

pruner.prune(train_batch, valid_batch)

Агар лозим бошад, шумо метавонед параметрҳои конфигуратсияро тағир диҳед:

{
    "input_model_path": "model.h5",
    "output_model_path": "model_pruned.h5",
    "finetuning_epochs": 10, # the number of epochs for train between pruning steps
    "stop_loss": 0.1, # loss for stopping process
    "pruning_percent_step": 0.05, # part of convs for delete on every pruning step
    "pruning_standart_deviation_part": 0.2 # shift for limit pruning part
}

Илова бар ин, маҳдудият дар асоси инҳироф стандартӣ амалӣ карда мешавад. Ҳадаф маҳдуд кардани қисми хориҷшуда, ба истиснои конволютсияҳо бо чораҳои аллакай "кофии" L1:

Техникаи Jedi барои кам кардани шабакаҳои конволютсионӣ - навдаро

Ҳамин тариқ, мо ба шумо имкон медиҳем, ки танҳо конволютсияҳои заифро аз дистрибюторҳои шабеҳи рост хориҷ кунед ва ба хориҷшавӣ аз тақсимоти монанд ба чап таъсир нарасонед:

Техникаи Jedi барои кам кардани шабакаҳои конволютсионӣ - навдаро

Вақте ки тақсимот ба ҳолати муқаррарӣ наздик мешавад, коэффисиенти_стандарти_қадравии_қисми зеринро интихоб кардан мумкин аст:

Техникаи Jedi барои кам кардани шабакаҳои конволютсионӣ - навдаро
Ман як фарзияи 2 сигмаро тавсия медиҳам. Ё шумо метавонед ин хусусиятро сарфи назар карда, арзиши <1.0-ро тарк кунед.

Натиҷа графики андозаи шабака, талафот ва вақти кори шабака барои тамоми санҷиш мебошад, ки ба 1.0 муқаррар карда шудааст. Масалан, дар ин ҷо андозаи шабака бе талафи сифат қариб 2 маротиба кам карда шуд (шабакаи хурди конволютсионӣ бо вазни 100к):

Техникаи Jedi барои кам кардани шабакаҳои конволютсионӣ - навдаро

Суръати давидан ба тағирёбии муқаррарӣ дучор мешавад ва амалан бетағйир мемонад. Барои ин шарҳе вуҷуд дорад:

  1. Миқдори конволютсияҳо аз қулай (32, 64, 128) ба қулайтарин барои кортҳои видеоӣ - 27, 51 ва ғ. Ман дар ин ҷо хато карда метавонам, аммо эҳтимоли зиёд ин таъсир дорад.
  2. Меъморӣ васеъ нест, аммо пайваста аст. Бо кам кардани паҳно, мо ба чуқурии он таъсир намерасонем. Ҳамин тариқ, мо борро кам мекунем, аммо суръатро тағир намедиҳем.

Аз ин рӯ, беҳбудӣ дар коҳиши сарбории CUDA дар давоми 20-30% ифода карда шуд, аммо на дар кам кардани вақти кор.

Натиҷаҳо

Биёед фикр кунем. Мо 2 варианти навдаро баррасӣ кардем - барои YOLOv3 (вақте ки шумо бояд бо дастҳои худ кор кунед) ва барои шабакаҳои меъмории соддатар. Мумкин аст, ки дар ҳарду ҳолат ба кам кардани андозаи шабака ва суръатбахшии бе талафи дақиқ ноил шудан мумкин аст. Натиҷаҳо:

  • Кам кардани андоза
  • Давраи суръатбахшӣ
  • Кам кардани сарбории CUDA
  • Дар натиҷа, муҳити зист (Мо истифодаи ояндаи захираҳои ҳисоббарориро оптимизатсия мекунем. Дар ҷое кас хушбахт аст Грета Тунберг)

илова

  • Пас аз қадами буридан, шумо метавонед квантизатсияро илова кунед (масалан, бо TensorRT)
  • Tensorflow имкониятҳоро барои буридани_кадри кам. Кор мекунад.
  • анбор Ман мехоҳам инкишоф диҳам ва бо хурсандӣ кӯмак хоҳам кард

Манбаъ: will.com

Илова Эзоҳ