release commit
authorManu Mathew <a0393608@ti.com>
Sat, 18 Jan 2020 17:22:47 +0000 (22:52 +0530)
committerManu Mathew <a0393608@ti.com>
Sat, 18 Jan 2020 17:22:47 +0000 (22:52 +0530)
docs/Quantization.md
scripts/train_depth_main.py
scripts/train_segmentation_main.py

index eee2ef2795ff199b827c8adb2614aeeec168cdd4..c4cffeb8695aebf043310f232a530e80f0ae227a 100644 (file)
@@ -34,7 +34,6 @@ Depending on how the activation range is collected and Quantization is done, we
 - Simple Calib: Calibration includes PACT2 for activation clipping, running average and range collection. In this method we use min-max for activation range collection (no histogram).
 - **Advanced Calib**: Calibration includes PACT2 with histogram based ranges, Weight clipping, Bias correction. 
 - Advanced DW Calib: Calibration includes Per-Channel Quantization of Weights for Depthwise layers, PACT2 with histogram based ranges, Weight clipping, Bias correction. One of the earliest papers that clearly explained the benefits of Per-Channel Quantization for weights only (while the activations are quantized as Per-Tensor) is [[6]]
-- Advanced Per-Chan Calib: Calibration includes Per-Channel Quantization for all layers, PACT2 with histogram based ranges, Weight clipping, Bias correction.
 
 Out of these methods, **Advanced Calib** is our recommended Calibration method as of now, as it has the best trade-off between the Accuracy and the features required during fixed point inference. All the Calibration scripts that we have in this page uses "Advanced Calib" by default. Other Calibration methods described here are for information only. 
 
@@ -171,11 +170,11 @@ The table below shows the Quantized Accuracy with various Calibration and method
 
 ###### Dataset: ImageNet Classification (Image Classification)
 
-|Mode Name               |Backbone   |Stride|Resolution|Float Acc%|Simple Calib Acc%|Advanced Calib Acc%|Advanced DW Calib Acc%|Advanced Per-Chan Calib Acc%|Trained Quant Acc%|
-|----------              |-----------|------|----------|--------- |---              |---                |---                   |---                         |---               |
-|ResNet50(TorchVision)   |ResNet50   |32    |224x224   |**76.15** |75.56            |**75.56**          |75.56                 |75.39                       |                  |
-|MobileNetV2(TorchVision)|MobileNetV2|32    |224x224   |**71.89** |67.77            |**68.39**          |69.34                 |69.46                       |**70.55**         |
-|MobileNetV2(Shicai)     |MobileNetV2|32    |224x224   |**71.44** |45.60            |**68.81**          |70.65                 |70.75                       |                  |
+|Mode Name               |Backbone   |Stride|Resolution|Float Acc%|Simple Calib Acc%|Advanced Calib Acc%|Advanced DW Calib Acc%|Trained Quant Acc%|
+|----------              |-----------|------|----------|--------- |---              |---                |---                   |---               |
+|ResNet50(TorchVision)   |ResNet50   |32    |224x224   |**76.15** |75.56            |**75.56**          |75.56                 |                  |
+|MobileNetV2(TorchVision)|MobileNetV2|32    |224x224   |**71.89** |67.77            |**68.39**          |69.34                 |**70.55**         |
+|MobileNetV2(Shicai)     |MobileNetV2|32    |224x224   |**71.44** |45.60            |**68.81**          |70.65                 |                  |
 
 Notes:
 - For Image Classification, the accuracy measure used is % Top-1 Classification Accuracy. 'Top-1 Classification Accuracy' is abbreviated by Acc in the above table.<br>
@@ -183,9 +182,9 @@ Notes:
 
 ###### Dataset: Cityscapes Segmentation (Semantic Segmentation)
 
-|Mode Name               |Backbone   |Stride|Resolution|Float Acc%|Simple Calib Acc%|Advanced Calib Acc%|Advanced DW Calib Acc%|Advanced Per-Chan Calib Acc%|Trained Quant Acc%|
-|----------              |-----------|------|----------|----------|---              |---                |---                   |---                         |---               |
-|DeepLabV3Lite           |MobileNetV2|16    |768x384   |**69.13** |61.71            |**67.95**          |68.47                 |68.56                       |**68.26**         |
+|Mode Name               |Backbone   |Stride|Resolution|Float Acc%|Simple Calib Acc%|Advanced Calib Acc%|Advanced DW Calib Acc%|Trained Quant Acc%|
+|----------              |-----------|------|----------|----------|---              |---                |---                   |---               |
+|DeepLabV3Lite           |MobileNetV2|16    |768x384   |**69.13** |61.71            |**67.95**          |68.47                 |**68.26**         |
 
 Notes: 
  - For Semantic Segmentation, the accuracy measure used in MeanIoU Accuracy. 'MeanIoU Accuracy' is abbreviated by Acc in the above table.
index c5e7ee05bcc37db8b9ab9bbf782f4640fd18ebcd..ae179ac6c10271ff446db94734c200cbad30847a 100755 (executable)
@@ -143,8 +143,8 @@ for key in vars(cmds):
 train_pixel2pixel.main(args)
 
 ################################
-# In addition run a quantized calibration, starting from the trained model
-if 'training'in args.phase and (not args.quantize):
+# In addition run a quantization aware training, starting from the trained model
+if 'training' in args.phase and (not args.quantize):
     save_path = train_pixel2pixel.get_save_path(args)
     args.pretrained = os.path.join(save_path, 'model_best.pth.tar')
     args.phase = 'training_quantize'
@@ -158,7 +158,7 @@ if 'training'in args.phase and (not args.quantize):
 #
 
 ################################
-# In addition run a separate validation, starting from the calibrated model - to estimate the quantized accuracy accurately
+# In addition run a separate validation
 if 'training' in args.phase or 'calibration' in args.phase:
     save_path = train_pixel2pixel.get_save_path(args)
     args.pretrained = os.path.join(save_path, 'model_best.pth.tar')
@@ -166,4 +166,3 @@ if 'training' in args.phase or 'calibration' in args.phase:
     args.quantize = True
     train_pixel2pixel.main(args)
 #
-
index e7d884e41216200d25e80d037dcfe23f291e12bb..94c18aab8de0106b32fc630e7f06799e96a60745 100755 (executable)
@@ -32,7 +32,7 @@ parser.add_argument('--rand_crop', type=int, nargs=2, default=None, help='random
 parser.add_argument('--output_size', type=int, nargs=2, default=None, help='output size of the evaluation - prediction/groundtruth. this is not used while training as it blows up memory requirement')
 parser.add_argument('--pretrained', type=str, default=None, help='pretrained model')
 parser.add_argument('--resume', type=str, default=None, help='resume an unfinished training from this model')
-parser.add_argument('--phase', type=str, default=None, help='train/calibration/validation')
+parser.add_argument('--phase', type=str, default=None, help='training/calibration/validation')
 parser.add_argument('--evaluate_start', type=str2bool, default=None, help='Whether to run validation before the training')
 #
 parser.add_argument('--quantize', type=str2bool, default=None, help='Quantize the model')