本文是关于如何在Pytorch中实现害虫图像分类。边肖觉得很实用,所以分享给大家学习。希望你看完这篇文章能有所收获。话不多说,我们和边肖一起看看。
00-1010
一、pytorch框架
pyTorch是一个基于Torch的开源Python机器学习库,用于自然语言处理等应用。
2017年1月,脸书人工智能研究院(FAIR)推出了基于Torch的PyTorch。它是一个基于Python的可持续计算包,提供了两个高级功能:
1.具有强大GPU加速的张量计算(如NumPy)。
2.具有自动微分系统的深度神经网络。
1.1、概念
有很多不同,本博客只简单介绍其中一部分。以图片形式展示。
前者是机器学习的过程。
后者是深度学习的过程。
1.2、机器学习与深度学习的区别
00-1010本实验使用coco数据集中的病虫害数据集。分为训练文件Traindata和测试文件TestData。
TrainData有9个类别,每个类别有100张图片。
TestData有9个类别,每个类别有10张图片。
我下一篇博客中的开源数据集。
以下是我的数据集的截图:
1.3、在python中导入pytorch成功截图
二、数据集
进口火炬
from orch . utils . dataimportdataset,DataLoader
importnumpayasnp
importmatplotlib
进口
importcv2
from PiLiimportimage
importtorchvision . transformsasstransforms
import torch . optima optim
from orch . autogradimportvariable
importtorch.nnasnn
import torch . nn . FunctionAsf
从测试。CNNimportNet
importjson
从test.train _ dataimportmydataset,pad _ image
三、代码复现
#构建神经网络
Net (nn.module) : #定义了网络模块。
def__init__(self):
超级(网,自我)。__init__()
#卷积,图片有3层,6个特征,5*5长宽的像素,每隔一步跳转。
self.conv1=nn。Conv2d(3,6,5)
#//(conv1):Conv2d(3,6,kernel_size=(5,5),stride=(1,1))
Self.pool=nn。最大池2d(2,2)#最大池
#//(
pool): MaxPool2d(kernel_size=2, stride=2, padding=0, dilation=1, ceil_mode=False)
self.conv2 = nn.Conv2d(6, 16, 5)#卷积
#//(conv2): Conv2d(6, 16, kernel_size=(5, 5), stride=(1, 1))
self.fc1 = nn.Linear(16*77*77, 120)#全连接层,图片的维度为16,
#(fc1): Linear(in_features=94864, out_features=120, bias=True)
self.fc2 = nn.Linear(120, 84)#全连接层,输入120个特征输出84个特征
self.fc3 = nn.Linear(84, 7)#全连接层,输入84个特征输出7个特征
def forward(self, x):
print("x.shape1: ", x.shape)
x = self.pool(F.relu(self.conv1(x)))
print("x.shape2: ", x.shape)
x = self.pool(F.relu(self.conv2(x)))
print("x.shape3: ", x.shape)
x = x.view(-1, 16*77*77)
print("x.shape4: ", x.shape)
x = F.relu(self.fc1(x))
print("x.shape5: ", x.shape)
x = F.relu(self.fc2(x))
print("x.shape6: ", x.shape)
x = self.fc3(x)
print("x.shape7: ", x.shape)
return x
3.3、测试代码
img_path = "TestData/test_data/1/Apple2 (1).jpg" #使用相对路径 image = Image.open(img_path).convert('RGB') image_pad = pad_image(image, (320, 320)) input = transform(image_pad).to(device).unsqueeze(0) output = F.softmax(net(input), 1) _, predicted = torch.max(output, 1) score = float(output[0][predicted]*100) print(class_map[predicted], " ", str(score)+" %") plt.imshow(image_pad) # 显示图片
四、训练结果
4.1、LOSS损失函数
4.2、 ACC
4.3、单张图片识别准确率
以上就是Pytorch中如何实现病虫害图像分类,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/157911.html