├── inception_resnet_v2_tiny_solver.prototxt ├── face_labels_gen.py ├── create_vggface2.sh ├── README.md ├── vggface_align.py ├── face_similarity.py ├── roc_curve.py └── inception_resnet_v2_tiny_deploy.prototxt /inception_resnet_v2_tiny_solver.prototxt: -------------------------------------------------------------------------------- 1 | # The train/test net protocol buffer definition 2 | train_net: "examples/face_recog/inception_resnet_v2_tiny_train.prototxt" 3 | base_lr: 0.1 4 | momentum: 0.9 5 | weight_decay: 0.0005 6 | # The learning rate policy 7 | lr_policy: "multistep" 8 | gamma: 0.1 9 | stepvalue: 96000 10 | stepvalue: 144000 11 | stepvalue: 192000 12 | 13 | # Display every 100 iterations 14 | display: 10 15 | # The maximum number of iterations 16 | max_iter: 192000 17 | # snapshot intermediate results 18 | snapshot: 5000 19 | snapshot_prefix: "examples/face_recog/facenet_inception_resnet_v2_tiny" 20 | # solver mode: CPU or GPU 21 | solver_mode: GPU 22 | type: "SGD" 23 | -------------------------------------------------------------------------------- /face_labels_gen.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | # -*- coding: UTF-8 -*- 3 | import tensorflow as tf 4 | import glob 5 | import os 6 | import re 7 | import sys 8 | import cv2 9 | import numpy as np 10 | 11 | 12 | def generate_labels(img_dir): 13 | 14 | dirs = os.listdir(img_dir) 15 | label = 0 16 | _str = "" 17 | for dir in dirs: 18 | if os.path.isdir(os.path.join(img_dir, dir)): 19 | imgs = glob.glob(os.path.join(os.path.join(img_dir, dir), "*.jpg")) 20 | for img in imgs: 21 | path = os.path.join(dir, os.path.basename(img)) 22 | label_str = path + " " + str(label) + "\n" 23 | print(label_str) 24 | _str += label_str 25 | label += 1 26 | 27 | return _str 28 | 29 | 30 | if __name__ == '__main__': 31 | img_dir = sys.argv[1] 32 | labels_str = generate_labels(img_dir) 33 | 34 | with open("labels.txt", "w") as labels_file: 35 | labels_file.writelines(labels_str) 36 | 37 | -------------------------------------------------------------------------------- /create_vggface2.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env sh 2 | # Create the imagenet lmdb inputs 3 | # N.B. set the path to the imagenet train + val data dirs 4 | set -e 5 | 6 | EXAMPLE=examples/face_recog 7 | DATA=data/face_recog 8 | TOOLS=build/tools 9 | 10 | TRAIN_DATA_ROOT=data/face_recog/vggface2_train_align/ 11 | #VAL_DATA_ROOT=/path/to/imagenet/val/ 12 | 13 | # Set RESIZE=true to resize the images to 256x256. Leave as false if images have 14 | # already been resized using another tool. 15 | RESIZE=false 16 | if $RESIZE; then 17 | RESIZE_HEIGHT=128 18 | RESIZE_WIDTH=128 19 | else 20 | RESIZE_HEIGHT=0 21 | RESIZE_WIDTH=0 22 | fi 23 | 24 | if [ ! -d "$TRAIN_DATA_ROOT" ]; then 25 | echo "Error: TRAIN_DATA_ROOT is not a path to a directory: $TRAIN_DATA_ROOT" 26 | echo "Set the TRAIN_DATA_ROOT variable in create_imagenet.sh to the path" \ 27 | "where the ImageNet training data is stored." 28 | exit 1 29 | fi 30 | 31 | #if [ ! -d "$VAL_DATA_ROOT" ]; then 32 | # echo "Error: VAL_DATA_ROOT is not a path to a directory: $VAL_DATA_ROOT" 33 | # echo "Set the VAL_DATA_ROOT variable in create_imagenet.sh to the path" \ 34 | # "where the ImageNet validation data is stored." 35 | # exit 1 36 | #fi 37 | 38 | echo "Creating train lmdb..." 39 | 40 | GLOG_logtostderr=1 $TOOLS/convert_imageset \ 41 | --resize_height=$RESIZE_HEIGHT \ 42 | --resize_width=$RESIZE_WIDTH \ 43 | --shuffle \ 44 | $TRAIN_DATA_ROOT \ 45 | $DATA/vggface2_train.txt \ 46 | $EXAMPLE/face_recog_vggface2_lmdb 47 | 48 | #echo "Creating val lmdb..." 49 | 50 | #GLOG_logtostderr=1 $TOOLS/convert_imageset \ 51 | # --resize_height=$RESIZE_HEIGHT \ 52 | # --resize_width=$RESIZE_WIDTH \ 53 | # --shuffle \ 54 | # $VAL_DATA_ROOT \ 55 | # $DATA/val.txt \ 56 | # $EXAMPLE/ilsvrc12_val_lmdb 57 | 58 | echo "Done." 59 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | FaceNet 2 | ======= 3 | 4 | Data Preprocess 5 | --- 6 | >>We introduce a new large-scale face dataset named VGGFace2. The dataset contains 3.31 million images of 9131 subjects (identities), 7 | >>with an average of 362.6 images for each subject. Images are downloaded from Google Image Search and have large variations in pose, 8 | >>age, illumination, ethnicity and profession (e.g. actors, athletes, politicians). 9 | 10 | >>(1)人脸对齐 11 | >>使用vggface_align.py脚本进行人脸对齐,对齐方法:读取loose_bb_train.csv标注文件中人脸框,人脸框4个方向各外扩20%,抠取人脸,然后把人脸框的最小边缩放到128(宽高等比例缩放)。 12 | 13 | >>vggface2_face的人脸样图如下: 14 | >>![vggface2_face](https://github.com/lippman1125/github_images/blob/master/facenet_images/vggface2_face.jpg) 15 | 16 | >>对齐后的人脸如下: 17 | >>![vggface2_face_aligned](https://github.com/lippman1125/github_images/blob/master/facenet_images/vggface2_face_aligned.jpg) 18 | 19 | >>(2)人脸列表 20 | >>利用face_labels_gen.py脚本生成face label。生成的列表如下: 21 | >>![vggface2_list](https://github.com/lippman1125/github_images/blob/master/facenet_images/vggface2_list.jpg) 22 | 23 | >>(3)生成LMDB 24 | >>利用create_vggface2.sh脚本生成caffe训练时用的lmdb数据。 25 | 26 | Train 27 | --- 28 | >>./build/tools/caffe train --solver examples/face_recog/inception_resnet_v2_tiny_solver.prototxt --gpu 0,1 29 | 30 | Test 31 | --- 32 | >>(1)LFW数据集测评: 33 | >>利用face_similarity.py脚本生成LFW人脸对的余弦相似度得分。 34 | >>python face_similarity.py --image_dir lfw_mtcnnpy_160 35 | >> --pair_file face_list_lfw.txt 36 | >> --result_file facenet_vggface2_inception_resnet_v2_lfw.txt 37 | >> --network inception_resnet_v2_tiny_deploy.prototxt 38 | >> --weights facenet_inception_resnet_v2_tiny_iter_192000.caffemodel 39 | 40 | >>(2)LFW性能分析: 41 | >>利用roc_curve.py脚本生成结果。 42 | >>python roc_curve.py face_list_lfw_gt.txt facenet_vggface2_inception_resnet_v2_lfw.txt 43 | >>![ROC](https://github.com/lippman1125/github_images/blob/master/facenet_images/ROC.jpg) 44 | >>![FAR-FRR](https://github.com/lippman1125/github_images/blob/master/facenet_images/FAR_FRR.jpg) 45 | >>![HISTOGRAM](https://github.com/lippman1125/github_images/blob/master/facenet_images/Hist.jpg) 46 | -------------------------------------------------------------------------------- /vggface_align.py: -------------------------------------------------------------------------------- 1 | import csv 2 | import os 3 | import sys 4 | import cv2 5 | import numpy as np 6 | 7 | image_dir = "./train" 8 | list_file = "./bb_landmark/loose_bb_train.csv" 9 | output_dir = "./train_align" 10 | 11 | 12 | def crop_face(img_dir, img_path, img_dir_out, x0, y0, w, h): 13 | img_path_full = os.path.join(img_dir, img_path + ".jpg") 14 | img_path_out_full = os.path.join(img_dir_out, img_path + ".jpg") 15 | # print(img_path_full) 16 | if not os.path.exists(img_path_full): 17 | print("{} does not exist".format(img_path_full)) 18 | return 19 | 20 | img = cv2.imread(img_path_full) 21 | if len(np.shape(img)) != 3: 22 | print("Not RGB, Ignore") 23 | return 24 | 25 | img_h, img_w, img_c = np.shape(img) 26 | 27 | if w > h: 28 | min_side = h 29 | else: 30 | min_side = w 31 | 32 | margin = int(min_side*0.2) 33 | x0 -= margin 34 | y0 -= margin 35 | if x0 < 0: 36 | x0 = 0 37 | if y0 < 0: 38 | y0 = 0 39 | 40 | x1 = x0 + w + margin 41 | y1 = y0 + h + margin 42 | 43 | 44 | if x1 > img_w: 45 | x1 = img_w 46 | if y1 > img_h: 47 | y1 = img_h 48 | 49 | img_crop = img[y0: y1, x0: x1, :] 50 | if w < h: 51 | scale = 128.0 / w 52 | h = int(h*scale) 53 | w = 128 54 | else: 55 | scale = 128.0 / h 56 | w = int(w*scale) 57 | h = 128 58 | 59 | print(w, h) 60 | img_crop_scale = cv2.resize(img_crop, (w, h), 0, 0, cv2.INTER_CUBIC) 61 | 62 | img_path_out_dir = os.path.dirname(img_path_out_full) 63 | if not os.path.exists(img_path_out_dir): 64 | os.mkdir(img_path_out_dir) 65 | 66 | cv2.imwrite(img_path_out_full, img_crop_scale) 67 | 68 | if not os.path.exists(output_dir): 69 | os.mkdir(output_dir) 70 | 71 | if not os.path.exists(image_dir): 72 | print("{} does not exist".format(image_dir)) 73 | exit() 74 | 75 | if not os.path.exists(list_file): 76 | print("{} does not exist".format(list_file)) 77 | exit() 78 | 79 | csv_fd = open(list_file, "rb") 80 | reader = csv.reader(csv_fd) 81 | 82 | for idx, item in enumerate(reader): 83 | if idx == 0: 84 | continue 85 | # print(item[1], item[2], item[3], item[4]) 86 | crop_face(image_dir, item[0], output_dir, int(item[1]), int(item[2]), int(item[3]), int(item[4])) 87 | 88 | csv_fd.close() 89 | -------------------------------------------------------------------------------- /face_similarity.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -* 2 | import numpy as np 3 | import sys 4 | import os 5 | import cv2 6 | import argparse 7 | 8 | import caffe 9 | import time 10 | 11 | def l2_normalize(vector): 12 | output = vector/np.sqrt(max(np.sum(vector**2), 1e-12)) 13 | return output 14 | 15 | def cos(vector1,vector2): 16 | dot_product = 0.0; 17 | normA = 0.0; 18 | normB = 0.0; 19 | for a,b in zip(vector1,vector2): 20 | dot_product += a*b 21 | normA += a**2 22 | normB += b**2 23 | if normA == 0.0 or normB==0.0: 24 | return None 25 | else: 26 | return dot_product / ((normA*normB)**0.5) 27 | 28 | def caffenet_load(net_file, weights_file, mode): 29 | if mode == 'GPU': 30 | caffe.set_mode_gpu() 31 | else: 32 | caffe.set_mode_cpu() 33 | net = caffe.Net(net_file, weights_file, caffe.TEST) 34 | 35 | return net 36 | 37 | def image_pair_build(image_path, pair_path): 38 | 39 | image_pair_path = [] 40 | #image_pair_label = [] 41 | 42 | with open(pair_path, "r") as f: 43 | lines = f.readlines() 44 | for line in lines: 45 | path1, path2 = line.strip('\n').split(" ") 46 | image_pair_path += (os.path.join(image_path, path1), os.path.join(image_path, path2)) 47 | 48 | print(image_pair_path) 49 | return image_pair_path 50 | 51 | # ''' 52 | def preprocess(img): 53 | 54 | preprocessed_image = cv2.resize(img, (128, 128)) 55 | preprocessed_image = np.transpose(preprocessed_image, (2,0,1)) 56 | preprocessed_image = preprocessed_image.astype("float") 57 | preprocessed_image = preprocessed_image - 127.5 58 | preprocessed_image = preprocessed_image * 0.0078125 59 | 60 | return preprocessed_image 61 | 62 | # ''' 63 | 64 | ''' 65 | def preprocess(img): 66 | 67 | preprocessed_image = cv2.resize(img, (160, 160)) 68 | preprocessed_image = preprocessed_image.astype("float") 69 | preprocessed_image -= np.array([104,117,123]) 70 | preprocessed_image = np.transpose(preprocessed_image, (2,0,1)) 71 | 72 | return preprocessed_image 73 | ''' 74 | 75 | def face_similarity_result(similarity_list, similairty_file): 76 | 77 | print("similarity_list = {}".format(len(similarity_list))) 78 | 79 | with open(similairty_file, "w") as f: 80 | for i in range(0, len(similarity_list)): 81 | f.write("{}\n".format(similarity_list[i])) 82 | 83 | 84 | def main(args): 85 | if not os.path.exists(args.image_dir): 86 | print("{} does not exist".format(args.image_dir)) 87 | exit() 88 | 89 | if not os.path.exists(args.pair_file): 90 | print("{} does not exist".format(args.pair_file)) 91 | exit() 92 | 93 | if not os.path.exists(args.network): 94 | print("{} does not exist".format(args.network)) 95 | exit() 96 | 97 | if not os.path.exists(args.weights): 98 | print("{} does not exist".format(args.weights)) 99 | exit() 100 | 101 | facenet = caffenet_load(args.network, args.weights, "GPU") 102 | image_paths = image_pair_build(args.image_dir, args.pair_file) 103 | 104 | total_pair = len(image_paths)//2 105 | similarity_list = [] 106 | for idx in range(total_pair): 107 | image_left = preprocess(cv2.imread(image_paths[2*idx])) 108 | image_right = preprocess(cv2.imread(image_paths[2*idx + 1])) 109 | 110 | image_left = image_left[np.newaxis, :] 111 | image_right = image_right[np.newaxis, :] 112 | images = np.concatenate((image_left, image_right)) 113 | 114 | facenet.blobs['data'].data[...] = images 115 | embeddings = facenet.forward()['fc5'] 116 | # embeddings = facenet.forward()['pool4_logits_flat'] 117 | 118 | # print(embeddings) 119 | embedding_left = embeddings[0] 120 | embedding_right = embeddings[1] 121 | # print(embedding_left) 122 | # print(embedding_right) 123 | # exit() 124 | 125 | ''' 126 | facenet.blobs['data'].data[...] = image_left 127 | embedding_left = facenet.forward()['fc5'] 128 | facenet.blobs['data'].data[...] = image_right 129 | embedding_right = facenet.forward()['fc5'] 130 | 131 | # print(np.shape(embedding_left)) 132 | embedding_left = np.squeeze(embedding_left) 133 | embedding_right = np.squeeze(embedding_right) 134 | # print(embedding_left) 135 | ''' 136 | 137 | norm_left = l2_normalize(embedding_left) 138 | norm_right = l2_normalize(embedding_right) 139 | # print(np.shape(norm_left)) 140 | # print(np.shape(norm_right)) 141 | # print(norm_left) 142 | # print(norm_right) 143 | # exit() 144 | 145 | cosine = cos(norm_left, norm_right) 146 | if cosine < 0.0: 147 | cosine =0.0 148 | print(cosine) 149 | similarity_list.append(cosine) 150 | 151 | face_similarity_result(similarity_list, args.result_file) 152 | 153 | 154 | def parse_arguments(argv): 155 | parser = argparse.ArgumentParser() 156 | parser.add_argument('--image_dir', type=str, help='Directory with face aligned images.') 157 | parser.add_argument('--pair_file', type=str, help='File of face pairs list') 158 | parser.add_argument('--result_file', type=str, help='Result of face recognition') 159 | parser.add_argument('--network', type=str, help='Network file of face recognition') 160 | parser.add_argument('--weights', type=str, help='Weights file of face recognition') 161 | 162 | return parser.parse_args(argv) 163 | 164 | if __name__ == "__main__": 165 | main(parse_arguments(sys.argv[1:])) 166 | -------------------------------------------------------------------------------- /roc_curve.py: -------------------------------------------------------------------------------- 1 | import cv2 2 | import sys 3 | import os 4 | import numpy as np 5 | import matplotlib.pyplot as plt 6 | 7 | 8 | def cal_hist_point(gt, score, thr_l=0.4, thr_r=0.5): 9 | 10 | p = 0 11 | n = 0 12 | 13 | gt_len = len(gt) 14 | score_len = len(score) 15 | 16 | comp_len = min(gt_len, score_len) 17 | 18 | for i in range(0, comp_len): 19 | if score[i] >= thr_l and score[i] < thr_r: 20 | if gt[i] == 1.0: 21 | p += 1 22 | else: 23 | n += 1 24 | 25 | print("range[{}, {}] p={}, n={}".format(thr_l, thr_r, p, n)) 26 | 27 | return thr_l, thr_r, p, n 28 | 29 | 30 | def cal_far_frr_point(gt, score, thr=0.5): 31 | # far = false acceptance rate = false positive / inter match num 32 | # frr = false rejection rate = false negative / intra match num 33 | tp = 0 34 | tn = 0 35 | fp = 0 36 | fn = 0 37 | inter_num = 0 38 | intra_num = 0 39 | 40 | gt_len = len(gt) 41 | score_len = len(score) 42 | 43 | comp_len = min(gt_len, score_len) 44 | 45 | for i in range(0, comp_len): 46 | if float(gt[i]) >= 1.0: 47 | intra_num += 1 48 | if float(gt[i]) <= 0.0: 49 | inter_num += 1 50 | 51 | if float(score[i]) >= thr and float(gt[i]) >= 1.0: 52 | tp += 1 53 | elif float(score[i]) < thr and float(gt[i]) <= 0.0: 54 | tn += 1 55 | elif float(score[i]) >= thr and float(gt[i]) <= 0.0: 56 | fp += 1 57 | elif float(score[i]) < thr and float(gt[i]) >= 1.0: 58 | fn += 1 59 | 60 | frr = float(fn) / intra_num 61 | far = float(fp) / inter_num 62 | # print("thr={}, tp={}, fp={}, tn={}, fn={}".format(thr, tp, fp, tn, fn)) 63 | # print("intra_num={}, inter_num={}".format(intra_num, inter_num)) 64 | print("FRR={}, FAR={}".format(frr, far)) 65 | 66 | return frr, far 67 | 68 | 69 | def cal_roc_point(gt, score, thr=0.5): 70 | tp = 0 71 | tn = 0 72 | fp = 0 73 | fn = 0 74 | # tpr = recall = tp / (tp + fn) 75 | # fpr = fp / (fp + tn) 76 | # fp 77 | 78 | gt_len = len(gt) 79 | score_len = len(score) 80 | 81 | comp_len = min(gt_len, score_len) 82 | 83 | for i in range(0, comp_len): 84 | if float(score[i]) >= thr and float(gt[i]) >= 1.0: 85 | tp += 1 86 | elif float(score[i]) < thr and float(gt[i]) <= 0.0: 87 | tn += 1 88 | elif float(score[i]) >= thr and float(gt[i]) <= 0.0: 89 | fp += 1 90 | elif float(score[i]) < thr and float(gt[i]) >= 1.0: 91 | fn += 1 92 | 93 | # print("thr={}, tp={}, fp={}, tn={}, fn={}".format(thr, tp, fp, tn, fn)) 94 | 95 | 96 | recall = float(tp) / (tp + fn) 97 | 98 | print("recall={}, fp={}".format(recall, fp)) 99 | 100 | return recall, fp 101 | 102 | # gt_file = "face_list_lfw_gt.txt" 103 | # score_file = "vggface2_lfwdata/facenet_vggface2_inception_resnet_v2_192k_lfw.txt" 104 | # gt_file = "face_list_gt.txt" 105 | # score_file = "vggface2_160data/facenet_vggface2_inception_resnet_v2_192k_160data.txt" 106 | 107 | if __name__ == '__main__': 108 | gt_file = sys.argv[1] 109 | score_file = sys.argv[2] 110 | 111 | if not os.path.exists(gt_file): 112 | print("{} does not exist, quit".format(gt_file)) 113 | exit() 114 | 115 | if not os.path.exists(score_file): 116 | print("{} does not exist, quit".format(score_file)) 117 | exit() 118 | 119 | list_gt_fd = open(gt_file, "r") 120 | gt_lines = list_gt_fd.readlines() 121 | 122 | list_score_fd = open(score_file, "r") 123 | score_lines = list_score_fd.readlines() 124 | 125 | gt_list = [] 126 | score_list = [] 127 | 128 | for idx, l in enumerate(gt_lines): 129 | gt, lm, rm = l.strip("\n").split(" ") 130 | score = score_lines[idx].strip("\n") 131 | # print(gt, score) 132 | # if int(gt) == 1 and float(score) < 0.2: 133 | # print("____{}_{}".format(score, idx)) 134 | # 135 | # if int(gt) == 0 and float(score) > 0.5: 136 | # print("####{}_{}".format(score, idx)) 137 | 138 | gt_list.append(float(gt)) 139 | score_list.append(float(score)) 140 | 141 | 142 | thrs = np.arange(0, 1, 0.01)[::-1] 143 | print(thrs) 144 | 145 | # calculate roc 146 | recall_list = [] 147 | fp_list = [] 148 | for thr in thrs: 149 | recall, fp = cal_roc_point(gt_list, score_list, thr) 150 | recall_list.append(recall) 151 | fp_list.append(fp) 152 | 153 | # calculate auc 154 | fp_max = max(fp_list) 155 | fpr_list = [] 156 | for idx in range(0, len(fp_list)): 157 | fpr = float(fp_list[idx])/fp_max 158 | fpr_list.append(fpr) 159 | print("fpr={}".format(fpr)) 160 | 161 | auc = 0 162 | for idx in range(0, len(recall_list) - 1): 163 | auc += (recall_list[idx] + recall_list[idx + 1]) * (fpr_list[idx + 1] - fpr_list[idx]) / 2 164 | print("auc={}".format(auc)) 165 | 166 | print("AUC={}".format(auc)) 167 | 168 | # calculate far & frr 169 | frr_list = [] 170 | far_list = [] 171 | for thr in thrs: 172 | frr, far = cal_far_frr_point(gt_list, score_list, thr) 173 | frr_list.append(frr) 174 | far_list.append(far) 175 | 176 | thrs = np.arange(0, 1.0, 0.1) 177 | print(thrs) 178 | 179 | # calculate histgram 180 | n_list = [] 181 | p_list = [] 182 | for thr in thrs: 183 | thr_l, thr_r, p, n = cal_hist_point(gt_list, score_list, thr, thr + 0.1) 184 | n_list.append(n) 185 | p_list.append(p) 186 | 187 | # draw far & frr 188 | plt.figure(1) 189 | plt.plot(far_list, frr_list) 190 | 191 | x = np.arange(0.0, 1.1, 0.1) 192 | y = np.arange(0.0, 1.1, 0.1) 193 | plt.xticks(x) 194 | plt.yticks(y) 195 | plt.title('FRR-FAR-Curve') 196 | plt.ylabel("FRR") 197 | plt.xlabel("FAR") 198 | plt.grid(color = 'k', linestyle = ":") 199 | plt.title(os.path.basename(score_file)) 200 | 201 | # draw roc 202 | plt.figure(2) 203 | plt.plot(fp_list, recall_list, label="AUC={}".format(auc)) 204 | 205 | x = np.arange(0.0, 1100.0, 100.0) 206 | y = np.arange(0.0, 1.1, 0.1) 207 | plt.xticks(x) 208 | plt.yticks(y) 209 | plt.title('ROC-Curve') 210 | plt.ylabel("RECALL") 211 | plt.xlabel("FP") 212 | plt.legend(loc="center") 213 | plt.grid(color = 'k', linestyle = ":") 214 | plt.title(os.path.basename(score_file)) 215 | 216 | # draw histogram 217 | plt.figure(3) 218 | plt.bar(left=thrs, height=n_list, width=0.1, label="negative", facecolor="r", edgecolor="w", align="edge") 219 | plt.bar(left=thrs, height=p_list, width=0.1, bottom=n_list, label="positive", facecolor="g", edgecolor="w", align="edge") 220 | plt.legend() 221 | plt.title('Sample Histogram') 222 | plt.ylabel("Num") 223 | plt.xlabel("Thresh") 224 | 225 | plt.show() -------------------------------------------------------------------------------- /inception_resnet_v2_tiny_deploy.prototxt: -------------------------------------------------------------------------------- 1 | name: "Face-Inception-resnet-v2-tiny" 2 | input: "data" 3 | input_dim: 2 4 | input_dim: 3 5 | input_dim: 128 6 | input_dim: 128 7 | 8 | layer { 9 | name: "conv1_3x3_s2" 10 | type: "Convolution" 11 | bottom: "data" 12 | top: "conv1_3x3_s2" 13 | param { 14 | lr_mult: 1 15 | decay_mult: 1 16 | } 17 | param { 18 | lr_mult: 2 19 | decay_mult: 0 20 | } 21 | convolution_param { 22 | num_output: 32 23 | pad: 0 24 | kernel_size: 3 25 | stride: 2 26 | weight_filler { 27 | type: "xavier" 28 | std: 0.01 29 | } 30 | bias_filler { 31 | type: "constant" 32 | value: 0.2 33 | } 34 | } 35 | } 36 | layer { 37 | name: "conv1_3x3_s2_bn" 38 | type: "BatchNorm" 39 | bottom: "conv1_3x3_s2" 40 | top: "conv1_3x3_s2" 41 | param { 42 | lr_mult: 0.0 43 | decay_mult: 0.0 44 | } 45 | param { 46 | lr_mult: 0.0 47 | decay_mult: 0.0 48 | } 49 | param { 50 | lr_mult: 0.0 51 | decay_mult: 0.0 52 | } 53 | batch_norm_param { 54 | use_global_stats: true 55 | moving_average_fraction: 0.95 56 | } 57 | } 58 | layer { 59 | name: "conv1_3x3_s2_scale" 60 | type: "Scale" 61 | bottom: "conv1_3x3_s2" 62 | top: "conv1_3x3_s2" 63 | scale_param { 64 | bias_term: true 65 | } 66 | } 67 | layer { 68 | name: "conv1_3x3_relu" 69 | type: "PReLU" 70 | bottom: "conv1_3x3_s2" 71 | top: "conv1_3x3_s2" 72 | } 73 | layer { 74 | name: "conv2_3x3_s1" 75 | type: "Convolution" 76 | bottom: "conv1_3x3_s2" 77 | top: "conv2_3x3_s1" 78 | param { 79 | lr_mult: 1 80 | decay_mult: 1 81 | } 82 | param { 83 | lr_mult: 2 84 | decay_mult: 0 85 | } 86 | convolution_param { 87 | num_output: 32 88 | pad: 0 89 | kernel_size: 3 90 | stride: 1 91 | weight_filler { 92 | type: "xavier" 93 | std: 0.01 94 | } 95 | bias_filler { 96 | type: "constant" 97 | value: 0.2 98 | } 99 | } 100 | } 101 | layer { 102 | name: "conv2_3x3_s1_bn" 103 | type: "BatchNorm" 104 | bottom: "conv2_3x3_s1" 105 | top: "conv2_3x3_s1" 106 | param { 107 | lr_mult: 0.0 108 | decay_mult: 0.0 109 | } 110 | param { 111 | lr_mult: 0.0 112 | decay_mult: 0.0 113 | } 114 | param { 115 | lr_mult: 0.0 116 | decay_mult: 0.0 117 | } 118 | batch_norm_param { 119 | use_global_stats: true 120 | moving_average_fraction: 0.95 121 | } 122 | } 123 | layer { 124 | name: "conv2_3x3_s1_scale" 125 | type: "Scale" 126 | bottom: "conv2_3x3_s1" 127 | top: "conv2_3x3_s1" 128 | scale_param { 129 | bias_term: true 130 | } 131 | } 132 | layer { 133 | name: "conv2_3x3_relu" 134 | type: "PReLU" 135 | bottom: "conv2_3x3_s1" 136 | top: "conv2_3x3_s1" 137 | } 138 | layer { 139 | name: "conv3_3x3_s1" 140 | type: "Convolution" 141 | bottom: "conv2_3x3_s1" 142 | top: "conv3_3x3_s1" 143 | param { 144 | lr_mult: 1 145 | decay_mult: 1 146 | } 147 | param { 148 | lr_mult: 2 149 | decay_mult: 0 150 | } 151 | convolution_param { 152 | num_output: 64 153 | pad: 1 154 | kernel_size: 3 155 | stride: 1 156 | weight_filler { 157 | type: "xavier" 158 | std: 0.01 159 | } 160 | bias_filler { 161 | type: "constant" 162 | value: 0.2 163 | } 164 | } 165 | } 166 | layer { 167 | name: "conv3_3x3_s1_bn" 168 | type: "BatchNorm" 169 | bottom: "conv3_3x3_s1" 170 | top: "conv3_3x3_s1" 171 | param { 172 | lr_mult: 0.0 173 | decay_mult: 0.0 174 | } 175 | param { 176 | lr_mult: 0.0 177 | decay_mult: 0.0 178 | } 179 | param { 180 | lr_mult: 0.0 181 | decay_mult: 0.0 182 | } 183 | batch_norm_param { 184 | use_global_stats: true 185 | moving_average_fraction: 0.95 186 | } 187 | } 188 | layer { 189 | name: "conv3_3x3_s1_scale" 190 | type: "Scale" 191 | bottom: "conv3_3x3_s1" 192 | top: "conv3_3x3_s1" 193 | scale_param { 194 | bias_term: true 195 | } 196 | } 197 | layer { 198 | name: "conv3_3x3_relu" 199 | type: "PReLU" 200 | bottom: "conv3_3x3_s1" 201 | top: "conv3_3x3_s1" 202 | } 203 | layer { 204 | name: "pool1_3x3_s2" 205 | type: "Pooling" 206 | bottom: "conv3_3x3_s1" 207 | top: "pool1_3x3_s2" 208 | pooling_param { 209 | pool: MAX 210 | kernel_size: 3 211 | stride: 2 212 | } 213 | } 214 | layer { 215 | name: "conv4_3x3_reduce" 216 | type: "Convolution" 217 | bottom: "pool1_3x3_s2" 218 | top: "conv4_3x3_reduce" 219 | param { 220 | lr_mult: 1 221 | decay_mult: 1 222 | } 223 | param { 224 | lr_mult: 2 225 | decay_mult: 0 226 | } 227 | convolution_param { 228 | num_output: 80 229 | pad: 0 230 | kernel_size: 1 231 | stride: 1 232 | weight_filler { 233 | type: "xavier" 234 | std: 0.01 235 | } 236 | bias_filler { 237 | type: "constant" 238 | value: 0.2 239 | } 240 | } 241 | } 242 | layer { 243 | name: "conv4_3x3_reduce_bn" 244 | type: "BatchNorm" 245 | bottom: "conv4_3x3_reduce" 246 | top: "conv4_3x3_reduce" 247 | param { 248 | lr_mult: 0.0 249 | decay_mult: 0.0 250 | } 251 | param { 252 | lr_mult: 0.0 253 | decay_mult: 0.0 254 | } 255 | param { 256 | lr_mult: 0.0 257 | decay_mult: 0.0 258 | } 259 | batch_norm_param { 260 | use_global_stats: true 261 | moving_average_fraction: 0.95 262 | } 263 | } 264 | layer { 265 | name: "conv4_3x3_reduce_scale" 266 | type: "Scale" 267 | bottom: "conv4_3x3_reduce" 268 | top: "conv4_3x3_reduce" 269 | scale_param { 270 | bias_term: true 271 | } 272 | } 273 | layer { 274 | name: "conv4_3x3_reduce_relu" 275 | type: "PReLU" 276 | bottom: "conv4_3x3_reduce" 277 | top: "conv4_3x3_reduce" 278 | } 279 | layer { 280 | name: "conv4_3x3" 281 | type: "Convolution" 282 | bottom: "conv4_3x3_reduce" 283 | top: "conv4_3x3" 284 | param { 285 | lr_mult: 1 286 | decay_mult: 1 287 | } 288 | param { 289 | lr_mult: 2 290 | decay_mult: 0 291 | } 292 | convolution_param { 293 | num_output: 192 294 | pad: 0 295 | kernel_size: 3 296 | stride: 1 297 | weight_filler { 298 | type: "xavier" 299 | std: 0.01 300 | } 301 | bias_filler { 302 | type: "constant" 303 | value: 0.2 304 | } 305 | } 306 | } 307 | layer { 308 | name: "conv4_3x3_bn" 309 | type: "BatchNorm" 310 | bottom: "conv4_3x3" 311 | top: "conv4_3x3" 312 | param { 313 | lr_mult: 0.0 314 | decay_mult: 0.0 315 | } 316 | param { 317 | lr_mult: 0.0 318 | decay_mult: 0.0 319 | } 320 | param { 321 | lr_mult: 0.0 322 | decay_mult: 0.0 323 | } 324 | batch_norm_param { 325 | use_global_stats: true 326 | moving_average_fraction: 0.95 327 | } 328 | } 329 | layer { 330 | name: "conv4_3x3_scale" 331 | type: "Scale" 332 | bottom: "conv4_3x3" 333 | top: "conv4_3x3" 334 | scale_param { 335 | bias_term: true 336 | } 337 | } 338 | layer { 339 | name: "conv4_relu_3x3" 340 | type: "PReLU" 341 | bottom: "conv4_3x3" 342 | top: "conv4_3x3" 343 | } 344 | layer { 345 | name: "pool2_3x3_s2" 346 | type: "Pooling" 347 | bottom: "conv4_3x3" 348 | top: "pool2_3x3_s2" 349 | pooling_param { 350 | pool: MAX 351 | kernel_size: 3 352 | stride: 2 353 | } 354 | } 355 | layer { 356 | name: "conv5_1x1" 357 | type: "Convolution" 358 | bottom: "pool2_3x3_s2" 359 | top: "conv5_1x1" 360 | param { 361 | lr_mult: 1 362 | decay_mult: 1 363 | } 364 | param { 365 | lr_mult: 2 366 | decay_mult: 0 367 | } 368 | convolution_param { 369 | num_output: 96 370 | pad: 0 371 | kernel_size: 1 372 | stride: 1 373 | weight_filler { 374 | type: "xavier" 375 | std: 0.01 376 | } 377 | bias_filler { 378 | type: "constant" 379 | value: 0.2 380 | } 381 | } 382 | } 383 | layer { 384 | name: "conv5_1x1_bn" 385 | type: "BatchNorm" 386 | bottom: "conv5_1x1" 387 | top: "conv5_1x1" 388 | param { 389 | lr_mult: 0.0 390 | decay_mult: 0.0 391 | } 392 | param { 393 | lr_mult: 0.0 394 | decay_mult: 0.0 395 | } 396 | param { 397 | lr_mult: 0.0 398 | decay_mult: 0.0 399 | } 400 | batch_norm_param { 401 | use_global_stats: true 402 | moving_average_fraction: 0.95 403 | } 404 | } 405 | layer { 406 | name: "conv5_1x1_scale" 407 | type: "Scale" 408 | bottom: "conv5_1x1" 409 | top: "conv5_1x1" 410 | scale_param { 411 | bias_term: true 412 | } 413 | } 414 | layer { 415 | name: "conv5_1x1_relu" 416 | type: "PReLU" 417 | bottom: "conv5_1x1" 418 | top: "conv5_1x1" 419 | } 420 | layer { 421 | name: "conv5_5x5_reduce" 422 | type: "Convolution" 423 | bottom: "pool2_3x3_s2" 424 | top: "conv5_5x5_reduce" 425 | param { 426 | lr_mult: 1 427 | decay_mult: 1 428 | } 429 | param { 430 | lr_mult: 2 431 | decay_mult: 0 432 | } 433 | convolution_param { 434 | num_output: 48 435 | pad: 0 436 | kernel_size: 1 437 | stride: 1 438 | weight_filler { 439 | type: "xavier" 440 | std: 0.01 441 | } 442 | bias_filler { 443 | type: "constant" 444 | value: 0.2 445 | } 446 | } 447 | } 448 | layer { 449 | name: "conv5_5x5_reduce_bn" 450 | type: "BatchNorm" 451 | bottom: "conv5_5x5_reduce" 452 | top: "conv5_5x5_reduce" 453 | param { 454 | lr_mult: 0.0 455 | decay_mult: 0.0 456 | } 457 | param { 458 | lr_mult: 0.0 459 | decay_mult: 0.0 460 | } 461 | param { 462 | lr_mult: 0.0 463 | decay_mult: 0.0 464 | } 465 | batch_norm_param { 466 | use_global_stats: true 467 | moving_average_fraction: 0.95 468 | } 469 | } 470 | layer { 471 | name: "conv5_5x5_reduce_scale" 472 | type: "Scale" 473 | bottom: "conv5_5x5_reduce" 474 | top: "conv5_5x5_reduce" 475 | scale_param { 476 | bias_term: true 477 | } 478 | } 479 | layer { 480 | name: "conv5_5x5_reduce_relu" 481 | type: "PReLU" 482 | bottom: "conv5_5x5_reduce" 483 | top: "conv5_5x5_reduce" 484 | } 485 | layer { 486 | name: "conv5_5x5" 487 | type: "Convolution" 488 | bottom: "conv5_5x5_reduce" 489 | top: "conv5_5x5" 490 | param { 491 | lr_mult: 1 492 | decay_mult: 1 493 | } 494 | param { 495 | lr_mult: 2 496 | decay_mult: 0 497 | } 498 | convolution_param { 499 | num_output: 64 500 | pad: 2 501 | kernel_size: 5 502 | stride: 1 503 | weight_filler { 504 | type: "xavier" 505 | std: 0.01 506 | } 507 | bias_filler { 508 | type: "constant" 509 | value: 0.2 510 | } 511 | } 512 | } 513 | layer { 514 | name: "conv5_5x5_bn" 515 | type: "BatchNorm" 516 | bottom: "conv5_5x5" 517 | top: "conv5_5x5" 518 | param { 519 | lr_mult: 0.0 520 | decay_mult: 0.0 521 | } 522 | param { 523 | lr_mult: 0.0 524 | decay_mult: 0.0 525 | } 526 | param { 527 | lr_mult: 0.0 528 | decay_mult: 0.0 529 | } 530 | batch_norm_param { 531 | use_global_stats: true 532 | moving_average_fraction: 0.95 533 | } 534 | } 535 | layer { 536 | name: "conv5_5x5_scale" 537 | type: "Scale" 538 | bottom: "conv5_5x5" 539 | top: "conv5_5x5" 540 | scale_param { 541 | bias_term: true 542 | } 543 | } 544 | layer { 545 | name: "conv5_5x5_relu" 546 | type: "PReLU" 547 | bottom: "conv5_5x5" 548 | top: "conv5_5x5" 549 | } 550 | layer { 551 | name: "conv5_3x3_reduce" 552 | type: "Convolution" 553 | bottom: "pool2_3x3_s2" 554 | top: "conv5_3x3_reduce" 555 | param { 556 | lr_mult: 1 557 | decay_mult: 1 558 | } 559 | param { 560 | lr_mult: 2 561 | decay_mult: 0 562 | } 563 | convolution_param { 564 | num_output: 64 565 | pad: 0 566 | kernel_size: 1 567 | stride: 1 568 | weight_filler { 569 | type: "xavier" 570 | std: 0.01 571 | } 572 | bias_filler { 573 | type: "constant" 574 | value: 0.2 575 | } 576 | } 577 | } 578 | layer { 579 | name: "conv5_3x3_reduce_bn" 580 | type: "BatchNorm" 581 | bottom: "conv5_3x3_reduce" 582 | top: "conv5_3x3_reduce" 583 | param { 584 | lr_mult: 0.0 585 | decay_mult: 0.0 586 | } 587 | param { 588 | lr_mult: 0.0 589 | decay_mult: 0.0 590 | } 591 | param { 592 | lr_mult: 0.0 593 | decay_mult: 0.0 594 | } 595 | batch_norm_param { 596 | use_global_stats: true 597 | moving_average_fraction: 0.95 598 | } 599 | } 600 | layer { 601 | name: "conv5_3x3_reduce_scale" 602 | type: "Scale" 603 | bottom: "conv5_3x3_reduce" 604 | top: "conv5_3x3_reduce" 605 | scale_param { 606 | bias_term: true 607 | } 608 | } 609 | layer { 610 | name: "conv5_3x3_reduce_relu" 611 | type: "PReLU" 612 | bottom: "conv5_3x3_reduce" 613 | top: "conv5_3x3_reduce" 614 | } 615 | layer { 616 | name: "conv5_3x3" 617 | type: "Convolution" 618 | bottom: "conv5_3x3_reduce" 619 | top: "conv5_3x3" 620 | param { 621 | lr_mult: 1 622 | decay_mult: 1 623 | } 624 | param { 625 | lr_mult: 2 626 | decay_mult: 0 627 | } 628 | convolution_param { 629 | num_output: 96 630 | pad: 1 631 | kernel_size: 3 632 | stride: 1 633 | weight_filler { 634 | type: "xavier" 635 | std: 0.01 636 | } 637 | bias_filler { 638 | type: "constant" 639 | value: 0.2 640 | } 641 | } 642 | } 643 | layer { 644 | name: "conv5_3x3_bn" 645 | type: "BatchNorm" 646 | bottom: "conv5_3x3" 647 | top: "conv5_3x3" 648 | param { 649 | lr_mult: 0.0 650 | decay_mult: 0.0 651 | } 652 | param { 653 | lr_mult: 0.0 654 | decay_mult: 0.0 655 | } 656 | param { 657 | lr_mult: 0.0 658 | decay_mult: 0.0 659 | } 660 | batch_norm_param { 661 | use_global_stats: true 662 | moving_average_fraction: 0.95 663 | } 664 | } 665 | layer { 666 | name: "conv5_3x3_scale" 667 | type: "Scale" 668 | bottom: "conv5_3x3" 669 | top: "conv5_3x3" 670 | scale_param { 671 | bias_term: true 672 | } 673 | } 674 | layer { 675 | name: "conv5_3x3_relu" 676 | type: "PReLU" 677 | bottom: "conv5_3x3" 678 | top: "conv5_3x3" 679 | } 680 | layer { 681 | name: "conv5_3x3_2" 682 | type: "Convolution" 683 | bottom: "conv5_3x3" 684 | top: "conv5_3x3_2" 685 | param { 686 | lr_mult: 1 687 | decay_mult: 1 688 | } 689 | param { 690 | lr_mult: 2 691 | decay_mult: 0 692 | } 693 | convolution_param { 694 | num_output: 96 695 | pad: 1 696 | kernel_size: 3 697 | stride: 1 698 | weight_filler { 699 | type: "xavier" 700 | std: 0.01 701 | } 702 | bias_filler { 703 | type: "constant" 704 | value: 0.2 705 | } 706 | } 707 | } 708 | layer { 709 | name: "conv5_3x3_2_bn" 710 | type: "BatchNorm" 711 | bottom: "conv5_3x3_2" 712 | top: "conv5_3x3_2" 713 | param { 714 | lr_mult: 0.0 715 | decay_mult: 0.0 716 | } 717 | param { 718 | lr_mult: 0.0 719 | decay_mult: 0.0 720 | } 721 | param { 722 | lr_mult: 0.0 723 | decay_mult: 0.0 724 | } 725 | batch_norm_param { 726 | use_global_stats: true 727 | moving_average_fraction: 0.95 728 | } 729 | } 730 | layer { 731 | name: "conv5_3x3_2_scale" 732 | type: "Scale" 733 | bottom: "conv5_3x3_2" 734 | top: "conv5_3x3_2" 735 | scale_param { 736 | bias_term: true 737 | } 738 | } 739 | layer { 740 | name: "conv5_3x3_2_relu" 741 | type: "PReLU" 742 | bottom: "conv5_3x3_2" 743 | top: "conv5_3x3_2" 744 | } 745 | layer { 746 | name: "ave_pool" 747 | type: "Pooling" 748 | bottom: "pool2_3x3_s2" 749 | top: "ave_pool" 750 | pooling_param { 751 | pool: AVE 752 | kernel_size: 3 753 | stride: 1 754 | pad: 1 755 | } 756 | } 757 | layer { 758 | name: "conv5_1x1_ave" 759 | type: "Convolution" 760 | bottom: "ave_pool" 761 | top: "conv5_1x1_ave" 762 | param { 763 | lr_mult: 1 764 | decay_mult: 1 765 | } 766 | param { 767 | lr_mult: 2 768 | decay_mult: 0 769 | } 770 | convolution_param { 771 | num_output: 64 772 | pad: 0 773 | kernel_size: 1 774 | stride: 1 775 | weight_filler { 776 | type: "xavier" 777 | std: 0.01 778 | } 779 | bias_filler { 780 | type: "constant" 781 | value: 0.2 782 | } 783 | } 784 | } 785 | layer { 786 | name: "conv5_1x1_ave_bn" 787 | type: "BatchNorm" 788 | bottom: "conv5_1x1_ave" 789 | top: "conv5_1x1_ave" 790 | param { 791 | lr_mult: 0.0 792 | decay_mult: 0.0 793 | } 794 | param { 795 | lr_mult: 0.0 796 | decay_mult: 0.0 797 | } 798 | param { 799 | lr_mult: 0.0 800 | decay_mult: 0.0 801 | } 802 | batch_norm_param { 803 | use_global_stats: true 804 | moving_average_fraction: 0.95 805 | } 806 | } 807 | layer { 808 | name: "conv5_1x1_ave_scale" 809 | type: "Scale" 810 | bottom: "conv5_1x1_ave" 811 | top: "conv5_1x1_ave" 812 | scale_param { 813 | bias_term: true 814 | } 815 | } 816 | layer { 817 | name: "conv5_1x1_ave_relu" 818 | type: "PReLU" 819 | bottom: "conv5_1x1_ave" 820 | top: "conv5_1x1_ave" 821 | } 822 | layer { 823 | name: "stem_concat" 824 | type: "Concat" 825 | bottom: "conv5_1x1" 826 | bottom: "conv5_5x5" 827 | bottom: "conv5_3x3_2" 828 | bottom: "conv5_1x1_ave" 829 | top: "stem_concat" 830 | } 831 | layer { 832 | name: "inception_resnet_v2_a1_1x1" 833 | type: "Convolution" 834 | bottom: "stem_concat" 835 | top: "inception_resnet_v2_a1_1x1" 836 | param { 837 | lr_mult: 1 838 | decay_mult: 1 839 | } 840 | param { 841 | lr_mult: 2 842 | decay_mult: 0 843 | } 844 | convolution_param { 845 | num_output: 32 846 | pad: 0 847 | kernel_size: 1 848 | stride: 1 849 | weight_filler { 850 | type: "xavier" 851 | std: 0.01 852 | } 853 | bias_filler { 854 | type: "constant" 855 | value: 0.2 856 | } 857 | } 858 | } 859 | layer { 860 | name: "inception_resnet_v2_a1_1x1_bn" 861 | type: "BatchNorm" 862 | bottom: "inception_resnet_v2_a1_1x1" 863 | top: "inception_resnet_v2_a1_1x1" 864 | param { 865 | lr_mult: 0.0 866 | decay_mult: 0.0 867 | } 868 | param { 869 | lr_mult: 0.0 870 | decay_mult: 0.0 871 | } 872 | param { 873 | lr_mult: 0.0 874 | decay_mult: 0.0 875 | } 876 | batch_norm_param { 877 | use_global_stats: true 878 | moving_average_fraction: 0.95 879 | } 880 | } 881 | layer { 882 | name: "inception_resnet_v2_a1_1x1_scale" 883 | type: "Scale" 884 | bottom: "inception_resnet_v2_a1_1x1" 885 | top: "inception_resnet_v2_a1_1x1" 886 | scale_param { 887 | bias_term: true 888 | } 889 | } 890 | layer { 891 | name: "inception_resnet_v2_a1_1x1_relu" 892 | type: "PReLU" 893 | bottom: "inception_resnet_v2_a1_1x1" 894 | top: "inception_resnet_v2_a1_1x1" 895 | } 896 | layer { 897 | name: "inception_resnet_v2_a1_3x3_reduce" 898 | type: "Convolution" 899 | bottom: "stem_concat" 900 | top: "inception_resnet_v2_a1_3x3_reduce" 901 | param { 902 | lr_mult: 1 903 | decay_mult: 1 904 | } 905 | param { 906 | lr_mult: 2 907 | decay_mult: 0 908 | } 909 | convolution_param { 910 | num_output: 32 911 | pad: 0 912 | kernel_size: 1 913 | stride: 1 914 | weight_filler { 915 | type: "xavier" 916 | std: 0.01 917 | } 918 | bias_filler { 919 | type: "constant" 920 | value: 0.2 921 | } 922 | } 923 | } 924 | layer { 925 | name: "inception_resnet_v2_a1_3x3_reduce_bn" 926 | type: "BatchNorm" 927 | bottom: "inception_resnet_v2_a1_3x3_reduce" 928 | top: "inception_resnet_v2_a1_3x3_reduce" 929 | param { 930 | lr_mult: 0.0 931 | decay_mult: 0.0 932 | } 933 | param { 934 | lr_mult: 0.0 935 | decay_mult: 0.0 936 | } 937 | param { 938 | lr_mult: 0.0 939 | decay_mult: 0.0 940 | } 941 | batch_norm_param { 942 | use_global_stats: true 943 | moving_average_fraction: 0.95 944 | } 945 | } 946 | layer { 947 | name: "inception_resnet_v2_a1_3x3_reduce_scale" 948 | type: "Scale" 949 | bottom: "inception_resnet_v2_a1_3x3_reduce" 950 | top: "inception_resnet_v2_a1_3x3_reduce" 951 | scale_param { 952 | bias_term: true 953 | } 954 | } 955 | layer { 956 | name: "inception_resnet_v2_a1_3x3_reduce_relu" 957 | type: "PReLU" 958 | bottom: "inception_resnet_v2_a1_3x3_reduce" 959 | top: "inception_resnet_v2_a1_3x3_reduce" 960 | } 961 | layer { 962 | name: "inception_resnet_v2_a1_3x3" 963 | type: "Convolution" 964 | bottom: "inception_resnet_v2_a1_3x3_reduce" 965 | top: "inception_resnet_v2_a1_3x3" 966 | param { 967 | lr_mult: 1 968 | decay_mult: 1 969 | } 970 | param { 971 | lr_mult: 2 972 | decay_mult: 0 973 | } 974 | convolution_param { 975 | num_output: 32 976 | pad: 1 977 | kernel_size: 3 978 | stride: 1 979 | weight_filler { 980 | type: "xavier" 981 | std: 0.01 982 | } 983 | bias_filler { 984 | type: "constant" 985 | value: 0.2 986 | } 987 | } 988 | } 989 | layer { 990 | name: "inception_resnet_v2_a1_3x3_bn" 991 | type: "BatchNorm" 992 | bottom: "inception_resnet_v2_a1_3x3" 993 | top: "inception_resnet_v2_a1_3x3" 994 | param { 995 | lr_mult: 0.0 996 | decay_mult: 0.0 997 | } 998 | param { 999 | lr_mult: 0.0 1000 | decay_mult: 0.0 1001 | } 1002 | param { 1003 | lr_mult: 0.0 1004 | decay_mult: 0.0 1005 | } 1006 | batch_norm_param { 1007 | use_global_stats: true 1008 | moving_average_fraction: 0.95 1009 | } 1010 | } 1011 | layer { 1012 | name: "inception_resnet_v2_a1_3x3_scale" 1013 | type: "Scale" 1014 | bottom: "inception_resnet_v2_a1_3x3" 1015 | top: "inception_resnet_v2_a1_3x3" 1016 | scale_param { 1017 | bias_term: true 1018 | } 1019 | } 1020 | layer { 1021 | name: "inception_resnet_v2_a1_3x3_relu" 1022 | type: "PReLU" 1023 | bottom: "inception_resnet_v2_a1_3x3" 1024 | top: "inception_resnet_v2_a1_3x3" 1025 | } 1026 | layer { 1027 | name: "inception_resnet_v2_a1_3x3_2_reduce" 1028 | type: "Convolution" 1029 | bottom: "stem_concat" 1030 | top: "inception_resnet_v2_a1_3x3_2_reduce" 1031 | param { 1032 | lr_mult: 1 1033 | decay_mult: 1 1034 | } 1035 | param { 1036 | lr_mult: 2 1037 | decay_mult: 0 1038 | } 1039 | convolution_param { 1040 | num_output: 32 1041 | pad: 0 1042 | kernel_size: 1 1043 | stride: 1 1044 | weight_filler { 1045 | type: "xavier" 1046 | std: 0.01 1047 | } 1048 | bias_filler { 1049 | type: "constant" 1050 | value: 0.2 1051 | } 1052 | } 1053 | } 1054 | layer { 1055 | name: "inception_resnet_v2_a1_3x3_2_reduce_bn" 1056 | type: "BatchNorm" 1057 | bottom: "inception_resnet_v2_a1_3x3_2_reduce" 1058 | top: "inception_resnet_v2_a1_3x3_2_reduce" 1059 | param { 1060 | lr_mult: 0.0 1061 | decay_mult: 0.0 1062 | } 1063 | param { 1064 | lr_mult: 0.0 1065 | decay_mult: 0.0 1066 | } 1067 | param { 1068 | lr_mult: 0.0 1069 | decay_mult: 0.0 1070 | } 1071 | batch_norm_param { 1072 | use_global_stats: true 1073 | moving_average_fraction: 0.95 1074 | } 1075 | } 1076 | layer { 1077 | name: "inception_resnet_v2_a1_3x3_2_reduce_scale" 1078 | type: "Scale" 1079 | bottom: "inception_resnet_v2_a1_3x3_2_reduce" 1080 | top: "inception_resnet_v2_a1_3x3_2_reduce" 1081 | scale_param { 1082 | bias_term: true 1083 | } 1084 | } 1085 | layer { 1086 | name: "inception_resnet_v2_a1_3x3_2_reduce_relu" 1087 | type: "PReLU" 1088 | bottom: "inception_resnet_v2_a1_3x3_2_reduce" 1089 | top: "inception_resnet_v2_a1_3x3_2_reduce" 1090 | } 1091 | layer { 1092 | name: "inception_resnet_v2_a1_3x3_2" 1093 | type: "Convolution" 1094 | bottom: "inception_resnet_v2_a1_3x3_2_reduce" 1095 | top: "inception_resnet_v2_a1_3x3_2" 1096 | param { 1097 | lr_mult: 1 1098 | decay_mult: 1 1099 | } 1100 | param { 1101 | lr_mult: 2 1102 | decay_mult: 0 1103 | } 1104 | convolution_param { 1105 | num_output: 48 1106 | pad: 1 1107 | kernel_size: 3 1108 | stride: 1 1109 | weight_filler { 1110 | type: "xavier" 1111 | std: 0.01 1112 | } 1113 | bias_filler { 1114 | type: "constant" 1115 | value: 0.2 1116 | } 1117 | } 1118 | } 1119 | layer { 1120 | name: "inception_resnet_v2_a1_3x3_2_bn" 1121 | type: "BatchNorm" 1122 | bottom: "inception_resnet_v2_a1_3x3_2" 1123 | top: "inception_resnet_v2_a1_3x3_2" 1124 | param { 1125 | lr_mult: 0.0 1126 | decay_mult: 0.0 1127 | } 1128 | param { 1129 | lr_mult: 0.0 1130 | decay_mult: 0.0 1131 | } 1132 | param { 1133 | lr_mult: 0.0 1134 | decay_mult: 0.0 1135 | } 1136 | batch_norm_param { 1137 | use_global_stats: true 1138 | moving_average_fraction: 0.95 1139 | } 1140 | } 1141 | layer { 1142 | name: "inception_resnet_v2_a1_3x3_2_scale" 1143 | type: "Scale" 1144 | bottom: "inception_resnet_v2_a1_3x3_2" 1145 | top: "inception_resnet_v2_a1_3x3_2" 1146 | scale_param { 1147 | bias_term: true 1148 | } 1149 | } 1150 | layer { 1151 | name: "inception_resnet_v2_a1_3x3_2_relu" 1152 | type: "PReLU" 1153 | bottom: "inception_resnet_v2_a1_3x3_2" 1154 | top: "inception_resnet_v2_a1_3x3_2" 1155 | } 1156 | layer { 1157 | name: "inception_resnet_v2_a1_3x3_3" 1158 | type: "Convolution" 1159 | bottom: "inception_resnet_v2_a1_3x3_2" 1160 | top: "inception_resnet_v2_a1_3x3_3" 1161 | param { 1162 | lr_mult: 1 1163 | decay_mult: 1 1164 | } 1165 | param { 1166 | lr_mult: 2 1167 | decay_mult: 0 1168 | } 1169 | convolution_param { 1170 | num_output: 64 1171 | pad: 1 1172 | kernel_size: 3 1173 | stride: 1 1174 | weight_filler { 1175 | type: "xavier" 1176 | std: 0.01 1177 | } 1178 | bias_filler { 1179 | type: "constant" 1180 | value: 0.2 1181 | } 1182 | } 1183 | } 1184 | layer { 1185 | name: "inception_resnet_v2_a1_3x3_3_bn" 1186 | type: "BatchNorm" 1187 | bottom: "inception_resnet_v2_a1_3x3_3" 1188 | top: "inception_resnet_v2_a1_3x3_3" 1189 | param { 1190 | lr_mult: 0.0 1191 | decay_mult: 0.0 1192 | } 1193 | param { 1194 | lr_mult: 0.0 1195 | decay_mult: 0.0 1196 | } 1197 | param { 1198 | lr_mult: 0.0 1199 | decay_mult: 0.0 1200 | } 1201 | batch_norm_param { 1202 | use_global_stats: true 1203 | moving_average_fraction: 0.95 1204 | } 1205 | } 1206 | layer { 1207 | name: "inception_resnet_v2_a1_3x3_3_scale" 1208 | type: "Scale" 1209 | bottom: "inception_resnet_v2_a1_3x3_3" 1210 | top: "inception_resnet_v2_a1_3x3_3" 1211 | scale_param { 1212 | bias_term: true 1213 | } 1214 | } 1215 | layer { 1216 | name: "inception_resnet_v2_a1_3x3_3_relu" 1217 | type: "PReLU" 1218 | bottom: "inception_resnet_v2_a1_3x3_3" 1219 | top: "inception_resnet_v2_a1_3x3_3" 1220 | } 1221 | layer { 1222 | name: "inception_resnet_v2_a1_concat" 1223 | type: "Concat" 1224 | bottom: "inception_resnet_v2_a1_1x1" 1225 | bottom: "inception_resnet_v2_a1_3x3" 1226 | bottom: "inception_resnet_v2_a1_3x3_3" 1227 | top: "inception_resnet_v2_a1_concat" 1228 | } 1229 | layer { 1230 | name: "inception_resnet_v2_a1_up" 1231 | type: "Convolution" 1232 | bottom: "inception_resnet_v2_a1_concat" 1233 | top: "inception_resnet_v2_a1_up" 1234 | param { 1235 | lr_mult: 1 1236 | decay_mult: 1 1237 | } 1238 | param { 1239 | lr_mult: 2 1240 | decay_mult: 0 1241 | } 1242 | convolution_param { 1243 | num_output: 320 1244 | pad: 0 1245 | kernel_size: 1 1246 | stride: 1 1247 | weight_filler { 1248 | type: "xavier" 1249 | std: 0.01 1250 | } 1251 | bias_filler { 1252 | type: "constant" 1253 | value: 0.2 1254 | } 1255 | } 1256 | } 1257 | layer { 1258 | name: "inception_resnet_v2_a1_up_bn" 1259 | type: "BatchNorm" 1260 | bottom: "inception_resnet_v2_a1_up" 1261 | top: "inception_resnet_v2_a1_up" 1262 | param { 1263 | lr_mult: 0.0 1264 | decay_mult: 0.0 1265 | } 1266 | param { 1267 | lr_mult: 0.0 1268 | decay_mult: 0.0 1269 | } 1270 | param { 1271 | lr_mult: 0.0 1272 | decay_mult: 0.0 1273 | } 1274 | batch_norm_param { 1275 | use_global_stats: true 1276 | moving_average_fraction: 0.95 1277 | } 1278 | } 1279 | layer { 1280 | name: "inception_resnet_v2_a1_up_scale" 1281 | type: "Scale" 1282 | bottom: "inception_resnet_v2_a1_up" 1283 | top: "inception_resnet_v2_a1_up" 1284 | scale_param { 1285 | bias_term: true 1286 | } 1287 | } 1288 | layer { 1289 | name: "inception_resnet_v2_a1_residual_eltwise" 1290 | type: "Eltwise" 1291 | bottom: "stem_concat" 1292 | bottom: "inception_resnet_v2_a1_up" 1293 | top: "inception_resnet_v2_a1_residual_eltwise" 1294 | eltwise_param { 1295 | operation: SUM 1296 | } 1297 | } 1298 | layer { 1299 | name: "inception_resnet_v2_a1_residual_eltwise_relu" 1300 | type: "PReLU" 1301 | bottom: "inception_resnet_v2_a1_residual_eltwise" 1302 | top: "inception_resnet_v2_a1_residual_eltwise" 1303 | } 1304 | layer { 1305 | name: "inception_resnet_v2_a2_1x1" 1306 | type: "Convolution" 1307 | bottom: "inception_resnet_v2_a1_residual_eltwise" 1308 | top: "inception_resnet_v2_a2_1x1" 1309 | param { 1310 | lr_mult: 1 1311 | decay_mult: 1 1312 | } 1313 | param { 1314 | lr_mult: 2 1315 | decay_mult: 0 1316 | } 1317 | convolution_param { 1318 | num_output: 32 1319 | pad: 0 1320 | kernel_size: 1 1321 | stride: 1 1322 | weight_filler { 1323 | type: "xavier" 1324 | std: 0.01 1325 | } 1326 | bias_filler { 1327 | type: "constant" 1328 | value: 0.2 1329 | } 1330 | } 1331 | } 1332 | layer { 1333 | name: "inception_resnet_v2_a2_1x1_bn" 1334 | type: "BatchNorm" 1335 | bottom: "inception_resnet_v2_a2_1x1" 1336 | top: "inception_resnet_v2_a2_1x1" 1337 | param { 1338 | lr_mult: 0.0 1339 | decay_mult: 0.0 1340 | } 1341 | param { 1342 | lr_mult: 0.0 1343 | decay_mult: 0.0 1344 | } 1345 | param { 1346 | lr_mult: 0.0 1347 | decay_mult: 0.0 1348 | } 1349 | batch_norm_param { 1350 | use_global_stats: true 1351 | moving_average_fraction: 0.95 1352 | } 1353 | } 1354 | layer { 1355 | name: "inception_resnet_v2_a2_1x1_scale" 1356 | type: "Scale" 1357 | bottom: "inception_resnet_v2_a2_1x1" 1358 | top: "inception_resnet_v2_a2_1x1" 1359 | scale_param { 1360 | bias_term: true 1361 | } 1362 | } 1363 | layer { 1364 | name: "inception_resnet_v2_a2_1x1_relu" 1365 | type: "PReLU" 1366 | bottom: "inception_resnet_v2_a2_1x1" 1367 | top: "inception_resnet_v2_a2_1x1" 1368 | } 1369 | layer { 1370 | name: "inception_resnet_v2_a2_3x3_reduce" 1371 | type: "Convolution" 1372 | bottom: "inception_resnet_v2_a1_residual_eltwise" 1373 | top: "inception_resnet_v2_a2_3x3_reduce" 1374 | param { 1375 | lr_mult: 1 1376 | decay_mult: 1 1377 | } 1378 | param { 1379 | lr_mult: 2 1380 | decay_mult: 0 1381 | } 1382 | convolution_param { 1383 | num_output: 32 1384 | pad: 0 1385 | kernel_size: 1 1386 | stride: 1 1387 | weight_filler { 1388 | type: "xavier" 1389 | std: 0.01 1390 | } 1391 | bias_filler { 1392 | type: "constant" 1393 | value: 0.2 1394 | } 1395 | } 1396 | } 1397 | layer { 1398 | name: "inception_resnet_v2_a2_3x3_reduce_bn" 1399 | type: "BatchNorm" 1400 | bottom: "inception_resnet_v2_a2_3x3_reduce" 1401 | top: "inception_resnet_v2_a2_3x3_reduce" 1402 | param { 1403 | lr_mult: 0.0 1404 | decay_mult: 0.0 1405 | } 1406 | param { 1407 | lr_mult: 0.0 1408 | decay_mult: 0.0 1409 | } 1410 | param { 1411 | lr_mult: 0.0 1412 | decay_mult: 0.0 1413 | } 1414 | batch_norm_param { 1415 | use_global_stats: true 1416 | moving_average_fraction: 0.95 1417 | } 1418 | } 1419 | layer { 1420 | name: "inception_resnet_v2_a2_3x3_reduce_scale" 1421 | type: "Scale" 1422 | bottom: "inception_resnet_v2_a2_3x3_reduce" 1423 | top: "inception_resnet_v2_a2_3x3_reduce" 1424 | scale_param { 1425 | bias_term: true 1426 | } 1427 | } 1428 | layer { 1429 | name: "inception_resnet_v2_a2_3x3_reduce_relu" 1430 | type: "PReLU" 1431 | bottom: "inception_resnet_v2_a2_3x3_reduce" 1432 | top: "inception_resnet_v2_a2_3x3_reduce" 1433 | } 1434 | layer { 1435 | name: "inception_resnet_v2_a2_3x3" 1436 | type: "Convolution" 1437 | bottom: "inception_resnet_v2_a2_3x3_reduce" 1438 | top: "inception_resnet_v2_a2_3x3" 1439 | param { 1440 | lr_mult: 1 1441 | decay_mult: 1 1442 | } 1443 | param { 1444 | lr_mult: 2 1445 | decay_mult: 0 1446 | } 1447 | convolution_param { 1448 | num_output: 32 1449 | pad: 1 1450 | kernel_size: 3 1451 | stride: 1 1452 | weight_filler { 1453 | type: "xavier" 1454 | std: 0.01 1455 | } 1456 | bias_filler { 1457 | type: "constant" 1458 | value: 0.2 1459 | } 1460 | } 1461 | } 1462 | layer { 1463 | name: "inception_resnet_v2_a2_3x3_bn" 1464 | type: "BatchNorm" 1465 | bottom: "inception_resnet_v2_a2_3x3" 1466 | top: "inception_resnet_v2_a2_3x3" 1467 | param { 1468 | lr_mult: 0.0 1469 | decay_mult: 0.0 1470 | } 1471 | param { 1472 | lr_mult: 0.0 1473 | decay_mult: 0.0 1474 | } 1475 | param { 1476 | lr_mult: 0.0 1477 | decay_mult: 0.0 1478 | } 1479 | batch_norm_param { 1480 | use_global_stats: true 1481 | moving_average_fraction: 0.95 1482 | } 1483 | } 1484 | layer { 1485 | name: "inception_resnet_v2_a2_3x3_scale" 1486 | type: "Scale" 1487 | bottom: "inception_resnet_v2_a2_3x3" 1488 | top: "inception_resnet_v2_a2_3x3" 1489 | scale_param { 1490 | bias_term: true 1491 | } 1492 | } 1493 | layer { 1494 | name: "inception_resnet_v2_a2_3x3_relu" 1495 | type: "PReLU" 1496 | bottom: "inception_resnet_v2_a2_3x3" 1497 | top: "inception_resnet_v2_a2_3x3" 1498 | } 1499 | layer { 1500 | name: "inception_resnet_v2_a2_3x3_2_reduce" 1501 | type: "Convolution" 1502 | bottom: "inception_resnet_v2_a1_residual_eltwise" 1503 | top: "inception_resnet_v2_a2_3x3_2_reduce" 1504 | param { 1505 | lr_mult: 1 1506 | decay_mult: 1 1507 | } 1508 | param { 1509 | lr_mult: 2 1510 | decay_mult: 0 1511 | } 1512 | convolution_param { 1513 | num_output: 32 1514 | pad: 0 1515 | kernel_size: 1 1516 | stride: 1 1517 | weight_filler { 1518 | type: "xavier" 1519 | std: 0.01 1520 | } 1521 | bias_filler { 1522 | type: "constant" 1523 | value: 0.2 1524 | } 1525 | } 1526 | } 1527 | layer { 1528 | name: "inception_resnet_v2_a2_3x3_2_reduce_bn" 1529 | type: "BatchNorm" 1530 | bottom: "inception_resnet_v2_a2_3x3_2_reduce" 1531 | top: "inception_resnet_v2_a2_3x3_2_reduce" 1532 | param { 1533 | lr_mult: 0.0 1534 | decay_mult: 0.0 1535 | } 1536 | param { 1537 | lr_mult: 0.0 1538 | decay_mult: 0.0 1539 | } 1540 | param { 1541 | lr_mult: 0.0 1542 | decay_mult: 0.0 1543 | } 1544 | batch_norm_param { 1545 | use_global_stats: true 1546 | moving_average_fraction: 0.95 1547 | } 1548 | } 1549 | layer { 1550 | name: "inception_resnet_v2_a2_3x3_2_reduce_scale" 1551 | type: "Scale" 1552 | bottom: "inception_resnet_v2_a2_3x3_2_reduce" 1553 | top: "inception_resnet_v2_a2_3x3_2_reduce" 1554 | scale_param { 1555 | bias_term: true 1556 | } 1557 | } 1558 | layer { 1559 | name: "inception_resnet_v2_a2_3x3_2_reduce_relu" 1560 | type: "PReLU" 1561 | bottom: "inception_resnet_v2_a2_3x3_2_reduce" 1562 | top: "inception_resnet_v2_a2_3x3_2_reduce" 1563 | } 1564 | layer { 1565 | name: "inception_resnet_v2_a2_3x3_2" 1566 | type: "Convolution" 1567 | bottom: "inception_resnet_v2_a2_3x3_2_reduce" 1568 | top: "inception_resnet_v2_a2_3x3_2" 1569 | param { 1570 | lr_mult: 1 1571 | decay_mult: 1 1572 | } 1573 | param { 1574 | lr_mult: 2 1575 | decay_mult: 0 1576 | } 1577 | convolution_param { 1578 | num_output: 48 1579 | pad: 1 1580 | kernel_size: 3 1581 | stride: 1 1582 | weight_filler { 1583 | type: "xavier" 1584 | std: 0.01 1585 | } 1586 | bias_filler { 1587 | type: "constant" 1588 | value: 0.2 1589 | } 1590 | } 1591 | } 1592 | layer { 1593 | name: "inception_resnet_v2_a2_3x3_2_bn" 1594 | type: "BatchNorm" 1595 | bottom: "inception_resnet_v2_a2_3x3_2" 1596 | top: "inception_resnet_v2_a2_3x3_2" 1597 | param { 1598 | lr_mult: 0.0 1599 | decay_mult: 0.0 1600 | } 1601 | param { 1602 | lr_mult: 0.0 1603 | decay_mult: 0.0 1604 | } 1605 | param { 1606 | lr_mult: 0.0 1607 | decay_mult: 0.0 1608 | } 1609 | batch_norm_param { 1610 | use_global_stats: true 1611 | moving_average_fraction: 0.95 1612 | } 1613 | } 1614 | layer { 1615 | name: "inception_resnet_v2_a2_3x3_2_scale" 1616 | type: "Scale" 1617 | bottom: "inception_resnet_v2_a2_3x3_2" 1618 | top: "inception_resnet_v2_a2_3x3_2" 1619 | scale_param { 1620 | bias_term: true 1621 | } 1622 | } 1623 | layer { 1624 | name: "inception_resnet_v2_a2_3x3_2_relu" 1625 | type: "PReLU" 1626 | bottom: "inception_resnet_v2_a2_3x3_2" 1627 | top: "inception_resnet_v2_a2_3x3_2" 1628 | } 1629 | layer { 1630 | name: "inception_resnet_v2_a2_3x3_3" 1631 | type: "Convolution" 1632 | bottom: "inception_resnet_v2_a2_3x3_2" 1633 | top: "inception_resnet_v2_a2_3x3_3" 1634 | param { 1635 | lr_mult: 1 1636 | decay_mult: 1 1637 | } 1638 | param { 1639 | lr_mult: 2 1640 | decay_mult: 0 1641 | } 1642 | convolution_param { 1643 | num_output: 64 1644 | pad: 1 1645 | kernel_size: 3 1646 | stride: 1 1647 | weight_filler { 1648 | type: "xavier" 1649 | std: 0.01 1650 | } 1651 | bias_filler { 1652 | type: "constant" 1653 | value: 0.2 1654 | } 1655 | } 1656 | } 1657 | layer { 1658 | name: "inception_resnet_v2_a2_3x3_3_bn" 1659 | type: "BatchNorm" 1660 | bottom: "inception_resnet_v2_a2_3x3_3" 1661 | top: "inception_resnet_v2_a2_3x3_3" 1662 | param { 1663 | lr_mult: 0.0 1664 | decay_mult: 0.0 1665 | } 1666 | param { 1667 | lr_mult: 0.0 1668 | decay_mult: 0.0 1669 | } 1670 | param { 1671 | lr_mult: 0.0 1672 | decay_mult: 0.0 1673 | } 1674 | batch_norm_param { 1675 | use_global_stats: true 1676 | moving_average_fraction: 0.95 1677 | } 1678 | } 1679 | layer { 1680 | name: "inception_resnet_v2_a2_3x3_3_scale" 1681 | type: "Scale" 1682 | bottom: "inception_resnet_v2_a2_3x3_3" 1683 | top: "inception_resnet_v2_a2_3x3_3" 1684 | scale_param { 1685 | bias_term: true 1686 | } 1687 | } 1688 | layer { 1689 | name: "inception_resnet_v2_a2_3x3_3_relu" 1690 | type: "PReLU" 1691 | bottom: "inception_resnet_v2_a2_3x3_3" 1692 | top: "inception_resnet_v2_a2_3x3_3" 1693 | } 1694 | layer { 1695 | name: "inception_resnet_v2_a2_concat" 1696 | type: "Concat" 1697 | bottom: "inception_resnet_v2_a2_1x1" 1698 | bottom: "inception_resnet_v2_a2_3x3" 1699 | bottom: "inception_resnet_v2_a2_3x3_3" 1700 | top: "inception_resnet_v2_a2_concat" 1701 | } 1702 | layer { 1703 | name: "inception_resnet_v2_a2_up" 1704 | type: "Convolution" 1705 | bottom: "inception_resnet_v2_a2_concat" 1706 | top: "inception_resnet_v2_a2_up" 1707 | param { 1708 | lr_mult: 1 1709 | decay_mult: 1 1710 | } 1711 | param { 1712 | lr_mult: 2 1713 | decay_mult: 0 1714 | } 1715 | convolution_param { 1716 | num_output: 320 1717 | pad: 0 1718 | kernel_size: 1 1719 | stride: 1 1720 | weight_filler { 1721 | type: "xavier" 1722 | std: 0.01 1723 | } 1724 | bias_filler { 1725 | type: "constant" 1726 | value: 0.2 1727 | } 1728 | } 1729 | } 1730 | layer { 1731 | name: "inception_resnet_v2_a2_up_bn" 1732 | type: "BatchNorm" 1733 | bottom: "inception_resnet_v2_a2_up" 1734 | top: "inception_resnet_v2_a2_up" 1735 | param { 1736 | lr_mult: 0.0 1737 | decay_mult: 0.0 1738 | } 1739 | param { 1740 | lr_mult: 0.0 1741 | decay_mult: 0.0 1742 | } 1743 | param { 1744 | lr_mult: 0.0 1745 | decay_mult: 0.0 1746 | } 1747 | batch_norm_param { 1748 | use_global_stats: true 1749 | moving_average_fraction: 0.95 1750 | } 1751 | } 1752 | layer { 1753 | name: "inception_resnet_v2_a2_up_scale" 1754 | type: "Scale" 1755 | bottom: "inception_resnet_v2_a2_up" 1756 | top: "inception_resnet_v2_a2_up" 1757 | scale_param { 1758 | bias_term: true 1759 | } 1760 | } 1761 | layer { 1762 | name: "inception_resnet_v2_a2_residual_eltwise" 1763 | type: "Eltwise" 1764 | bottom: "inception_resnet_v2_a1_residual_eltwise" 1765 | bottom: "inception_resnet_v2_a2_up" 1766 | top: "inception_resnet_v2_a2_residual_eltwise" 1767 | eltwise_param { 1768 | operation: SUM 1769 | } 1770 | } 1771 | layer { 1772 | name: "inception_resnet_v2_a2_residual_eltwise_relu" 1773 | type: "PReLU" 1774 | bottom: "inception_resnet_v2_a2_residual_eltwise" 1775 | top: "inception_resnet_v2_a2_residual_eltwise" 1776 | } 1777 | layer { 1778 | name: "inception_resnet_v2_a3_1x1" 1779 | type: "Convolution" 1780 | bottom: "inception_resnet_v2_a2_residual_eltwise" 1781 | top: "inception_resnet_v2_a3_1x1" 1782 | param { 1783 | lr_mult: 1 1784 | decay_mult: 1 1785 | } 1786 | param { 1787 | lr_mult: 2 1788 | decay_mult: 0 1789 | } 1790 | convolution_param { 1791 | num_output: 32 1792 | pad: 0 1793 | kernel_size: 1 1794 | stride: 1 1795 | weight_filler { 1796 | type: "xavier" 1797 | std: 0.01 1798 | } 1799 | bias_filler { 1800 | type: "constant" 1801 | value: 0.2 1802 | } 1803 | } 1804 | } 1805 | layer { 1806 | name: "inception_resnet_v2_a3_1x1_bn" 1807 | type: "BatchNorm" 1808 | bottom: "inception_resnet_v2_a3_1x1" 1809 | top: "inception_resnet_v2_a3_1x1" 1810 | param { 1811 | lr_mult: 0.0 1812 | decay_mult: 0.0 1813 | } 1814 | param { 1815 | lr_mult: 0.0 1816 | decay_mult: 0.0 1817 | } 1818 | param { 1819 | lr_mult: 0.0 1820 | decay_mult: 0.0 1821 | } 1822 | batch_norm_param { 1823 | use_global_stats: true 1824 | moving_average_fraction: 0.95 1825 | } 1826 | } 1827 | layer { 1828 | name: "inception_resnet_v2_a3_1x1_scale" 1829 | type: "Scale" 1830 | bottom: "inception_resnet_v2_a3_1x1" 1831 | top: "inception_resnet_v2_a3_1x1" 1832 | scale_param { 1833 | bias_term: true 1834 | } 1835 | } 1836 | layer { 1837 | name: "inception_resnet_v2_a3_1x1_relu" 1838 | type: "PReLU" 1839 | bottom: "inception_resnet_v2_a3_1x1" 1840 | top: "inception_resnet_v2_a3_1x1" 1841 | } 1842 | layer { 1843 | name: "inception_resnet_v2_a3_3x3_reduce" 1844 | type: "Convolution" 1845 | bottom: "inception_resnet_v2_a2_residual_eltwise" 1846 | top: "inception_resnet_v2_a3_3x3_reduce" 1847 | param { 1848 | lr_mult: 1 1849 | decay_mult: 1 1850 | } 1851 | param { 1852 | lr_mult: 2 1853 | decay_mult: 0 1854 | } 1855 | convolution_param { 1856 | num_output: 32 1857 | pad: 0 1858 | kernel_size: 1 1859 | stride: 1 1860 | weight_filler { 1861 | type: "xavier" 1862 | std: 0.01 1863 | } 1864 | bias_filler { 1865 | type: "constant" 1866 | value: 0.2 1867 | } 1868 | } 1869 | } 1870 | layer { 1871 | name: "inception_resnet_v2_a3_3x3_reduce_bn" 1872 | type: "BatchNorm" 1873 | bottom: "inception_resnet_v2_a3_3x3_reduce" 1874 | top: "inception_resnet_v2_a3_3x3_reduce" 1875 | param { 1876 | lr_mult: 0.0 1877 | decay_mult: 0.0 1878 | } 1879 | param { 1880 | lr_mult: 0.0 1881 | decay_mult: 0.0 1882 | } 1883 | param { 1884 | lr_mult: 0.0 1885 | decay_mult: 0.0 1886 | } 1887 | batch_norm_param { 1888 | use_global_stats: true 1889 | moving_average_fraction: 0.95 1890 | } 1891 | } 1892 | layer { 1893 | name: "inception_resnet_v2_a3_3x3_reduce_scale" 1894 | type: "Scale" 1895 | bottom: "inception_resnet_v2_a3_3x3_reduce" 1896 | top: "inception_resnet_v2_a3_3x3_reduce" 1897 | scale_param { 1898 | bias_term: true 1899 | } 1900 | } 1901 | layer { 1902 | name: "inception_resnet_v2_a3_3x3_reduce_relu" 1903 | type: "PReLU" 1904 | bottom: "inception_resnet_v2_a3_3x3_reduce" 1905 | top: "inception_resnet_v2_a3_3x3_reduce" 1906 | } 1907 | layer { 1908 | name: "inception_resnet_v2_a3_3x3" 1909 | type: "Convolution" 1910 | bottom: "inception_resnet_v2_a3_3x3_reduce" 1911 | top: "inception_resnet_v2_a3_3x3" 1912 | param { 1913 | lr_mult: 1 1914 | decay_mult: 1 1915 | } 1916 | param { 1917 | lr_mult: 2 1918 | decay_mult: 0 1919 | } 1920 | convolution_param { 1921 | num_output: 32 1922 | pad: 1 1923 | kernel_size: 3 1924 | stride: 1 1925 | weight_filler { 1926 | type: "xavier" 1927 | std: 0.01 1928 | } 1929 | bias_filler { 1930 | type: "constant" 1931 | value: 0.2 1932 | } 1933 | } 1934 | } 1935 | layer { 1936 | name: "inception_resnet_v2_a3_3x3_bn" 1937 | type: "BatchNorm" 1938 | bottom: "inception_resnet_v2_a3_3x3" 1939 | top: "inception_resnet_v2_a3_3x3" 1940 | param { 1941 | lr_mult: 0.0 1942 | decay_mult: 0.0 1943 | } 1944 | param { 1945 | lr_mult: 0.0 1946 | decay_mult: 0.0 1947 | } 1948 | param { 1949 | lr_mult: 0.0 1950 | decay_mult: 0.0 1951 | } 1952 | batch_norm_param { 1953 | use_global_stats: true 1954 | moving_average_fraction: 0.95 1955 | } 1956 | } 1957 | layer { 1958 | name: "inception_resnet_v2_a3_3x3_scale" 1959 | type: "Scale" 1960 | bottom: "inception_resnet_v2_a3_3x3" 1961 | top: "inception_resnet_v2_a3_3x3" 1962 | scale_param { 1963 | bias_term: true 1964 | } 1965 | } 1966 | layer { 1967 | name: "inception_resnet_v2_a3_3x3_relu" 1968 | type: "PReLU" 1969 | bottom: "inception_resnet_v2_a3_3x3" 1970 | top: "inception_resnet_v2_a3_3x3" 1971 | } 1972 | layer { 1973 | name: "inception_resnet_v2_a3_3x3_2_reduce" 1974 | type: "Convolution" 1975 | bottom: "inception_resnet_v2_a2_residual_eltwise" 1976 | top: "inception_resnet_v2_a3_3x3_2_reduce" 1977 | param { 1978 | lr_mult: 1 1979 | decay_mult: 1 1980 | } 1981 | param { 1982 | lr_mult: 2 1983 | decay_mult: 0 1984 | } 1985 | convolution_param { 1986 | num_output: 32 1987 | pad: 0 1988 | kernel_size: 1 1989 | stride: 1 1990 | weight_filler { 1991 | type: "xavier" 1992 | std: 0.01 1993 | } 1994 | bias_filler { 1995 | type: "constant" 1996 | value: 0.2 1997 | } 1998 | } 1999 | } 2000 | layer { 2001 | name: "inception_resnet_v2_a3_3x3_2_reduce_bn" 2002 | type: "BatchNorm" 2003 | bottom: "inception_resnet_v2_a3_3x3_2_reduce" 2004 | top: "inception_resnet_v2_a3_3x3_2_reduce" 2005 | param { 2006 | lr_mult: 0.0 2007 | decay_mult: 0.0 2008 | } 2009 | param { 2010 | lr_mult: 0.0 2011 | decay_mult: 0.0 2012 | } 2013 | param { 2014 | lr_mult: 0.0 2015 | decay_mult: 0.0 2016 | } 2017 | batch_norm_param { 2018 | use_global_stats: true 2019 | moving_average_fraction: 0.95 2020 | } 2021 | } 2022 | layer { 2023 | name: "inception_resnet_v2_a3_3x3_2_reduce_scale" 2024 | type: "Scale" 2025 | bottom: "inception_resnet_v2_a3_3x3_2_reduce" 2026 | top: "inception_resnet_v2_a3_3x3_2_reduce" 2027 | scale_param { 2028 | bias_term: true 2029 | } 2030 | } 2031 | layer { 2032 | name: "inception_resnet_v2_a3_3x3_2_reduce_relu" 2033 | type: "PReLU" 2034 | bottom: "inception_resnet_v2_a3_3x3_2_reduce" 2035 | top: "inception_resnet_v2_a3_3x3_2_reduce" 2036 | } 2037 | layer { 2038 | name: "inception_resnet_v2_a3_3x3_2" 2039 | type: "Convolution" 2040 | bottom: "inception_resnet_v2_a3_3x3_2_reduce" 2041 | top: "inception_resnet_v2_a3_3x3_2" 2042 | param { 2043 | lr_mult: 1 2044 | decay_mult: 1 2045 | } 2046 | param { 2047 | lr_mult: 2 2048 | decay_mult: 0 2049 | } 2050 | convolution_param { 2051 | num_output: 48 2052 | pad: 1 2053 | kernel_size: 3 2054 | stride: 1 2055 | weight_filler { 2056 | type: "xavier" 2057 | std: 0.01 2058 | } 2059 | bias_filler { 2060 | type: "constant" 2061 | value: 0.2 2062 | } 2063 | } 2064 | } 2065 | layer { 2066 | name: "inception_resnet_v2_a3_3x3_2_bn" 2067 | type: "BatchNorm" 2068 | bottom: "inception_resnet_v2_a3_3x3_2" 2069 | top: "inception_resnet_v2_a3_3x3_2" 2070 | param { 2071 | lr_mult: 0.0 2072 | decay_mult: 0.0 2073 | } 2074 | param { 2075 | lr_mult: 0.0 2076 | decay_mult: 0.0 2077 | } 2078 | param { 2079 | lr_mult: 0.0 2080 | decay_mult: 0.0 2081 | } 2082 | batch_norm_param { 2083 | use_global_stats: true 2084 | moving_average_fraction: 0.95 2085 | } 2086 | } 2087 | layer { 2088 | name: "inception_resnet_v2_a3_3x3_2_scale" 2089 | type: "Scale" 2090 | bottom: "inception_resnet_v2_a3_3x3_2" 2091 | top: "inception_resnet_v2_a3_3x3_2" 2092 | scale_param { 2093 | bias_term: true 2094 | } 2095 | } 2096 | layer { 2097 | name: "inception_resnet_v2_a3_3x3_2_relu" 2098 | type: "PReLU" 2099 | bottom: "inception_resnet_v2_a3_3x3_2" 2100 | top: "inception_resnet_v2_a3_3x3_2" 2101 | } 2102 | layer { 2103 | name: "inception_resnet_v2_a3_3x3_3" 2104 | type: "Convolution" 2105 | bottom: "inception_resnet_v2_a3_3x3_2" 2106 | top: "inception_resnet_v2_a3_3x3_3" 2107 | param { 2108 | lr_mult: 1 2109 | decay_mult: 1 2110 | } 2111 | param { 2112 | lr_mult: 2 2113 | decay_mult: 0 2114 | } 2115 | convolution_param { 2116 | num_output: 64 2117 | pad: 1 2118 | kernel_size: 3 2119 | stride: 1 2120 | weight_filler { 2121 | type: "xavier" 2122 | std: 0.01 2123 | } 2124 | bias_filler { 2125 | type: "constant" 2126 | value: 0.2 2127 | } 2128 | } 2129 | } 2130 | layer { 2131 | name: "inception_resnet_v2_a3_3x3_3_bn" 2132 | type: "BatchNorm" 2133 | bottom: "inception_resnet_v2_a3_3x3_3" 2134 | top: "inception_resnet_v2_a3_3x3_3" 2135 | param { 2136 | lr_mult: 0.0 2137 | decay_mult: 0.0 2138 | } 2139 | param { 2140 | lr_mult: 0.0 2141 | decay_mult: 0.0 2142 | } 2143 | param { 2144 | lr_mult: 0.0 2145 | decay_mult: 0.0 2146 | } 2147 | batch_norm_param { 2148 | use_global_stats: true 2149 | moving_average_fraction: 0.95 2150 | } 2151 | } 2152 | layer { 2153 | name: "inception_resnet_v2_a3_3x3_3_scale" 2154 | type: "Scale" 2155 | bottom: "inception_resnet_v2_a3_3x3_3" 2156 | top: "inception_resnet_v2_a3_3x3_3" 2157 | scale_param { 2158 | bias_term: true 2159 | } 2160 | } 2161 | layer { 2162 | name: "inception_resnet_v2_a3_3x3_3_relu" 2163 | type: "PReLU" 2164 | bottom: "inception_resnet_v2_a3_3x3_3" 2165 | top: "inception_resnet_v2_a3_3x3_3" 2166 | } 2167 | layer { 2168 | name: "inception_resnet_v2_a3_concat" 2169 | type: "Concat" 2170 | bottom: "inception_resnet_v2_a3_1x1" 2171 | bottom: "inception_resnet_v2_a3_3x3" 2172 | bottom: "inception_resnet_v2_a3_3x3_3" 2173 | top: "inception_resnet_v2_a3_concat" 2174 | } 2175 | layer { 2176 | name: "inception_resnet_v2_a3_up" 2177 | type: "Convolution" 2178 | bottom: "inception_resnet_v2_a3_concat" 2179 | top: "inception_resnet_v2_a3_up" 2180 | param { 2181 | lr_mult: 1 2182 | decay_mult: 1 2183 | } 2184 | param { 2185 | lr_mult: 2 2186 | decay_mult: 0 2187 | } 2188 | convolution_param { 2189 | num_output: 320 2190 | pad: 0 2191 | kernel_size: 1 2192 | stride: 1 2193 | weight_filler { 2194 | type: "xavier" 2195 | std: 0.01 2196 | } 2197 | bias_filler { 2198 | type: "constant" 2199 | value: 0.2 2200 | } 2201 | } 2202 | } 2203 | layer { 2204 | name: "inception_resnet_v2_a3_up_bn" 2205 | type: "BatchNorm" 2206 | bottom: "inception_resnet_v2_a3_up" 2207 | top: "inception_resnet_v2_a3_up" 2208 | param { 2209 | lr_mult: 0.0 2210 | decay_mult: 0.0 2211 | } 2212 | param { 2213 | lr_mult: 0.0 2214 | decay_mult: 0.0 2215 | } 2216 | param { 2217 | lr_mult: 0.0 2218 | decay_mult: 0.0 2219 | } 2220 | batch_norm_param { 2221 | use_global_stats: true 2222 | moving_average_fraction: 0.95 2223 | } 2224 | } 2225 | layer { 2226 | name: "inception_resnet_v2_a3_up_scale" 2227 | type: "Scale" 2228 | bottom: "inception_resnet_v2_a3_up" 2229 | top: "inception_resnet_v2_a3_up" 2230 | scale_param { 2231 | bias_term: true 2232 | } 2233 | } 2234 | layer { 2235 | name: "inception_resnet_v2_a3_residual_eltwise" 2236 | type: "Eltwise" 2237 | bottom: "inception_resnet_v2_a2_residual_eltwise" 2238 | bottom: "inception_resnet_v2_a3_up" 2239 | top: "inception_resnet_v2_a3_residual_eltwise" 2240 | eltwise_param { 2241 | operation: SUM 2242 | } 2243 | } 2244 | layer { 2245 | name: "inception_resnet_v2_a3_residual_eltwise_relu" 2246 | type: "PReLU" 2247 | bottom: "inception_resnet_v2_a3_residual_eltwise" 2248 | top: "inception_resnet_v2_a3_residual_eltwise" 2249 | } 2250 | 2251 | layer { 2252 | name: "reduction_a_3x3" 2253 | type: "Convolution" 2254 | bottom: "inception_resnet_v2_a3_residual_eltwise" 2255 | top: "reduction_a_3x3" 2256 | param { 2257 | lr_mult: 1 2258 | decay_mult: 1 2259 | } 2260 | param { 2261 | lr_mult: 2 2262 | decay_mult: 0 2263 | } 2264 | convolution_param { 2265 | num_output: 384 2266 | pad: 1 2267 | kernel_size: 3 2268 | stride: 2 2269 | weight_filler { 2270 | type: "xavier" 2271 | std: 0.01 2272 | } 2273 | bias_filler { 2274 | type: "constant" 2275 | value: 0.2 2276 | } 2277 | } 2278 | } 2279 | layer { 2280 | name: "reduction_a_3x3_bn" 2281 | type: "BatchNorm" 2282 | bottom: "reduction_a_3x3" 2283 | top: "reduction_a_3x3" 2284 | param { 2285 | lr_mult: 0.0 2286 | decay_mult: 0.0 2287 | } 2288 | param { 2289 | lr_mult: 0.0 2290 | decay_mult: 0.0 2291 | } 2292 | param { 2293 | lr_mult: 0.0 2294 | decay_mult: 0.0 2295 | } 2296 | batch_norm_param { 2297 | use_global_stats: true 2298 | moving_average_fraction: 0.95 2299 | } 2300 | } 2301 | layer { 2302 | name: "reduction_a_3x3_scale" 2303 | type: "Scale" 2304 | bottom: "reduction_a_3x3" 2305 | top: "reduction_a_3x3" 2306 | scale_param { 2307 | bias_term: true 2308 | } 2309 | } 2310 | layer { 2311 | name: "reduction_a_3x3_relu" 2312 | type: "PReLU" 2313 | bottom: "reduction_a_3x3" 2314 | top: "reduction_a_3x3" 2315 | } 2316 | layer { 2317 | name: "reduction_a_3x3_2_reduce" 2318 | type: "Convolution" 2319 | bottom: "inception_resnet_v2_a3_residual_eltwise" 2320 | top: "reduction_a_3x3_2_reduce" 2321 | param { 2322 | lr_mult: 1 2323 | decay_mult: 1 2324 | } 2325 | param { 2326 | lr_mult: 2 2327 | decay_mult: 0 2328 | } 2329 | convolution_param { 2330 | num_output: 256 2331 | pad: 0 2332 | kernel_size: 1 2333 | stride: 1 2334 | weight_filler { 2335 | type: "xavier" 2336 | std: 0.01 2337 | } 2338 | bias_filler { 2339 | type: "constant" 2340 | value: 0.2 2341 | } 2342 | } 2343 | } 2344 | layer { 2345 | name: "reduction_a_3x3_2_reduce_bn" 2346 | type: "BatchNorm" 2347 | bottom: "reduction_a_3x3_2_reduce" 2348 | top: "reduction_a_3x3_2_reduce" 2349 | param { 2350 | lr_mult: 0.0 2351 | decay_mult: 0.0 2352 | } 2353 | param { 2354 | lr_mult: 0.0 2355 | decay_mult: 0.0 2356 | } 2357 | param { 2358 | lr_mult: 0.0 2359 | decay_mult: 0.0 2360 | } 2361 | batch_norm_param { 2362 | use_global_stats: true 2363 | moving_average_fraction: 0.95 2364 | } 2365 | } 2366 | layer { 2367 | name: "reduction_a_3x3_2_reduce_scale" 2368 | type: "Scale" 2369 | bottom: "reduction_a_3x3_2_reduce" 2370 | top: "reduction_a_3x3_2_reduce" 2371 | scale_param { 2372 | bias_term: true 2373 | } 2374 | } 2375 | layer { 2376 | name: "reduction_a_3x3_2_reduce_relu" 2377 | type: "PReLU" 2378 | bottom: "reduction_a_3x3_2_reduce" 2379 | top: "reduction_a_3x3_2_reduce" 2380 | } 2381 | layer { 2382 | name: "reduction_a_3x3_2" 2383 | type: "Convolution" 2384 | bottom: "reduction_a_3x3_2_reduce" 2385 | top: "reduction_a_3x3_2" 2386 | param { 2387 | lr_mult: 1 2388 | decay_mult: 1 2389 | } 2390 | param { 2391 | lr_mult: 2 2392 | decay_mult: 0 2393 | } 2394 | convolution_param { 2395 | num_output: 256 2396 | pad: 1 2397 | kernel_size: 3 2398 | stride: 1 2399 | weight_filler { 2400 | type: "xavier" 2401 | std: 0.01 2402 | } 2403 | bias_filler { 2404 | type: "constant" 2405 | value: 0.2 2406 | } 2407 | } 2408 | } 2409 | layer { 2410 | name: "reduction_a_3x3_2_bn" 2411 | type: "BatchNorm" 2412 | bottom: "reduction_a_3x3_2" 2413 | top: "reduction_a_3x3_2" 2414 | param { 2415 | lr_mult: 0.0 2416 | decay_mult: 0.0 2417 | } 2418 | param { 2419 | lr_mult: 0.0 2420 | decay_mult: 0.0 2421 | } 2422 | param { 2423 | lr_mult: 0.0 2424 | decay_mult: 0.0 2425 | } 2426 | batch_norm_param { 2427 | use_global_stats: true 2428 | moving_average_fraction: 0.95 2429 | } 2430 | } 2431 | layer { 2432 | name: "reduction_a_3x3_2_scale" 2433 | type: "Scale" 2434 | bottom: "reduction_a_3x3_2" 2435 | top: "reduction_a_3x3_2" 2436 | scale_param { 2437 | bias_term: true 2438 | } 2439 | } 2440 | layer { 2441 | name: "reduction_a_3x3_2_relu" 2442 | type: "PReLU" 2443 | bottom: "reduction_a_3x3_2" 2444 | top: "reduction_a_3x3_2" 2445 | } 2446 | layer { 2447 | name: "reduction_a_3x3_3" 2448 | type: "Convolution" 2449 | bottom: "reduction_a_3x3_2" 2450 | top: "reduction_a_3x3_3" 2451 | param { 2452 | lr_mult: 1 2453 | decay_mult: 1 2454 | } 2455 | param { 2456 | lr_mult: 2 2457 | decay_mult: 0 2458 | } 2459 | convolution_param { 2460 | num_output: 384 2461 | pad: 1 2462 | kernel_size: 3 2463 | stride: 2 2464 | weight_filler { 2465 | type: "xavier" 2466 | std: 0.01 2467 | } 2468 | bias_filler { 2469 | type: "constant" 2470 | value: 0.2 2471 | } 2472 | } 2473 | } 2474 | layer { 2475 | name: "reduction_a_3x3_3_bn" 2476 | type: "BatchNorm" 2477 | bottom: "reduction_a_3x3_3" 2478 | top: "reduction_a_3x3_3" 2479 | param { 2480 | lr_mult: 0.0 2481 | decay_mult: 0.0 2482 | } 2483 | param { 2484 | lr_mult: 0.0 2485 | decay_mult: 0.0 2486 | } 2487 | param { 2488 | lr_mult: 0.0 2489 | decay_mult: 0.0 2490 | } 2491 | batch_norm_param { 2492 | use_global_stats: true 2493 | moving_average_fraction: 0.95 2494 | } 2495 | } 2496 | layer { 2497 | name: "reduction_a_3x3_3_scale" 2498 | type: "Scale" 2499 | bottom: "reduction_a_3x3_3" 2500 | top: "reduction_a_3x3_3" 2501 | scale_param { 2502 | bias_term: true 2503 | } 2504 | } 2505 | layer { 2506 | name: "reduction_a_3x3_3_relu" 2507 | type: "PReLU" 2508 | bottom: "reduction_a_3x3_3" 2509 | top: "reduction_a_3x3_3" 2510 | } 2511 | layer { 2512 | name: "reduction_a_pool" 2513 | type: "Pooling" 2514 | bottom: "inception_resnet_v2_a3_residual_eltwise" 2515 | top: "reduction_a_pool" 2516 | pooling_param { 2517 | pool: MAX 2518 | kernel_size: 3 2519 | stride: 2 2520 | } 2521 | } 2522 | layer { 2523 | name: "reduction_a_concat" 2524 | type: "Concat" 2525 | bottom: "reduction_a_3x3" 2526 | bottom: "reduction_a_3x3_3" 2527 | bottom: "reduction_a_pool" 2528 | top: "reduction_a_concat" 2529 | } 2530 | layer { 2531 | name: "inception_resnet_v2_b1_1x1" 2532 | type: "Convolution" 2533 | bottom: "reduction_a_concat" 2534 | top: "inception_resnet_v2_b1_1x1" 2535 | param { 2536 | lr_mult: 1 2537 | decay_mult: 1 2538 | } 2539 | param { 2540 | lr_mult: 2 2541 | decay_mult: 0 2542 | } 2543 | convolution_param { 2544 | num_output: 192 2545 | pad: 0 2546 | kernel_size: 1 2547 | stride: 1 2548 | weight_filler { 2549 | type: "xavier" 2550 | std: 0.01 2551 | } 2552 | bias_filler { 2553 | type: "constant" 2554 | value: 0.2 2555 | } 2556 | } 2557 | } 2558 | layer { 2559 | name: "inception_resnet_v2_b1_1x1_bn" 2560 | type: "BatchNorm" 2561 | bottom: "inception_resnet_v2_b1_1x1" 2562 | top: "inception_resnet_v2_b1_1x1" 2563 | param { 2564 | lr_mult: 0.0 2565 | decay_mult: 0.0 2566 | } 2567 | param { 2568 | lr_mult: 0.0 2569 | decay_mult: 0.0 2570 | } 2571 | param { 2572 | lr_mult: 0.0 2573 | decay_mult: 0.0 2574 | } 2575 | batch_norm_param { 2576 | use_global_stats: true 2577 | moving_average_fraction: 0.95 2578 | } 2579 | } 2580 | layer { 2581 | name: "inception_resnet_v2_b1_1x1_scale" 2582 | type: "Scale" 2583 | bottom: "inception_resnet_v2_b1_1x1" 2584 | top: "inception_resnet_v2_b1_1x1" 2585 | scale_param { 2586 | bias_term: true 2587 | } 2588 | } 2589 | layer { 2590 | name: "inception_resnet_v2_b1_1x1_relu" 2591 | type: "PReLU" 2592 | bottom: "inception_resnet_v2_b1_1x1" 2593 | top: "inception_resnet_v2_b1_1x1" 2594 | } 2595 | layer { 2596 | name: "inception_resnet_v2_b1_1x7_reduce" 2597 | type: "Convolution" 2598 | bottom: "reduction_a_concat" 2599 | top: "inception_resnet_v2_b1_1x7_reduce" 2600 | param { 2601 | lr_mult: 1 2602 | decay_mult: 1 2603 | } 2604 | param { 2605 | lr_mult: 2 2606 | decay_mult: 0 2607 | } 2608 | convolution_param { 2609 | num_output: 128 2610 | pad: 0 2611 | kernel_size: 1 2612 | stride: 1 2613 | weight_filler { 2614 | type: "xavier" 2615 | std: 0.01 2616 | } 2617 | bias_filler { 2618 | type: "constant" 2619 | value: 0.2 2620 | } 2621 | } 2622 | } 2623 | layer { 2624 | name: "inception_resnet_v2_b1_1x7_reduce_bn" 2625 | type: "BatchNorm" 2626 | bottom: "inception_resnet_v2_b1_1x7_reduce" 2627 | top: "inception_resnet_v2_b1_1x7_reduce" 2628 | param { 2629 | lr_mult: 0.0 2630 | decay_mult: 0.0 2631 | } 2632 | param { 2633 | lr_mult: 0.0 2634 | decay_mult: 0.0 2635 | } 2636 | param { 2637 | lr_mult: 0.0 2638 | decay_mult: 0.0 2639 | } 2640 | batch_norm_param { 2641 | use_global_stats: true 2642 | moving_average_fraction: 0.95 2643 | } 2644 | } 2645 | layer { 2646 | name: "inception_resnet_v2_b1_1x7_reduce_scale" 2647 | type: "Scale" 2648 | bottom: "inception_resnet_v2_b1_1x7_reduce" 2649 | top: "inception_resnet_v2_b1_1x7_reduce" 2650 | scale_param { 2651 | bias_term: true 2652 | } 2653 | } 2654 | layer { 2655 | name: "inception_resnet_v2_b1_1x7_reduce_relu" 2656 | type: "PReLU" 2657 | bottom: "inception_resnet_v2_b1_1x7_reduce" 2658 | top: "inception_resnet_v2_b1_1x7_reduce" 2659 | } 2660 | layer { 2661 | name: "inception_resnet_v2_b1_1x7" 2662 | type: "Convolution" 2663 | bottom: "inception_resnet_v2_b1_1x7_reduce" 2664 | top: "inception_resnet_v2_b1_1x7" 2665 | param { 2666 | lr_mult: 1 2667 | decay_mult: 1 2668 | } 2669 | param { 2670 | lr_mult: 2 2671 | decay_mult: 0 2672 | } 2673 | convolution_param { 2674 | num_output: 160 2675 | stride: 1 2676 | weight_filler { 2677 | type: "xavier" 2678 | std: 0.01 2679 | } 2680 | bias_filler { 2681 | type: "constant" 2682 | value: 0.2 2683 | } 2684 | pad_h: 0 2685 | pad_w: 3 2686 | kernel_h: 1 2687 | kernel_w: 7 2688 | } 2689 | } 2690 | layer { 2691 | name: "inception_resnet_v2_b1_1x7_bn" 2692 | type: "BatchNorm" 2693 | bottom: "inception_resnet_v2_b1_1x7" 2694 | top: "inception_resnet_v2_b1_1x7" 2695 | param { 2696 | lr_mult: 0.0 2697 | decay_mult: 0.0 2698 | } 2699 | param { 2700 | lr_mult: 0.0 2701 | decay_mult: 0.0 2702 | } 2703 | param { 2704 | lr_mult: 0.0 2705 | decay_mult: 0.0 2706 | } 2707 | batch_norm_param { 2708 | use_global_stats: true 2709 | moving_average_fraction: 0.95 2710 | } 2711 | } 2712 | layer { 2713 | name: "inception_resnet_v2_b1_1x7_scale" 2714 | type: "Scale" 2715 | bottom: "inception_resnet_v2_b1_1x7" 2716 | top: "inception_resnet_v2_b1_1x7" 2717 | scale_param { 2718 | bias_term: true 2719 | } 2720 | } 2721 | layer { 2722 | name: "inception_resnet_v2_b1_1x7_relu" 2723 | type: "PReLU" 2724 | bottom: "inception_resnet_v2_b1_1x7" 2725 | top: "inception_resnet_v2_b1_1x7" 2726 | } 2727 | layer { 2728 | name: "inception_resnet_v2_b1_7x1" 2729 | type: "Convolution" 2730 | bottom: "inception_resnet_v2_b1_1x7" 2731 | top: "inception_resnet_v2_b1_7x1" 2732 | param { 2733 | lr_mult: 1 2734 | decay_mult: 1 2735 | } 2736 | param { 2737 | lr_mult: 2 2738 | decay_mult: 0 2739 | } 2740 | convolution_param { 2741 | num_output: 192 2742 | stride: 1 2743 | weight_filler { 2744 | type: "xavier" 2745 | std: 0.01 2746 | } 2747 | bias_filler { 2748 | type: "constant" 2749 | value: 0.2 2750 | } 2751 | pad_h: 3 2752 | pad_w: 0 2753 | kernel_h: 7 2754 | kernel_w: 1 2755 | } 2756 | } 2757 | layer { 2758 | name: "inception_resnet_v2_b1_7x1_bn" 2759 | type: "BatchNorm" 2760 | bottom: "inception_resnet_v2_b1_7x1" 2761 | top: "inception_resnet_v2_b1_7x1" 2762 | param { 2763 | lr_mult: 0.0 2764 | decay_mult: 0.0 2765 | } 2766 | param { 2767 | lr_mult: 0.0 2768 | decay_mult: 0.0 2769 | } 2770 | param { 2771 | lr_mult: 0.0 2772 | decay_mult: 0.0 2773 | } 2774 | batch_norm_param { 2775 | use_global_stats: true 2776 | moving_average_fraction: 0.95 2777 | } 2778 | } 2779 | layer { 2780 | name: "inception_resnet_v2_b1_7x1_scale" 2781 | type: "Scale" 2782 | bottom: "inception_resnet_v2_b1_7x1" 2783 | top: "inception_resnet_v2_b1_7x1" 2784 | scale_param { 2785 | bias_term: true 2786 | } 2787 | } 2788 | layer { 2789 | name: "inception_resnet_v2_b1_7x1_relu" 2790 | type: "PReLU" 2791 | bottom: "inception_resnet_v2_b1_7x1" 2792 | top: "inception_resnet_v2_b1_7x1" 2793 | } 2794 | layer { 2795 | name: "inception_resnet_v2_b1_concat" 2796 | type: "Concat" 2797 | bottom: "inception_resnet_v2_b1_1x1" 2798 | bottom: "inception_resnet_v2_b1_7x1" 2799 | top: "inception_resnet_v2_b1_concat" 2800 | } 2801 | layer { 2802 | name: "inception_resnet_v2_b1_up" 2803 | type: "Convolution" 2804 | bottom: "inception_resnet_v2_b1_concat" 2805 | top: "inception_resnet_v2_b1_up" 2806 | param { 2807 | lr_mult: 1 2808 | decay_mult: 1 2809 | } 2810 | param { 2811 | lr_mult: 2 2812 | decay_mult: 0 2813 | } 2814 | convolution_param { 2815 | num_output: 1088 2816 | pad: 0 2817 | kernel_size: 1 2818 | stride: 1 2819 | weight_filler { 2820 | type: "xavier" 2821 | std: 0.01 2822 | } 2823 | bias_filler { 2824 | type: "constant" 2825 | value: 0.2 2826 | } 2827 | } 2828 | } 2829 | layer { 2830 | name: "inception_resnet_v2_b1_up_bn" 2831 | type: "BatchNorm" 2832 | bottom: "inception_resnet_v2_b1_up" 2833 | top: "inception_resnet_v2_b1_up" 2834 | param { 2835 | lr_mult: 0.0 2836 | decay_mult: 0.0 2837 | } 2838 | param { 2839 | lr_mult: 0.0 2840 | decay_mult: 0.0 2841 | } 2842 | param { 2843 | lr_mult: 0.0 2844 | decay_mult: 0.0 2845 | } 2846 | batch_norm_param { 2847 | use_global_stats: true 2848 | moving_average_fraction: 0.95 2849 | } 2850 | } 2851 | layer { 2852 | name: "inception_resnet_v2_b1_up_scale" 2853 | type: "Scale" 2854 | bottom: "inception_resnet_v2_b1_up" 2855 | top: "inception_resnet_v2_b1_up" 2856 | scale_param { 2857 | bias_term: true 2858 | } 2859 | } 2860 | layer { 2861 | name: "inception_resnet_v2_b1_residual_eltwise" 2862 | type: "Eltwise" 2863 | bottom: "reduction_a_concat" 2864 | bottom: "inception_resnet_v2_b1_up" 2865 | top: "inception_resnet_v2_b1_residual_eltwise" 2866 | eltwise_param { 2867 | operation: SUM 2868 | } 2869 | } 2870 | layer { 2871 | name: "inception_resnet_v2_b1_residual_eltwise_relu" 2872 | type: "PReLU" 2873 | bottom: "inception_resnet_v2_b1_residual_eltwise" 2874 | top: "inception_resnet_v2_b1_residual_eltwise" 2875 | } 2876 | layer { 2877 | name: "inception_resnet_v2_b2_1x1" 2878 | type: "Convolution" 2879 | bottom: "inception_resnet_v2_b1_residual_eltwise" 2880 | top: "inception_resnet_v2_b2_1x1" 2881 | param { 2882 | lr_mult: 1 2883 | decay_mult: 1 2884 | } 2885 | param { 2886 | lr_mult: 2 2887 | decay_mult: 0 2888 | } 2889 | convolution_param { 2890 | num_output: 192 2891 | pad: 0 2892 | kernel_size: 1 2893 | stride: 1 2894 | weight_filler { 2895 | type: "xavier" 2896 | std: 0.01 2897 | } 2898 | bias_filler { 2899 | type: "constant" 2900 | value: 0.2 2901 | } 2902 | } 2903 | } 2904 | layer { 2905 | name: "inception_resnet_v2_b2_1x1_bn" 2906 | type: "BatchNorm" 2907 | bottom: "inception_resnet_v2_b2_1x1" 2908 | top: "inception_resnet_v2_b2_1x1" 2909 | param { 2910 | lr_mult: 0.0 2911 | decay_mult: 0.0 2912 | } 2913 | param { 2914 | lr_mult: 0.0 2915 | decay_mult: 0.0 2916 | } 2917 | param { 2918 | lr_mult: 0.0 2919 | decay_mult: 0.0 2920 | } 2921 | batch_norm_param { 2922 | use_global_stats: true 2923 | moving_average_fraction: 0.95 2924 | } 2925 | } 2926 | layer { 2927 | name: "inception_resnet_v2_b2_1x1_scale" 2928 | type: "Scale" 2929 | bottom: "inception_resnet_v2_b2_1x1" 2930 | top: "inception_resnet_v2_b2_1x1" 2931 | scale_param { 2932 | bias_term: true 2933 | } 2934 | } 2935 | layer { 2936 | name: "inception_resnet_v2_b2_1x1_relu" 2937 | type: "PReLU" 2938 | bottom: "inception_resnet_v2_b2_1x1" 2939 | top: "inception_resnet_v2_b2_1x1" 2940 | } 2941 | layer { 2942 | name: "inception_resnet_v2_b2_1x7_reduce" 2943 | type: "Convolution" 2944 | bottom: "inception_resnet_v2_b1_residual_eltwise" 2945 | top: "inception_resnet_v2_b2_1x7_reduce" 2946 | param { 2947 | lr_mult: 1 2948 | decay_mult: 1 2949 | } 2950 | param { 2951 | lr_mult: 2 2952 | decay_mult: 0 2953 | } 2954 | convolution_param { 2955 | num_output: 128 2956 | pad: 0 2957 | kernel_size: 1 2958 | stride: 1 2959 | weight_filler { 2960 | type: "xavier" 2961 | std: 0.01 2962 | } 2963 | bias_filler { 2964 | type: "constant" 2965 | value: 0.2 2966 | } 2967 | } 2968 | } 2969 | layer { 2970 | name: "inception_resnet_v2_b2_1x7_reduce_bn" 2971 | type: "BatchNorm" 2972 | bottom: "inception_resnet_v2_b2_1x7_reduce" 2973 | top: "inception_resnet_v2_b2_1x7_reduce" 2974 | param { 2975 | lr_mult: 0.0 2976 | decay_mult: 0.0 2977 | } 2978 | param { 2979 | lr_mult: 0.0 2980 | decay_mult: 0.0 2981 | } 2982 | param { 2983 | lr_mult: 0.0 2984 | decay_mult: 0.0 2985 | } 2986 | batch_norm_param { 2987 | use_global_stats: true 2988 | moving_average_fraction: 0.95 2989 | } 2990 | } 2991 | layer { 2992 | name: "inception_resnet_v2_b2_1x7_reduce_scale" 2993 | type: "Scale" 2994 | bottom: "inception_resnet_v2_b2_1x7_reduce" 2995 | top: "inception_resnet_v2_b2_1x7_reduce" 2996 | scale_param { 2997 | bias_term: true 2998 | } 2999 | } 3000 | layer { 3001 | name: "inception_resnet_v2_b2_1x7_reduce_relu" 3002 | type: "PReLU" 3003 | bottom: "inception_resnet_v2_b2_1x7_reduce" 3004 | top: "inception_resnet_v2_b2_1x7_reduce" 3005 | } 3006 | layer { 3007 | name: "inception_resnet_v2_b2_1x7" 3008 | type: "Convolution" 3009 | bottom: "inception_resnet_v2_b2_1x7_reduce" 3010 | top: "inception_resnet_v2_b2_1x7" 3011 | param { 3012 | lr_mult: 1 3013 | decay_mult: 1 3014 | } 3015 | param { 3016 | lr_mult: 2 3017 | decay_mult: 0 3018 | } 3019 | convolution_param { 3020 | num_output: 160 3021 | stride: 1 3022 | weight_filler { 3023 | type: "xavier" 3024 | std: 0.01 3025 | } 3026 | bias_filler { 3027 | type: "constant" 3028 | value: 0.2 3029 | } 3030 | pad_h: 0 3031 | pad_w: 3 3032 | kernel_h: 1 3033 | kernel_w: 7 3034 | } 3035 | } 3036 | layer { 3037 | name: "inception_resnet_v2_b2_1x7_bn" 3038 | type: "BatchNorm" 3039 | bottom: "inception_resnet_v2_b2_1x7" 3040 | top: "inception_resnet_v2_b2_1x7" 3041 | param { 3042 | lr_mult: 0.0 3043 | decay_mult: 0.0 3044 | } 3045 | param { 3046 | lr_mult: 0.0 3047 | decay_mult: 0.0 3048 | } 3049 | param { 3050 | lr_mult: 0.0 3051 | decay_mult: 0.0 3052 | } 3053 | batch_norm_param { 3054 | use_global_stats: true 3055 | moving_average_fraction: 0.95 3056 | } 3057 | } 3058 | layer { 3059 | name: "inception_resnet_v2_b2_1x7_scale" 3060 | type: "Scale" 3061 | bottom: "inception_resnet_v2_b2_1x7" 3062 | top: "inception_resnet_v2_b2_1x7" 3063 | scale_param { 3064 | bias_term: true 3065 | } 3066 | } 3067 | layer { 3068 | name: "inception_resnet_v2_b2_1x7_relu" 3069 | type: "PReLU" 3070 | bottom: "inception_resnet_v2_b2_1x7" 3071 | top: "inception_resnet_v2_b2_1x7" 3072 | } 3073 | layer { 3074 | name: "inception_resnet_v2_b2_7x1" 3075 | type: "Convolution" 3076 | bottom: "inception_resnet_v2_b2_1x7" 3077 | top: "inception_resnet_v2_b2_7x1" 3078 | param { 3079 | lr_mult: 1 3080 | decay_mult: 1 3081 | } 3082 | param { 3083 | lr_mult: 2 3084 | decay_mult: 0 3085 | } 3086 | convolution_param { 3087 | num_output: 192 3088 | stride: 1 3089 | weight_filler { 3090 | type: "xavier" 3091 | std: 0.01 3092 | } 3093 | bias_filler { 3094 | type: "constant" 3095 | value: 0.2 3096 | } 3097 | pad_h: 3 3098 | pad_w: 0 3099 | kernel_h: 7 3100 | kernel_w: 1 3101 | } 3102 | } 3103 | layer { 3104 | name: "inception_resnet_v2_b2_7x1_bn" 3105 | type: "BatchNorm" 3106 | bottom: "inception_resnet_v2_b2_7x1" 3107 | top: "inception_resnet_v2_b2_7x1" 3108 | param { 3109 | lr_mult: 0.0 3110 | decay_mult: 0.0 3111 | } 3112 | param { 3113 | lr_mult: 0.0 3114 | decay_mult: 0.0 3115 | } 3116 | param { 3117 | lr_mult: 0.0 3118 | decay_mult: 0.0 3119 | } 3120 | batch_norm_param { 3121 | use_global_stats: true 3122 | moving_average_fraction: 0.95 3123 | } 3124 | } 3125 | layer { 3126 | name: "inception_resnet_v2_b2_7x1_scale" 3127 | type: "Scale" 3128 | bottom: "inception_resnet_v2_b2_7x1" 3129 | top: "inception_resnet_v2_b2_7x1" 3130 | scale_param { 3131 | bias_term: true 3132 | } 3133 | } 3134 | layer { 3135 | name: "inception_resnet_v2_b2_7x1_relu" 3136 | type: "PReLU" 3137 | bottom: "inception_resnet_v2_b2_7x1" 3138 | top: "inception_resnet_v2_b2_7x1" 3139 | } 3140 | layer { 3141 | name: "inception_resnet_v2_b2_concat" 3142 | type: "Concat" 3143 | bottom: "inception_resnet_v2_b2_1x1" 3144 | bottom: "inception_resnet_v2_b2_7x1" 3145 | top: "inception_resnet_v2_b2_concat" 3146 | } 3147 | layer { 3148 | name: "inception_resnet_v2_b2_up" 3149 | type: "Convolution" 3150 | bottom: "inception_resnet_v2_b2_concat" 3151 | top: "inception_resnet_v2_b2_up" 3152 | param { 3153 | lr_mult: 1 3154 | decay_mult: 1 3155 | } 3156 | param { 3157 | lr_mult: 2 3158 | decay_mult: 0 3159 | } 3160 | convolution_param { 3161 | num_output: 1088 3162 | pad: 0 3163 | kernel_size: 1 3164 | stride: 1 3165 | weight_filler { 3166 | type: "xavier" 3167 | std: 0.01 3168 | } 3169 | bias_filler { 3170 | type: "constant" 3171 | value: 0.2 3172 | } 3173 | } 3174 | } 3175 | layer { 3176 | name: "inception_resnet_v2_b2_up_bn" 3177 | type: "BatchNorm" 3178 | bottom: "inception_resnet_v2_b2_up" 3179 | top: "inception_resnet_v2_b2_up" 3180 | param { 3181 | lr_mult: 0.0 3182 | decay_mult: 0.0 3183 | } 3184 | param { 3185 | lr_mult: 0.0 3186 | decay_mult: 0.0 3187 | } 3188 | param { 3189 | lr_mult: 0.0 3190 | decay_mult: 0.0 3191 | } 3192 | batch_norm_param { 3193 | use_global_stats: true 3194 | moving_average_fraction: 0.95 3195 | } 3196 | } 3197 | layer { 3198 | name: "inception_resnet_v2_b2_up_scale" 3199 | type: "Scale" 3200 | bottom: "inception_resnet_v2_b2_up" 3201 | top: "inception_resnet_v2_b2_up" 3202 | scale_param { 3203 | bias_term: true 3204 | } 3205 | } 3206 | layer { 3207 | name: "inception_resnet_v2_b2_residual_eltwise" 3208 | type: "Eltwise" 3209 | bottom: "inception_resnet_v2_b1_residual_eltwise" 3210 | bottom: "inception_resnet_v2_b2_up" 3211 | top: "inception_resnet_v2_b2_residual_eltwise" 3212 | eltwise_param { 3213 | operation: SUM 3214 | } 3215 | } 3216 | layer { 3217 | name: "inception_resnet_v2_b2_residual_eltwise_relu" 3218 | type: "PReLU" 3219 | bottom: "inception_resnet_v2_b2_residual_eltwise" 3220 | top: "inception_resnet_v2_b2_residual_eltwise" 3221 | } 3222 | layer { 3223 | name: "inception_resnet_v2_b3_1x1" 3224 | type: "Convolution" 3225 | bottom: "inception_resnet_v2_b2_residual_eltwise" 3226 | top: "inception_resnet_v2_b3_1x1" 3227 | param { 3228 | lr_mult: 1 3229 | decay_mult: 1 3230 | } 3231 | param { 3232 | lr_mult: 2 3233 | decay_mult: 0 3234 | } 3235 | convolution_param { 3236 | num_output: 192 3237 | pad: 0 3238 | kernel_size: 1 3239 | stride: 1 3240 | weight_filler { 3241 | type: "xavier" 3242 | std: 0.01 3243 | } 3244 | bias_filler { 3245 | type: "constant" 3246 | value: 0.2 3247 | } 3248 | } 3249 | } 3250 | layer { 3251 | name: "inception_resnet_v2_b3_1x1_bn" 3252 | type: "BatchNorm" 3253 | bottom: "inception_resnet_v2_b3_1x1" 3254 | top: "inception_resnet_v2_b3_1x1" 3255 | param { 3256 | lr_mult: 0.0 3257 | decay_mult: 0.0 3258 | } 3259 | param { 3260 | lr_mult: 0.0 3261 | decay_mult: 0.0 3262 | } 3263 | param { 3264 | lr_mult: 0.0 3265 | decay_mult: 0.0 3266 | } 3267 | batch_norm_param { 3268 | use_global_stats: true 3269 | moving_average_fraction: 0.95 3270 | } 3271 | } 3272 | layer { 3273 | name: "inception_resnet_v2_b3_1x1_scale" 3274 | type: "Scale" 3275 | bottom: "inception_resnet_v2_b3_1x1" 3276 | top: "inception_resnet_v2_b3_1x1" 3277 | scale_param { 3278 | bias_term: true 3279 | } 3280 | } 3281 | layer { 3282 | name: "inception_resnet_v2_b3_1x1_relu" 3283 | type: "PReLU" 3284 | bottom: "inception_resnet_v2_b3_1x1" 3285 | top: "inception_resnet_v2_b3_1x1" 3286 | } 3287 | layer { 3288 | name: "inception_resnet_v2_b3_1x7_reduce" 3289 | type: "Convolution" 3290 | bottom: "inception_resnet_v2_b2_residual_eltwise" 3291 | top: "inception_resnet_v2_b3_1x7_reduce" 3292 | param { 3293 | lr_mult: 1 3294 | decay_mult: 1 3295 | } 3296 | param { 3297 | lr_mult: 2 3298 | decay_mult: 0 3299 | } 3300 | convolution_param { 3301 | num_output: 128 3302 | pad: 0 3303 | kernel_size: 1 3304 | stride: 1 3305 | weight_filler { 3306 | type: "xavier" 3307 | std: 0.01 3308 | } 3309 | bias_filler { 3310 | type: "constant" 3311 | value: 0.2 3312 | } 3313 | } 3314 | } 3315 | layer { 3316 | name: "inception_resnet_v2_b3_1x7_reduce_bn" 3317 | type: "BatchNorm" 3318 | bottom: "inception_resnet_v2_b3_1x7_reduce" 3319 | top: "inception_resnet_v2_b3_1x7_reduce" 3320 | param { 3321 | lr_mult: 0.0 3322 | decay_mult: 0.0 3323 | } 3324 | param { 3325 | lr_mult: 0.0 3326 | decay_mult: 0.0 3327 | } 3328 | param { 3329 | lr_mult: 0.0 3330 | decay_mult: 0.0 3331 | } 3332 | batch_norm_param { 3333 | use_global_stats: true 3334 | moving_average_fraction: 0.95 3335 | } 3336 | } 3337 | layer { 3338 | name: "inception_resnet_v2_b3_1x7_reduce_scale" 3339 | type: "Scale" 3340 | bottom: "inception_resnet_v2_b3_1x7_reduce" 3341 | top: "inception_resnet_v2_b3_1x7_reduce" 3342 | scale_param { 3343 | bias_term: true 3344 | } 3345 | } 3346 | layer { 3347 | name: "inception_resnet_v2_b3_1x7_reduce_relu" 3348 | type: "PReLU" 3349 | bottom: "inception_resnet_v2_b3_1x7_reduce" 3350 | top: "inception_resnet_v2_b3_1x7_reduce" 3351 | } 3352 | layer { 3353 | name: "inception_resnet_v2_b3_1x7" 3354 | type: "Convolution" 3355 | bottom: "inception_resnet_v2_b3_1x7_reduce" 3356 | top: "inception_resnet_v2_b3_1x7" 3357 | param { 3358 | lr_mult: 1 3359 | decay_mult: 1 3360 | } 3361 | param { 3362 | lr_mult: 2 3363 | decay_mult: 0 3364 | } 3365 | convolution_param { 3366 | num_output: 160 3367 | stride: 1 3368 | weight_filler { 3369 | type: "xavier" 3370 | std: 0.01 3371 | } 3372 | bias_filler { 3373 | type: "constant" 3374 | value: 0.2 3375 | } 3376 | pad_h: 0 3377 | pad_w: 3 3378 | kernel_h: 1 3379 | kernel_w: 7 3380 | } 3381 | } 3382 | layer { 3383 | name: "inception_resnet_v2_b3_1x7_bn" 3384 | type: "BatchNorm" 3385 | bottom: "inception_resnet_v2_b3_1x7" 3386 | top: "inception_resnet_v2_b3_1x7" 3387 | param { 3388 | lr_mult: 0.0 3389 | decay_mult: 0.0 3390 | } 3391 | param { 3392 | lr_mult: 0.0 3393 | decay_mult: 0.0 3394 | } 3395 | param { 3396 | lr_mult: 0.0 3397 | decay_mult: 0.0 3398 | } 3399 | batch_norm_param { 3400 | use_global_stats: true 3401 | moving_average_fraction: 0.95 3402 | } 3403 | } 3404 | layer { 3405 | name: "inception_resnet_v2_b3_1x7_scale" 3406 | type: "Scale" 3407 | bottom: "inception_resnet_v2_b3_1x7" 3408 | top: "inception_resnet_v2_b3_1x7" 3409 | scale_param { 3410 | bias_term: true 3411 | } 3412 | } 3413 | layer { 3414 | name: "inception_resnet_v2_b3_1x7_relu" 3415 | type: "PReLU" 3416 | bottom: "inception_resnet_v2_b3_1x7" 3417 | top: "inception_resnet_v2_b3_1x7" 3418 | } 3419 | layer { 3420 | name: "inception_resnet_v2_b3_7x1" 3421 | type: "Convolution" 3422 | bottom: "inception_resnet_v2_b3_1x7" 3423 | top: "inception_resnet_v2_b3_7x1" 3424 | param { 3425 | lr_mult: 1 3426 | decay_mult: 1 3427 | } 3428 | param { 3429 | lr_mult: 2 3430 | decay_mult: 0 3431 | } 3432 | convolution_param { 3433 | num_output: 192 3434 | stride: 1 3435 | weight_filler { 3436 | type: "xavier" 3437 | std: 0.01 3438 | } 3439 | bias_filler { 3440 | type: "constant" 3441 | value: 0.2 3442 | } 3443 | pad_h: 3 3444 | pad_w: 0 3445 | kernel_h: 7 3446 | kernel_w: 1 3447 | } 3448 | } 3449 | layer { 3450 | name: "inception_resnet_v2_b3_7x1_bn" 3451 | type: "BatchNorm" 3452 | bottom: "inception_resnet_v2_b3_7x1" 3453 | top: "inception_resnet_v2_b3_7x1" 3454 | param { 3455 | lr_mult: 0.0 3456 | decay_mult: 0.0 3457 | } 3458 | param { 3459 | lr_mult: 0.0 3460 | decay_mult: 0.0 3461 | } 3462 | param { 3463 | lr_mult: 0.0 3464 | decay_mult: 0.0 3465 | } 3466 | batch_norm_param { 3467 | use_global_stats: true 3468 | moving_average_fraction: 0.95 3469 | } 3470 | } 3471 | layer { 3472 | name: "inception_resnet_v2_b3_7x1_scale" 3473 | type: "Scale" 3474 | bottom: "inception_resnet_v2_b3_7x1" 3475 | top: "inception_resnet_v2_b3_7x1" 3476 | scale_param { 3477 | bias_term: true 3478 | } 3479 | } 3480 | layer { 3481 | name: "inception_resnet_v2_b3_7x1_relu" 3482 | type: "PReLU" 3483 | bottom: "inception_resnet_v2_b3_7x1" 3484 | top: "inception_resnet_v2_b3_7x1" 3485 | } 3486 | layer { 3487 | name: "inception_resnet_v2_b3_concat" 3488 | type: "Concat" 3489 | bottom: "inception_resnet_v2_b3_1x1" 3490 | bottom: "inception_resnet_v2_b3_7x1" 3491 | top: "inception_resnet_v2_b3_concat" 3492 | } 3493 | layer { 3494 | name: "inception_resnet_v2_b3_up" 3495 | type: "Convolution" 3496 | bottom: "inception_resnet_v2_b3_concat" 3497 | top: "inception_resnet_v2_b3_up" 3498 | param { 3499 | lr_mult: 1 3500 | decay_mult: 1 3501 | } 3502 | param { 3503 | lr_mult: 2 3504 | decay_mult: 0 3505 | } 3506 | convolution_param { 3507 | num_output: 1088 3508 | pad: 0 3509 | kernel_size: 1 3510 | stride: 1 3511 | weight_filler { 3512 | type: "xavier" 3513 | std: 0.01 3514 | } 3515 | bias_filler { 3516 | type: "constant" 3517 | value: 0.2 3518 | } 3519 | } 3520 | } 3521 | layer { 3522 | name: "inception_resnet_v2_b3_up_bn" 3523 | type: "BatchNorm" 3524 | bottom: "inception_resnet_v2_b3_up" 3525 | top: "inception_resnet_v2_b3_up" 3526 | param { 3527 | lr_mult: 0.0 3528 | decay_mult: 0.0 3529 | } 3530 | param { 3531 | lr_mult: 0.0 3532 | decay_mult: 0.0 3533 | } 3534 | param { 3535 | lr_mult: 0.0 3536 | decay_mult: 0.0 3537 | } 3538 | batch_norm_param { 3539 | use_global_stats: true 3540 | moving_average_fraction: 0.95 3541 | } 3542 | } 3543 | layer { 3544 | name: "inception_resnet_v2_b3_up_scale" 3545 | type: "Scale" 3546 | bottom: "inception_resnet_v2_b3_up" 3547 | top: "inception_resnet_v2_b3_up" 3548 | scale_param { 3549 | bias_term: true 3550 | } 3551 | } 3552 | layer { 3553 | name: "inception_resnet_v2_b3_residual_eltwise" 3554 | type: "Eltwise" 3555 | bottom: "inception_resnet_v2_b2_residual_eltwise" 3556 | bottom: "inception_resnet_v2_b3_up" 3557 | top: "inception_resnet_v2_b3_residual_eltwise" 3558 | eltwise_param { 3559 | operation: SUM 3560 | } 3561 | } 3562 | layer { 3563 | name: "inception_resnet_v2_b3_residual_eltwise_relu" 3564 | type: "PReLU" 3565 | bottom: "inception_resnet_v2_b3_residual_eltwise" 3566 | top: "inception_resnet_v2_b3_residual_eltwise" 3567 | } 3568 | layer { 3569 | name: "inception_resnet_v2_b4_1x1" 3570 | type: "Convolution" 3571 | bottom: "inception_resnet_v2_b3_residual_eltwise" 3572 | top: "inception_resnet_v2_b4_1x1" 3573 | param { 3574 | lr_mult: 1 3575 | decay_mult: 1 3576 | } 3577 | param { 3578 | lr_mult: 2 3579 | decay_mult: 0 3580 | } 3581 | convolution_param { 3582 | num_output: 192 3583 | pad: 0 3584 | kernel_size: 1 3585 | stride: 1 3586 | weight_filler { 3587 | type: "xavier" 3588 | std: 0.01 3589 | } 3590 | bias_filler { 3591 | type: "constant" 3592 | value: 0.2 3593 | } 3594 | } 3595 | } 3596 | layer { 3597 | name: "inception_resnet_v2_b4_1x1_bn" 3598 | type: "BatchNorm" 3599 | bottom: "inception_resnet_v2_b4_1x1" 3600 | top: "inception_resnet_v2_b4_1x1" 3601 | param { 3602 | lr_mult: 0.0 3603 | decay_mult: 0.0 3604 | } 3605 | param { 3606 | lr_mult: 0.0 3607 | decay_mult: 0.0 3608 | } 3609 | param { 3610 | lr_mult: 0.0 3611 | decay_mult: 0.0 3612 | } 3613 | batch_norm_param { 3614 | use_global_stats: true 3615 | moving_average_fraction: 0.95 3616 | } 3617 | } 3618 | layer { 3619 | name: "inception_resnet_v2_b4_1x1_scale" 3620 | type: "Scale" 3621 | bottom: "inception_resnet_v2_b4_1x1" 3622 | top: "inception_resnet_v2_b4_1x1" 3623 | scale_param { 3624 | bias_term: true 3625 | } 3626 | } 3627 | layer { 3628 | name: "inception_resnet_v2_b4_1x1_relu" 3629 | type: "PReLU" 3630 | bottom: "inception_resnet_v2_b4_1x1" 3631 | top: "inception_resnet_v2_b4_1x1" 3632 | } 3633 | layer { 3634 | name: "inception_resnet_v2_b4_1x7_reduce" 3635 | type: "Convolution" 3636 | bottom: "inception_resnet_v2_b3_residual_eltwise" 3637 | top: "inception_resnet_v2_b4_1x7_reduce" 3638 | param { 3639 | lr_mult: 1 3640 | decay_mult: 1 3641 | } 3642 | param { 3643 | lr_mult: 2 3644 | decay_mult: 0 3645 | } 3646 | convolution_param { 3647 | num_output: 128 3648 | pad: 0 3649 | kernel_size: 1 3650 | stride: 1 3651 | weight_filler { 3652 | type: "xavier" 3653 | std: 0.01 3654 | } 3655 | bias_filler { 3656 | type: "constant" 3657 | value: 0.2 3658 | } 3659 | } 3660 | } 3661 | layer { 3662 | name: "inception_resnet_v2_b4_1x7_reduce_bn" 3663 | type: "BatchNorm" 3664 | bottom: "inception_resnet_v2_b4_1x7_reduce" 3665 | top: "inception_resnet_v2_b4_1x7_reduce" 3666 | param { 3667 | lr_mult: 0.0 3668 | decay_mult: 0.0 3669 | } 3670 | param { 3671 | lr_mult: 0.0 3672 | decay_mult: 0.0 3673 | } 3674 | param { 3675 | lr_mult: 0.0 3676 | decay_mult: 0.0 3677 | } 3678 | batch_norm_param { 3679 | use_global_stats: true 3680 | moving_average_fraction: 0.95 3681 | } 3682 | } 3683 | layer { 3684 | name: "inception_resnet_v2_b4_1x7_reduce_scale" 3685 | type: "Scale" 3686 | bottom: "inception_resnet_v2_b4_1x7_reduce" 3687 | top: "inception_resnet_v2_b4_1x7_reduce" 3688 | scale_param { 3689 | bias_term: true 3690 | } 3691 | } 3692 | layer { 3693 | name: "inception_resnet_v2_b4_1x7_reduce_relu" 3694 | type: "PReLU" 3695 | bottom: "inception_resnet_v2_b4_1x7_reduce" 3696 | top: "inception_resnet_v2_b4_1x7_reduce" 3697 | } 3698 | layer { 3699 | name: "inception_resnet_v2_b4_1x7" 3700 | type: "Convolution" 3701 | bottom: "inception_resnet_v2_b4_1x7_reduce" 3702 | top: "inception_resnet_v2_b4_1x7" 3703 | param { 3704 | lr_mult: 1 3705 | decay_mult: 1 3706 | } 3707 | param { 3708 | lr_mult: 2 3709 | decay_mult: 0 3710 | } 3711 | convolution_param { 3712 | num_output: 160 3713 | stride: 1 3714 | weight_filler { 3715 | type: "xavier" 3716 | std: 0.01 3717 | } 3718 | bias_filler { 3719 | type: "constant" 3720 | value: 0.2 3721 | } 3722 | pad_h: 0 3723 | pad_w: 3 3724 | kernel_h: 1 3725 | kernel_w: 7 3726 | } 3727 | } 3728 | layer { 3729 | name: "inception_resnet_v2_b4_1x7_bn" 3730 | type: "BatchNorm" 3731 | bottom: "inception_resnet_v2_b4_1x7" 3732 | top: "inception_resnet_v2_b4_1x7" 3733 | param { 3734 | lr_mult: 0.0 3735 | decay_mult: 0.0 3736 | } 3737 | param { 3738 | lr_mult: 0.0 3739 | decay_mult: 0.0 3740 | } 3741 | param { 3742 | lr_mult: 0.0 3743 | decay_mult: 0.0 3744 | } 3745 | batch_norm_param { 3746 | use_global_stats: true 3747 | moving_average_fraction: 0.95 3748 | } 3749 | } 3750 | layer { 3751 | name: "inception_resnet_v2_b4_1x7_scale" 3752 | type: "Scale" 3753 | bottom: "inception_resnet_v2_b4_1x7" 3754 | top: "inception_resnet_v2_b4_1x7" 3755 | scale_param { 3756 | bias_term: true 3757 | } 3758 | } 3759 | layer { 3760 | name: "inception_resnet_v2_b4_1x7_relu" 3761 | type: "PReLU" 3762 | bottom: "inception_resnet_v2_b4_1x7" 3763 | top: "inception_resnet_v2_b4_1x7" 3764 | } 3765 | layer { 3766 | name: "inception_resnet_v2_b4_7x1" 3767 | type: "Convolution" 3768 | bottom: "inception_resnet_v2_b4_1x7" 3769 | top: "inception_resnet_v2_b4_7x1" 3770 | param { 3771 | lr_mult: 1 3772 | decay_mult: 1 3773 | } 3774 | param { 3775 | lr_mult: 2 3776 | decay_mult: 0 3777 | } 3778 | convolution_param { 3779 | num_output: 192 3780 | stride: 1 3781 | weight_filler { 3782 | type: "xavier" 3783 | std: 0.01 3784 | } 3785 | bias_filler { 3786 | type: "constant" 3787 | value: 0.2 3788 | } 3789 | pad_h: 3 3790 | pad_w: 0 3791 | kernel_h: 7 3792 | kernel_w: 1 3793 | } 3794 | } 3795 | layer { 3796 | name: "inception_resnet_v2_b4_7x1_bn" 3797 | type: "BatchNorm" 3798 | bottom: "inception_resnet_v2_b4_7x1" 3799 | top: "inception_resnet_v2_b4_7x1" 3800 | param { 3801 | lr_mult: 0.0 3802 | decay_mult: 0.0 3803 | } 3804 | param { 3805 | lr_mult: 0.0 3806 | decay_mult: 0.0 3807 | } 3808 | param { 3809 | lr_mult: 0.0 3810 | decay_mult: 0.0 3811 | } 3812 | batch_norm_param { 3813 | use_global_stats: true 3814 | moving_average_fraction: 0.95 3815 | } 3816 | } 3817 | layer { 3818 | name: "inception_resnet_v2_b4_7x1_scale" 3819 | type: "Scale" 3820 | bottom: "inception_resnet_v2_b4_7x1" 3821 | top: "inception_resnet_v2_b4_7x1" 3822 | scale_param { 3823 | bias_term: true 3824 | } 3825 | } 3826 | layer { 3827 | name: "inception_resnet_v2_b4_7x1_relu" 3828 | type: "PReLU" 3829 | bottom: "inception_resnet_v2_b4_7x1" 3830 | top: "inception_resnet_v2_b4_7x1" 3831 | } 3832 | layer { 3833 | name: "inception_resnet_v2_b4_concat" 3834 | type: "Concat" 3835 | bottom: "inception_resnet_v2_b4_1x1" 3836 | bottom: "inception_resnet_v2_b4_7x1" 3837 | top: "inception_resnet_v2_b4_concat" 3838 | } 3839 | layer { 3840 | name: "inception_resnet_v2_b4_up" 3841 | type: "Convolution" 3842 | bottom: "inception_resnet_v2_b4_concat" 3843 | top: "inception_resnet_v2_b4_up" 3844 | param { 3845 | lr_mult: 1 3846 | decay_mult: 1 3847 | } 3848 | param { 3849 | lr_mult: 2 3850 | decay_mult: 0 3851 | } 3852 | convolution_param { 3853 | num_output: 1088 3854 | pad: 0 3855 | kernel_size: 1 3856 | stride: 1 3857 | weight_filler { 3858 | type: "xavier" 3859 | std: 0.01 3860 | } 3861 | bias_filler { 3862 | type: "constant" 3863 | value: 0.2 3864 | } 3865 | } 3866 | } 3867 | layer { 3868 | name: "inception_resnet_v2_b4_up_bn" 3869 | type: "BatchNorm" 3870 | bottom: "inception_resnet_v2_b4_up" 3871 | top: "inception_resnet_v2_b4_up" 3872 | param { 3873 | lr_mult: 0.0 3874 | decay_mult: 0.0 3875 | } 3876 | param { 3877 | lr_mult: 0.0 3878 | decay_mult: 0.0 3879 | } 3880 | param { 3881 | lr_mult: 0.0 3882 | decay_mult: 0.0 3883 | } 3884 | batch_norm_param { 3885 | use_global_stats: true 3886 | moving_average_fraction: 0.95 3887 | } 3888 | } 3889 | layer { 3890 | name: "inception_resnet_v2_b4_up_scale" 3891 | type: "Scale" 3892 | bottom: "inception_resnet_v2_b4_up" 3893 | top: "inception_resnet_v2_b4_up" 3894 | scale_param { 3895 | bias_term: true 3896 | } 3897 | } 3898 | layer { 3899 | name: "inception_resnet_v2_b4_residual_eltwise" 3900 | type: "Eltwise" 3901 | bottom: "inception_resnet_v2_b3_residual_eltwise" 3902 | bottom: "inception_resnet_v2_b4_up" 3903 | top: "inception_resnet_v2_b4_residual_eltwise" 3904 | eltwise_param { 3905 | operation: SUM 3906 | } 3907 | } 3908 | layer { 3909 | name: "inception_resnet_v2_b4_residual_eltwise_relu" 3910 | type: "PReLU" 3911 | bottom: "inception_resnet_v2_b4_residual_eltwise" 3912 | top: "inception_resnet_v2_b4_residual_eltwise" 3913 | } 3914 | layer { 3915 | name: "inception_resnet_v2_b5_1x1" 3916 | type: "Convolution" 3917 | bottom: "inception_resnet_v2_b4_residual_eltwise" 3918 | top: "inception_resnet_v2_b5_1x1" 3919 | param { 3920 | lr_mult: 1 3921 | decay_mult: 1 3922 | } 3923 | param { 3924 | lr_mult: 2 3925 | decay_mult: 0 3926 | } 3927 | convolution_param { 3928 | num_output: 192 3929 | pad: 0 3930 | kernel_size: 1 3931 | stride: 1 3932 | weight_filler { 3933 | type: "xavier" 3934 | std: 0.01 3935 | } 3936 | bias_filler { 3937 | type: "constant" 3938 | value: 0.2 3939 | } 3940 | } 3941 | } 3942 | layer { 3943 | name: "inception_resnet_v2_b5_1x1_bn" 3944 | type: "BatchNorm" 3945 | bottom: "inception_resnet_v2_b5_1x1" 3946 | top: "inception_resnet_v2_b5_1x1" 3947 | param { 3948 | lr_mult: 0.0 3949 | decay_mult: 0.0 3950 | } 3951 | param { 3952 | lr_mult: 0.0 3953 | decay_mult: 0.0 3954 | } 3955 | param { 3956 | lr_mult: 0.0 3957 | decay_mult: 0.0 3958 | } 3959 | batch_norm_param { 3960 | use_global_stats: true 3961 | moving_average_fraction: 0.95 3962 | } 3963 | } 3964 | layer { 3965 | name: "inception_resnet_v2_b5_1x1_scale" 3966 | type: "Scale" 3967 | bottom: "inception_resnet_v2_b5_1x1" 3968 | top: "inception_resnet_v2_b5_1x1" 3969 | scale_param { 3970 | bias_term: true 3971 | } 3972 | } 3973 | layer { 3974 | name: "inception_resnet_v2_b5_1x1_relu" 3975 | type: "PReLU" 3976 | bottom: "inception_resnet_v2_b5_1x1" 3977 | top: "inception_resnet_v2_b5_1x1" 3978 | } 3979 | layer { 3980 | name: "inception_resnet_v2_b5_1x7_reduce" 3981 | type: "Convolution" 3982 | bottom: "inception_resnet_v2_b4_residual_eltwise" 3983 | top: "inception_resnet_v2_b5_1x7_reduce" 3984 | param { 3985 | lr_mult: 1 3986 | decay_mult: 1 3987 | } 3988 | param { 3989 | lr_mult: 2 3990 | decay_mult: 0 3991 | } 3992 | convolution_param { 3993 | num_output: 128 3994 | pad: 0 3995 | kernel_size: 1 3996 | stride: 1 3997 | weight_filler { 3998 | type: "xavier" 3999 | std: 0.01 4000 | } 4001 | bias_filler { 4002 | type: "constant" 4003 | value: 0.2 4004 | } 4005 | } 4006 | } 4007 | layer { 4008 | name: "inception_resnet_v2_b5_1x7_reduce_bn" 4009 | type: "BatchNorm" 4010 | bottom: "inception_resnet_v2_b5_1x7_reduce" 4011 | top: "inception_resnet_v2_b5_1x7_reduce" 4012 | param { 4013 | lr_mult: 0.0 4014 | decay_mult: 0.0 4015 | } 4016 | param { 4017 | lr_mult: 0.0 4018 | decay_mult: 0.0 4019 | } 4020 | param { 4021 | lr_mult: 0.0 4022 | decay_mult: 0.0 4023 | } 4024 | batch_norm_param { 4025 | use_global_stats: true 4026 | moving_average_fraction: 0.95 4027 | } 4028 | } 4029 | layer { 4030 | name: "inception_resnet_v2_b5_1x7_reduce_scale" 4031 | type: "Scale" 4032 | bottom: "inception_resnet_v2_b5_1x7_reduce" 4033 | top: "inception_resnet_v2_b5_1x7_reduce" 4034 | scale_param { 4035 | bias_term: true 4036 | } 4037 | } 4038 | layer { 4039 | name: "inception_resnet_v2_b5_1x7_reduce_relu" 4040 | type: "PReLU" 4041 | bottom: "inception_resnet_v2_b5_1x7_reduce" 4042 | top: "inception_resnet_v2_b5_1x7_reduce" 4043 | } 4044 | layer { 4045 | name: "inception_resnet_v2_b5_1x7" 4046 | type: "Convolution" 4047 | bottom: "inception_resnet_v2_b5_1x7_reduce" 4048 | top: "inception_resnet_v2_b5_1x7" 4049 | param { 4050 | lr_mult: 1 4051 | decay_mult: 1 4052 | } 4053 | param { 4054 | lr_mult: 2 4055 | decay_mult: 0 4056 | } 4057 | convolution_param { 4058 | num_output: 160 4059 | stride: 1 4060 | weight_filler { 4061 | type: "xavier" 4062 | std: 0.01 4063 | } 4064 | bias_filler { 4065 | type: "constant" 4066 | value: 0.2 4067 | } 4068 | pad_h: 0 4069 | pad_w: 3 4070 | kernel_h: 1 4071 | kernel_w: 7 4072 | } 4073 | } 4074 | layer { 4075 | name: "inception_resnet_v2_b5_1x7_bn" 4076 | type: "BatchNorm" 4077 | bottom: "inception_resnet_v2_b5_1x7" 4078 | top: "inception_resnet_v2_b5_1x7" 4079 | param { 4080 | lr_mult: 0.0 4081 | decay_mult: 0.0 4082 | } 4083 | param { 4084 | lr_mult: 0.0 4085 | decay_mult: 0.0 4086 | } 4087 | param { 4088 | lr_mult: 0.0 4089 | decay_mult: 0.0 4090 | } 4091 | batch_norm_param { 4092 | use_global_stats: true 4093 | moving_average_fraction: 0.95 4094 | } 4095 | } 4096 | layer { 4097 | name: "inception_resnet_v2_b5_1x7_scale" 4098 | type: "Scale" 4099 | bottom: "inception_resnet_v2_b5_1x7" 4100 | top: "inception_resnet_v2_b5_1x7" 4101 | scale_param { 4102 | bias_term: true 4103 | } 4104 | } 4105 | layer { 4106 | name: "inception_resnet_v2_b5_1x7_relu" 4107 | type: "PReLU" 4108 | bottom: "inception_resnet_v2_b5_1x7" 4109 | top: "inception_resnet_v2_b5_1x7" 4110 | } 4111 | layer { 4112 | name: "inception_resnet_v2_b5_7x1" 4113 | type: "Convolution" 4114 | bottom: "inception_resnet_v2_b5_1x7" 4115 | top: "inception_resnet_v2_b5_7x1" 4116 | param { 4117 | lr_mult: 1 4118 | decay_mult: 1 4119 | } 4120 | param { 4121 | lr_mult: 2 4122 | decay_mult: 0 4123 | } 4124 | convolution_param { 4125 | num_output: 192 4126 | stride: 1 4127 | weight_filler { 4128 | type: "xavier" 4129 | std: 0.01 4130 | } 4131 | bias_filler { 4132 | type: "constant" 4133 | value: 0.2 4134 | } 4135 | pad_h: 3 4136 | pad_w: 0 4137 | kernel_h: 7 4138 | kernel_w: 1 4139 | } 4140 | } 4141 | layer { 4142 | name: "inception_resnet_v2_b5_7x1_bn" 4143 | type: "BatchNorm" 4144 | bottom: "inception_resnet_v2_b5_7x1" 4145 | top: "inception_resnet_v2_b5_7x1" 4146 | param { 4147 | lr_mult: 0.0 4148 | decay_mult: 0.0 4149 | } 4150 | param { 4151 | lr_mult: 0.0 4152 | decay_mult: 0.0 4153 | } 4154 | param { 4155 | lr_mult: 0.0 4156 | decay_mult: 0.0 4157 | } 4158 | batch_norm_param { 4159 | use_global_stats: true 4160 | moving_average_fraction: 0.95 4161 | } 4162 | } 4163 | layer { 4164 | name: "inception_resnet_v2_b5_7x1_scale" 4165 | type: "Scale" 4166 | bottom: "inception_resnet_v2_b5_7x1" 4167 | top: "inception_resnet_v2_b5_7x1" 4168 | scale_param { 4169 | bias_term: true 4170 | } 4171 | } 4172 | layer { 4173 | name: "inception_resnet_v2_b5_7x1_relu" 4174 | type: "PReLU" 4175 | bottom: "inception_resnet_v2_b5_7x1" 4176 | top: "inception_resnet_v2_b5_7x1" 4177 | } 4178 | layer { 4179 | name: "inception_resnet_v2_b5_concat" 4180 | type: "Concat" 4181 | bottom: "inception_resnet_v2_b5_1x1" 4182 | bottom: "inception_resnet_v2_b5_7x1" 4183 | top: "inception_resnet_v2_b5_concat" 4184 | } 4185 | layer { 4186 | name: "inception_resnet_v2_b5_up" 4187 | type: "Convolution" 4188 | bottom: "inception_resnet_v2_b5_concat" 4189 | top: "inception_resnet_v2_b5_up" 4190 | param { 4191 | lr_mult: 1 4192 | decay_mult: 1 4193 | } 4194 | param { 4195 | lr_mult: 2 4196 | decay_mult: 0 4197 | } 4198 | convolution_param { 4199 | num_output: 1088 4200 | pad: 0 4201 | kernel_size: 1 4202 | stride: 1 4203 | weight_filler { 4204 | type: "xavier" 4205 | std: 0.01 4206 | } 4207 | bias_filler { 4208 | type: "constant" 4209 | value: 0.2 4210 | } 4211 | } 4212 | } 4213 | layer { 4214 | name: "inception_resnet_v2_b5_up_bn" 4215 | type: "BatchNorm" 4216 | bottom: "inception_resnet_v2_b5_up" 4217 | top: "inception_resnet_v2_b5_up" 4218 | param { 4219 | lr_mult: 0.0 4220 | decay_mult: 0.0 4221 | } 4222 | param { 4223 | lr_mult: 0.0 4224 | decay_mult: 0.0 4225 | } 4226 | param { 4227 | lr_mult: 0.0 4228 | decay_mult: 0.0 4229 | } 4230 | batch_norm_param { 4231 | use_global_stats: true 4232 | moving_average_fraction: 0.95 4233 | } 4234 | } 4235 | layer { 4236 | name: "inception_resnet_v2_b5_up_scale" 4237 | type: "Scale" 4238 | bottom: "inception_resnet_v2_b5_up" 4239 | top: "inception_resnet_v2_b5_up" 4240 | scale_param { 4241 | bias_term: true 4242 | } 4243 | } 4244 | layer { 4245 | name: "inception_resnet_v2_b5_residual_eltwise" 4246 | type: "Eltwise" 4247 | bottom: "inception_resnet_v2_b4_residual_eltwise" 4248 | bottom: "inception_resnet_v2_b5_up" 4249 | top: "inception_resnet_v2_b5_residual_eltwise" 4250 | eltwise_param { 4251 | operation: SUM 4252 | } 4253 | } 4254 | layer { 4255 | name: "inception_resnet_v2_b5_residual_eltwise_relu" 4256 | type: "PReLU" 4257 | bottom: "inception_resnet_v2_b5_residual_eltwise" 4258 | top: "inception_resnet_v2_b5_residual_eltwise" 4259 | } 4260 | 4261 | layer { 4262 | name: "reduction_b_3x3_reduce" 4263 | type: "Convolution" 4264 | bottom: "inception_resnet_v2_b5_residual_eltwise" 4265 | top: "reduction_b_3x3_reduce" 4266 | param { 4267 | lr_mult: 1 4268 | decay_mult: 1 4269 | } 4270 | param { 4271 | lr_mult: 2 4272 | decay_mult: 0 4273 | } 4274 | convolution_param { 4275 | num_output: 256 4276 | pad: 0 4277 | kernel_size: 1 4278 | stride: 1 4279 | weight_filler { 4280 | type: "xavier" 4281 | std: 0.01 4282 | } 4283 | bias_filler { 4284 | type: "constant" 4285 | value: 0.2 4286 | } 4287 | } 4288 | } 4289 | layer { 4290 | name: "reduction_b_3x3_reduce_bn" 4291 | type: "BatchNorm" 4292 | bottom: "reduction_b_3x3_reduce" 4293 | top: "reduction_b_3x3_reduce" 4294 | param { 4295 | lr_mult: 0.0 4296 | decay_mult: 0.0 4297 | } 4298 | param { 4299 | lr_mult: 0.0 4300 | decay_mult: 0.0 4301 | } 4302 | param { 4303 | lr_mult: 0.0 4304 | decay_mult: 0.0 4305 | } 4306 | batch_norm_param { 4307 | use_global_stats: true 4308 | moving_average_fraction: 0.95 4309 | } 4310 | } 4311 | layer { 4312 | name: "reduction_b_3x3_reduce_scale" 4313 | type: "Scale" 4314 | bottom: "reduction_b_3x3_reduce" 4315 | top: "reduction_b_3x3_reduce" 4316 | scale_param { 4317 | bias_term: true 4318 | } 4319 | } 4320 | layer { 4321 | name: "reduction_b_3x3_reduce_relu" 4322 | type: "PReLU" 4323 | bottom: "reduction_b_3x3_reduce" 4324 | top: "reduction_b_3x3_reduce" 4325 | } 4326 | layer { 4327 | name: "reduction_b_3x3" 4328 | type: "Convolution" 4329 | bottom: "reduction_b_3x3_reduce" 4330 | top: "reduction_b_3x3" 4331 | param { 4332 | lr_mult: 1 4333 | decay_mult: 1 4334 | } 4335 | param { 4336 | lr_mult: 2 4337 | decay_mult: 0 4338 | } 4339 | convolution_param { 4340 | num_output: 384 4341 | pad: 0 4342 | kernel_size: 3 4343 | stride: 2 4344 | weight_filler { 4345 | type: "xavier" 4346 | std: 0.01 4347 | } 4348 | bias_filler { 4349 | type: "constant" 4350 | value: 0.2 4351 | } 4352 | } 4353 | } 4354 | layer { 4355 | name: "reduction_b_3x3_bn" 4356 | type: "BatchNorm" 4357 | bottom: "reduction_b_3x3" 4358 | top: "reduction_b_3x3" 4359 | param { 4360 | lr_mult: 0.0 4361 | decay_mult: 0.0 4362 | } 4363 | param { 4364 | lr_mult: 0.0 4365 | decay_mult: 0.0 4366 | } 4367 | param { 4368 | lr_mult: 0.0 4369 | decay_mult: 0.0 4370 | } 4371 | batch_norm_param { 4372 | use_global_stats: true 4373 | moving_average_fraction: 0.95 4374 | } 4375 | } 4376 | layer { 4377 | name: "reduction_b_3x3_scale" 4378 | type: "Scale" 4379 | bottom: "reduction_b_3x3" 4380 | top: "reduction_b_3x3" 4381 | scale_param { 4382 | bias_term: true 4383 | } 4384 | } 4385 | layer { 4386 | name: "reduction_b_3x3_relu" 4387 | type: "PReLU" 4388 | bottom: "reduction_b_3x3" 4389 | top: "reduction_b_3x3" 4390 | } 4391 | layer { 4392 | name: "reduction_b_3x3_2_reduce" 4393 | type: "Convolution" 4394 | bottom: "inception_resnet_v2_b5_residual_eltwise" 4395 | top: "reduction_b_3x3_2_reduce" 4396 | param { 4397 | lr_mult: 1 4398 | decay_mult: 1 4399 | } 4400 | param { 4401 | lr_mult: 2 4402 | decay_mult: 0 4403 | } 4404 | convolution_param { 4405 | num_output: 256 4406 | pad: 0 4407 | kernel_size: 1 4408 | stride: 1 4409 | weight_filler { 4410 | type: "xavier" 4411 | std: 0.01 4412 | } 4413 | bias_filler { 4414 | type: "constant" 4415 | value: 0.2 4416 | } 4417 | } 4418 | } 4419 | layer { 4420 | name: "reduction_b_3x3_2_reduce_bn" 4421 | type: "BatchNorm" 4422 | bottom: "reduction_b_3x3_2_reduce" 4423 | top: "reduction_b_3x3_2_reduce" 4424 | param { 4425 | lr_mult: 0.0 4426 | decay_mult: 0.0 4427 | } 4428 | param { 4429 | lr_mult: 0.0 4430 | decay_mult: 0.0 4431 | } 4432 | param { 4433 | lr_mult: 0.0 4434 | decay_mult: 0.0 4435 | } 4436 | batch_norm_param { 4437 | use_global_stats: true 4438 | moving_average_fraction: 0.95 4439 | } 4440 | } 4441 | layer { 4442 | name: "reduction_b_3x3_2_reduce_scale" 4443 | type: "Scale" 4444 | bottom: "reduction_b_3x3_2_reduce" 4445 | top: "reduction_b_3x3_2_reduce" 4446 | scale_param { 4447 | bias_term: true 4448 | } 4449 | } 4450 | layer { 4451 | name: "reduction_b_3x3_2_reduce_relu" 4452 | type: "PReLU" 4453 | bottom: "reduction_b_3x3_2_reduce" 4454 | top: "reduction_b_3x3_2_reduce" 4455 | } 4456 | layer { 4457 | name: "reduction_b_3x3_2" 4458 | type: "Convolution" 4459 | bottom: "reduction_b_3x3_2_reduce" 4460 | top: "reduction_b_3x3_2" 4461 | param { 4462 | lr_mult: 1 4463 | decay_mult: 1 4464 | } 4465 | param { 4466 | lr_mult: 2 4467 | decay_mult: 0 4468 | } 4469 | convolution_param { 4470 | num_output: 288 4471 | pad: 0 4472 | kernel_size: 3 4473 | stride: 2 4474 | weight_filler { 4475 | type: "xavier" 4476 | std: 0.01 4477 | } 4478 | bias_filler { 4479 | type: "constant" 4480 | value: 0.2 4481 | } 4482 | } 4483 | } 4484 | layer { 4485 | name: "reduction_b_3x3_2_bn" 4486 | type: "BatchNorm" 4487 | bottom: "reduction_b_3x3_2" 4488 | top: "reduction_b_3x3_2" 4489 | param { 4490 | lr_mult: 0.0 4491 | decay_mult: 0.0 4492 | } 4493 | param { 4494 | lr_mult: 0.0 4495 | decay_mult: 0.0 4496 | } 4497 | param { 4498 | lr_mult: 0.0 4499 | decay_mult: 0.0 4500 | } 4501 | batch_norm_param { 4502 | use_global_stats: true 4503 | moving_average_fraction: 0.95 4504 | } 4505 | } 4506 | layer { 4507 | name: "reduction_b_3x3_2_scale" 4508 | type: "Scale" 4509 | bottom: "reduction_b_3x3_2" 4510 | top: "reduction_b_3x3_2" 4511 | scale_param { 4512 | bias_term: true 4513 | } 4514 | } 4515 | layer { 4516 | name: "reduction_b_3x3_2_relu" 4517 | type: "PReLU" 4518 | bottom: "reduction_b_3x3_2" 4519 | top: "reduction_b_3x3_2" 4520 | } 4521 | layer { 4522 | name: "reduction_b_3x3_3_reduce" 4523 | type: "Convolution" 4524 | bottom: "inception_resnet_v2_b5_residual_eltwise" 4525 | top: "reduction_b_3x3_3_reduce" 4526 | param { 4527 | lr_mult: 1 4528 | decay_mult: 1 4529 | } 4530 | param { 4531 | lr_mult: 2 4532 | decay_mult: 0 4533 | } 4534 | convolution_param { 4535 | num_output: 256 4536 | pad: 0 4537 | kernel_size: 1 4538 | stride: 1 4539 | weight_filler { 4540 | type: "xavier" 4541 | std: 0.01 4542 | } 4543 | bias_filler { 4544 | type: "constant" 4545 | value: 0.2 4546 | } 4547 | } 4548 | } 4549 | layer { 4550 | name: "reduction_b_3x3_3_reduce_bn" 4551 | type: "BatchNorm" 4552 | bottom: "reduction_b_3x3_3_reduce" 4553 | top: "reduction_b_3x3_3_reduce" 4554 | param { 4555 | lr_mult: 0.0 4556 | decay_mult: 0.0 4557 | } 4558 | param { 4559 | lr_mult: 0.0 4560 | decay_mult: 0.0 4561 | } 4562 | param { 4563 | lr_mult: 0.0 4564 | decay_mult: 0.0 4565 | } 4566 | batch_norm_param { 4567 | use_global_stats: true 4568 | moving_average_fraction: 0.95 4569 | } 4570 | } 4571 | layer { 4572 | name: "reduction_b_3x3_3_reduce_scale" 4573 | type: "Scale" 4574 | bottom: "reduction_b_3x3_3_reduce" 4575 | top: "reduction_b_3x3_3_reduce" 4576 | scale_param { 4577 | bias_term: true 4578 | } 4579 | } 4580 | layer { 4581 | name: "reduction_b_3x3_3_reduce_relu" 4582 | type: "PReLU" 4583 | bottom: "reduction_b_3x3_3_reduce" 4584 | top: "reduction_b_3x3_3_reduce" 4585 | } 4586 | layer { 4587 | name: "reduction_b_3x3_3" 4588 | type: "Convolution" 4589 | bottom: "reduction_b_3x3_3_reduce" 4590 | top: "reduction_b_3x3_3" 4591 | param { 4592 | lr_mult: 1 4593 | decay_mult: 1 4594 | } 4595 | param { 4596 | lr_mult: 2 4597 | decay_mult: 0 4598 | } 4599 | convolution_param { 4600 | num_output: 288 4601 | pad: 1 4602 | kernel_size: 3 4603 | stride: 1 4604 | weight_filler { 4605 | type: "xavier" 4606 | std: 0.01 4607 | } 4608 | bias_filler { 4609 | type: "constant" 4610 | value: 0.2 4611 | } 4612 | } 4613 | } 4614 | layer { 4615 | name: "reduction_b_3x3_3_bn" 4616 | type: "BatchNorm" 4617 | bottom: "reduction_b_3x3_3" 4618 | top: "reduction_b_3x3_3" 4619 | param { 4620 | lr_mult: 0.0 4621 | decay_mult: 0.0 4622 | } 4623 | param { 4624 | lr_mult: 0.0 4625 | decay_mult: 0.0 4626 | } 4627 | param { 4628 | lr_mult: 0.0 4629 | decay_mult: 0.0 4630 | } 4631 | batch_norm_param { 4632 | use_global_stats: true 4633 | moving_average_fraction: 0.95 4634 | } 4635 | } 4636 | layer { 4637 | name: "reduction_b_3x3_3_scale" 4638 | type: "Scale" 4639 | bottom: "reduction_b_3x3_3" 4640 | top: "reduction_b_3x3_3" 4641 | scale_param { 4642 | bias_term: true 4643 | } 4644 | } 4645 | layer { 4646 | name: "reduction_b_3x3_3_relu" 4647 | type: "PReLU" 4648 | bottom: "reduction_b_3x3_3" 4649 | top: "reduction_b_3x3_3" 4650 | } 4651 | layer { 4652 | name: "reduction_b_3x3_4" 4653 | type: "Convolution" 4654 | bottom: "reduction_b_3x3_3" 4655 | top: "reduction_b_3x3_4" 4656 | param { 4657 | lr_mult: 1 4658 | decay_mult: 1 4659 | } 4660 | param { 4661 | lr_mult: 2 4662 | decay_mult: 0 4663 | } 4664 | convolution_param { 4665 | num_output: 320 4666 | pad: 0 4667 | kernel_size: 3 4668 | stride: 2 4669 | weight_filler { 4670 | type: "xavier" 4671 | std: 0.01 4672 | } 4673 | bias_filler { 4674 | type: "constant" 4675 | value: 0.2 4676 | } 4677 | } 4678 | } 4679 | layer { 4680 | name: "reduction_b_3x3_4_bn" 4681 | type: "BatchNorm" 4682 | bottom: "reduction_b_3x3_4" 4683 | top: "reduction_b_3x3_4" 4684 | param { 4685 | lr_mult: 0.0 4686 | decay_mult: 0.0 4687 | } 4688 | param { 4689 | lr_mult: 0.0 4690 | decay_mult: 0.0 4691 | } 4692 | param { 4693 | lr_mult: 0.0 4694 | decay_mult: 0.0 4695 | } 4696 | batch_norm_param { 4697 | use_global_stats: true 4698 | moving_average_fraction: 0.95 4699 | } 4700 | } 4701 | layer { 4702 | name: "reduction_b_3x3_4_scale" 4703 | type: "Scale" 4704 | bottom: "reduction_b_3x3_4" 4705 | top: "reduction_b_3x3_4" 4706 | scale_param { 4707 | bias_term: true 4708 | } 4709 | } 4710 | layer { 4711 | name: "reduction_b_3x3_4_relu" 4712 | type: "PReLU" 4713 | bottom: "reduction_b_3x3_4" 4714 | top: "reduction_b_3x3_4" 4715 | } 4716 | layer { 4717 | name: "reduction_b_pool" 4718 | type: "Pooling" 4719 | bottom: "inception_resnet_v2_b5_residual_eltwise" 4720 | top: "reduction_b_pool" 4721 | pooling_param { 4722 | pool: MAX 4723 | kernel_size: 3 4724 | stride: 2 4725 | } 4726 | } 4727 | layer { 4728 | name: "reduction_b_concat" 4729 | type: "Concat" 4730 | bottom: "reduction_b_3x3" 4731 | bottom: "reduction_b_3x3_2" 4732 | bottom: "reduction_b_3x3_4" 4733 | bottom: "reduction_b_pool" 4734 | top: "reduction_b_concat" 4735 | } 4736 | layer { 4737 | name: "inception_resnet_v2_c1_1x1" 4738 | type: "Convolution" 4739 | bottom: "reduction_b_concat" 4740 | top: "inception_resnet_v2_c1_1x1" 4741 | param { 4742 | lr_mult: 1 4743 | decay_mult: 1 4744 | } 4745 | param { 4746 | lr_mult: 2 4747 | decay_mult: 0 4748 | } 4749 | convolution_param { 4750 | num_output: 192 4751 | pad: 0 4752 | kernel_size: 1 4753 | stride: 1 4754 | weight_filler { 4755 | type: "xavier" 4756 | std: 0.01 4757 | } 4758 | bias_filler { 4759 | type: "constant" 4760 | value: 0.2 4761 | } 4762 | } 4763 | } 4764 | layer { 4765 | name: "inception_resnet_v2_c1_1x1_bn" 4766 | type: "BatchNorm" 4767 | bottom: "inception_resnet_v2_c1_1x1" 4768 | top: "inception_resnet_v2_c1_1x1" 4769 | param { 4770 | lr_mult: 0.0 4771 | decay_mult: 0.0 4772 | } 4773 | param { 4774 | lr_mult: 0.0 4775 | decay_mult: 0.0 4776 | } 4777 | param { 4778 | lr_mult: 0.0 4779 | decay_mult: 0.0 4780 | } 4781 | batch_norm_param { 4782 | use_global_stats: true 4783 | moving_average_fraction: 0.95 4784 | } 4785 | } 4786 | layer { 4787 | name: "inception_resnet_v2_c1_1x1_scale" 4788 | type: "Scale" 4789 | bottom: "inception_resnet_v2_c1_1x1" 4790 | top: "inception_resnet_v2_c1_1x1" 4791 | scale_param { 4792 | bias_term: true 4793 | } 4794 | } 4795 | layer { 4796 | name: "inception_resnet_v2_c1_1x1_relu" 4797 | type: "PReLU" 4798 | bottom: "inception_resnet_v2_c1_1x1" 4799 | top: "inception_resnet_v2_c1_1x1" 4800 | } 4801 | layer { 4802 | name: "inception_resnet_v2_c1_1x3_reduce" 4803 | type: "Convolution" 4804 | bottom: "reduction_b_concat" 4805 | top: "inception_resnet_v2_c1_1x3_reduce" 4806 | param { 4807 | lr_mult: 1 4808 | decay_mult: 1 4809 | } 4810 | param { 4811 | lr_mult: 2 4812 | decay_mult: 0 4813 | } 4814 | convolution_param { 4815 | num_output: 192 4816 | pad: 0 4817 | kernel_size: 1 4818 | stride: 1 4819 | weight_filler { 4820 | type: "xavier" 4821 | std: 0.01 4822 | } 4823 | bias_filler { 4824 | type: "constant" 4825 | value: 0.2 4826 | } 4827 | } 4828 | } 4829 | layer { 4830 | name: "inception_resnet_v2_c1_1x3_reduce_bn" 4831 | type: "BatchNorm" 4832 | bottom: "inception_resnet_v2_c1_1x3_reduce" 4833 | top: "inception_resnet_v2_c1_1x3_reduce" 4834 | param { 4835 | lr_mult: 0.0 4836 | decay_mult: 0.0 4837 | } 4838 | param { 4839 | lr_mult: 0.0 4840 | decay_mult: 0.0 4841 | } 4842 | param { 4843 | lr_mult: 0.0 4844 | decay_mult: 0.0 4845 | } 4846 | batch_norm_param { 4847 | use_global_stats: true 4848 | moving_average_fraction: 0.95 4849 | } 4850 | } 4851 | layer { 4852 | name: "inception_resnet_v2_c1_1x3_reduce_scale" 4853 | type: "Scale" 4854 | bottom: "inception_resnet_v2_c1_1x3_reduce" 4855 | top: "inception_resnet_v2_c1_1x3_reduce" 4856 | scale_param { 4857 | bias_term: true 4858 | } 4859 | } 4860 | layer { 4861 | name: "inception_resnet_v2_c1_1x3_reduce_relu" 4862 | type: "PReLU" 4863 | bottom: "inception_resnet_v2_c1_1x3_reduce" 4864 | top: "inception_resnet_v2_c1_1x3_reduce" 4865 | } 4866 | layer { 4867 | name: "inception_resnet_v2_c1_1x3" 4868 | type: "Convolution" 4869 | bottom: "inception_resnet_v2_c1_1x3_reduce" 4870 | top: "inception_resnet_v2_c1_1x3" 4871 | param { 4872 | lr_mult: 1 4873 | decay_mult: 1 4874 | } 4875 | param { 4876 | lr_mult: 2 4877 | decay_mult: 0 4878 | } 4879 | convolution_param { 4880 | num_output: 224 4881 | stride: 1 4882 | weight_filler { 4883 | type: "xavier" 4884 | std: 0.01 4885 | } 4886 | bias_filler { 4887 | type: "constant" 4888 | value: 0.2 4889 | } 4890 | pad_h: 0 4891 | pad_w: 1 4892 | kernel_h: 1 4893 | kernel_w: 3 4894 | } 4895 | } 4896 | layer { 4897 | name: "inception_resnet_v2_c1_1x3_bn" 4898 | type: "BatchNorm" 4899 | bottom: "inception_resnet_v2_c1_1x3" 4900 | top: "inception_resnet_v2_c1_1x3" 4901 | param { 4902 | lr_mult: 0.0 4903 | decay_mult: 0.0 4904 | } 4905 | param { 4906 | lr_mult: 0.0 4907 | decay_mult: 0.0 4908 | } 4909 | param { 4910 | lr_mult: 0.0 4911 | decay_mult: 0.0 4912 | } 4913 | batch_norm_param { 4914 | use_global_stats: true 4915 | moving_average_fraction: 0.95 4916 | } 4917 | } 4918 | layer { 4919 | name: "inception_resnet_v2_c1_1x3_scale" 4920 | type: "Scale" 4921 | bottom: "inception_resnet_v2_c1_1x3" 4922 | top: "inception_resnet_v2_c1_1x3" 4923 | scale_param { 4924 | bias_term: true 4925 | } 4926 | } 4927 | layer { 4928 | name: "inception_resnet_v2_c1_1x3_relu" 4929 | type: "PReLU" 4930 | bottom: "inception_resnet_v2_c1_1x3" 4931 | top: "inception_resnet_v2_c1_1x3" 4932 | } 4933 | layer { 4934 | name: "inception_resnet_v2_c1_3x1" 4935 | type: "Convolution" 4936 | bottom: "inception_resnet_v2_c1_1x3" 4937 | top: "inception_resnet_v2_c1_3x1" 4938 | param { 4939 | lr_mult: 1 4940 | decay_mult: 1 4941 | } 4942 | param { 4943 | lr_mult: 2 4944 | decay_mult: 0 4945 | } 4946 | convolution_param { 4947 | num_output: 256 4948 | stride: 1 4949 | weight_filler { 4950 | type: "xavier" 4951 | std: 0.01 4952 | } 4953 | bias_filler { 4954 | type: "constant" 4955 | value: 0.2 4956 | } 4957 | pad_h: 1 4958 | pad_w: 0 4959 | kernel_h: 3 4960 | kernel_w: 1 4961 | } 4962 | } 4963 | layer { 4964 | name: "inception_resnet_v2_c1_3x1_bn" 4965 | type: "BatchNorm" 4966 | bottom: "inception_resnet_v2_c1_3x1" 4967 | top: "inception_resnet_v2_c1_3x1" 4968 | param { 4969 | lr_mult: 0.0 4970 | decay_mult: 0.0 4971 | } 4972 | param { 4973 | lr_mult: 0.0 4974 | decay_mult: 0.0 4975 | } 4976 | param { 4977 | lr_mult: 0.0 4978 | decay_mult: 0.0 4979 | } 4980 | batch_norm_param { 4981 | use_global_stats: true 4982 | moving_average_fraction: 0.95 4983 | } 4984 | } 4985 | layer { 4986 | name: "inception_resnet_v2_c1_3x1_scale" 4987 | type: "Scale" 4988 | bottom: "inception_resnet_v2_c1_3x1" 4989 | top: "inception_resnet_v2_c1_3x1" 4990 | scale_param { 4991 | bias_term: true 4992 | } 4993 | } 4994 | layer { 4995 | name: "inception_resnet_v2_c1_3x1_relu" 4996 | type: "PReLU" 4997 | bottom: "inception_resnet_v2_c1_3x1" 4998 | top: "inception_resnet_v2_c1_3x1" 4999 | } 5000 | layer { 5001 | name: "inception_resnet_v2_c1_concat" 5002 | type: "Concat" 5003 | bottom: "inception_resnet_v2_c1_1x1" 5004 | bottom: "inception_resnet_v2_c1_3x1" 5005 | top: "inception_resnet_v2_c1_concat" 5006 | } 5007 | layer { 5008 | name: "inception_resnet_v2_c1_up" 5009 | type: "Convolution" 5010 | bottom: "inception_resnet_v2_c1_concat" 5011 | top: "inception_resnet_v2_c1_up" 5012 | param { 5013 | lr_mult: 1 5014 | decay_mult: 1 5015 | } 5016 | param { 5017 | lr_mult: 2 5018 | decay_mult: 0 5019 | } 5020 | convolution_param { 5021 | num_output: 2080 5022 | pad: 0 5023 | kernel_size: 1 5024 | stride: 1 5025 | weight_filler { 5026 | type: "xavier" 5027 | std: 0.01 5028 | } 5029 | bias_filler { 5030 | type: "constant" 5031 | value: 0.2 5032 | } 5033 | } 5034 | } 5035 | layer { 5036 | name: "inception_resnet_v2_c1_up_bn" 5037 | type: "BatchNorm" 5038 | bottom: "inception_resnet_v2_c1_up" 5039 | top: "inception_resnet_v2_c1_up" 5040 | param { 5041 | lr_mult: 0.0 5042 | decay_mult: 0.0 5043 | } 5044 | param { 5045 | lr_mult: 0.0 5046 | decay_mult: 0.0 5047 | } 5048 | param { 5049 | lr_mult: 0.0 5050 | decay_mult: 0.0 5051 | } 5052 | batch_norm_param { 5053 | use_global_stats: true 5054 | moving_average_fraction: 0.95 5055 | } 5056 | } 5057 | layer { 5058 | name: "inception_resnet_v2_c1_up_scale" 5059 | type: "Scale" 5060 | bottom: "inception_resnet_v2_c1_up" 5061 | top: "inception_resnet_v2_c1_up" 5062 | scale_param { 5063 | bias_term: true 5064 | } 5065 | } 5066 | layer { 5067 | name: "inception_resnet_v2_c1_residual_eltwise" 5068 | type: "Eltwise" 5069 | bottom: "reduction_b_concat" 5070 | bottom: "inception_resnet_v2_c1_up" 5071 | top: "inception_resnet_v2_c1_residual_eltwise" 5072 | eltwise_param { 5073 | operation: SUM 5074 | } 5075 | } 5076 | layer { 5077 | name: "inception_resnet_v2_c1_residual_eltwise_relu" 5078 | type: "PReLU" 5079 | bottom: "inception_resnet_v2_c1_residual_eltwise" 5080 | top: "inception_resnet_v2_c1_residual_eltwise" 5081 | } 5082 | layer { 5083 | name: "inception_resnet_v2_c2_1x1" 5084 | type: "Convolution" 5085 | bottom: "inception_resnet_v2_c1_residual_eltwise" 5086 | top: "inception_resnet_v2_c2_1x1" 5087 | param { 5088 | lr_mult: 1 5089 | decay_mult: 1 5090 | } 5091 | param { 5092 | lr_mult: 2 5093 | decay_mult: 0 5094 | } 5095 | convolution_param { 5096 | num_output: 192 5097 | pad: 0 5098 | kernel_size: 1 5099 | stride: 1 5100 | weight_filler { 5101 | type: "xavier" 5102 | std: 0.01 5103 | } 5104 | bias_filler { 5105 | type: "constant" 5106 | value: 0.2 5107 | } 5108 | } 5109 | } 5110 | layer { 5111 | name: "inception_resnet_v2_c2_1x1_bn" 5112 | type: "BatchNorm" 5113 | bottom: "inception_resnet_v2_c2_1x1" 5114 | top: "inception_resnet_v2_c2_1x1" 5115 | param { 5116 | lr_mult: 0.0 5117 | decay_mult: 0.0 5118 | } 5119 | param { 5120 | lr_mult: 0.0 5121 | decay_mult: 0.0 5122 | } 5123 | param { 5124 | lr_mult: 0.0 5125 | decay_mult: 0.0 5126 | } 5127 | batch_norm_param { 5128 | use_global_stats: true 5129 | moving_average_fraction: 0.95 5130 | } 5131 | } 5132 | layer { 5133 | name: "inception_resnet_v2_c2_1x1_scale" 5134 | type: "Scale" 5135 | bottom: "inception_resnet_v2_c2_1x1" 5136 | top: "inception_resnet_v2_c2_1x1" 5137 | scale_param { 5138 | bias_term: true 5139 | } 5140 | } 5141 | layer { 5142 | name: "inception_resnet_v2_c2_1x1_relu" 5143 | type: "PReLU" 5144 | bottom: "inception_resnet_v2_c2_1x1" 5145 | top: "inception_resnet_v2_c2_1x1" 5146 | } 5147 | layer { 5148 | name: "inception_resnet_v2_c2_1x3_reduce" 5149 | type: "Convolution" 5150 | bottom: "inception_resnet_v2_c1_residual_eltwise" 5151 | top: "inception_resnet_v2_c2_1x3_reduce" 5152 | param { 5153 | lr_mult: 1 5154 | decay_mult: 1 5155 | } 5156 | param { 5157 | lr_mult: 2 5158 | decay_mult: 0 5159 | } 5160 | convolution_param { 5161 | num_output: 192 5162 | pad: 0 5163 | kernel_size: 1 5164 | stride: 1 5165 | weight_filler { 5166 | type: "xavier" 5167 | std: 0.01 5168 | } 5169 | bias_filler { 5170 | type: "constant" 5171 | value: 0.2 5172 | } 5173 | } 5174 | } 5175 | layer { 5176 | name: "inception_resnet_v2_c2_1x3_reduce_bn" 5177 | type: "BatchNorm" 5178 | bottom: "inception_resnet_v2_c2_1x3_reduce" 5179 | top: "inception_resnet_v2_c2_1x3_reduce" 5180 | param { 5181 | lr_mult: 0.0 5182 | decay_mult: 0.0 5183 | } 5184 | param { 5185 | lr_mult: 0.0 5186 | decay_mult: 0.0 5187 | } 5188 | param { 5189 | lr_mult: 0.0 5190 | decay_mult: 0.0 5191 | } 5192 | batch_norm_param { 5193 | use_global_stats: true 5194 | moving_average_fraction: 0.95 5195 | } 5196 | } 5197 | layer { 5198 | name: "inception_resnet_v2_c2_1x3_reduce_scale" 5199 | type: "Scale" 5200 | bottom: "inception_resnet_v2_c2_1x3_reduce" 5201 | top: "inception_resnet_v2_c2_1x3_reduce" 5202 | scale_param { 5203 | bias_term: true 5204 | } 5205 | } 5206 | layer { 5207 | name: "inception_resnet_v2_c2_1x3_reduce_relu" 5208 | type: "PReLU" 5209 | bottom: "inception_resnet_v2_c2_1x3_reduce" 5210 | top: "inception_resnet_v2_c2_1x3_reduce" 5211 | } 5212 | layer { 5213 | name: "inception_resnet_v2_c2_1x3" 5214 | type: "Convolution" 5215 | bottom: "inception_resnet_v2_c2_1x3_reduce" 5216 | top: "inception_resnet_v2_c2_1x3" 5217 | param { 5218 | lr_mult: 1 5219 | decay_mult: 1 5220 | } 5221 | param { 5222 | lr_mult: 2 5223 | decay_mult: 0 5224 | } 5225 | convolution_param { 5226 | num_output: 224 5227 | stride: 1 5228 | weight_filler { 5229 | type: "xavier" 5230 | std: 0.01 5231 | } 5232 | bias_filler { 5233 | type: "constant" 5234 | value: 0.2 5235 | } 5236 | pad_h: 0 5237 | pad_w: 1 5238 | kernel_h: 1 5239 | kernel_w: 3 5240 | } 5241 | } 5242 | layer { 5243 | name: "inception_resnet_v2_c2_1x3_bn" 5244 | type: "BatchNorm" 5245 | bottom: "inception_resnet_v2_c2_1x3" 5246 | top: "inception_resnet_v2_c2_1x3" 5247 | param { 5248 | lr_mult: 0.0 5249 | decay_mult: 0.0 5250 | } 5251 | param { 5252 | lr_mult: 0.0 5253 | decay_mult: 0.0 5254 | } 5255 | param { 5256 | lr_mult: 0.0 5257 | decay_mult: 0.0 5258 | } 5259 | batch_norm_param { 5260 | use_global_stats: true 5261 | moving_average_fraction: 0.95 5262 | } 5263 | } 5264 | layer { 5265 | name: "inception_resnet_v2_c2_1x3_scale" 5266 | type: "Scale" 5267 | bottom: "inception_resnet_v2_c2_1x3" 5268 | top: "inception_resnet_v2_c2_1x3" 5269 | scale_param { 5270 | bias_term: true 5271 | } 5272 | } 5273 | layer { 5274 | name: "inception_resnet_v2_c2_1x3_relu" 5275 | type: "PReLU" 5276 | bottom: "inception_resnet_v2_c2_1x3" 5277 | top: "inception_resnet_v2_c2_1x3" 5278 | } 5279 | layer { 5280 | name: "inception_resnet_v2_c2_3x1" 5281 | type: "Convolution" 5282 | bottom: "inception_resnet_v2_c2_1x3" 5283 | top: "inception_resnet_v2_c2_3x1" 5284 | param { 5285 | lr_mult: 1 5286 | decay_mult: 1 5287 | } 5288 | param { 5289 | lr_mult: 2 5290 | decay_mult: 0 5291 | } 5292 | convolution_param { 5293 | num_output: 256 5294 | stride: 1 5295 | weight_filler { 5296 | type: "xavier" 5297 | std: 0.01 5298 | } 5299 | bias_filler { 5300 | type: "constant" 5301 | value: 0.2 5302 | } 5303 | pad_h: 1 5304 | pad_w: 0 5305 | kernel_h: 3 5306 | kernel_w: 1 5307 | } 5308 | } 5309 | layer { 5310 | name: "inception_resnet_v2_c2_3x1_bn" 5311 | type: "BatchNorm" 5312 | bottom: "inception_resnet_v2_c2_3x1" 5313 | top: "inception_resnet_v2_c2_3x1" 5314 | param { 5315 | lr_mult: 0.0 5316 | decay_mult: 0.0 5317 | } 5318 | param { 5319 | lr_mult: 0.0 5320 | decay_mult: 0.0 5321 | } 5322 | param { 5323 | lr_mult: 0.0 5324 | decay_mult: 0.0 5325 | } 5326 | batch_norm_param { 5327 | use_global_stats: true 5328 | moving_average_fraction: 0.95 5329 | } 5330 | } 5331 | layer { 5332 | name: "inception_resnet_v2_c2_3x1_scale" 5333 | type: "Scale" 5334 | bottom: "inception_resnet_v2_c2_3x1" 5335 | top: "inception_resnet_v2_c2_3x1" 5336 | scale_param { 5337 | bias_term: true 5338 | } 5339 | } 5340 | layer { 5341 | name: "inception_resnet_v2_c2_3x1_relu" 5342 | type: "PReLU" 5343 | bottom: "inception_resnet_v2_c2_3x1" 5344 | top: "inception_resnet_v2_c2_3x1" 5345 | } 5346 | layer { 5347 | name: "inception_resnet_v2_c2_concat" 5348 | type: "Concat" 5349 | bottom: "inception_resnet_v2_c2_1x1" 5350 | bottom: "inception_resnet_v2_c2_3x1" 5351 | top: "inception_resnet_v2_c2_concat" 5352 | } 5353 | layer { 5354 | name: "inception_resnet_v2_c2_up" 5355 | type: "Convolution" 5356 | bottom: "inception_resnet_v2_c2_concat" 5357 | top: "inception_resnet_v2_c2_up" 5358 | param { 5359 | lr_mult: 1 5360 | decay_mult: 1 5361 | } 5362 | param { 5363 | lr_mult: 2 5364 | decay_mult: 0 5365 | } 5366 | convolution_param { 5367 | num_output: 2080 5368 | pad: 0 5369 | kernel_size: 1 5370 | stride: 1 5371 | weight_filler { 5372 | type: "xavier" 5373 | std: 0.01 5374 | } 5375 | bias_filler { 5376 | type: "constant" 5377 | value: 0.2 5378 | } 5379 | } 5380 | } 5381 | layer { 5382 | name: "inception_resnet_v2_c2_up_bn" 5383 | type: "BatchNorm" 5384 | bottom: "inception_resnet_v2_c2_up" 5385 | top: "inception_resnet_v2_c2_up" 5386 | param { 5387 | lr_mult: 0.0 5388 | decay_mult: 0.0 5389 | } 5390 | param { 5391 | lr_mult: 0.0 5392 | decay_mult: 0.0 5393 | } 5394 | param { 5395 | lr_mult: 0.0 5396 | decay_mult: 0.0 5397 | } 5398 | batch_norm_param { 5399 | use_global_stats: true 5400 | moving_average_fraction: 0.95 5401 | } 5402 | } 5403 | layer { 5404 | name: "inception_resnet_v2_c2_up_scale" 5405 | type: "Scale" 5406 | bottom: "inception_resnet_v2_c2_up" 5407 | top: "inception_resnet_v2_c2_up" 5408 | scale_param { 5409 | bias_term: true 5410 | } 5411 | } 5412 | layer { 5413 | name: "inception_resnet_v2_c2_residual_eltwise" 5414 | type: "Eltwise" 5415 | bottom: "inception_resnet_v2_c1_residual_eltwise" 5416 | bottom: "inception_resnet_v2_c2_up" 5417 | top: "inception_resnet_v2_c2_residual_eltwise" 5418 | eltwise_param { 5419 | operation: SUM 5420 | } 5421 | } 5422 | layer { 5423 | name: "inception_resnet_v2_c2_residual_eltwise_relu" 5424 | type: "PReLU" 5425 | bottom: "inception_resnet_v2_c2_residual_eltwise" 5426 | top: "inception_resnet_v2_c2_residual_eltwise" 5427 | } 5428 | layer { 5429 | name: "inception_resnet_v2_c3_1x1" 5430 | type: "Convolution" 5431 | bottom: "inception_resnet_v2_c2_residual_eltwise" 5432 | top: "inception_resnet_v2_c3_1x1" 5433 | param { 5434 | lr_mult: 1 5435 | decay_mult: 1 5436 | } 5437 | param { 5438 | lr_mult: 2 5439 | decay_mult: 0 5440 | } 5441 | convolution_param { 5442 | num_output: 192 5443 | pad: 0 5444 | kernel_size: 1 5445 | stride: 1 5446 | weight_filler { 5447 | type: "xavier" 5448 | std: 0.01 5449 | } 5450 | bias_filler { 5451 | type: "constant" 5452 | value: 0.2 5453 | } 5454 | } 5455 | } 5456 | layer { 5457 | name: "inception_resnet_v2_c3_1x1_bn" 5458 | type: "BatchNorm" 5459 | bottom: "inception_resnet_v2_c3_1x1" 5460 | top: "inception_resnet_v2_c3_1x1" 5461 | param { 5462 | lr_mult: 0.0 5463 | decay_mult: 0.0 5464 | } 5465 | param { 5466 | lr_mult: 0.0 5467 | decay_mult: 0.0 5468 | } 5469 | param { 5470 | lr_mult: 0.0 5471 | decay_mult: 0.0 5472 | } 5473 | batch_norm_param { 5474 | use_global_stats: true 5475 | moving_average_fraction: 0.95 5476 | } 5477 | } 5478 | layer { 5479 | name: "inception_resnet_v2_c3_1x1_scale" 5480 | type: "Scale" 5481 | bottom: "inception_resnet_v2_c3_1x1" 5482 | top: "inception_resnet_v2_c3_1x1" 5483 | scale_param { 5484 | bias_term: true 5485 | } 5486 | } 5487 | layer { 5488 | name: "inception_resnet_v2_c3_1x1_relu" 5489 | type: "PReLU" 5490 | bottom: "inception_resnet_v2_c3_1x1" 5491 | top: "inception_resnet_v2_c3_1x1" 5492 | } 5493 | layer { 5494 | name: "inception_resnet_v2_c3_1x3_reduce" 5495 | type: "Convolution" 5496 | bottom: "inception_resnet_v2_c2_residual_eltwise" 5497 | top: "inception_resnet_v2_c3_1x3_reduce" 5498 | param { 5499 | lr_mult: 1 5500 | decay_mult: 1 5501 | } 5502 | param { 5503 | lr_mult: 2 5504 | decay_mult: 0 5505 | } 5506 | convolution_param { 5507 | num_output: 192 5508 | pad: 0 5509 | kernel_size: 1 5510 | stride: 1 5511 | weight_filler { 5512 | type: "xavier" 5513 | std: 0.01 5514 | } 5515 | bias_filler { 5516 | type: "constant" 5517 | value: 0.2 5518 | } 5519 | } 5520 | } 5521 | layer { 5522 | name: "inception_resnet_v2_c3_1x3_reduce_bn" 5523 | type: "BatchNorm" 5524 | bottom: "inception_resnet_v2_c3_1x3_reduce" 5525 | top: "inception_resnet_v2_c3_1x3_reduce" 5526 | param { 5527 | lr_mult: 0.0 5528 | decay_mult: 0.0 5529 | } 5530 | param { 5531 | lr_mult: 0.0 5532 | decay_mult: 0.0 5533 | } 5534 | param { 5535 | lr_mult: 0.0 5536 | decay_mult: 0.0 5537 | } 5538 | batch_norm_param { 5539 | use_global_stats: true 5540 | moving_average_fraction: 0.95 5541 | } 5542 | } 5543 | layer { 5544 | name: "inception_resnet_v2_c3_1x3_reduce_scale" 5545 | type: "Scale" 5546 | bottom: "inception_resnet_v2_c3_1x3_reduce" 5547 | top: "inception_resnet_v2_c3_1x3_reduce" 5548 | scale_param { 5549 | bias_term: true 5550 | } 5551 | } 5552 | layer { 5553 | name: "inception_resnet_v2_c3_1x3_reduce_relu" 5554 | type: "PReLU" 5555 | bottom: "inception_resnet_v2_c3_1x3_reduce" 5556 | top: "inception_resnet_v2_c3_1x3_reduce" 5557 | } 5558 | layer { 5559 | name: "inception_resnet_v2_c3_1x3" 5560 | type: "Convolution" 5561 | bottom: "inception_resnet_v2_c3_1x3_reduce" 5562 | top: "inception_resnet_v2_c3_1x3" 5563 | param { 5564 | lr_mult: 1 5565 | decay_mult: 1 5566 | } 5567 | param { 5568 | lr_mult: 2 5569 | decay_mult: 0 5570 | } 5571 | convolution_param { 5572 | num_output: 224 5573 | stride: 1 5574 | weight_filler { 5575 | type: "xavier" 5576 | std: 0.01 5577 | } 5578 | bias_filler { 5579 | type: "constant" 5580 | value: 0.2 5581 | } 5582 | pad_h: 0 5583 | pad_w: 1 5584 | kernel_h: 1 5585 | kernel_w: 3 5586 | } 5587 | } 5588 | layer { 5589 | name: "inception_resnet_v2_c3_1x3_bn" 5590 | type: "BatchNorm" 5591 | bottom: "inception_resnet_v2_c3_1x3" 5592 | top: "inception_resnet_v2_c3_1x3" 5593 | param { 5594 | lr_mult: 0.0 5595 | decay_mult: 0.0 5596 | } 5597 | param { 5598 | lr_mult: 0.0 5599 | decay_mult: 0.0 5600 | } 5601 | param { 5602 | lr_mult: 0.0 5603 | decay_mult: 0.0 5604 | } 5605 | batch_norm_param { 5606 | use_global_stats: true 5607 | moving_average_fraction: 0.95 5608 | } 5609 | } 5610 | layer { 5611 | name: "inception_resnet_v2_c3_1x3_scale" 5612 | type: "Scale" 5613 | bottom: "inception_resnet_v2_c3_1x3" 5614 | top: "inception_resnet_v2_c3_1x3" 5615 | scale_param { 5616 | bias_term: true 5617 | } 5618 | } 5619 | layer { 5620 | name: "inception_resnet_v2_c3_1x3_relu" 5621 | type: "PReLU" 5622 | bottom: "inception_resnet_v2_c3_1x3" 5623 | top: "inception_resnet_v2_c3_1x3" 5624 | } 5625 | layer { 5626 | name: "inception_resnet_v2_c3_3x1" 5627 | type: "Convolution" 5628 | bottom: "inception_resnet_v2_c3_1x3" 5629 | top: "inception_resnet_v2_c3_3x1" 5630 | param { 5631 | lr_mult: 1 5632 | decay_mult: 1 5633 | } 5634 | param { 5635 | lr_mult: 2 5636 | decay_mult: 0 5637 | } 5638 | convolution_param { 5639 | num_output: 256 5640 | stride: 1 5641 | weight_filler { 5642 | type: "xavier" 5643 | std: 0.01 5644 | } 5645 | bias_filler { 5646 | type: "constant" 5647 | value: 0.2 5648 | } 5649 | pad_h: 1 5650 | pad_w: 0 5651 | kernel_h: 3 5652 | kernel_w: 1 5653 | } 5654 | } 5655 | layer { 5656 | name: "inception_resnet_v2_c3_3x1_bn" 5657 | type: "BatchNorm" 5658 | bottom: "inception_resnet_v2_c3_3x1" 5659 | top: "inception_resnet_v2_c3_3x1" 5660 | param { 5661 | lr_mult: 0.0 5662 | decay_mult: 0.0 5663 | } 5664 | param { 5665 | lr_mult: 0.0 5666 | decay_mult: 0.0 5667 | } 5668 | param { 5669 | lr_mult: 0.0 5670 | decay_mult: 0.0 5671 | } 5672 | batch_norm_param { 5673 | use_global_stats: true 5674 | moving_average_fraction: 0.95 5675 | } 5676 | } 5677 | layer { 5678 | name: "inception_resnet_v2_c3_3x1_scale" 5679 | type: "Scale" 5680 | bottom: "inception_resnet_v2_c3_3x1" 5681 | top: "inception_resnet_v2_c3_3x1" 5682 | scale_param { 5683 | bias_term: true 5684 | } 5685 | } 5686 | layer { 5687 | name: "inception_resnet_v2_c3_3x1_relu" 5688 | type: "PReLU" 5689 | bottom: "inception_resnet_v2_c3_3x1" 5690 | top: "inception_resnet_v2_c3_3x1" 5691 | } 5692 | layer { 5693 | name: "inception_resnet_v2_c3_concat" 5694 | type: "Concat" 5695 | bottom: "inception_resnet_v2_c3_1x1" 5696 | bottom: "inception_resnet_v2_c3_3x1" 5697 | top: "inception_resnet_v2_c3_concat" 5698 | } 5699 | layer { 5700 | name: "inception_resnet_v2_c3_up" 5701 | type: "Convolution" 5702 | bottom: "inception_resnet_v2_c3_concat" 5703 | top: "inception_resnet_v2_c3_up" 5704 | param { 5705 | lr_mult: 1 5706 | decay_mult: 1 5707 | } 5708 | param { 5709 | lr_mult: 2 5710 | decay_mult: 0 5711 | } 5712 | convolution_param { 5713 | num_output: 2080 5714 | pad: 0 5715 | kernel_size: 1 5716 | stride: 1 5717 | weight_filler { 5718 | type: "xavier" 5719 | std: 0.01 5720 | } 5721 | bias_filler { 5722 | type: "constant" 5723 | value: 0.2 5724 | } 5725 | } 5726 | } 5727 | layer { 5728 | name: "inception_resnet_v2_c3_up_bn" 5729 | type: "BatchNorm" 5730 | bottom: "inception_resnet_v2_c3_up" 5731 | top: "inception_resnet_v2_c3_up" 5732 | param { 5733 | lr_mult: 0.0 5734 | decay_mult: 0.0 5735 | } 5736 | param { 5737 | lr_mult: 0.0 5738 | decay_mult: 0.0 5739 | } 5740 | param { 5741 | lr_mult: 0.0 5742 | decay_mult: 0.0 5743 | } 5744 | batch_norm_param { 5745 | use_global_stats: true 5746 | moving_average_fraction: 0.95 5747 | } 5748 | } 5749 | layer { 5750 | name: "inception_resnet_v2_c3_up_scale" 5751 | type: "Scale" 5752 | bottom: "inception_resnet_v2_c3_up" 5753 | top: "inception_resnet_v2_c3_up" 5754 | scale_param { 5755 | bias_term: true 5756 | } 5757 | } 5758 | layer { 5759 | name: "inception_resnet_v2_c3_residual_eltwise" 5760 | type: "Eltwise" 5761 | bottom: "inception_resnet_v2_c2_residual_eltwise" 5762 | bottom: "inception_resnet_v2_c3_up" 5763 | top: "inception_resnet_v2_c3_residual_eltwise" 5764 | eltwise_param { 5765 | operation: SUM 5766 | } 5767 | } 5768 | 5769 | layer { 5770 | name: "conv6_1x1" 5771 | type: "Convolution" 5772 | bottom: "inception_resnet_v2_c3_residual_eltwise" 5773 | top: "conv6_1x1" 5774 | param { 5775 | lr_mult: 1 5776 | decay_mult: 1 5777 | } 5778 | param { 5779 | lr_mult: 2 5780 | decay_mult: 0 5781 | } 5782 | convolution_param { 5783 | num_output: 1536 5784 | pad: 0 5785 | kernel_size: 1 5786 | stride: 1 5787 | weight_filler { 5788 | type: "xavier" 5789 | std: 0.01 5790 | } 5791 | bias_filler { 5792 | type: "constant" 5793 | value: 0.2 5794 | } 5795 | } 5796 | } 5797 | layer { 5798 | name: "conv6_1x1_bn" 5799 | type: "BatchNorm" 5800 | bottom: "conv6_1x1" 5801 | top: "conv6_1x1" 5802 | param { 5803 | lr_mult: 0.0 5804 | decay_mult: 0.0 5805 | } 5806 | param { 5807 | lr_mult: 0.0 5808 | decay_mult: 0.0 5809 | } 5810 | param { 5811 | lr_mult: 0.0 5812 | decay_mult: 0.0 5813 | } 5814 | batch_norm_param { 5815 | use_global_stats: true 5816 | moving_average_fraction: 0.95 5817 | } 5818 | } 5819 | layer { 5820 | name: "conv6_1x1_scale" 5821 | type: "Scale" 5822 | bottom: "conv6_1x1" 5823 | top: "conv6_1x1" 5824 | scale_param { 5825 | bias_term: true 5826 | } 5827 | } 5828 | layer { 5829 | name: "conv6_1x1_relu" 5830 | type: "ReLU" 5831 | bottom: "conv6_1x1" 5832 | top: "conv6_1x1" 5833 | } 5834 | layer { 5835 | name: "pool_3x3_s1" 5836 | type: "Pooling" 5837 | bottom: "conv6_1x1" 5838 | top: "pool_3x3_s1" 5839 | pooling_param { 5840 | pool: AVE 5841 | global_pooling: true 5842 | } 5843 | } 5844 | layer { 5845 | name: "pool_3x3_s1_drop" 5846 | type: "Dropout" 5847 | bottom: "pool_3x3_s1" 5848 | top: "pool_3x3_s1_drop" 5849 | dropout_param { 5850 | dropout_ratio: 0.2 5851 | } 5852 | } 5853 | layer { 5854 | name: "fc5" 5855 | type: "InnerProduct" 5856 | bottom: "pool_3x3_s1_drop" 5857 | top: "fc5" 5858 | param { 5859 | lr_mult: 1 5860 | decay_mult: 1 5861 | } 5862 | param { 5863 | lr_mult: 2 5864 | decay_mult: 0 5865 | } 5866 | inner_product_param { 5867 | num_output: 128 5868 | weight_filler { 5869 | type: "xavier" 5870 | } 5871 | bias_filler { 5872 | type: "constant" 5873 | value: 0 5874 | } 5875 | } 5876 | } 5877 | --------------------------------------------------------------------------------