release commit
authorManu Mathew <a0393608@ti.com>
Wed, 19 Feb 2020 06:38:42 +0000 (12:08 +0530)
committerManu Mathew <a0393608@ti.com>
Wed, 19 Feb 2020 06:38:42 +0000 (12:08 +0530)
docs/Quantization.md
run_quantization_example.sh
scripts/train_classification_main.py
scripts/train_depth_main.py
scripts/train_motion_segmentation_main.py
scripts/train_pixel2pixel_multitask_main.py
scripts/train_segmentation_main.py

index e2cb297c588f6633ab22e02af9c20edf610d9d0f..7f9ef3d11271ad9024291cb0866a773999576398 100644 (file)
@@ -75,15 +75,18 @@ As can be seen, it is easy to incorporate QuantTrainModule in your existing trai
 
 Optional: We have provided a utility function called pytorch_jacinto_ai.xnn.utils.load_weights() that prints which parameters are loaded correctly and which are not - you can use this load function if needed to ensure that your parameters are loaded correctly.
 
-Example commands for QAT:
+####  Example commands for QAT
+ImageNet Classification: *In this example, only a fraction of the training samples are used in each training epoch to speedup training. Remove the argument --epoch_size to use all the training samples.*
 ```
-python ./scripts/train_classification_main.py --dataset_name image_folder_classification --model_name mobilenetv2_tv_x1 --data_path ./data/datasets/image_folder_classification --pretrained https://download.pytorch.org/models/mobilenet_v2-b0353104.pth --batch_size 64 --quantize True --epochs 150 --epoch_size 1000 --lr 5e-5 --evaluate_start False
+python ./scripts/train_classification_main.py --dataset_name image_folder_classification --model_name mobilenetv2_tv_x1 --data_path ./data/datasets/image_folder_classification --pretrained https://download.pytorch.org/models/mobilenet_v2-b0353104.pth --batch_size 64 --quantize True --epochs 50 --epoch_size 1000 --lr 1e-5 --evaluate_start False
 ```
 
+Cityscapes Semantic Segmentation:<br>
 ```
-python ./scripts/train_segmentation_main.py --dataset_name cityscapes_segmentation --model_name deeplabv3lite_mobilenetv2_tv --data_path ./data/datasets/cityscapes/data --img_resize 384 768 --output_size 1024 2048 --gpus 0 1 --pretrained ./data/modelzoo/semantic_segmentation/cityscapes/deeplabv3lite-mobilenetv2/cityscapes_segmentation_deeplabv3lite-mobilenetv2_2019-06-26-08-59-32.pth --batch_size 8 --quantize True --epochs 150 --lr 5e-5 --evaluate_start False
+python ./scripts/train_segmentation_main.py --dataset_name cityscapes_segmentation --model_name deeplabv3lite_mobilenetv2_tv --data_path ./data/datasets/cityscapes/data --img_resize 384 768 --output_size 1024 2048 --gpus 0 1 --pretrained ./data/modelzoo/semantic_segmentation/cityscapes/deeplabv3lite-mobilenetv2/cityscapes_segmentation_deeplabv3lite-mobilenetv2_2019-06-26-08-59-32.pth --batch_size 8 --quantize True --epochs 50 --lr 1e-5 --evaluate_start False
 ```
 
+For more examples, please see the files run_qunatization_example.sh and examples/quantization_example.py
 
 ## Important Notes - read carefully
 - **Multi-GPU training/calibration/validation with DataParallel is not yet working with our quantization modules** QuantTrainModule/QuantCalibrateModule/QuantTestModule. We recommend not to wrap the modules in DataParallel if you are training/calibrating/testing with quantization - i.e. if your model is wrapped in QuantTrainModule/QuantCalibrateModule/QuantTestModule.<br>
index 5380576f4bce406d29e65db10321e9013334a4cb..a9e550edce7e6f0ba8713971220ec1f31f6edd16 100755 (executable)
@@ -22,8 +22,8 @@ exec &> >(tee -a "$log_file")
 declare -A model_pretrained=(
   [mobilenet_v2]=https://download.pytorch.org/models/mobilenet_v2-b0353104.pth
   [resnet50]=https://download.pytorch.org/models/resnet50-19c8e357.pth
-  [mobilenetv2_shicai]='./data/modelzoo/pretrained/pytorch/others/shicai/MobileNet-Caffe/mobilenetv2_shicai_rgb.tar'
   [shufflenetv2_x1.0]=https://download.pytorch.org/models/shufflenetv2_x1-5666bf0f80.pth
+#  [mobilenetv2_shicai]='./data/modelzoo/pretrained/pytorch/others/shicai/MobileNet-Caffe/mobilenetv2_shicai_rgb.tar'
 )
 
 # ----------------------------------
index 51d619264753cf4994750a8ca769a0de245a4c08..a161cd7d40f3c043efc877f8f3a4f6ad4e8bba85 100755 (executable)
@@ -159,7 +159,7 @@ if 'training' in args.phase and (not args.quantize):
     args.phase = 'training_quantize'
     args.quantize = True
     args.lr = 1e-5
-    args.epochs = 25
+    args.epochs = 50
     # quantized training will use only one GPU in the engine - so reduce the batch_size
     num_gpus = len(str(os.environ["CUDA_VISIBLE_DEVICES"]).split(','))
     args.batch_size = args.batch_size//num_gpus
index acf1ad5b5ec3446503d450fe6481a020b4b61951..d3694479d4b9a3e4aec2ac710fd68e4a44d5a9d4 100755 (executable)
@@ -155,7 +155,7 @@ if 'training' in args.phase and (not args.quantize):
     args.phase = 'training_quantize'
     args.quantize = True
     args.lr = 1e-5
-    args.epochs = 25
+    args.epochs = 50
     # quantized training will use only one GPU in the engine - so reduce the batch_size
     num_gpus = len(str(os.environ["CUDA_VISIBLE_DEVICES"]).split(',')) if ("CUDA_VISIBLE_DEVICES" in os.environ) else None
     args.batch_size = (args.batch_size//num_gpus) if (num_gpus is not None) else args.batch_size
index 9686aa3d1f7eb7f8272aab74c1b0e75658a41bd6..d1e190eaeb11f55a563a77ef03247f0f1b0cb63f 100755 (executable)
@@ -150,7 +150,7 @@ if 'training' in args.phase and (not args.quantize):
     args.phase = 'training_quantize'
     args.quantize = True
     args.lr = 1e-5
-    args.epochs = 25
+    args.epochs = 50
     # quantized training will use only one GPU in the engine - so reduce the batch_size
     num_gpus = len(str(os.environ["CUDA_VISIBLE_DEVICES"]).split(',')) if ("CUDA_VISIBLE_DEVICES" in os.environ) else None
     args.batch_size = (args.batch_size//num_gpus) if (num_gpus is not None) else args.batch_size
index 8b7e3f3caaa3f5f485b5d79ecd0eb106fb189ebc..f9513d403becdcda77859a00a7608298d9cb5a8d 100755 (executable)
@@ -154,7 +154,7 @@ if 'training' in args.phase and (not args.quantize):
     args.phase = 'training_quantize'
     args.quantize = True
     args.lr = 1e-5
-    args.epochs = 25
+    args.epochs = 50
     # quantized training will use only one GPU in the engine - so reduce the batch_size
     num_gpus = len(str(os.environ["CUDA_VISIBLE_DEVICES"]).split(',')) if ("CUDA_VISIBLE_DEVICES" in os.environ) else None
     args.batch_size = (args.batch_size//num_gpus) if (num_gpus is not None) else args.batch_size
index 8435b7ea5c3505060803f7eb7d58d508d5263b7b..24e47e5d7903830d030a3553212b195ec3f6f6b1 100755 (executable)
@@ -152,7 +152,7 @@ if 'training' in args.phase and (not args.quantize):
     args.phase = 'training_quantize'
     args.quantize = True
     args.lr = 1e-5
-    args.epochs = 25
+    args.epochs = 50
     # quantized training will use only one GPU in the engine - so reduce the batch_size
     num_gpus = len(str(os.environ["CUDA_VISIBLE_DEVICES"]).split(',')) if ("CUDA_VISIBLE_DEVICES" in os.environ) else None
     args.batch_size = (args.batch_size//num_gpus) if (num_gpus is not None) else args.batch_size