SSD算法是object detection领域比较经典的算法,github上有一个写得比较好的MXNet版本的实现代码,项目地址:https://github.com/zhreshold/mxnet-ssd,目前该项目代码也已经并入MXNet官方github。想要本地实现可以参考项目地址中README.md的介绍或者参考博客:SSD算法的MXNet实现。
接下来这一系列博客想介绍该代码中关于实现SSD算法的一些细节,也会涉及部分Python语言的巧妙代码,以训练模型为切入口展开介绍,最好按顺序阅读,详细注释已经在代码中给出。
这一篇博客介绍训练模型的入口代码:train.py脚本,该脚本主要包含一些参数设置和主函数。
import argparse
import tools.find_mxnet
import mxnet as mx
import os
import sys
from train.train_net import train_net
def parse_args():
parser = argparse.ArgumentParser(description='Train a Single-shot detection network')
parser.add_argument('--train-path', dest='train_path', help='train record to use',
default=os.path.join(os.getcwd(), 'data', 'train.rec'), type=str)
parser.add_argument('--train-list', dest='train_list', help='train list to use',
default="", type=str)
parser.add_argument('--val-path', dest='val_path', help='validation record to use',
default=os.path.join(os.getcwd(), 'data', 'val.rec'), type=str)
parser.add_argument('--val-list', dest='val_list', help='validation list to use',
default="", type=str)
parser.add_argument('--network', dest='network', type=str, default='vgg16_reduced',
help='which network to use')
parser.add_argument('--batch-size', dest='batch_size', type=int, default=32,
help='training batch size')
parser.add_argument('--resume', dest='resume', type=int, default=-1,
help='resume training from epoch n')