ベースライン モデル
SSD (https://arxiv.org/abs/1512.02325) は、画像内のオブジェクトを検出するためのディープ ニューラル ネットワークです。この例では、モデルのバックボーンとして VGG16 を使用しています。
コンフィギュレーション ファイルを作成する
config.prototxt という名前のファイルを作成します。
workspace: "examples/decent_p/ssd/"
model: "examples/decent_p/ssd/float.prototxt"
weights: "examples/decent_p/ssd/float.caffemodel"
solver: "examples/decent_p/ssd/solver.prototxt"
gpu: "0,1,2,3"
test_iter: 10
acc_name: "detection_eval"
ssd_ap_version: "11point"
rate: 0.15
pruner {
method: REGULAR
exclude {
layer_top:
"conv4_3_norm_mbox_loc"
layer_top:
"conv4_3_norm_mbox_conf"
layer_top: "fc7_mbox_loc"
layer_top: "fc7_mbox_conf"
layer_top:
"conv6_2_mbox_loc"
layer_top:
"conv6_2_mbox_conf"
layer_top:
"conv7_2_mbox_loc"
layer_top:
"conv7_2_mbox_conf"
layer_top:
"conv8_2_mbox_loc"
layer_top:
"conv8_2_mbox_conf"
layer_top:
"conv9_2_mbox_loc"
layer_top:
"conv9_2_mbox_conf"
}
}
SSD ネットワークの性質上、一部のたたみ込み層のフィルター数は固定する必要があるため、これらのレイヤーはプルーニングから除外します。上記の例では、「exclude」セクションに除外するレイヤー トップの名前を指定しています。通常、たたみ込み層はラベルを使用して直接計算すると、プルーニングできません。たとえば、ラベルを使用してたたみ込み層の出力を計算して top-5 の精度を得る必要がある場合、プルーニングから除外します。ラベルのクラス数は固定されているため、このたたみ込み層の出力サイズがラベルと一致していることを確認する必要があります。
モデル解析を実行する
$ ./vai_p_caffe ana –config config.prototxt
モデルをプルーニングする
$ ./vai_p_caffe prune –config config.prototxt
プルーニング済みモデルを微調整する
微調整の初期パラメーターとして、次のソルバー設定を使用できます。
net: "float.prototxt"
test_iter: 229
test_interval: 500
base_lr: 0.001
display: 10
max_iter: 120000
lr_policy: "multistep"
gamma: 0.1
momentum: 0.9
weight_decay: 0.0005
snapshot: 500
snapshot_prefix: "SSD_"
solver_mode: GPU
device_id: 4
debug_info: false
snapshot_after_train: true
test_initialization: false
average_loss: 10
stepvalue: 80000
stepvalue: 100000
stepvalue: 120000
iter_size: 1
type: "SGD"
eval_type: "detection"
ap_version: "11point"
$ ./vai_p_caffe finetune -config config.prototxt
推定所要時間: Cityscapes の学習用データセットを使用した場合、650 エポックで約 50 時間 (2975 画像、4 x NVIDIA Tesla V100)。
最終出力を生成する
モデルを完成させるには、次を実行します。
$ ./vai_p_caffe transform –model baseline.prototxt –weights finetuned_model.caffemodel -output
final.caffemodel
プルーニングの結果
- データセット
- Cityscapes (4 クラス)
- Input Size
- 500 x 500
- GPU プラットフォーム
- 4 x NVIDIA Tesla V100
- FLOPs
- 173G
- パラメーター数
- 24M
丸め処理 | FLOPs | パラメーター | mAP |
---|---|---|---|
0 | 100% | 100% | 0.571 |
1 | 50% | 29% | 0.587 |
2 | 9.7% | 9.7% | 0.559 |