
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 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 ?)
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. :
- 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.
- 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 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:

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:

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:
- ʻO ka manaʻo e hāʻawi iki ana nā convolutions me nā waiwai kaumaha liʻiliʻi i ka hoʻoholo hope loa
- ʻ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.
- ʻOi aku ka pololei o ka ʻike ʻana i nā pelu liʻiliʻi, akā he nui ka manawa a me nā kumuwaiwai.
- ʻ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:

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

I kēia manawa, e kūkulu kākou i kahi pōʻaiapuni hana:
- Hoʻoiho i nā hoʻāla
- E noʻonoʻo kākou i ka nui e ʻoki ai
- Ua ʻoki mākou
- Ke aʻo nei mākou i nā ʻāpana he 10 me LR=1e-4
- 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:

ʻ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 hana | mAp75 | Helu o nā palena, miliona | Ka nui o ka pūnaewele, MB | Mai ke kumu mua, % | Ka manawa holo, ms | Ke kūlana ʻoki poepoe |
|---|---|---|---|---|---|---|
| 0 | 0.9656 | 60 | 241 | 100 | 180 | - |
| 1 | 0.9622 | 55 | 218 | 91 | 175 | 5% o nā mea āpau |
| 2 | 0.9625 | 50 | 197 | 83 | 168 | 5% o nā mea āpau |
| 3 | 0.9633 | 39 | 155 | 64 | 155 | 15% no nā papa me 400+ convolutions |
| 4 | 0.9555 | 31 | 124 | 51 | 146 | 10% 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. .
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:

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:

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

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):

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:
- 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.
- ʻ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 )
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 Hana.
- Makemake au e hoʻomohala a hauʻoli wau e loaʻa ke kōkua
Source: www.habr.com
