EG version upgrade to 1.3
[ealt-edge.git] / example-apps / PDD / pcb-defect-detection / libs / configs / cfgs.py
1 # -*- coding: utf-8 -*-
2 from __future__ import division, print_function, absolute_import
3 import os
4 import tensorflow as tf
5 # ------------------------------------------------
6 VERSION = 'FPN_Res101_0117_OHEM'
7 NET_NAME = 'resnet_v1_101'
8 ADD_BOX_IN_TENSORBOARD = True
9
10 # ---------------------------------------- System_config
11 ROOT_PATH = os.path.abspath('../')
12 print (20*"++--")
13 print (ROOT_PATH)
14 GPU_GROUP = "2"
15 SHOW_TRAIN_INFO_INTE = 10
16 SMRY_ITER = 100
17 SAVE_WEIGHTS_INTE = 10000
18
19 SUMMARY_PATH = ROOT_PATH + '/output/summary'
20 TEST_SAVE_PATH = ROOT_PATH + '/tools/test_result'
21 INFERENCE_IMAGE_PATH = ROOT_PATH + '/tools/inference_image'
22 INFERENCE_SAVE_PATH = ROOT_PATH + '/tools/inference_results'
23
24 if NET_NAME.startswith("resnet"):
25     weights_name = NET_NAME
26 elif NET_NAME.startswith("MobilenetV2"):
27     weights_name = "mobilenet/mobilenet_v2_1.0_224"
28 else:
29     raise NotImplementedError
30
31 PRETRAINED_CKPT = ROOT_PATH + '/data/pretrained_weights/' + weights_name + '.ckpt'
32 TRAINED_CKPT = os.path.join(ROOT_PATH, 'output/trained_weights')
33
34 EVALUATE_DIR = ROOT_PATH + '/output/evaluate_result_pickle/'
35 #test_annotate_path = '/home/yjr/DataSet/VOC/VOC_test/VOC2007/Annotations'
36 test_annotate_path = ROOT_PATH + '/data/pcb_train/Annotations'
37 # ------------------------------------------ Train config
38 RESTORE_FROM_RPN = False
39 IS_FILTER_OUTSIDE_BOXES = False
40 FIXED_BLOCKS = 0  # allow 0~3
41 USE_07_METRIC = False
42
43 RPN_LOCATION_LOSS_WEIGHT = 1.
44 RPN_CLASSIFICATION_LOSS_WEIGHT = 1.0
45
46 FAST_RCNN_LOCATION_LOSS_WEIGHT = 1.0
47 FAST_RCNN_CLASSIFICATION_LOSS_WEIGHT = 1.0
48 RPN_SIGMA = 3.0
49 FASTRCNN_SIGMA = 1.0
50
51 MUTILPY_BIAS_GRADIENT = None   # 2.0  # if None, will not multipy
52 GRADIENT_CLIPPING_BY_NORM = None   # 10.0  if None, will not clip
53
54 EPSILON = 1e-5
55 MOMENTUM = 0.9
56 LR = 0.001  # 0.001  # 0.0003
57 #DECAY_STEP = [60000, 80000]  # 50000, 70000
58 DECAY_STEP = [10000, 20000]  # 50000, 70000
59 #MAX_ITERATION = 150000
60 MAX_ITERATION = 30000
61
62 # ------------------------------------------- Data_preprocess_config
63 DATASET_NAME = 'pcb'  # 'ship', 'spacenet', 'pascal', 'coco'
64 # PIXEL_MEAN = [123.68, 116.779, 103.939]  # R, G, B. In tf, channel is RGB. In openCV, channel is BGR
65 PIXEL_MEAN = [21.25, 85.936, 28.729]
66 IMG_SHORT_SIDE_LEN =  600  # 600
67 IMG_MAX_LENGTH =  3000  # 1000
68 CLASS_NUM = 6
69
70 # --------------------------------------------- Network_config
71 BATCH_SIZE = 1
72 INITIALIZER = tf.random_normal_initializer(mean=0.0, stddev=0.01)
73 BBOX_INITIALIZER = tf.random_normal_initializer(mean=0.0, stddev=0.001)
74 WEIGHT_DECAY = 0.00004 if NET_NAME.startswith('Mobilenet') else 0.0001
75
76 # ---------------------------------------------Anchor config
77 USE_CENTER_OFFSET = False
78
79 LEVLES = ['P2', 'P3', 'P4', 'P5', 'P6']
80 # BASE_ANCHOR_SIZE_LIST = [32, 64, 128, 256, 512]  # addjust the base anchor size for voc.
81 BASE_ANCHOR_SIZE_LIST = [15, 25, 40, 60, 80]  # addjust the base anchor size for voc.
82 #BASE_ANCHOR_SIZE_LIST = [8, 15, 25, 40, 60]
83 ANCHOR_STRIDE_LIST = [4, 8, 16, 32, 64]
84 ANCHOR_SCALES = [2., 3., 4.]
85 ANCHOR_RATIOS = [2., 3., 4., 5.]
86 # ANCHOR_SCALES = [1.0]
87 # ANCHOR_RATIOS = [0.5, 1., 2.0]
88 ROI_SCALE_FACTORS = [10., 10., 5.0, 5.0]
89 ANCHOR_SCALE_FACTORS = None
90
91 # --------------------------------------------FPN config
92 SHARE_HEADS = True
93 KERNEL_SIZE = 3
94 RPN_IOU_POSITIVE_THRESHOLD = 0.7
95 RPN_IOU_NEGATIVE_THRESHOLD = 0.3
96 TRAIN_RPN_CLOOBER_POSITIVES = False
97
98 RPN_MINIBATCH_SIZE = 256
99 RPN_POSITIVE_RATE = 0.5
100 RPN_NMS_IOU_THRESHOLD = 0.7
101 RPN_TOP_K_NMS_TRAIN = 12000
102 #RPN_MAXIMUM_PROPOSAL_TARIN = 2000
103 RPN_MAXIMUM_PROPOSAL_TARIN = 2000
104
105 RPN_TOP_K_NMS_TEST = 6000
106 RPN_MAXIMUM_PROPOSAL_TEST = 1000
107
108 # specific settings for FPN
109 # FPN_TOP_K_PER_LEVEL_TRAIN = 2000
110 # FPN_TOP_K_PER_LEVEL_TEST = 1000
111
112 # -------------------------------------------Fast-RCNN config
113 ROI_SIZE = 14
114 ROI_POOL_KERNEL_SIZE = 2
115 #USE_DROPOUT = False
116 USE_DROPOUT = True
117 KEEP_PROB = 1.0
118 SHOW_SCORE_THRSHOLD = 0.6  # only show in tensorboard
119
120 #FAST_RCNN_NMS_IOU_THRESHOLD = 0.3  # 0.6
121 FAST_RCNN_NMS_IOU_THRESHOLD = 0.3
122 FAST_RCNN_NMS_MAX_BOXES_PER_CLASS = 100
123 FAST_RCNN_IOU_POSITIVE_THRESHOLD = 0.5
124 FAST_RCNN_IOU_NEGATIVE_THRESHOLD = 0.0   # 0.1 < IOU < 0.5 is negative
125 FAST_RCNN_MINIBATCH_SIZE = 256  # if is -1, that is train with OHEM
126 # FAST_RCNN_MINIBATCH_SIZE = -1
127 FAST_RCNN_POSITIVE_RATE = 0.25
128
129 #ADD_GTBOXES_TO_TRAIN = False
130 ADD_GTBOXES_TO_TRAIN = True
131
132
133