pytorch自带网络_轻松学Pytorch使用ResNet50实现图像分类

1ccce9be5f1e3066a97fbf7778e8db10.gif

点击上方蓝字关注我们

微信公众号:OpenCV学堂

关注获取更多计算机视觉与深度学习知识

Hello大家好,这篇文章给大家详细介绍一下pytorch中最重要的组件torchvision,它包含了常见的数据集、模型架构与预训练模型权重文件、常见图像变换、计算机视觉任务训练。可以是说是pytorch中非常有用的模型迁移学习神器。本文将会介绍如何使用torchvison的预训练模型ResNet50实现图像分类。

模型

Torchvision.models包里面包含了常见的各种基础模型架构,主要包括:

AlexNet
VGG
ResNet
SqueezeNet
DenseNet
Inception v3
GoogLeNet
ShuffleNet v2
MobileNet v2
ResNeXt
Wide ResNet
MNASNet

这里我选择了ResNet50,基于ImageNet训练的基础网络来实现图像分类, 网络模型下载与加载如下:

model = torchvision.models.resnet50(pretrained=True).eval().cuda()tf = transforms.Compose([            transforms.Resize(256),            transforms.CenterCrop(224),            transforms.ToTensor(),            transforms.Normalize(            mean=[0.485, 0.456, 0.406],            std=[0.229, 0.224, 0.225]        )])

使用模型实现图像分类

这里首先需要加载ImageNet的分类标签,目的是最后显示分类的文本标签时候使用。然后对输入图像完成预处理,使用ResNet50模型实现分类预测,对预测结果解析之后,显示标签文本,完整的代码演示如下:

 1

运行结果如下:

b586dcbc9790cc7b71e3b1a79de10731.png

转ONNX支持

在torchvision中的模型基本上都可以转换为ONNX格式,而且被OpenCV DNN模块所支持,所以,很方便的可以对torchvision自带的模型转为ONNX,实现OpenCV DNN的调用,首先转为ONNX模型,直接使用torch.onnx.export即可转换(还不知道怎么转,快点看前面的例子)。转换之后使用OpenCV DNN调用的代码如下:

 1

 运行结果见上图,这里就不再贴了。

 推荐阅读 

轻松学Pytorch–环境搭建与基本语法

Pytorch轻松学-构建浅层神经网络

轻松学pytorch-构建卷积神经网络

轻松学Pytorch –构建循环神经网络

轻松学Pytorch-使用卷积神经网络实现图像分类

轻松学Pytorch-自定义数据集制作与使用

轻松学Pytorch-Pytorch可视化

轻松学Pytorch–Visdom可视化

轻松学Pytorch – 全局池化层详解

轻松学Pytorch – 人脸五点landmark提取网络训练与使用

轻松学Pytorch – 年龄与性别预测

轻松学Pytorch –车辆类型与颜色识别

轻松学Pytorch-全卷积神经网络实现表情识别

使用OpenVINO加速Pytorch表情识别模型

轻松学pytorch – 使用多标签损失函数训练卷积网络

志不强者智不达

言不信者行不果

0a263af8b363b6f36bfa43a68794b9b8.png

你可能感兴趣的:(pytorch自带网络)