Teicníc Jedi chun líonraí convolutional a laghdú - bearradh

Teicníc Jedi chun líonraí convolutional a laghdú - bearradh

Sula tú arís é an tasc de rudaí a bhrath. Is é an tosaíocht luas na hoibríochta le cruinneas inghlactha. Tógann tú ailtireacht YOLOv3 agus cuireann tú oiliúint bhreise air. Tá cruinneas (mAp75) níos mó ná 0.95. Ach tá an ráta reatha fós íseal. cacamas.

Inniu beimid ag seachbhóthar cainníochtú. Agus faoi na gearrtha féachfaimid Bearradh Múnla — páirteanna iomarcacha den líonra a bhearradh chun Tátail a bhrostú gan cruinneas a chailleadh. Tá sé soiléir cén áit, cé mhéad agus conas a ghearradh. Déanaimis amach conas é seo a dhéanamh de láimh agus cén áit ar féidir leat é a uathoibriú. Ag an deireadh tá stór ar keras.

Réamhrá

Ag an áit oibre a bhí agam roimhe seo, Macroscóp i Perm, fuair mé nós amháin - monatóireacht a dhéanamh i gcónaí ar am forghníomhaithe na n-halgartaim. Agus seiceáil i gcónaí am rite an líonra trí scagaire leordhóthanachta. Go hiondúil ní théann an scagaire seo ar aghaidh leis an úrscothacht i dtáirgeadh, rud a thug orm Bearradh.

Is sean-ábhar é bearradh a pléadh i Stanford léachtaí i 2017. Is é an príomh-smaoineamh ná méid an líonra oilte a laghdú gan cruinneas a chailleadh trí nóid éagsúla a bhaint. Fuaimeann sé fionnuar, ach is annamh a chloisim faoina húsáid. Is dócha, nach bhfuil go leor feidhmiúcháin, níl aon earraí Rúisis-teanga, nó go simplí measann gach duine bearradh fios gnó agus fanann sé ciúin.
Ach déanaimis é a thógáil óna chéile

Léiriú ar bhitheolaíocht

Is breá liom é nuair a bhreathnaíonn Deep Learning ar smaointe a thagann ón mbitheolaíocht. Is féidir muinín a bheith iontu, cosúil le héabhlóid (an raibh a fhios agat go bhfuil ReLU an-chosúil le feidhm gníomhachtaithe néaróin san inchinn?)

Tá an próiseas Bearradh Múnla gar don bhitheolaíocht freisin. Is féidir freagairt an líonra anseo a chur i gcomparáid le plaisteacht na hinchinne. Tá cúpla sampla suimiúil sa leabhar. Norman Doidge:

  1. Tá inchinn mná a rugadh le leath amháin tar éis í féin a athchlárú chun feidhmeanna an leath ar iarraidh a chomhlíonadh.
  2. Lámhaigh an fear an chuid dá inchinn a bhí freagrach as fís. Le himeacht ama, ghlac codanna eile den inchinn na feidhmeanna seo i gceannas. (níl muid ag iarraidh a dhéanamh arís)

Mar an gcéanna, is féidir leat cuid de na convolutions lag a ghearradh amach ó do mhúnla. Mar rogha dheireanach, cabhróidh na bundles atá fágtha in ionad na cinn gearrtha.

An breá leat Foghlaim Aistrithe nó an bhfuil tú ag foghlaim ón tús?

Rogha uimhir a haon. Úsáideann tú Transfer Learning ar Yolov3. Reitine, Masc-RCNN nó U-Net. Ach an chuid is mó den am ní gá dúinn 80 aicme oibiachta mar atá in COCO a aithint. I mo chleachtas, tá gach rud teoranta do ghráid 1-2. D’fhéadfaí glacadh leis go bhfuil an ailtireacht do 80 rang iomarcach anseo. Tugann sé seo le tuiscint gur gá an ailtireacht a dhéanamh níos lú. Thairis sin, ba mhaith liom é seo a dhéanamh gan na meáchain réamh-oilte atá ann cheana féin a chailliúint.

Rogha uimhir a dó. B'fhéidir go bhfuil go leor sonraí agus acmhainní ríomhaireachta agat, nó go bhfuil ailtireacht shár-saincheaptha uait. Is cuma. Ach tá tú ag foghlaim an líonra ón tús. Is é an gnáthnós imeachta ná féachaint ar an struchtúr sonraí, ailtireacht a roghnú atá IOMLÁN i gcumhacht, agus brú a chur ar na daoine a d'fhág an t-athoiliúint. Chonaic mé 0.6 dropouts, Karl.

Sa dá chás, is féidir an líonra a laghdú. Spreagtha. Anois, déanaimis dul amach cén cineál bearradh circumcision é

Algartam ginearálta

Shocraigh muid go bhféadfaimis na babhtaí a bhaint. Breathnaíonn sé simplí go leor:

Teicníc Jedi chun líonraí convolutional a laghdú - bearradh

Cuireann sé strus ar an líonra deireadh a chur le haon convolution, rud a fhágann go dtiocfaidh méadú éigin ar earráid de ghnáth. Ar thaobh amháin, tá an méadú earráide seo ina tháscaire ar cé chomh ceart agus a dhéanaimid convolutions a bhaint (mar shampla, léiríonn méadú mór go bhfuil rud éigin mícheart á dhéanamh againn). Ach tá méadú beag inghlactha go leor agus is minic a dhéantar é a dhíchur trí oiliúint bhreise éadrom ina dhiaidh sin le LR beag. Cuir céim oiliúna bhreise leis:

Teicníc Jedi chun líonraí convolutional a laghdú - bearradh

Anois caithfimid a dhéanamh amach cathain is mian linn ár lúb Foghlama <-> Bearradh a stopadh. D'fhéadfadh go mbeadh roghanna coimhthíocha anseo nuair is gá dúinn an líonra a laghdú go dtí méid agus luas áirithe (mar shampla, le haghaidh gléasanna soghluaiste). Mar sin féin, is é an rogha is coitianta ná leanúint leis an timthriall go dtí go n-éireoidh an earráid níos airde ná mar atá inghlactha. Cuir coinníoll leis:

Teicníc Jedi chun líonraí convolutional a laghdú - bearradh

Mar sin, éiríonn an algartam soiléir. Tá sé fós le déanamh amach conas na convolutions scriosta a chinneadh.

Cuardaigh cuachtaí scriosta

Ní mór dúinn roinnt convolutions a bhaint. Is droch-smaoineamh é Rush chun tosaigh agus “lámhach” a dhéanamh ar dhuine ar bith, cé go n-oibreoidh sé. Ach ós rud é go bhfuil ceann agat, is féidir leat smaoineamh agus iarracht a dhéanamh convolutions "lag" a roghnú lena bhaint. Tá roinnt roghanna ann:

  1. Tomhas L1 is lú nó bearradh_méide_íseal. An smaoineamh a dhéanann convolutions a bhfuil meáchain bheaga acu a chuireann mórán leis an gcinneadh deiridh
  2. An beart L1 is lú agus an meándiall agus an diall caighdeánach á chur san áireamh. Forlíonaimid measúnú ar nádúr an dáileacháin.
  3. Convolutions a chumhdach agus na cinn is lú a mbíonn tionchar acu ar an gcruinneas deiridh a áireamh. Cinneadh níos cruinne ar choinbhleachtaí neamhshuntasacha, ach a thógann an-am agus acmhainní.
  4. Daoine eile

Tá an ceart chun beatha agus a ghnéithe cur chun feidhme féin ag gach ceann de na roghanna. Anseo breithnímid ar an rogha leis an mbeart L1 is lú

Próiseas láimhe le haghaidh YOLOv3

Tá bloic iarmharacha san ailtireacht bhunaidh. Ach is cuma cé chomh fionnuar is atá siad le haghaidh líonraí domhain, cuirfidh siad bac orainn beagán. Is é an deacracht nach féidir leat réitigh le hinnéacsanna éagsúla sna sraitheanna seo a scriosadh:

Teicníc Jedi chun líonraí convolutional a laghdú - bearradh

Mar sin, roghnaigh muid sraitheanna ónar féidir linn réitigh a scriosadh go saor:

Teicníc Jedi chun líonraí convolutional a laghdú - bearradh

Anois déanaimis timthriall oibre a thógáil:

  1. Gníomhachtaithe á uaslódáil
  2. Figuring amach cé mhéad a ghearradh
  3. Gearr amach é
  4. Ag foghlaim 10 ré le LR=1e-4
  5. Tástáil

Tá sé úsáideach convolutions díluchtaithe chun meastachán a dhéanamh ar an méid cuid is féidir linn a bhaint ag céim áirithe. Samplaí á ndíluchtú:

Teicníc Jedi chun líonraí convolutional a laghdú - bearradh

Feicimid go bhfuil norm L5 an-íseal ag beagnach gach áit i 1% de na convolutions agus is féidir linn iad a bhaint. Ag gach céim, rinneadh an díluchtú seo arís agus rinneadh measúnú ar na sraitheanna agus cé mhéad a d'fhéadfaí a ghearradh amach.

Críochnaíodh an próiseas iomlán i 4 chéim (uimhreacha anseo agus i ngach áit don RTX 2060 Super):

Céim 75 Líon na bparaiméadar, milliún Méid an líonra, mb Ón tosaigh, % Am rith, ms Coinníoll circumcision
0 0.9656 60 241 100 180 -
1 0.9622 55 218 91 175 5% ar fad
2 0.9625 50 197 83 168 5% ar fad
3 0.9633 39 155 64 155 15% le haghaidh sraitheanna le 400+ convolutions
4 0.9555 31 124 51 146 10% le haghaidh sraitheanna le 100+ convolutions

Cuireadh éifeacht dhearfach amháin le céim 2 - d'oirfeadh méid bhaisc 4 isteach sa chuimhne, rud a chuir dlús mór leis an bpróiseas oiliúna breise.
Ag céim 4, cuireadh stop leis an bpróiseas toisc níor ardaigh fiú oiliúint bhreise fhadtéarmach mAp75 chuig seanluachanna.
Mar thoradh air sin, d'éirigh linn an tátal a bhrostú trí 15%, an méid a laghdú trí 35% agus ní chailleadh go díreach.

Uathoibriú le haghaidh ailtireachtaí níos simplí

I gcás ailtireachtaí líonra níos simplí (gan bloic bhreise, chomhthreomhara agus iarmharacha) go coinníollach, is féidir go leor díriú ar gach sraith convolutional a phróiseáil agus an próiseas chun convolutions a ghearradh amach a uathoibriú.

Chuir mé an rogha seo i bhfeidhm anseo.
Tá sé simplí: níl uait ach feidhm chaillteanais, optimizer agus gineadóirí baisc:

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)

Más gá, is féidir leat na paraiméadair cumraíochta a athrú:

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

Ina theannta sin, cuirtear teorainn bunaithe ar an diall caighdeánach i bhfeidhm. Is é an sprioc an chuid a bhaintear a theorannú, gan convolutions a bhfuil bearta L1 “leordhóthanacha” acu a áireamh:

Teicníc Jedi chun líonraí convolutional a laghdú - bearradh

Mar sin, ceadaímid duit gan ach convolutions lag a bhaint as dáiltí cosúil leis an gceann ar dheis agus ní dhéanann siad difear do bhaint ó dháiltí cosúil leis an gceann clé:

Teicníc Jedi chun líonraí convolutional a laghdú - bearradh

Nuair a bheidh an dáileadh ag druidim le gnáth, is féidir an chomhéifeacht pruning_standart_deviation_part a roghnú ó:

Teicníc Jedi chun líonraí convolutional a laghdú - bearradh
Molaim toimhde de 2 sigma. Nó is féidir leat neamhaird a dhéanamh den ghné seo, ag fágáil an luach < 1.0.

Is é an t-aschur graf de mhéid líonra, caillteanas, agus am rite líonra don tástáil iomlán, normalaithe go 1.0. Mar shampla, anseo laghdaíodh méid an líonra faoi bheagnach 2 uair gan aon cháilíocht a chailleadh (líonra beag conbhlóideach le 100k meáchain):

Teicníc Jedi chun líonraí convolutional a laghdú - bearradh

Tá an luas reatha faoi réir gnáth-luaineachtaí agus níl aon athrú ar bith air. Tá míniú air seo:

  1. Athraíonn líon na convolutions ó áisiúil (32, 64, 128) go dtí nach bhfuil an chuid is mó áisiúil le haghaidh cártaí físeán - 27, 51, etc. D'fhéadfainn a bheith mícheart anseo, ach is dócha go bhfuil éifeacht aige.
  2. Níl an ailtireacht leathan, ach comhsheasmhach. Trí an leithead a laghdú, ní dhéanaimid difear don doimhneacht. Dá bhrí sin, déanaimid an t-ualach a laghdú, ach ní dhéanaimid an luas a athrú.

Dá bhrí sin, léiríodh an feabhas i laghdú 20-30% ar an ualach CUDA le linn na reáchtáil, ach ní i laghdú ar an am a rith

Torthaí

Déanaimis machnamh. Mheasamar 2 rogha le haghaidh bearradh - le haghaidh YOLOv3 (nuair a chaithfidh tú oibriú le do lámha) agus le haghaidh líonraí le ailtireachtaí níos simplí. Is féidir a fheiceáil go bhfuil sé indéanta sa dá chás laghdú ar mhéid an líonra agus luas suas a bhaint amach gan cruinneas a chailleadh. Torthaí:

  • Laghdú ar an méid
  • Rith luasghéaraithe
  • Ualach CUDA a laghdú
  • Mar thoradh air sin, cairdiúlacht don chomhshaol (Bainimid an úsáid is fearr as acmhainní ríomhaireachta sa todhchaí. Áit éigin tá duine sásta Greta Thunberg)

Aguisín

  • Tar éis na céime bearradh, is féidir leat cainníochtú a chur leis (mar shampla, le TensorRT)
  • Soláthraíonn Tensorflow cumais le haghaidh íseal_magnitude_bearradh. Oibríonn.
  • stór Ba mhaith liom a fhorbairt agus beidh áthas orm cabhrú leat

Foinse: will.com

Add a comment