quantization doc update
authorManu Mathew <a0393608@ti.com>
Wed, 29 Apr 2020 12:42:21 +0000 (18:12 +0530)
committerManu Mathew <a0393608@ti.com>
Wed, 29 Apr 2020 12:42:38 +0000 (18:12 +0530)
README.md
docs/Quantization.md

index 40193e2c8d18be75714ce8c7c98a69708558603b..59b6fb1daafcdd73c4718c29b1f2189953de8793 100644 (file)
--- a/README.md
+++ b/README.md
@@ -27,30 +27,21 @@ This code also includes tools for **Quantization Aware Training** that can outpu
     ```
 
 ## Examples
-The following examples are currently available. Click on each of the links below to go into the full description of the example.<br>
-    <br>
-- **Image Classification**<br>
-    -- [**Image Classification**](docs/Image_Classification.md)<br>
-    <br>
-- **Pixel2Pixel Prediction**<br>
-    -- [**Semantic Segmentation**](docs/Semantic_Segmentation.md)<br>
-    -- [Depth Estimation](docs/Depth_Estimation.md)<br>
-    -- [Motion Segmentation](docs/Motion_Segmentation.md)<br>
-    -- [**Multi Task Estimation**](docs/Multi_Task_Learning.md)<br>
-    <br>
-- **Object Detection**<br>
-    -- Object Detection - coming soon..<br>
-    -- Object Keypoint Estimation - coming soon..<br>
-    <br>
-- **Quantization**<br>
-    -- [**Quantization Aware Training**](docs/Quantization.md)<br>
-    <br>
+- [**Image Classification**](docs/Image_Classification.md)<br>
+- [**Semantic Segmentation**](docs/Semantic_Segmentation.md)<br>
+- [Depth Estimation](docs/Depth_Estimation.md)<br>
+- [Motion Segmentation](docs/Motion_Segmentation.md)<br>
+- [**Multi Task Estimation**](docs/Multi_Task_Learning.md)<br>
+- Object Detection - coming soon..<br>
+- Object Keypoint Estimation - coming soon..<br>
+- [**Quantization Aware Training**](docs/Quantization.md)<br>
+
+Above are some of the examples are currently available. Click on each of the links above to go into the full description of the example.
 
 
-Some of the common training and validation commands are provided in shell scripts (.sh files) in the root folder.
 
 ## Additional Information
-For information on other similar devkits, please visit:<br> 
+- Some of the common training and validation commands are provided in shell scripts (.sh files) in the root folder.<br>
 - Landing Page: [https://github.com/TexasInstruments/jacinto-ai-devkit](https://github.com/TexasInstruments/jacinto-ai-devkit)<br>
 - Actual Git Repositories: [https://git.ti.com/jacinto-ai-devkit](https://git.ti.com/jacinto-ai-devkit)<br>
 
index a11e3466fe83bc0e2b03955f0970142d53324478..0e111d1dd60532246507d5991e4d1f16fe9924a3 100644 (file)
@@ -10,12 +10,11 @@ TI Deep Learning Library (TIDL) is a highly optimized runtime for Deep Learning
 - Quantization Aware Training (QAT): This is needed if accuracy obtained with Calibration is not satisfactory (eg. Quantization Accuracy Drop >2%). QAT operates as a second phase after the initial training in floating point is done. We have provide this PyTorch Jacinto AI DevKit to enable QAT with PyTorch. There also a plan to make TensorFlow Jacinto AI DevKit available. Further Details are available at: [https://github.com/TexasInstruments/jacinto-ai-devkit](https://github.com/TexasInstruments/jacinto-ai-devkit)<br>
 
 ## Guidelines For Training To Get Best Accuracy With Quantization
-To get best accuracy at the quantization stage, it is important that the model is trained carefully, following the guidelines (even during the floating point training). Having spent a lot of time solving quantization issues, we would like to highlight that following these guidelines is of at most importance. If these guidelines are not followed, there is a high risk that the tools and techniques described here may not solve the accuracy drop due to quantization.<br>
 - We recommend that the training uses sufficient amount of regularization / weight decay. Regularization / weight decay ensures that the weights, biases and other parameters (if any) are small and compact - this is good for quantization. These features are supported in most of the popular training framework.<br>
 - We have noticed that some training code bases do not use weight decay for biases. Some other code bases do not use weight decay for the parameters in Depthwise convolution layers. All these are bad strategies for quantization. These poor choices done (probably to get a 0.1% accuracy lift with floating point) will result in a huge degradation in fixed point - sometimes several percentage points. The weight decay factor should not be too small. We have used a weight decay factor of 1e-4 for training several networks and we highly recommend a similar value. Please do no use small values such as 1e-5.<br>
 - We also highly recommend to use Batch Normalization immediately after every Convolution layer. This helps the feature map to be properly regularized/normalized. If this is not done, there can be accuracy degradation with quantization. This especially true for Depthwise Convolution layers. However applying Batch Normalization to the very last Convolution layer (for example, the prediction layer in segmentation/object detection network) may hurt accuracy and can be avoided.<br>
 
-To summarize, if you are getting poor accuracy with quntization, please check the following:<br>
+To get best accuracy at the quantization stage, it is important that the model is trained carefully, following the guidelines (even during the floating point training). Having spent a lot of time solving quantization issues, we would like to highlight that following these guidelines are of at most importance. Otherwise, there is a high risk that the tools and techniques described here may not be completely effective in solving the accuracy drop due to quantization. To summarize, if you are getting poor accuracy with quntization, please check the following:<br>
 - Weight decay is applied to all layers / parameters and that weight decay factor is good.<br>
 - Ensure that the Convolution layers in the network have Batch Normalization layers immediately after that. The only exception allowed to this rule is for the very last Convolution layer in the network (for example the prediction layer in a segmentation network or detection network, where adding Batch normalization might hurt the floating point accuracy).<br>