ืืคื ืื ืฉืื ืืืฉืืื ืฉื ืืืืื ืืคืฆืื. ืืขืืืคืืช ืืื ืืืืจืืช ืืคืขืืื ืขื ืืืืง ืืงืืื. ืืชื ืืืงื ืืช ืืจืืืืงืืืจืช YOLOv3 ืืืืื ืช ืืืชื. ืืืืืง (mAp75) ืืืื ื-0.95. ืืื ืงืฆื ืืจืืฆื ืขืืืื ื ืืื. ืฉืึฐืืึผืืึนืช.
ืืืื ื ืขืงืืฃ ืืช ืืงืืื ืืืืฆืื. ืืืชืืช ืืืืจื ื ืกืชืื ืืื ืืืืื - ืืืชืื ืืืงืื ืืืืชืจืื ืฉื ืืจืฉืช ืืื ืืืืืฅ ืืช ืืืกืงื ืืื ืืืืื ืืืืง. ืืจืืจ ืืืคื, ืืื ืืืื ืืืชืื. ืืืื ืืืืื ืืื ืืขืฉืืช ืืช ืื ืืืืคื ืืื ื ืืืืื ืืชื ืืืื ืืืคืื ืืช ืื ืืืืืืืื. ืืกืืฃ ืืฉ ืืืืจ ืขื ืงืจืก.
ืืืื
ืืืงืื ืขืืืืชื ืืงืืื, ืืงืจืืกืงืืค ืืคืจื, ืจืืฉืชื ืืจืื ืืื - ืื ืืจ ืชืืื ืืช ืืื ืืืืฆืืข ืฉื ืืืืืจืืชืืื. ืืชืืื ืืืืง ืืช ืืื ืืจืืฆื ืฉื ืืจืฉืช ืืืืฆืขืืช ืืกื ื ืืชืืื. ืืืจื ืืื ืืชืงืื ืืืืฆืืจ ืื ืขืืืจ ืืช ืืคืืืืจ ืืื, ืื ืฉืืืืื ืืืชื ืืืืืื.
ืืืืื ืืื ื ืืฉื ืืฉื ืฉื ืืื ืื
ืืื ืืืื ื ืคืจืง ืืช ืื
ืืฆืฆื ืืืืืืืืื
ืื ื ืืืื ืืช ืื ืืฉืืืืื ืขืืืงื ืืกืชืืืช ืขื ืจืขืืื ืืช ืฉืืืืขืื ืืืืืืืืืื. ืืคืฉืจ ืืกืืื ืขืืืื, ืืื ืืืืืืืฆืื, (ืืื ืืืขืช ืฉ-ReLU ืืืื ืืืื ื
ืชืืืื ืืืืื ืืืื ืงืจืื ืื ืืืืืืืืื. ื ืืชื ืืืฉืืืช ืืช ืชืืืืช ืืจืฉืช ืืื ืืคืืกืืืช ืฉื ืืืื. ืืฉ ืืื ืืืืืืืช ืืขื ืืื ืืช ืืกืคืจ.
- ืืืื ืฉื ืืืฉื ืฉื ืืืื ืขื ืืฆื ืืื ืืืื ืชืื ืช ืืช ืขืฆืื ืืืืฉ ืืืฆืข ืืช ืืคืื ืงืฆืืืช ืฉื ืืืฆื ืืืกืจ.
- ืืืืืจ ืืจื ืืช ืืืืง ืืืืื ืืืืจืื ืขื ืืจืืืื. ืขื ืืืื, ืืืงืื ืืืจืื ืืืื ืืฉืชืืื ืขื ืืคืื ืงืฆืืืช ืืืื. (ืื ืื ื ืื ืื ืกืื ืืืืืจ)
ืืื ืื, ืืชื ืืืื ืืืชืื ืืื ืืืคืืชืืืื ืืืืฉืื ืืืืื ืฉืื. ืืืืฆื ืืืจืื, ืืืืืืืช ืื ืืชืจืืช ืืขืืจื ืืืืืืฃ ืืช ืืืชืืืื.
ืืื ืืชื ืืืื Transfer Learning ืื ืฉืืชื ืืืื ืืืคืก?
ืืคืฉืจืืช ืืกืคืจ ืืืช. ืืชื ืืฉืชืืฉ ื-Transfer Learning ื-Yolov3. ืจืฉืชืืช, ืืกืืช-RCNN ืื U-Net. ืืื ืจืื ืืืื ืื ืื ื ืื ืฆืจืืืื ืืืืืช 80 ืืืืงืืช ืืืืืืงื ืืื ื-COCO. ืืชืจืืื ืฉืื ืืื ืืืืื ืืืืชืืช ื'-ื'. ืืคืฉืจ ืืื ืื ืฉืืืจืืืืงืืืจื ืฉื 1 ืืืืงืืช ืืืืชืจืช ืืื. ืื ืืฆืืืข ืขื ืื ืฉืฆืจืื ืืืงืืื ืืช ืืืจืืืืงืืืจื. ืืชืจ ืขื ืื, ืื ื ืจืืฆื ืืขืฉืืช ืืืช ืืืื ืืืื ืืช ืืืฉืงืืืืช ืืงืืืืืช ืืืชืืื ืืช ืืจืืฉ.
ืืคืฉืจืืช ืืกืคืจ ืฉืชืืื. ืืืื ืืฉ ืื ืืจืื ื ืชืื ืื ืืืฉืืื ืืืฉืื, ืื ืฉืืชื ืคืฉืื ืฆืจืื ืืจืืืืงืืืจื ืกืืคืจ ืืืชืืืช ืืืฉืืช. ืื ืืฉื ื. ืืื ืืชื ืืืื ืืช ืืจืฉืช ืืืคืก. ืื ืืื ืืืงืืื ืืื ืืืกืชืื ืขื ืืื ื ืื ืชืื ืื, ืืืืืจ ืืจืืืืงืืืจื ืืขืืช ืขืืฆืื ืืืืืืช ืืืืืืฃ ื ืืฉืจืื ืืืืืฉืจื ืืืืฉ. ืจืืืชื 0.6 ื ืืฉืจืื, ืงืืจื.
ืืฉื ื ืืืงืจืื ื ืืชื ืืฆืืฆื ืืช ืืจืฉืช. ืืื ืืืืืืฆืื. ืขืืฉืื ืืื ื ืื ืืืืื ืืืื ืกืื ืฉื ืืืืื ืืจืืช ืืืื
ืืืืืจืืชื ืืืื
ืืืืื ื ืฉื ืืื ืืืกืืจ ืืช ืืืืืืืช. ืื ื ืจืื ืื ืคืฉืื:
ืืกืจืช ืื ืคืืชืื ืืืืืฆื ืืช ืืจืฉืช, ืื ืฉืืืืื ืืืจื ืืื ืืขืืืื ืืกืืืืช ืืฉืืืืืช. ืืฆื ืืื, ืขืืืื ืื ืืฉืืืื ืืื ืืื ืืืงืืืจ ืืืืคื ืฉืื ืื ื ืืกืืจืื ืคืืชืืืื ืืฆืืจื ื ืืื ื (ืืืืืื, ืขืืืื ืืืืื ืืขืืื ืขื ืื ืฉืื ื ืขืืฉืื ืืฉืื ืื ืืกืืจ). ืืื ืขืืืื ืงืื ื ืืื ืื ืืงืืืืช ืืืขืชืื ืงืจืืืืช ืืื ืืืืื ืขื ืืื ืืืืื ื ืืกืฃ ืงื ืืืืจ ืืื ืขื LR ืงืื. ืืืกืฃ ืฉืื ืืืืื ื ืืกืฃ:
ืขืืฉืื ืื ืื ื ืฆืจืืืื ืืืืื ืืชื ืื ืื ื ืจืืฆืื ืืืคืกืืง ืืช ืืืืืช ืืืืืื<->ืืืืื ืฉืื ื. ืขืฉืืืืช ืืืืืช ืืื ืืคืฉืจืืืืช ืืงืืืืืืช ืืืฉืจ ืื ืื ื ืฆืจืืืื ืืืงืืื ืืช ืืจืฉืช ืืืืื ืืืืืจืืช ืืกืืืืื (ืืืฉื, ืขืืืจ ืืืฉืืจืื ื ืืืืื). ืขื ืืืช, ืืืคืฉืจืืช ืื ืคืืฆื ืืืืชืจ ืืื ืืืืฉืื ืืืืืืจ ืขื ืฉืืฉืืืื ืชืืื ืืืืื ืืืืงืืื. ืืืกืฃ ืชื ืื:
ืื ืืืืืืจืืชื ืืชืืจืจ. ื ืืชืจ ืืืืื ืืืฆื ืืงืืืข ืืช ืืคืืชืืืื ืฉื ืืืงื.
ืืคืฉ ืืืืืืช ืฉื ืืืงื
ืื ืื ื ืฆืจืืืื ืืืกืืจ ืืื ืคืืชืืืื. ืืืืจ ืงืืืื ื"ืืืจืืช" ืืื ืืื ืื ืจืขืืื ืจืข, ืืืจืืช ืฉืื ืืขืืื. ืืื ืืืืืื ืฉืืฉ ืื ืจืืฉ, ืืชื ืืืื ืืืฉืื ืืื ืกืืช ืืืืืจ ืคืืชืืืื "ืืืฉืื" ืืืกืจื. ืืฉื ื ืืกืคืจ ืืคืฉืจืืืืช:
ืืงืื ื ืืืืชืจ ืฉื ืืืื L1 ืื ืืืืื_ืืืืื ื ืืื . ืืจืขืืื ืฉืคืืชืืืื ืขื ืืฉืงืืื ืงืื ืื ืชืืจืืื ืืขื ืืืืืื ืืกืืคืืช- ืืื L1 ืืงืื ืืืืชืจ ืชืื ืืชืืฉืืืช ืืืืืฆืข ืืกืืืืช ืชืงื. ืื ื ืืฉืืืืื ืขื ืืขืจืื ืฉื ืืืคื ืืืืืงื.
ืืืกืื ืคืืชืืืื ืืื ืืืืื ืฉื ืืื ืืคืืืช ืืฉืคืืขืื ืขื ืืืืืง ืืกืืคื . ืงืืืขื ืืืืืงืช ืืืชืจ ืฉื ืคืืชืืืื ืื ืืฉืืขืืชืืื, ืืื ืืืื ืืืืืช ืืื ืืืฉืืืื.- ืืืจืื
ืืื ืืืช ืืืืคืฉืจืืืืช ืืฉ ืืืืช ืืืืื ืืชืืื ืืช ืืืฉืื ืืฉืื. ืืื ืื ื ืจืืืื ืืช ืืืคืฉืจืืช ืขื ืืื L1 ืืงืื ืืืืชืจ
ืชืืืื ืืื ื ืขืืืจ YOLOv3
ืืืจืืืืงืืืจื ืืืงืืจืืช ืืืืื ืืืืงืื ืฉืืืจืืื. ืืื ืื ืืฉื ื ืืื ืื ืืื ืืืื ืขืืืจ ืจืฉืชืืช ืขืืืงืืช, ืื ืืคืจืืขื ืื ื ืืืงืฆืช. ืืงืืฉื ืืื ืฉืื ื ืืชื ืืืืืง ืืชืืืืช ืขื ืืื ืืงืกืื ืฉืื ืื ืืฉืืืืช ืืื:
ืืื, ืืืื ื ืืืจ ืฉืืืืช ืฉืืื ื ืืื ืืืืืง ืืชืืื ืืืคืฉืืช:
ืขืืฉืื ืืืื ื ืื ื ืืืืืจ ืขืืืื:
- ืืขืืืช ืืคืขืืืช
- ืืืืื ืืื ืืืชืื
- ืชืคืกืืง
- ืืืืื 10 ืขืืื ืื ืขื LR=1e-4
- ืืืืงื
ืคืจืืงืช ืคืืชืืืื ืฉืืืืฉืืช ืืื ืืืขืจืื ืืื ืืืง ื ืืื ืืืกืืจ ืืฉืื ืืกืืื. ืืืืืืืช ืืคืจืืงื:
ืื ื ืจืืืื ืฉืืืขื ืืื ืืงืื ื-5% ืืืคืืชืืืื ืืฉ ื ืืจืื L1 ื ืืืื ืืืื ืืื ืื ื ืืืืืื ืืืกืืจ ืืืชื. ืืื ืฉืื ืืืจื ืขื ืืคืจืืงื ืืื ืื ืขืฉืชื ืืขืจืื ืืืื ืฉืืืืช ืืืื ื ืืชื ืืืชืื.
ืื ืืชืืืื ืืืฉืื ื-4 ืฉืืืื (ืืกืคืจืื ืืื ืืืื ืืงืื ืขืืืจ RTX 2060 Super):
ืฉืื | mAp75 | ืืกืคืจ ืคืจืืืจืื, ืืืืืื | ืืืื ืจืฉืช, mb | ืืืืชืืื, % | ืืื ืจืืฆื, ืืืจืช | ืืฆื ืืจืืช ืืืื |
---|---|---|---|---|---|---|
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+ ืคืืชืืืื |
4 | 0.9555 | 31 | 124 | 51 | 146 | 10% ืขืืืจ ืฉืืืืช ืขื 100+ ืคืืชืืืื |
ืืฉืคืขื ืืืืืืช ืืืช ื ืืกืคื ืืฉืื 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 "ืืกืคืืงืื" ืืืจ:
ืืคืืื, ืื ื ืืืคืฉืจืื ืื ืืืกืืจ ืจืง ืคืืชืืืื ืืืฉืื ืืืชืคืืืืช ืืืืืืช ืืื ืืืื ืืช ืืื ืืืฉืคืืข ืขื ืืืกืจื ืืืืชืคืืืืช ืืืืืืช ืืฉืืืืืช:
ืืืฉืจ ืืืชืคืืืืช ืืชืงืจืืช ืื ืืจืืืืช, ื ืืชื ืืืืืจ ืืช ืืงืื ื-pruning_standart_deviation_part ืืชืื:
ืื ื ืืืืืฅ ืขื ืื ืื ืฉื 2 ืกืืืื. ืื ืฉืืชื ืืืื ืืืชืขืื ืืชืืื ื ืื, ืืืืฉืืืจ ืืช ืืขืจื < 1.0.
ืืคืื ืืื ืืจืฃ ืฉื ืืืื ืจืฉืช, ืืืืื ืืืื ืจืืฆื ืฉื ืืจืฉืช ืขืืืจ ืื ืืืืืงื, ืื ืืจืื ื-1.0. ืืืืืื, ืืื ืืืื ืืจืฉืช ืืฆืืืฆื ืืืขื ืคื 2 ืืื ืืืืื ืืืืืช (ืจืฉืช ืงืื ืืืืืฆืืื ืืช ืงืื ื ืขื ืืฉืงืืื ืฉื 100 ืืืฃ):
ืืืืจืืช ืืจืืฆื ื ืชืื ื ืืชื ืืืืช ืจืืืืืช ืื ืฉืืจืช ืืืขื ืืื ืฉืื ืื. ืืฉ ืืื ืืกืืจ:
- ืืกืคืจ ืืคืืชืืืื ืืฉืชื ื ืื ืื (32, 64, 128) ืืื ืื ืื ืืืืชืจ ืขืืืจ ืืจืืืกื ืืกื - 27, 51 ืืื'. ืืืื ืืืืืช ืฉืื ื ืืืขื ืืื, ืืื ืกืืืจ ืืื ืื ืฉืืฉ ืืื ืืฉืคืขื.
- ืืืจืืืืงืืืจื ืืื ื ืจืืื, ืืื ืขืงืืืช. ืขื ืืื ืืงืื ืช ืืจืืื, ืืื ื ื ืืฉืคืืขืื ืขื ืืขืืืง. ืืคืืื, ืื ื ืืคืืืชืื ืืช ืืขืืืก, ืื ืื ืืฉื ืื ืืช ืืืืืจืืช.
ืืื, ืืฉืืคืืจ ืืชืืื ืืืคืืชืช ืขืืืก ื-CUDA ืืืืื ืืจืืฆื ื-20-30%, ืื ืื ืืืคืืชืช ืืื ืืจืืฆื.
ืชืืฆืืืช ืฉื
ืืืื ื ืืจืืจ. ืฉืงืื ื 2 ืืคืฉืจืืืืช ืืืืืื - ืขืืืจ YOLOv3 (ืืฉืฆืจืื ืืขืืื ืขื ืืืืืื) ืืืจืฉืชืืช ืขื ืืจืืืืงืืืจืืช ืคืฉืืืืช ืืืชืจ. ื ืืชื ืืจืืืช ืฉืืฉื ื ืืืงืจืื ื ืืชื ืืืฉืื ืืงืื ืช ืืืื ืจืฉืช ืืืืฆื ืืื ืืืืื ืืืืง. ืชืืฆืืืช:
- ืืงืื ืช ืืืืื
- ืจืืฆืช ืืืฆื
- ืืคืืชืช ืขืืืก CUDA
- ืืชืืฆืื ืืื, ืืืืืืชืืืช ืืกืืืื (ืื ืื ื ืืืืขืืื ืืช ืืฉืืืืฉ ืืขืชืืื ืืืฉืืื ืืืฉืื. ืืืคืฉืื ืืื ืฉืื
ืืจืื ืชืื ืืจื )
ื ืกืคื
- ืืืืจ ืฉืื ืืืืืื, ื ืืชื ืืืืกืืฃ ืงืืื ืืืืฆืื (ืืืืืื, ืขื TensorRT)
- Tensorflow ืืกืคืง ืืืืืืช ืขืืืจ
ืืืืื_ืืืจืื ื ืืืื . ืขืืื. ืืืืจ ืื ื ืจืืฆื ืืืชืคืชื ืืืฉืื ืืขืืืจ
ืืงืืจ: www.habr.com