1. 将训练好的 GluonCV 网络导出为 JSON

如果您喜欢在 Python 中使用 GluonCV 进行训练和测试,那真是太棒了。在某些时候,您可能会问:“是否可以将现有模型部署到 Python 环境之外的地方?”

答案是“绝对可以!”,而且实际上超级简单。

本文将向您展示如何导出网络/模型以在 Python 之外的地方使用。

import gluoncv as gcv
from gluoncv.utils import export_block

首先,我们需要一个可以用来尝试的网络,一个预训练好的网络再好不过了

net = gcv.model_zoo.get_model('resnet18_v1', pretrained=True)
export_block('resnet18_v1', net, preprocess=True, layout='HWC')
print('Done.')

输出

Downloading /root/.mxnet/models/resnet18_v1-a0666292.zip from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/resnet18_v1-a0666292.zip...

  0%|          | 0/42434 [00:00<?, ?KB/s]
  0%|          | 100/42434 [00:00<00:52, 799.68KB/s]
  1%|1         | 506/42434 [00:00<00:18, 2259.47KB/s]
  4%|4         | 1753/42434 [00:00<00:07, 5803.45KB/s]
 17%|#6        | 7040/42434 [00:00<00:01, 21999.06KB/s]
 31%|###       | 13017/42434 [00:00<00:00, 34445.25KB/s]
 50%|#####     | 21256/42434 [00:00<00:00, 47811.17KB/s]
 67%|######7   | 28544/42434 [00:00<00:00, 55457.95KB/s]
 83%|########3 | 35368/42434 [00:00<00:00, 59337.18KB/s]
42435KB [00:00, 43650.32KB/s]
Done.

提示

使用 preprocess=True 将在网络上方添加一个默认的预处理层,该层将减去均值 [123.675, 116.28, 103.53],除以标准差 [58.395, 57.12, 57.375],并将原始图像 (B, H, W, C 且范围 [0, 255]) 转换为张量 (B, C, H, W) 作为网络输入。这是所有 GluonCV 预训练模型的默认预处理行为。有了这个预处理头,您可以在 C++ 中使用原始 RGB 图像,而无需显式应用这些操作。

上面的代码生成两个文件:xxxx.json 和 xxxx.params

import glob
print(glob.glob('*.json') + glob.glob('*.params'))

输出

['resnet18_v1-symbol.json', 'resnet18_v1-0000.params']

JSON 文件包含计算图,params 文件包含预训练权重。

可导出的网络不仅限于图像分类模型。我们还可以导出检测和分割网络

# YOLO
net = gcv.model_zoo.get_model('yolo3_darknet53_coco', pretrained=True)
export_block('yolo3_darknet53_coco', net)

# FCN
net = gcv.model_zoo.get_model('fcn_resnet50_ade', pretrained=True)
export_block('fcn_resnet50_ade', net)

# MaskRCNN
net = gcv.model_zoo.get_model('mask_rcnn_resnet50_v1b_coco', pretrained=True)
export_block('mask_rcnn_resnet50_v1b_coco', net)

输出

Downloading /root/.mxnet/models/yolo3_darknet53_coco-09767802.zip from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/yolo3_darknet53_coco-09767802.zip...

  0%|          | 0/224190 [00:00<?, ?KB/s]
  0%|          | 102/224190 [00:00<04:40, 797.94KB/s]
  0%|          | 508/224190 [00:00<01:42, 2189.18KB/s]
  1%|          | 2184/224190 [00:00<00:30, 7162.90KB/s]
  3%|3         | 7758/224190 [00:00<00:09, 23548.98KB/s]
  7%|6         | 14640/224190 [00:00<00:05, 38269.95KB/s]
 10%|9         | 22248/224190 [00:00<00:04, 50209.52KB/s]
 13%|#3        | 30133/224190 [00:00<00:03, 59133.22KB/s]
 17%|#6        | 37825/224190 [00:00<00:02, 64607.58KB/s]
 20%|##        | 45698/224190 [00:00<00:02, 68922.24KB/s]
 24%|##3       | 53787/224190 [00:01<00:02, 72556.99KB/s]
 27%|##7       | 61507/224190 [00:01<00:02, 73959.48KB/s]
 31%|###       | 69308/224190 [00:01<00:02, 75180.34KB/s]
 34%|###4      | 76889/224190 [00:01<00:01, 75366.99KB/s]
 38%|###7      | 84792/224190 [00:01<00:01, 76465.43KB/s]
 41%|####1     | 92776/224190 [00:01<00:01, 77447.89KB/s]
 45%|####4     | 100539/224190 [00:01<00:01, 76307.41KB/s]
 49%|####8     | 108984/224190 [00:01<00:01, 78723.51KB/s]
 52%|#####2    | 116871/224190 [00:01<00:01, 77722.21KB/s]
 56%|#####5    | 124968/224190 [00:01<00:01, 78389.09KB/s]
 59%|#####9    | 132816/224190 [00:02<00:01, 78382.50KB/s]
 63%|######2   | 140661/224190 [00:02<00:01, 76579.59KB/s]
 66%|######6   | 148332/224190 [00:02<00:01, 69287.50KB/s]
 70%|######9   | 156747/224190 [00:02<00:00, 73369.48KB/s]
 73%|#######3  | 164309/224190 [00:02<00:00, 74002.97KB/s]
 77%|#######7  | 172629/224190 [00:02<00:00, 76640.69KB/s]
 80%|########  | 180372/224190 [00:02<00:00, 76389.55KB/s]
 84%|########3 | 188066/224190 [00:02<00:00, 76300.68KB/s]
 88%|########7 | 196517/224190 [00:02<00:00, 78709.86KB/s]
 91%|#########1| 204420/224190 [00:03<00:00, 77343.70KB/s]
 95%|#########4| 212181/224190 [00:03<00:00, 77060.98KB/s]
 98%|#########8| 220169/224190 [00:03<00:00, 77880.92KB/s]
100%|##########| 224190/224190 [00:03<00:00, 67850.24KB/s]
Downloading /root/.mxnet/models/fcn_resnet50_ade-3479525a.zip from https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/models/fcn_resnet50_ade-3479525a.zip...

  0%|          | 0/128831 [00:00<?, ?KB/s]
  0%|          | 100/128831 [00:00<02:44, 780.55KB/s]
  0%|          | 505/128831 [00:00<00:59, 2169.61KB/s]
  2%|1         | 2177/128831 [00:00<00:18, 6790.34KB/s]
  6%|5         | 7385/128831 [00:00<00:05, 21559.64KB/s]
 11%|#         | 13635/128831 [00:00<00:03, 34569.89KB/s]
 17%|#6        | 21329/128831 [00:00<00:02, 46431.54KB/s]
 23%|##2       | 29117/128831 [00:00<00:01, 55934.25KB/s]
 28%|##8       | 36303/128831 [00:00<00:01, 60735.86KB/s]
 35%|###4      | 44870/128831 [00:01<00:01, 68241.33KB/s]
 40%|####      | 51863/128831 [00:01<00:01, 68202.32KB/s]
 46%|####5     | 59161/128831 [00:01<00:01, 69625.84KB/s]
 52%|#####1    | 66497/128831 [00:01<00:00, 70737.68KB/s]
 58%|#####8    | 74946/128831 [00:01<00:00, 74853.17KB/s]
 64%|######4   | 82479/128831 [00:01<00:00, 73963.49KB/s]
 70%|######9   | 90007/128831 [00:01<00:00, 74268.49KB/s]
 76%|#######5  | 97709/128831 [00:01<00:00, 75084.79KB/s]
 82%|########1 | 105481/128831 [00:01<00:00, 75869.74KB/s]
 88%|########7 | 113082/128831 [00:01<00:00, 75685.34KB/s]
 94%|#########4| 121217/128831 [00:02<00:00, 77214.22KB/s]
128832KB [00:02, 60766.94KB/s]

我们已经准备就绪。请查看其他教程,了解如何使用这些 JSON 和 params 文件。

脚本总运行时间:( 0 分 22.950 秒)

由 Sphinx-Gallery 生成的图库