Teicneòlas Jedi airson lìonraidhean convolutional a lughdachadh - bearradh

Teicneòlas Jedi airson lìonraidhean convolutional a lughdachadh - bearradh

Air thoiseach ort a-rithist tha an obair a bhith a’ lorg nithean. Is e am prìomhachas astar obrachaidh le mionaideachd iomchaidh. Bidh thu a’ gabhail ailtireachd YOLOv3 agus ga thrèanadh tuilleadh. Tha cruinneas (mAp75) nas àirde na 0.95. Ach tha an ìre ruith fhathast ìosal. Crap.

An-diugh bidh sinn a 'dol seachad air tomhas. Agus fon ghearradh bidh sinn a 'coimhead Pruning modail - a’ gearradh phàirtean den lìonra gun fheum gus Co-dhùnadh a luathachadh gun a bhith a’ call cruinneas. Tha e soilleir càite, cia mheud agus ciamar a ghearradh. Feuch an obraich sinn a-mach mar a nì thu seo le làimh agus far an urrainn dhut a dhèanamh fèin-ghluasadach. Aig an deireadh tha stòr air keras.

Ro-ràdh

Aig an àite-obrach a bh 'agam roimhe, Macroscop ann am Perm, fhuair mi aon chleachdadh - gus sùil a chumail an-còmhnaidh air àm cur gu bàs algorithms. Agus an-còmhnaidh thoir sùil air ùine ruith an lìonra tro chriathrag iomchaidheachd. Mar as trice cha bhith cinneasachadh ùr-nodha a’ dol seachad air a ’chriathrag seo, a thug orm Pruning.

'S e seann chuspair a chaidh a dheasbad ann an pruning Stanford òraidean a ann an 2017. Is e am prìomh bheachd meud an lìonra trèanaidh a lughdachadh gun a bhith a ’call cruinneas le bhith a’ toirt air falbh diofar nodan. Tha e fionnar, ach is ann ainneamh a chluinneas mi mu bhith ga chleachdadh. Is dòcha, chan eil buileachadh gu leòr ann, chan eil artaigilean ann an cànan na Ruis ann, no dìreach tha a h-uile duine den bheachd gu bheil e a ’pronnadh eòlas agus a’ fuireach sàmhach.
Ach bheir sinn air falbh e

Taisbeanadh air bith-eòlas san

Tha gaol agam air nuair a bhios Deep Learning a’ coimhead air beachdan a thig bho bhith-eòlas. Faodar earbsa a bhith annta, mar mean-fhàs (an robh fios agad gu bheil ReLU glè choltach ri gnìomh gnìomhachd neuron san eanchainn?)

Tha am pròiseas Pruning Model cuideachd faisg air bith-eòlas. Faodar freagairt an lìonra an seo a choimeas ri plastachd an eanchainn. Tha eisimpleir no dhà inntinneach anns an leabhar. Tormod Doidge:

  1. Tha eanchainn boireannaich a rugadh le dìreach leth air ath-chlàradh gus gnìomhan an leth a tha a dhìth a choileanadh.
  2. Loisg am fear dheth am pàirt den eanchainn aige a bha an urra ri lèirsinn. Thar ùine, ghabh pàirtean eile den eanchainn thairis na gnìomhan sin. (chan eil sinn a 'feuchainn ri ath-aithris)

Mar an ceudna, faodaidh tu cuid de na convolutions lag a ghearradh a-mach bhon mhodail agad. Mar an roghainn mu dheireadh, cuidichidh na pasganan a tha air fhàgail an àite an fheadhainn gearraidh.

An toil leat Transfer Learning no a bheil thu ag ionnsachadh bhon fhìor thoiseach?

Roghainn àireamh a h-aon. Bidh thu a’ cleachdadh Transfer Learning air Yolov3. Retina, Mask-RCNN no U-Net. Ach a’ mhòr-chuid den ùine chan fheum sinn 80 clas nithean mar ann an COCO aithneachadh. Anns a 'chleachdadh agam, tha a h-uile dad cuingealaichte ri ìrean 1-2. Dh’ fhaodadh aon a bhith den bheachd gu bheil an ailtireachd airson 80 clas gun fheum an seo. Tha seo a 'moladh gum feumar an ailtireachd a dhèanamh nas lugha. A bharrachd air an sin, bu mhath leam seo a dhèanamh gun a bhith a’ call na cuideaman ro-thrèanadh a th’ ann mar-thà.

Roghainn àireamh a dhà. Is dòcha gu bheil tòrr dàta agus goireasan coimpiutaireachd agad, no dìreach gu bheil feum agad air ailtireachd air leth àbhaisteach. Chan eil e gu diofar. Ach tha thu ag ionnsachadh an lìonra bhon fhìor thoiseach. Is e am modh àbhaisteach a bhith a’ coimhead air structar an dàta, a’ taghadh ailtireachd a tha TORAIDHEAN ann an cumhachd, agus a’ putadh air falbh bho ath-thrèanadh. Chunnaic mi 0.6 dropouts, Karl.

Anns an dà chùis, faodar an lìonra a lùghdachadh. Air a bhrosnachadh. A-nis leig dhuinn faighinn a-mach dè an seòrsa pruning circumcision

Algorithm coitcheann

Cho-dhùin sinn gum b’ urrainn dhuinn na pasganan a thoirt air falbh. Tha e a’ coimhead gu math sìmplidh:

Teicneòlas Jedi airson lìonraidhean convolutional a lughdachadh - bearradh

Tha toirt air falbh convolution sam bith na uallach don lìonra, a bhios mar as trice a’ leantainn gu beagan àrdachadh ann am mearachd. Air an aon làimh, tha an àrdachadh mearachd seo na chomharradh air cho ceart ‘s a tha sinn a’ toirt air falbh convolutions (mar eisimpleir, tha àrdachadh mòr a ’nochdadh gu bheil sinn a’ dèanamh rudeigin ceàrr). Ach tha àrdachadh beag gu math iomchaidh agus gu tric bidh e air a chuir às le trèanadh aotrom a bharrachd às deidh sin le LR beag. Cuir ceum trèanaidh a bharrachd ris:

Teicneòlas Jedi airson lìonraidhean convolutional a lughdachadh - bearradh

A-nis feumaidh sinn obrachadh a-mach cuin a tha sinn airson stad a chuir air ar lùb Ionnsachaidh <-> Pruning. Is dòcha gu bheil roghainnean coimheach an seo nuair a dh’ fheumas sinn an lìonra a lughdachadh gu meud agus astar sònraichte (mar eisimpleir, airson innealan gluasadach). Ach, is e an roghainn as cumanta leantainn air adhart leis a’ chearcall gus am bi a’ mhearachd nas àirde na tha iomchaidh. Cuir ris an t-suidheachadh:

Teicneòlas Jedi airson lìonraidhean convolutional a lughdachadh - bearradh

Mar sin, bidh an algairim a 'fàs soilleir. Tha e fhathast ri dhèanamh a-mach ciamar a nì thu co-dhùnadh air na convolutions a chaidh a dhubhadh às.

Lorg pacaidean a chaidh a dhubhadh às

Feumaidh sinn cuid de chonnspaidean a thoirt air falbh. Is e droch bheachd a th’ ann a bhith a’ ruith air adhart agus “a’ losgadh” duine sam bith, ged a dh’ obraicheas e. Ach leis gu bheil ceann agad, faodaidh tu smaoineachadh agus feuchainn ri convolutions “lag” a thaghadh airson an toirt air falbh. Tha grunn roghainnean ann:

  1. An tomhas L1 as lugha no meud_pruning_pruning. Tha am beachd nach eil convolutions le cuideaman beaga a’ cur mòran ris a’ cho-dhùnadh deireannach
  2. An tomhas L1 as lugha a’ toirt aire do chlaonadh cuibheasach agus àbhaisteach. Bidh sinn a’ cur ris le measadh air nàdar an t-sgaoilidh.
  3. A ’falach convolutions agus a’ dùnadh a-mach an fheadhainn as lugha a bheir buaidh air cruinneas deireannach. Co-dhùnadh nas cruinne air convolutions nach eil cudromach, ach a’ toirt ùine mhòr agus a’ caitheamh stòras.
  4. Eile

Tha còir aig gach aon de na roghainnean air beatha agus na feartan gnìomhachaidh aige fhèin. An seo bidh sinn a’ beachdachadh air an roghainn leis a’ tomhas L1 as lugha

Pròiseas làimhe airson YOLOv3

Anns an ailtireachd thùsail tha blocaichean air fhàgail. Ach ge bith dè cho fionnar ‘s a tha iad airson lìonraidhean domhainn, cuiridh iad bacadh oirnn beagan. Is e an duilgheadas nach urrainn dhut rèiteachaidhean le clàran-amais eadar-dhealaichte anns na sreathan seo a dhubhadh às:

Teicneòlas Jedi airson lìonraidhean convolutional a lughdachadh - bearradh

Mar sin, tagh sinn sreathan às an urrainn dhuinn rèiteachaidhean a dhubhadh às gu saor:

Teicneòlas Jedi airson lìonraidhean convolutional a lughdachadh - bearradh

A-nis togaidh sinn cearcall obrach:

  1. A luchdachadh a-nuas le gnìomhachadh
  2. A 'faighinn a-mach dè an ìre a bu chòir a ghearradh
  3. Gearr a-mach
  4. Ag ionnsachadh 10 amannan le LR = 1e-4
  5. Deuchainn

Tha e feumail a bhith a’ luchdachadh convolutions gus tuairmse a dhèanamh air an ìre de phàirt as urrainn dhuinn a thoirt air falbh aig ceum sònraichte. A’ luchdachadh sìos eisimpleirean:

Teicneòlas Jedi airson lìonraidhean convolutional a lughdachadh - bearradh

Tha sinn a’ faicinn gu bheil ìre L5 glè ìosal aig cha mhòr a h-uile àite aig 1% de chonnspaidean agus is urrainn dhuinn an toirt air falbh. Aig gach ceum, chaidh an luchdachadh sìos seo a-rithist agus chaidh measadh a dhèanamh air dè na sreathan agus cia mheud a ghabhadh a ghearradh a-mach.

Chaidh am pròiseas gu lèir a chrìochnachadh ann an ceumannan 4 (àireamhan an seo agus anns a h-uile àite airson an RTX 2060 Super):

Ceum map 75 Àireamh de pharamadairean, millean Meud lìonra, mb Bhon tùs, % Uair ruith, ms Suidheachadh circumcision
0 0.9656 60 241 100 180 -
1 0.9622 55 218 91 175 5% de na h-uile
2 0.9625 50 197 83 168 5% de na h-uile
3 0.9633 39 155 64 155 15% airson sreathan le 400+ convolutions
4 0.9555 31 124 51 146 10% airson sreathan le 100+ convolutions

Chaidh aon bhuaidh adhartach a chur ri ceum 2 - meud batch 4 a 'freagairt air cuimhne, a luathaich gu mòr am pròiseas trèanaidh a bharrachd.
Aig ceum 4, chaidh am pròiseas a stad air sgàth cha do thog eadhon trèanadh a bharrachd fad-ùine mAp75 gu seann luachan.
Mar thoradh air an sin, chaidh againn air an co-dhùnadh a luathachadh le 15%, lughdaich am meud le 35% agus na caill gu dìreach.

Automation airson ailtireachd nas sìmplidh

Airson ailtireachd lìonra nas sìmplidhe (às aonais cuir-ris cumhach, blocaichean concaternate agus fuigheall), tha e gu math comasach fòcas a chuir air a bhith a ’giullachd a h-uile sreath connspaideach agus fèin-ghluasad a dhèanamh air a’ phròiseas airson a bhith a ’gearradh a-mach convolutions.

Chuir mi an roghainn seo an gnìomh an seo.
Tha e sìmplidh: chan fheum thu ach gnìomh call, optimizer agus gineadairean baidse:

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)

Ma tha feum air, faodaidh tu na paramadairean rèiteachaidh atharrachadh:

{
    "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
}

A bharrachd air an sin, tha cuingealachadh stèidhichte air an claonadh àbhaisteach air a chuir an gnìomh. Is e an t-amas am pàirt a thèid a thoirt air falbh a chuingealachadh, gun a bhith a’ gabhail a-steach connspaidean le ceumannan L1 a tha “gu leòr” mar-thà:

Teicneòlas Jedi airson lìonraidhean convolutional a lughdachadh - bearradh

Mar sin, leigidh sinn leat dìreach convolutions lag a thoirt air falbh bho sgaoilidhean coltach ris an fhear cheart agus gun a bhith a’ toirt buaidh air toirt air falbh bho sgaoilidhean coltach ris an fhear chlì:

Teicneòlas Jedi airson lìonraidhean convolutional a lughdachadh - bearradh

Nuair a thig an cuairteachadh gu àbhaisteach, faodar an co-èifeachd pruning_standart_deviation_part a thaghadh bho:

Teicneòlas Jedi airson lìonraidhean convolutional a lughdachadh - bearradh
Tha mi a’ moladh barail de 2 sigma. No faodaidh tu am feart seo a leigeil seachad, a’ fàgail an luach < 1.0.

Is e an toradh graf de mheud lìonra, call, agus ùine ruith lìonra airson an deuchainn gu lèir, àbhaisteach gu 1.0. Mar eisimpleir, an seo chaidh meud an lìonraidh a lughdachadh cha mhòr 2 uair gun a bhith a’ call càileachd (lìonra beag convolutional le cuideaman 100k):

Teicneòlas Jedi airson lìonraidhean convolutional a lughdachadh - bearradh

Tha an astar ruith fo ùmhlachd atharrachaidhean àbhaisteach agus cha mhòr nach eil e air atharrachadh. Tha mìneachadh ann airson seo:

  1. Tha an àireamh de convolutions ag atharrachadh bho goireasach (32, 64, 128) gu nach eil as freagarraiche airson bhidio cairtean - 27, 51, etc. Is dòcha gu bheil mi ceàrr an seo, ach is dòcha gu bheil buaidh aige.
  2. Chan eil an ailtireachd farsaing, ach cunbhalach. Le bhith a 'lùghdachadh an leud, chan eil sinn a' toirt buaidh air an doimhneachd. Mar sin, bidh sinn a 'lùghdachadh an luchd, ach chan eil sinn ag atharrachadh an astar.

Mar sin, chaidh an leasachadh a chuir an cèill ann an lùghdachadh ann an luchd CUDA rè an ruith le 20-30%, ach chan ann ann an lùghdachadh san ùine ruith

Builean

Leig leinn meòrachadh. Bheachdaich sinn air 2 roghainn airson bearradh - airson YOLOv3 (nuair a dh’ fheumas tu obrachadh le do làmhan) agus airson lìonraidhean le ailtireachd nas sìmplidh. Chithear gu bheil e comasach anns an dà chùis lùghdachadh meud lìonra agus luaths a choileanadh gun a bhith a 'call cruinneas. Toraidhean:

  • A 'lùghdachadh meud
  • Ruith luathachaidh
  • Lùghdachadh CUDA Load
  • Mar thoradh air an sin, càirdeas àrainneachdail (Tha sinn a 'dèanamh feum as fheàrr de chleachdadh ghoireasan coimpiutaireachd san àm ri teachd. An àiteigin tha aon toilichte Greta Thunberg)

Pàipear-taice

  • Às deidh a’ cheum pruning, faodaidh tu tomhas a chuir ris (mar eisimpleir, le TensorRT)
  • Bidh Tensorflow a’ toirt seachad comasan airson ìosal_magnitude_pruning. Obraichean.
  • tasgaidh Tha mi airson leasachadh agus bidh mi toilichte do chuideachadh

Source: www.habr.com

Cuir beachd ann