您的位置:首页 > 其它

SSD,Faster RCNN,YOLO V2

2018-01-30 14:40 691 查看
Based on my understanding, there are main 3 types of objection detection architecture as below:- SSD
- Faster RCNN
- YOLO V2

 感谢下面的文章:
http://blog.csdn.net/u010167269/article/details/52563573
hard negative mining
data augmentation
ssd_mobilenet_v1_pets.config 配置文件如下:# SSD with Mobilenet v1, configured for Oxford-IIIT Pets Dataset.
# Users should configure the fine_tune_checkpoint field in the train config as
# well as the label_map_path and input_path fields in the train_input_reader and
# eval_input_reader. Search for "PATH_TO_BE_CONFIGURED" to find the fields that
# should be configured.

model {
ssd {
num_classes: 1 # 检测的类别
box_coder {
faster_rcnn_box_coder {
y_scale: 10.0
x_scale: 10.0
height_scale: 5.0
width_scale: 5.0
}
}
matcher {
argmax_matcher {
matched_threshold: 0.5
unmatched_threshold: 0.5
ignore_thresholds: false
negatives_lower_than_unmatched: true
force_match_for_each_row: true
}
}
similarity_calculator {
iou_similarity {
}
}
anchor_generator {
ssd_anchor_generator {
num_layers: 6 # convolutional feature layers : 6层
min_scale: 0.2 # 计算每一层各个框的最小框(aspect_ratios=1)的大小 Sk=Smin+((Smax-Smin)/(m-1))*(k-1)
max_scale: 0.95           #  k:1...6; min_scale:Smin; max_scale:Smax
aspect_ratios: 1.0        #  框宽=框高=(0.2+((0.95-0.2)/(6-1))*(k-1))*300   300为输入图片尺寸;
#  对于aspect_ratios=1;论文里面提到增加了一个框:Sk'=sqrt(Sk*Sk+1);
#  所以此处有5个aspect_ratios;但有6个框
aspect_ratios: 2.0 # 计算方法同上,只是框宽=(0.2+((0.95-0.2)/(6-1))*(k-1))*sqrt(2)*300 # 框高=(0.2+((0.95-0.2)/(6-1))*(k-1))/sqrt(2)*300 aspect_ratios: 0.5 aspect_ratios: 3.0 aspect_ratios: 0.3333 } } image_resizer { fixed_shape_resizer { height: 300 width: 300 } } box_predictor { convolutional_box_predictor { min_depth: 0 max_depth: 0 num_layers_before_predictor: 0 use_dropout: false dropout_keep_probability: 0.8 kernel_size: 1 box_code_size: 4 apply_sigmoid_to_scores: false conv_hyperparams { activation: RELU_6, regularizer { l2_regularizer { weight: 0.00004 } } initializer { truncated_normal_initializer { stddev: 0.03 mean: 0.0 } } batch_norm { train: true, scale: true, center: true, decay: 0.9997, epsilon: 0.001, } } } } feature_extractor { type: 'ssd_mobilenet_v1' min_depth: 16 depth_multiplier: 1.0 conv_hyperparams { activation: RELU_6, regularizer { l2_regularizer { weight: 0.00004 } } initializer { truncated_normal_initializer { stddev: 0.03 mean: 0.0 } } batch_norm { train: true, scale: true, center: true, decay: 0.9997, epsilon: 0.001, } } } loss { classification_loss { weighted_sigmoid { anchorwise_output: true } } localization_loss { weighted_smooth_l1 { anchorwise_output: true } } hard_example_miner { num_hard_examples: 3000 iou_threshold: 0.99 loss_type: CLASSIFICATION max_negatives_per_positive: 3 min_negatives_per_image: 0 } classification_weight: 1.0 localization_weight: 1.0 } normalize_loss_by_num_matches: true post_processing { batch_non_max_suppression { score_threshold: 1e-8 iou_threshold: 0.6 max_detections_per_class: 100 max_total_detections: 100 } score_converter: SIGMOID } }}train_config: { batch_size: 5 optimizer { rms_prop_optimizer: { learning_rate: { exponential_decay_learning_rate { initial_learning_rate: 0.004 decay_steps: 800720 decay_factor: 0.95 } } momentum_optimizer_value: 0.9 decay: 0.9 epsilon: 1.0 } } fine_tune_checkpoint: "ssd_mobilenet_v1_coco_11_06_2017/model.ckpt" from_detection_checkpoint: true # Note: The below line limits the training process to 200K steps, which we # empirically found to be sufficient enough to train the pets dataset. This # effectively bypasses the learning rate schedule (the learning rate will # never decay). Remove the below line to train indefinitely. #num_steps: 200000 data_augmentation_options { random_horizontal_flip { } } data_augmentation_options { ssd_random_crop { } }}train_input_reader: { tf_record_input_reader { input_path: "data/train.record" } label_map_path: "data/object_detection.pbtxt"}eval_config: { num_examples: 40 # Note: The below line limits the evaluation process to 10 evaluations. # Remove the below line to evaluate indefinitely. #max_evals: 10}eval_input_reader: { tf_record_input_reader { input_path: "data/test.record" } label_map_path: "training/object_detection.pbtxt" shuffle: false num_readers: 1}
训练结果可能出现各种各样的情况:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐