前言
训练神经网络是一件非常耗费时间的事情,其需要大量的算力以及大量的数据。显然从头开始训练并不是明智之选,利用好已有的资源才是明智之选。
微调技术
图像识别笼统地可以分为两步:
- 提取图片的特征,此部分往往通过CNN卷积神经网络实现。
- 根据提取的特征,进行分类,此部分往往通过全连接神经网络来实现。
- 识别一只猫和识别一只狗有没有类似的地方呢?
答案是有的,它们在提取图片特征都是非常相似的。
考虑CNN中卷积的作用,它就是在识别不同的边缘,因此无论是猫,还是狗,图片特征都是类似的,但是如何根据这些特征来学习才是关键。
预训练模型
在图像识别中,有许多经典的神经网络,例如vgg,resnet等,对于这些经典的网络,pytorch都是提供了训练模型好的模型的。这些某些都是在ImageNet上训练好的,有较高的精确度。利用训练好的某些进行图片特征的提取,就能够大大减少训练的耗时。
代码实现
import torch
from torch import nn
from torch.nn import functional as F