difference mAP with kINT8 Calibration

From deepstream-plugin project I run YOLOV2 detector network with kINT8 calibration that works OK. I delete the original calibration table file (sources/lib/calibration/yolov2-calibration.table) and fill some validation sample to data/calibration_images.txt file for the yolov2 calibration table re-generation. It encountered errors and failed to build TensorRT engine.

./sources/apps/trt-yolo/trt-yolo-app writeCalibrationCache sources/lib/calibration/yolov2-calibration.table trt-yolo-app: NvPluginYOLO.cu:58: virtual void nvinfer1::plugin::PReLU::configure(const nvinfer1::Dims*, int, const nvinfer1::Dims*, int, int): Assertion `mBatchDim == 1' failed. Aborted (core dumped) -- re-launch trt-yolo-app Building the TensorRT Engine... readCalibrationCache from file: sources/lib/calibration/yolov2-calibration.table Using cached calibration table to build the engine Building complete! Serializing the TensorRT Engine... Serialized plan file cached at location : sources/lib/models/yolov2-kINT8-batch1.engine Loading TRT Engine... Loading Complete! 

The TensorRT engine was generated successfully after re-launch trt-yolo-app. But the content of calibration table is difference with original. I test kIN8 mAP for model. It show 1 or 2 percent difference very calibration table re-generation. Is it a known symptom or not?

The test env: TensorRT-4.0.1.6-cuda-9.2, 1080ti, Ubuntu 16.0.4LTS with 4.15.0-43-generic kernel. Here are a sample of calibration table.

1 (Unnamed ITensor* 52): 3cdc9e53 (Unnamed ITensor* 44): 3d3ba1be (Unnamed ITensor* 38): 3d5e9ecc (Unnamed ITensor* 49): 3ce41530 (Unnamed ITensor* 20): 3d65bc0b (Unnamed ITensor* 35): 3d48d9cd (Unnamed ITensor* 55): 3cd89b86 (Unnamed ITensor* 41): 3d496fe9 (Unnamed ITensor* 33): 3d03ed95 (Unnamed ITensor* 30): 3d21ed83 (Unnamed ITensor* 5): 3cc08982 (Unnamed ITensor* 2): 3c008912 (Unnamed ITensor* 54): 3d088782 (Unnamed ITensor* 25): 3d33360b (Unnamed ITensor* 1): 4000890a (Unnamed ITensor* 13): 3d2c1de4 (Unnamed ITensor* 67): 3cfc4eb0 (Unnamed ITensor* 32): 3d4c2587 (Unnamed ITensor* 18): 3d30d396 (Unnamed ITensor* 23): 3d20e995 (Unnamed ITensor* 22): 3d3e3c98 (Unnamed ITensor* 16): 3d1ce3b0 (Unnamed ITensor* 46): 3d01f73f (Unnamed ITensor* 48): 3d0b0fcc (Unnamed ITensor* 63): 3d115915 (Unnamed ITensor* 71): 3ce024bc (Unnamed ITensor* 64): 3cefa77f (Unnamed ITensor* 29): 3d21ed83 (Unnamed ITensor* 26): 3d1f1ee3 data: 40000889 (Unnamed ITensor* 66): 3d1d45a7 (Unnamed ITensor* 57): 3d0419dd (Unnamed ITensor* 60): 3d028be7 (Unnamed ITensor* 4): 3cf1d39f (Unnamed ITensor* 61): 3cd94e6a (Unnamed ITensor* 58): 3cd11ab5 (Unnamed ITensor* 9): 3d1432a4 (Unnamed ITensor* 51): 3d0936c4 (Unnamed ITensor* 75): 3d0973dc (Unnamed ITensor* 19): 3d65bc0b (Unnamed ITensor* 71) copy: 3ce024bc (Unnamed ITensor* 67) copy: 3cfc4eb0 region_32: 3c011169 (Unnamed ITensor* 74): 3d2bdc55 (Unnamed ITensor* 70): 3ce024bc (Unnamed ITensor* 42): 3d008114 (Unnamed ITensor* 69): 3d30262a (Unnamed ITensor* 36): 3d04316d (Unnamed ITensor* 28): 3d6b5bde (Unnamed ITensor* 39): 3d004284 (Unnamed ITensor* 6): 3d3d3327 (Unnamed ITensor* 8): 3d767c7d (Unnamed ITensor* 15): 3d30d42e (Unnamed ITensor* 45): 3ce945a0 (Unnamed ITensor* 76): 3decdf3d (Unnamed ITensor* 12): 3d740386 (Unnamed ITensor* 10): 3d45a2e7 
  1. The “Assertion” problem is a known problem. It will be fixed in tensorRT 5.1 version.
  2. 2 factors affect calibration table
    a. The distribution of calibration images
    b. Different tensorRT version may have different calibration algorithm.