我想减小目标检测模型的大小。为此,我尝试使用pytorch-mobile优化器优化了Faster R-CNN模型进行目标检测,但生成的.pt
zip
文件与原始模型的大小相同。
我使用了以下代码
import torchimport torchvisionfrom torch.utils.mobile_optimizer import optimize_for_mobilemodel = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)model.eval()script_model = torch.jit.script(model)from torch.utils.mobile_optimizer import optimize_for_mobilescript_model_vulkan = optimize_for_mobile(script_model, backend='Vulkan')torch.jit.save(script_model_vulkan, "frcnn.pth")
回答:
你需要先对模型进行量化,
请按照这里的步骤进行,
然后使用这些方法
from torch.utils.mobile_optimizer import optimize_for_mobilescript_model_vulkan = optimize_for_mobile(script_model, backend='Vulkan')torch.jit.save(script_model_vulkan, "frcnn.pth")
编辑:
对resnet50模型进行量化的过程
import torchvisionmodel = torchvision.models.resnet50(pretrained=True)import osimport torchdef print_model_size(mdl): torch.save(mdl.state_dict(), "tmp.pt") print("%.2f MB" %(os.path.getsize("tmp.pt")/1e6)) os.remove('tmp.pt')print_model_size(model) # 将打印原始模型大小backend = "qnnpack"model.qconfig = torch.quantization.get_default_qconfig(backend)torch.backends.quantized.engine = backendmodel_static_quantized = torch.quantization.prepare(model, inplace=False)model_static_quantized = torch.quantization.convert(model_static_quantized, inplace=False)print_model_size(model_static_quantized) ## 将打印量化后的模型大小