R-CNN: тренируйтесь быстрее Модель ResNet-50 R-CNN с собственными данными

искусственный интеллект

В последний раз, когда я использовал Faster R-CNN для обучения сети VGG-16, чтобы повысить точность распознавания, я использовал сеть ResNet, чтобы еще раз обучить ее на тех же данных.


Основной процесс аналогичен обучению сети VGG-16, вы можете обратиться кТренируйте быстрее модель VGG-16 R-CNN с собственными данными

1. Обучение сети

(1) Загрузите файл prototxt ResNet-50.

в моемGithubФайлы, которые я использовал, можно скачать выше, но, конечно, вы можете использовать другую структуру сети ResNet.

(2) Изменение соответствующих документов

1. cd $FRCN_ROOT/lib/rpn/generate_anchors.py

# 在 37 行:
def generate_anchors(base_size=16, ratios=[0.5, 1, 2],
                     scales=2**np.arange(3, 6)):
# 修改为:
def generate_anchors(base_size=16, ratios=[0.5, 1, 2],
                     scales=2**np.arange(1, 6)):

2. cd $FRCN_ROOT/lib/rpn/anchor_target_layer.py

# 在 28 行:
        anchor_scales = layer_params.get('scales', (8, 16, 32))
# 修改为:
        anchor_scales = layer_params.get('scales', (2, 4, 8, 16, 32))

3. cd $FRCN_ROOT/lib/rpn/proposal_layer.py

# 在 29 行:
        anchor_scales = layer_params.get('scales', (8, 16, 32))
# 修改为:
        anchor_scales = layer_params.get('scales', (2, 4, 8, 16, 32))

4. pascal_voc.py、imdb.py、train.prototxt、test.prototxt、.pt文件Измененная ссылка дляТренируйте быстрее модель VGG-16 R-CNN с собственными данными.

5.Поскольку мы используем якоря 5 масштабов, предыдущие 9 якорей становятся 3*5=15. Исправлятьprototxt 和 pt文件, замените 18 на 30.

layer {
  name: "rpn_cls_score"
  type: "Convolution"
  bottom: "rpn/output"
  top: "rpn_cls_score"
  param { lr_mult: 1.0 }
  param { lr_mult: 2.0 }
  convolution_param {
    num_output: 30   # 2(bg/fg) * 9(anchors)    ///将 18 换成 30
    kernel_size: 1 pad: 0 stride: 1
    weight_filler { type: "gaussian" std: 0.01 }
    bias_filler { type: "constant" value: 0 }
  }

(3) Загрузите модель ImageNet

Загрузите файлы предварительной подготовки ImageNet:ResNet-50.v2.caffemodel

(4) Очистить кеш

Удалить файлы кеша:$FRCN_ROOT/data/VOCdevkit2007/annotations_cache/annots.pklи$FRCN_ROOT/data/cacheвнизpklдокумент Если кэш не очищается, может появиться сообщение об ошибке.

(5) Начать обучение

Обратитесь к тренировочной команде VGG16:cd $FRCN_ROOT

./experiments/scripts/faster_rcnn_end2end.sh 0 ResNet-50 pascal_voc

==Примечание. Третий параметр «ResNet-50» должен соответствовать имени вашей папки, например, мой файл в$FRCN_ROOT/models/pascal_voc/ResNet-50внутри, поэтому мой третий параметр — это имя моего каталога. ==


Так как сеть ResNet-50 глубже, то и время обучения занимает больше времени.Каждая итерация занимает около 0.5с.У меня ушло около 10 часов на обучение этой сети,но эффект будет лучше чем у VGG 16,в основном для небольших весы, обнаружение объектов более точное.

Вот AP каждого типа, когда я тренируюсь: