ʻO ka ʻenehana Jedi no ka hōʻemi ʻana i nā pūnaewele convolutional - ʻoki

ʻO ka ʻenehana Jedi no ka hōʻemi ʻana i nā pūnaewele convolutional - ʻoki

Ke kū nei ʻoe i ka hana o ka ʻike ʻana i nā mea. ʻO ka mea nui ka wikiwiki me ka pololei i ʻae ʻia. Lawe ʻoe i ke ʻano hana YOLOv3 a hoʻomaʻamaʻa hou iā ia. ʻOi aku ka pololei (mAp75) ma mua o 0.95. Akā, haʻahaʻa nō ka manawa holo. Auē.

I kēia lā e kāpae kākou i ka quantization. Akā ma lalo nei e nānā kākou i ʻOki Hoʻohālike — ke ʻoki ʻana i nā ʻāpana keu o ka pūnaewele e wikiwiki ai i ka manaʻo me ka ʻole o ka nalowale ʻana o ka pololei. Hōʻike maopopo kēia i kahi, pehea ka nui, a pehea e ʻoki ai. E nānā mākou pehea e hana ai i kēia me ka lima a me kahi e hiki ai ke hana ʻakomi ʻia. Loaʻa kahi waihona Keras ma ka hopena.

Hōʻike

Ma kaʻu hana mua, ʻo Macroscop ma Perm, ua hoʻomohala wau i kahi maʻamau: e nānā mau ana i nā manawa hoʻokō algorithm. Nānā mau ʻia nā manawa holo pūnaewele ma o kahi kānana lawa. ʻO ka ʻikepili kiʻekiʻe loa i ka hana ʻana ʻaʻole maʻamau e hala i kēia kānana, ʻo ia ka mea i alakaʻi iaʻu i ka ʻoki ʻana.

He kumuhana kahiko ka ʻokiʻoki i kūkākūkā ʻia ma Nā haʻiʻōlelo a Stanford i ka makahiki 2017. ʻO ke kumu nui, ʻo ia ka hoʻemi ʻana i ka nui o kahi pūnaewele i aʻo ʻia me ka ʻole o ka nalowale ʻana o ka pololei ma ka wehe ʻana i nā kikowaena like ʻole. He mea maikaʻi ke kani ʻana, akā ʻaʻole pinepine wau e lohe e pili ana i kona hoʻohana ʻana. Malia paha ʻaʻole lawa nā hoʻokō ʻana, ʻaʻohe ʻatikala ʻōlelo Lūkini, a i ʻole manaʻo wale nā ​​​​mea āpau e ʻoki i kahi ʻike a noho mālie.
Akā, paʻakikī ke hoʻomaopopo.

Ka nānā ʻana i ka biology

Aloha au i ka wā e komo mai ai nā manaʻo mai ka biology i ka Deep Learning. Hiki ke hilinaʻi ʻia lākou, e like me ka evolution (ua ʻike anei ʻoe ua like loa ʻo ReLU me ka hana hoʻoulu neuronal i loko o ka lolo?)

Ua kokoke nō hoʻi ke kaʻina hana o ke ʻoki ʻana i ke kumu hoʻohālike i ka biology. Hiki ke hoʻohālikelike ʻia ka pane a ka pūnaewele ma ʻaneʻi me ka plasticity o ka lolo. Aia i loko o ka puke kekahi mau laʻana hoihoi. ʻO Norman Doidge:

  1. Ua hoʻolālā hou ka lolo o ka wahine i hānau ʻia me hoʻokahi hapalua wale nō iā ia iho e hana i nā hana o ka hapalua i nalowale.
  2. Ua pana ke kanaka i ka ʻāpana o kona lolo nona ke kuleana no ka ʻike. I ka hala ʻana o ka manawa, ua lawe nā ʻāpana ʻē aʻe o ka lolo i kēia mau hana. (ʻAʻole mākou e hoʻāʻo e hana hou i kēia.)

Pēlā nō, hiki iā ʻoe ke ʻoki i kekahi o nā pūʻolo nāwaliwali mai kāu kumu hoʻohālike. I ka wā pilikia, hiki ke hoʻohana ʻia nā pūʻolo i koe e pani i nā mea i ʻoki ʻia.

Makemake ʻoe i ke aʻo hoʻoili (Transfer Learning) a i ʻole ke aʻo nei ʻoe mai ka wā kahiko?

Koho helu ʻekahi. Ke hoʻohana nei ʻoe iā Transfer Learning ma Yolov3, Retina, Mask-RCNN, a i ʻole U-Net. Akā ʻo ka hapa nui, ʻaʻole pono mākou e ʻike i nā papa mea 80, e like me COCO. I koʻu ʻike, ua kaupalena ʻia i 1-2 mau papa. He mea hoʻowalewale paha ke manaʻo he nui loa kahi hoʻolālā no 80 mau papa. Manaʻo ia e pono e hoʻemi ʻia ke ʻano o ka hoʻolālā. Eia kekahi, makemake mākou e hana i kēia me ka ʻole o ka nalowale ʻana o nā kaumaha i hoʻomaʻamaʻa mua ʻia.

Koho helu ʻelua. Malia paha he nui kāu mau kumuwaiwai ʻikepili a me ka helu ʻana, a i ʻole makemake wale ʻoe i kahi hoʻolālā maʻamau loa. ʻAʻole ia he mea nui. Akā ke hoʻomaʻamaʻa nei ʻoe i ka pūnaewele mai ka wā ʻole. ʻO ke kaʻina hana maʻamau, ʻo ia ke nānā i ka hoʻonohonoho ʻikepili, koho i kahi hoʻolālā ikaika loa, a hoʻokuke i nā hāʻule e pale aku i ka overfitting. Ua ʻike au i nā hāʻule 0.6, e Karl.

Ma nā hihia ʻelua, hiki ke hoʻemi ʻia ka pūnaewele. Ua hoʻoikaika mai ʻoe iaʻu. I kēia manawa, e ʻike kākou i ke ʻano o ka ʻoki ʻana.

ʻO ka algorithm maʻamau

Ua hoʻoholo mākou e hiki iā mākou ke wehe i nā pelu. He mea maʻalahi loa ia:

ʻO ka ʻenehana Jedi no ka hōʻemi ʻana i nā pūnaewele convolutional - ʻoki

ʻO ka wehe ʻana i kekahi convolution e hoʻokaumaha i ka pūnaewele, kahi e alakaʻi pinepine ai i ka hoʻonui ʻana i kekahi hewa. Ma kekahi ʻaoʻao, ʻo kēia hoʻonui hewa he hōʻailona ia o ke ʻano o kā mākou wehe ʻana i nā convolutions (no ka laʻana, ʻo ka hoʻonui nui e hōʻike ana ke hana nei mākou i kahi mea hewa). Eia nō naʻe, ʻae maikaʻi ʻia ka hoʻonui hewa liʻiliʻi a hiki ke hoʻoponopono pinepine ʻia me ka hoʻomaʻamaʻa māmā ma hope me kahi LR liʻiliʻi. E hoʻohui kākou i kahi hana hoʻomaʻamaʻa hou:

ʻO ka ʻenehana Jedi no ka hōʻemi ʻana i nā pūnaewele convolutional - ʻoki

I kēia manawa, pono mākou e ʻike i ka wā e makemake ai mākou e hoʻōki i kā mākou Learning<->Pruning loop. Aia paha kekahi mau hiʻohiʻona maʻamau ʻole ma ʻaneʻi, e like me ka wā e pono ai mākou e hoʻonui i ka pūnaewele i lalo i kahi nui kikoʻī a me ka wikiwiki o ka holo (no ka laʻana, no nā polokalamu kelepona). Eia naʻe, ʻo ke hiʻohiʻona maʻamau ka hoʻomau ʻana i ka loop a hiki i ka wā e lilo ai ka hewa i kiʻekiʻe ma mua o kahi waiwai i ʻae ʻia. E hoʻohui kākou i ke kūlana:

ʻO ka ʻenehana Jedi no ka hōʻemi ʻana i nā pūnaewele convolutional - ʻoki

No laila, ua maopopo ka algorithm. I kēia manawa e noʻonoʻo kākou pehea e hoʻoholo ai i nā convolutions e wehe.

E huli i nā ʻāpana hiki ke holoi ʻia

Pono mākou e holoi i kekahi mau pūʻolo. ʻO ka wikiwiki ʻana a me ke "pana ʻana" i kēlā me kēia mea he manaʻo maikaʻi ʻole ia, ʻoiai e holo pono ana ia. Akā inā loaʻa iā ʻoe kekahi mana noʻonoʻo, hiki iā ʻoe ke noʻonoʻo e pili ana i ia mea a hoʻāʻo e ʻike i nā pūʻolo "nāwaliwali" no ka holoi ʻana. Aia kekahi mau koho:

  1. ʻO ke ana L1 haʻahaʻa loa a i ʻole ka ʻokiʻoki_haʻahaʻaʻO ka manaʻo e hāʻawi iki ana nā convolutions me nā waiwai kaumaha liʻiliʻi i ka hoʻoholo hope loa
  2. ʻO ka helu L1 liʻiliʻi loa i hāʻawi ʻia i ka awelika a me ka ʻokoʻa maʻamau. Hoʻohui ʻia me kahi kuhi o ke ʻano o ka hoʻolaha.
  3. ʻO ka uhi ʻana i ka convolution a me ke kāpae ʻana i nā mea i loaʻa ka hopena liʻiliʻi loa ma ka pololei hope loaʻOi aku ka pololei o ka ʻike ʻana i nā pelu liʻiliʻi, akā he nui ka manawa a me nā kumuwaiwai.
  4. ʻO kekahi

Loaʻa i kēlā me kēia koho kona mau manaʻo ponoʻī no ke ola a me ka hoʻokō ʻana. Maanei, e noʻonoʻo mākou i ke koho me ka helu L1 haʻahaʻa loa.

Kaʻina hana lima no YOLOv3

Aia i loko o ke ʻano kumu nā poloka koena. Akā, ʻoiai lākou he mea ʻoluʻolu no nā pūnaewele hohonu, he mea keakea iki lākou. ʻO ka paʻakikī, ʻaʻole hiki iā mākou ke wehe i nā hoʻohālikelike me nā ʻōkuhi like ʻole i loko o kēia mau papa:

ʻO ka ʻenehana Jedi no ka hōʻemi ʻana i nā pūnaewele convolutional - ʻoki

No laila, e koho kākou i nā papa mai kahi e hiki ai iā mākou ke wehe manuahi i nā hoʻoponopono:

ʻO ka ʻenehana Jedi no ka hōʻemi ʻana i nā pūnaewele convolutional - ʻoki

I kēia manawa, e kūkulu kākou i kahi pōʻaiapuni hana:

  1. Hoʻoiho i nā hoʻāla
  2. E noʻonoʻo kākou i ka nui e ʻoki ai
  3. Ua ʻoki mākou
  4. Ke aʻo nei mākou i nā ʻāpana he 10 me LR=1e-4
  5. Hoʻāʻo

He mea pono ka wehe ʻana i nā pelu no ka loiloi ʻana i ka nui o nā mea hiki ke wehe ʻia ma kahi ʻanuʻu i hāʻawi ʻia. Nā hiʻohiʻona o ka wehe ʻana:

ʻO ka ʻenehana Jedi no ka hōʻemi ʻana i nā pūnaewele convolutional - ʻoki

ʻIke mākou ma aneane ma nā wahi āpau, he 5% o nā convolutions he haʻahaʻa loa ka L1 maʻamau, a hiki iā mākou ke wehe iā lākou. Ma kēlā me kēia ʻanuʻu, ua hana hou ʻia kēia hoʻokuʻu ʻana, a ua hana ʻia kahi loiloi o nā papa a me ka nui o nā mea hiki ke wehe ʻia.

Ua lawe ke kaʻina holoʻokoʻa i ʻehā mau ʻanuʻu (ʻo nā helu ma aneʻi a me nā wahi ʻē aʻe no ka RTX 2060 Super):

Mea hanamAp75Helu o nā palena, milionaKa nui o ka pūnaewele, MBMai ke kumu mua, %Ka manawa holo, msKe kūlana ʻoki poepoe
00.965660241100180-
10.962255218911755% o nā mea āpau
20.962550197831685% o nā mea āpau
30.9633391556415515% no nā papa me 400+ convolutions
40.9555311245114610% no nā papa me 100+ convolutions

Ua hoʻohui ka Hana 2 i hoʻokahi hopena maikaʻi: ua kūpono ka nui o ka pūʻulu 4 i loko o ka hoʻomanaʻo, kahi i hoʻolalelale nui ai i ke kaʻina hana hoʻomaʻamaʻa hou.
Ma ka ʻanuʻu 4, ua hoʻōki ʻia ke kaʻina hana, ʻoiai ʻaʻole i hoʻokiʻekiʻe ke aʻo hou ʻana no ka manawa lōʻihi iā mAp75 i nā waiwai kahiko.
ʻO ka hopena, ua hiki iā mākou ke hoʻolalelale i ka manaʻo 15%, e hoʻemi i ka nui ma 35% a ʻaʻole e nalowale ka pololei.

ʻAtomasi no nā hoʻolālā maʻalahi

No nā hoʻolālā pūnaewele maʻalahi (me ka ʻole o ka hoʻohui kūlana, concatenate, a me nā poloka koena), hiki loa ke kālele i ka hana ʻana i nā papa convolutional āpau a hoʻokele pono i ke kaʻina hana o ka ʻoki ʻana i nā convolutions.

Ua hoʻokō wau i kēia koho. maanei.
He maʻalahi: ʻo nā mea āu e pono ai he hana pohō, kahi mea hoʻonui, a me nā mea hana batch:

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)

Inā pono, hiki iā ʻoe ke hoʻololi i nā hoʻonohonoho hoʻonohonoho:

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

Eia kekahi, ua hoʻokō ʻia kahi palena e pili ana i ka deviation maʻamau. ʻO ka pahuhopu ka palena ʻana i ka ʻāpana o ka ʻikepili e wehe ʻia, koe naʻe nā convolutions me nā ana L1 "lawa" mua:

ʻO ka ʻenehana Jedi no ka hōʻemi ʻana i nā pūnaewele convolutional - ʻoki

Ma kēia ʻano, ʻae wale mākou i nā convolutions nāwaliwali e wehe ʻia mai nā hāʻawi like me ka mea ʻākau a ʻaʻole hoʻi e hoʻopilikia i ka wehe ʻana mai nā hāʻawi like me ka mea hema:

ʻO ka ʻenehana Jedi no ka hōʻemi ʻana i nā pūnaewele convolutional - ʻoki

Ke hoʻokokoke ka hoʻolaha ʻana i ke ʻano maʻamau, hiki ke koho ʻia ke koina pruning_standard_deviation_part mai:

ʻO ka ʻenehana Jedi no ka hōʻemi ʻana i nā pūnaewele convolutional - ʻoki
Ke paipai nei au i ka hoʻomanawanui 2 sigma. A i ʻole, hiki iā ʻoe ke hoʻokuke i kēia hiʻohiʻona a waiho i ka waiwai < 1.0.

ʻO ka hopena he kiʻikuhi o ka nui o ka pūnaewele, ka pohō, a me ka manawa holo pūnaewele no ka hoʻāʻo holoʻokoʻa, i hoʻonohonoho ʻia i 1.0. No ka laʻana, ma aneʻi ua hoʻemi ʻia ka nui o ka pūnaewele ma kahi o 2 me ka ʻole o ka pohō o ka maikaʻi (kahi pūnaewele convolutional liʻiliʻi me 100 mau kaumaha):

ʻO ka ʻenehana Jedi no ka hōʻemi ʻana i nā pūnaewele convolutional - ʻoki

Ua pili ka wikiwiki o ka holo i nā loli maʻamau a ua aneane ʻaʻole i loli. Aia kekahi wehewehe no kēia:

  1. Hoʻololi ka helu o nā convolutions mai ka maʻalahi (32, 64, 128) i nā mea i maʻalahi ʻole no nā kāleka wikiō - 27, 51, a pēlā aku. Hiki iaʻu ke hewa ma aneʻi, akā ʻo ka mea nui loa he hopena kēia.
  2. ʻAʻole ākea ke ʻano o ka hoʻolālā ʻana, akā kūlike ia. Ma ka hōʻemi ʻana i ka laulā, waiho mākou i ka hohonu. Hoʻemi kēia i ka ukana me ka ʻole o ka hoʻopilikia ʻana i ka wikiwiki.

No laila, ua hopena ka hoʻomaikaʻi ʻana i ka emi ʻana o 20-30% o ka ukana CUDA i ka wā o ka holo ʻana, akā ʻaʻole i ka emi ʻana o ka manawa holo.

Nā hopena

E noʻonoʻo kākou. Ua noʻonoʻo mākou i ʻelua mau koho ʻokiʻoki: hoʻokahi no YOLOv3 (e pono ai ka hana lima) a hoʻokahi no nā pūnaewele me nā hoʻolālā maʻalahi. Ua maopopo i nā hihia ʻelua, hiki ke hoʻemi ʻia ka nui o ka pūnaewele a hoʻokō ʻia ka wikiwiki me ka ʻole o ka mōhai ʻana i ka pololei. Nā hopena:

  • E hoemi ana i ka nui
  • Holo wikiwiki
  • Hoʻemi i ka ukana CUDA
  • ʻO ka hopena, ka launa pū ʻana me ke kaiapuni (Hoʻonui mākou i ka hoʻohana ʻana i nā kumuwaiwai kamepiula i ka wā e hiki mai ana. Ma kahi e hauʻoli ai kekahi ʻO Greta Thunberg)

Pākuʻi

  • Ma hope o ke kaʻina hana ʻokiʻoki, hiki iā ʻoe ke hoʻololi i ka quantization (no ka laʻana, me TensorRT)
  • Hāʻawi ʻo Tensorflow i nā hiki no ʻokiʻoki haʻahaʻaHana.
  • waihona waihona Makemake au e hoʻomohala a hauʻoli wau e loaʻa ke kōkua

Source: www.habr.com

E kūʻai i ka hoʻokipa hilinaʻi no nā pūnaewele me ka pale DDoS, nā kikowaena VPS VDS 🔥 E kūʻai i ka hoʻokipa pūnaewele hilinaʻi me ka pale DDoS, nā kikowaena VPS VDS | ProHoster