Yiyao Wang commited on
Commit
d30c3db
·
1 Parent(s): 46b1f95

revise the quantize-ort to quantize crnn into int8 with high accuracy (#94)

Browse files

* revise the quantize-ort to quantize crnn into int8 with high accuracy

* change the comment to English

* reduce supported suffix

tools/quantize/quantize-ort.py CHANGED
@@ -29,9 +29,10 @@ class DataReader(CalibrationDataReader):
29
 
30
  def get_calibration_data(self, image_dir):
31
  blobs = []
 
32
  for image_name in os.listdir(image_dir):
33
  image_name_suffix = image_name.split('.')[-1].lower()
34
- if image_name_suffix != 'jpg' and image_name_suffix != 'jpeg':
35
  continue
36
  img = cv.imread(os.path.join(image_dir, image_name))
37
  img = self.transforms(img)
@@ -55,13 +56,13 @@ class Quantize:
55
 
56
  def check_opset(self, convert=True):
57
  model = onnx.load(self.model_path)
58
- if model.opset_import[0].version != 11:
59
- print('\tmodel opset version: {}. Converting to opset 11'.format(model.opset_import[0].version))
60
- # convert opset version to 11
61
- model_opset11 = version_converter.convert_version(model, 11)
62
  # save converted model
63
- output_name = '{}-opset11.onnx'.format(self.model_path[:-5])
64
- onnx.save_model(model_opset11, output_name)
65
  # update model_path for quantization
66
  self.model_path = output_name
67
 
@@ -98,7 +99,7 @@ models=dict(
98
  # TBD: DB-EN & DB-CN
99
  crnn_en=Quantize(model_path='../../models/text_recognition_crnn/text_recognition_CRNN_EN_2021sep.onnx',
100
  calibration_image_dir='../../benchmark/data/text',
101
- transforms=Compose([Resize(size=(100, 32)), ColorConvert(ctype=cv.COLOR_BGR2GRAY)])),
102
  crnn_cn=Quantize(model_path='../../models/text_recognition_crnn/text_recognition_CRNN_CN_2021nov.onnx',
103
  calibration_image_dir='../../benchmark/data/text',
104
  transforms=Compose([Resize(size=(100, 32))]))
 
29
 
30
  def get_calibration_data(self, image_dir):
31
  blobs = []
32
+ supported = ["jpg", "png"] # supported file suffix
33
  for image_name in os.listdir(image_dir):
34
  image_name_suffix = image_name.split('.')[-1].lower()
35
+ if image_name_suffix not in supported:
36
  continue
37
  img = cv.imread(os.path.join(image_dir, image_name))
38
  img = self.transforms(img)
 
56
 
57
  def check_opset(self, convert=True):
58
  model = onnx.load(self.model_path)
59
+ if model.opset_import[0].version != 13:
60
+ print('\tmodel opset version: {}. Converting to opset 13'.format(model.opset_import[0].version))
61
+ # convert opset version to 13
62
+ model_opset13 = version_converter.convert_version(model, 13)
63
  # save converted model
64
+ output_name = '{}-opset.onnx'.format(self.model_path[:-5])
65
+ onnx.save_model(model_opset13, output_name)
66
  # update model_path for quantization
67
  self.model_path = output_name
68
 
 
99
  # TBD: DB-EN & DB-CN
100
  crnn_en=Quantize(model_path='../../models/text_recognition_crnn/text_recognition_CRNN_EN_2021sep.onnx',
101
  calibration_image_dir='../../benchmark/data/text',
102
+ transforms=Compose([Resize(size=(100, 32)), Normalize(mean=[127.5, 127.5, 127.5], std=[127.5, 127.5, 127.5]), ColorConvert(ctype=cv.COLOR_BGR2GRAY)])),
103
  crnn_cn=Quantize(model_path='../../models/text_recognition_crnn/text_recognition_CRNN_CN_2021nov.onnx',
104
  calibration_image_dir='../../benchmark/data/text',
105
  transforms=Compose([Resize(size=(100, 32))]))
tools/quantize/transform.py CHANGED
@@ -41,6 +41,7 @@ class Normalize:
41
  self.std = std
42
 
43
  def __call__(self, img):
 
44
  if self.mean is not None:
45
  img[:, :, 0] = img[:, :, 0] - self.mean[0]
46
  img[:, :, 1] = img[:, :, 1] - self.mean[1]
 
41
  self.std = std
42
 
43
  def __call__(self, img):
44
+ img = img.astype("float32")
45
  if self.mean is not None:
46
  img[:, :, 0] = img[:, :, 0] - self.mean[0]
47
  img[:, :, 1] = img[:, :, 1] - self.mean[1]