Pelee: A Real-Time Object Detection System on Mobile Devices使用

https://github.com/Robert-JunWang/Pelee 項目地址

這個Pelee比MobilenetSSD還要強一點點.


以上是作者的對比結果.


S1,把項目克隆下來,放到caffe/example目錄下.

S2.下載預訓練模型


        紅線處即是模型,.caffemodel文件

S2.打開train_voc.py,裏面生成訓練所需的所有prototxt.需要根據自己的實際情況進行更改.

model_meta = { # 一個方法集字典,
    'pelee':Pelee, 
    'ssd':VGG_SSD,
    'run':VGG_RUN
}
# 預訓練模型地址,儘量用絕對地址,因爲這個腳本是在caffe/目錄下運行的
Default_weights_file = "models/peleenet_inet_acc7243.caffemodel"

parser = argparse.ArgumentParser(description='Pelee Training')
# 使用方法集的哪個方法,把default設爲'pelee'
parser.add_argument('--arch', '-a', metavar='ARCH', default='pelee',
                    choices=model_meta.keys(),
                    help='model architecture: ' +
                        ' | '.join(model_meta.keys()) +
                        ' (default: pelee)')
# 設置初始學習率,也就是lr_base;設置'weight-decay',正則項,防止過擬合,0.0005就行;batch-size就不說了,已顯存不爆爲參考;
parser.add_argument('--lr', '--learning-rate', default=0.001, type=float,
                    metavar='LR', help='initial learning rate (default: 0.005)')
parser.add_argument('--weight-decay', '--wd', default=0.0005, type=float,
                    metavar='W', help='weight decay (default: 5e-4)')
parser.add_argument('-b', '--batch-size', default=32, type=int,
                    metavar='N', help='mini-batch size (default: 32)')
# 這個kernel-size還是別改了,默認是1
parser.add_argument('-k', '--kernel-size', default=1, type=int,
                    metavar='K', help='kernel size for CreateMultiBoxHead (default: 1)')
# 輸入圖像大小,默認爲304
parser.add_argument('--image-size', default=304, type=int,
                    metavar='IMAGE_SIZE', help='image size (default: 304)')
# 這個weights就是前面剛寫的模型
parser.add_argument('--weights', default=Default_weights_file, type=str,
                    metavar='WEIGHTS', help='initial weights file (default: {})'.format(Default_weights_file))
# 生成完.prototxt是否直接訓練,
parser.add_argument('--run-later', dest='run_soon', action='store_false',
                    help='start training later after generating all files')
# 學習率改變的節點,如20000iter處降一次,80000iter時降一次..
parser.add_argument('--step-value', '-s', nargs='+', type=int, default=[20000, 80000, 120000],
                    metavar='S', help='step value (default: [8000, 10000, 12000])')
parser.add_argument('--posfix', '-p', metavar='POSFIX', default='', type=str)
parser.set_defaults(run_soon=True) # 默認生成完.prototxt是否直接訓練

接下來,
# The directory which contains the caffe code.
# We assume you are running the script at the CAFFE_ROOT.
caffe_root = os.getcwd()

# Set true if you want to start training right after generating all files.
# run_soon = True
run_soon = args.run_soon
# Set true if you want to load from most recently saved snapshot.
# Otherwise, we will load from the pretrain_model defined below.
resume_training = True
# If true, Remove old model files.
remove_old_models = False

pretrain_model = args.weights

# The database file for training data. Created by data/VOC0712/create_data.sh
train_data = "/home/mydataset/mydataset_trainval_lmdb" # 你自己的數據地址 
# The database file for testing data. Created by data/VOC0712/create_data.sh
test_data = "/home/mydataset/mydataset_test_lmdb"
# Specify the batch sampler.
resize_width = args.image_size # 看到這你會明白,圖像的W,H其實可以不同,在這自己設置也可以
resize_height = args.image_size 
resize = "{}x{}".format(resize_width, resize_height)
在接下來的網絡中,你可以自己設置下各通道的均值,未完待續
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章