首页 > 分享 > 【免费】基于pytorch的深度学习花朵种类识别项目完整教程(内涵完整文件和代码)

【免费】基于pytorch的深度学习花朵种类识别项目完整教程(内涵完整文件和代码)

README

整体思路介绍:

项目要求:

​ 基于 pytorch 搭建神经网络分类模型识别花的种类,输入一张花的照片,输出显示最有可能的前八种花的名称和该种花的照片。

分三大步骤操作:

数据集预处理操作: 读取数据集数据 构建神经网络的数据集 数据增强:torchvision中transforms模块自带功能,将数据集中照片进行旋转、翻折、放大...得到更多的数据 数据预处理:torchvision中transforms也帮我们实现好了,直接调用即可 处理好的数据集保存在DataLoader模块中,可直接读取batch数据 网络模型训练操作: 迁移pytorch官网中models提供的resnet模型 torchvision中有很多经典网络架构,调用起来十分方便,并且可以用人家训练好的权重参数来继续训练,也就是所谓的迁移学习 选择GPU计算、选择训练哪些层、优化器设置、损失函数设置... 训练全连接层 前几层都是做特征提取的,本质任务目标是一致的,前面的先不动,先训练最后一层全连接层 再训练所有层 预测种类操作: 加载训练好的模型 模型保存的时候可以带有选择性,例如在验证集中如果当前效果好则保存 设置检测图像的数据 设置展示界面并进行预测

程序结构介绍:

flower_function/定义函数程序:

(在该程序中定义相关函数,以便在其他程序中进行调用)

图像增强(数据集预处理处理) 处理照片数据函数 检测照片预处理函数 展示一张照片函数

flower_dataset/数据集处理程序:

读取数据集(训练集测试集)数据 构建神经网络的数据集

flower_model网络模型训练程序:

冻结神经网络权重函数 修改全连接层函数(官方) 训练模型函数 加载并修改models中提供的resnet模型open 开始训练全连接层(0-19) 再继续训练所有层(0-9)

flower_forecast预测程序:

冻结神经网络权重函数 修改全连接层函数 加载测试模型 设置检测图像数据 设置展示界面

程序内容说明:

代码整洁操作说明:

两行“”“”“open、”“”“”end封装的是该模块的程序 #是单行注释

"""""""""""""""加载测试模型open""""""""""""""" #加载模型 model_ft, input_size = initialize_model(model_name, 102, feature_extract, use_pretrained=True) ...... """""""""""""""加载测试模型end"""""""""""""""

迁移学习:

pytorch->transforms->resnet->models

用相似的模型的权重初始化、全连接层需要改变

模块化编程说明:

1、一个文件程序写全部代码有两个问题:

​ 1)功能分工不明确

​ 2)每次都要重新跑训练网络

2、模块化编程:将功能函数分别放到不同的程序中,程序中相互调,可以分别进行功能测试

3、模块化编程两种方式:

A中:

import B

B.function

A中:

from B import function

function

4、注意import循环重载:

​ 利用pycharm这种IDE进行模块化编程,多个.py文件相互import容易发生循环重载

先了解下import的原理:

​ 例:A中importB,当顺序执行A,遇到相关数据需要调用B时,停止执行A,去执行B,B执行完了再执行A,如果A、B相互调用的话会报错

解决办法:

​ 当A中importB,当B又需要调用A时,把需要的A中参数定义、函数定义在B中再写一遍

项目操作:

1、用pycharm或其他IDE需要配置python、pytorch环境

2、迁移学习的模型已经下载在文件中,不用重新下载

3、直接单独运行flower_forecast预测程序,可在设置检测图像数据模块中更换照片检测

4、如果想看神经网络搭建过程,直接运行flower_model网络模型训练程序

关于我学习神经网络的一些坑和一些建议:

1、神经网络是个黑盒子,只要不是深入研究,我们做工程性项目重点是用神经网络而不是从0搭建网络,重点是利用神经网络做工程性项目,没有必要搞懂里面每一步(之前踩的坑,又麻烦又浪费时间)

2、简单学习CNN基本原理后,直接去网上找个注释写的相当详细的开源程序去读

3、用好迁移学习,即调用pyorch官网上已经训练好的相关模型,根据我们自己的项目重新训练

4、先把每段代码都写上功能注释(里面一些具体参数和步骤了解即可,一定要写,有助于理解复杂的神经网络流程),再试着动手调别人的网络模型,最后试着这套模板应用到别的项目(数据集)上

5、推荐B站上唐宇迪的课

附上完整代码:

flower_function/定义函数程序:

```python import numpy as np import torch import matplotlib.pyplot as plt from PIL import Image

from torchvision import transforms, models

filename='checkpoint.pth' device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

"""""""""""""""图像增强(数据集预处理处理)open""""""""""""""" #图像增强:将数据集中照片进行旋转、翻折、放大...得到更多的数据 #ImageFolder假设所有的文件按文件夹保存好,每个文件夹下面存贮同一类别的图片,文件夹的名字为分类的名字 data_transforms = { #data_transforms中指定了所有图像预处理操作,只需要修改训练集和验证集的名字后复制粘贴 'train': transforms.Compose([transforms.RandomRotation(45),#随机旋转,-45到45度之间随机选 transforms.CenterCrop(224),#从中心开始裁剪 transforms.RandomHorizontalFlip(p=0.5),#随机水平翻转 选择一个概率概率 transforms.RandomVerticalFlip(p=0.5),#随机垂直翻转 transforms.ColorJitter(brightness=0.2, contrast=0.1, saturation=0.1, hue=0.1),#参数1为亮度,参数2为对比度,参数3为饱和度,参数4为色相 transforms.RandomGrayscale(p=0.025),#概率转换成灰度率,3通道就是R=G=B transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])#均值,标准差 ]), 'valid': transforms.Compose([transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225]) ]), } """""""""""""""图像增强(数据集预处理处理)end"""""""""""""""

"""""""""""""""处理照片数据函数open""""""""""""""" #注意tensor的数据需要转换成numpy的格式,而且还需要还原回标准化的结果 def im_convert(tensor):

image = tensor.to("cpu").clone().detach() image = image.numpy().squeeze() # 还原回h,w,c image = image.transpose(1, 2, 0) # 被标准化过了,还原非标准化样子 image = image * np.array((0.229, 0.224, 0.225)) + np.array((0.485, 0.456, 0.406)) image = image.clip(0, 1) return image

"""""""""""""""处理照片数据函数end"""""""""""""""

"""""""""""""""检测照片预处理函数open""""""""""""""" def process_image(image_path): # 读取测试数据 img = Image.open(image_path) # Resize,thumbnail方法只能进行缩小,所以进行了判断 if img.size[0] > img.size[1]: img.t

相关知识

基于深度学习和迁移学习的识花实践
深度学习YOLOv7实现的农作物病虫害识别与防治系统教程
基于YOLOv8深度学习的102种花卉智能识别系统【python源码+Pyqt5界面+数据集+训练代码】目标识别、深度学习实战
基于深度学习的花卉检测与识别系统(YOLOv5清新界面版,Python代码)
基于pytorch的图像识别基础完整教程
基于深度学习的稻田虫害检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)
基于深度学习的农作物害虫检测系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)
基于YOLOv8深度学习的葡萄病害智能诊断与防治系统【python源码+Pyqt5界面+数据集+训练代码】深度学习实战
基于深度学习的花卉检测与识别系统(网页版+YOLOv8/v7/v6/v5代码+训练数据集)
基于YOLOv8深度学习的智能玉米害虫检测识别系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

网址: 【免费】基于pytorch的深度学习花朵种类识别项目完整教程(内涵完整文件和代码) https://m.huajiangbk.com/newsview460472.html

所属分类:花卉
上一篇: 高光谱图像分类工具包:精准识别的
下一篇: 花卉种类识别(花卉种类识别的预处