当前位置: 首页 > news >正文

⌈ 传知代码 ⌋ 农作物病害分类(Web端实现)

💛前情提要💛

本文是传知代码平台中的相关前沿知识与技术的分享~

接下来我们即将进入一个全新的空间,对技术有一个全新的视角~

本文所涉及所有资源均在传知代码平台可获取

以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦!!!

以下内容干货满满,跟上步伐吧~


📌导航小助手📌

  • 💡本章重点
  • 🍞一. 概述
  • 🍞二. 演示效果
  • 🍞三.核心逻辑
  • 🫓总结


💡本章重点

  • 农作物病害分类(Web端实现)

🍞一. 概述

农作物病害是国家粮食安全的一个主要威胁,是决定农作物产量和质量的主要因素。 由于传统方法缺乏必要的基础设施,并且极大程度依赖于人工经验,故诸多地区难以迅速高效地防治病害,从而影响农业的发展。因此,精确诊断农作物病害对于促进农业可持续发展至关重要。针对传统的农作物病害识别方法具有主观性并且极大程度依赖于人工经验的不足,利用卷积神经网络对农作物病害进行识别与分类。

  1. 首先,利用数据增强技术扩充农作物病害原始数据集,增加数据的多样性和数量,同时可以提高训练网络的泛化能力和识别精度;

  2. 然后搭建卷积神经网络对农作物图像进行病虫害的特征提取和分类,实现对农作物病害的准确识别和分类。

  3. 最后通过搭建本地Web实现识别分类的可视化,可以详见视频。值得注意的是作者本人使用的是PlantVillage数据集进行训练、验证以及测试的。

Plant Village数据集共包含14中植物类别,分别为苹果、蓝莓、樱桃、玉米、葡萄、柑橘、桃、胡椒、马铃薯、树莓、大豆、南瓜、草莓和番茄。


🍞二. 演示效果

在这里插入图片描述

识别界面

在这里插入图片描述


🍞三.核心逻辑

flask的路由设置代码

import os
from flask import Flask, redirect, render_template, request
from PIL import Image
import torchvision.transforms.functional as tf
import CNN
import numpy as np
import torch
import pandas as pd
import smtplib
from email.mime.text import MIMETextdisease_info = pd.read_csv('static/materials/disease_infov1.csv', encoding='utf-8')supplement_info = pd.read_csv('static/materials/supplement_info.csv', encoding='utf-8')model = CNN.CNN(38)
model.load_state_dict(torch.load("static/save_model/plant_disease_model_xhh500.pt"))
model.eval()def prediction(image_path):image = Image.open(image_path)image = image.resize((224, 224))input_data = tf.to_tensor(image)input_data = input_data.view((-1, 3, 224, 224))output = model(input_data)output = output.detach().numpy()index = np.argmax(output)return indexapp = Flask(__name__)@app.route('/', methods=['GET', 'POST'])
def home_page():return render_template('home.html')@app.route('/contact')
def contact():return render_template('contact.html')@app.route('/services')
def services():return render_template('services.html')@app.route('/about')
def about():return render_template('about.html')@app.route('/typo')
def buchong():return render_template('typo.html')@app.route('/submit', methods=['GET', 'POST'])
def submit():if request.method == 'POST':image = request.files['image']filename = image.filenamefile_path = os.path.join('static/uploads', filename)image.save(file_path)print(file_path)pred = prediction(file_path)title = disease_info['disease_name'][pred]description = disease_info['description'][pred]prevent = disease_info['Possible Steps'][pred]image_url = disease_info['image_url'][pred]print(f"image_url: {image_url}")supplement_name = supplement_info['supplement name'][pred]supplement_image_url = supplement_info['supplement image'][pred]supplement_buy_link = supplement_info['buy link'][pred]return render_template('submit.html', title=title, desc=description, prevent=prevent,image_url=image_url, pred=pred, sname=supplement_name, simage=supplement_image_url,buy_link=supplement_buy_link)@app.route('/market', methods=['GET', 'POST'])
def market():return render_template('market.html', supplement_image=list(supplement_info['supplement image']),supplement_name=list(supplement_info['supplement name']),disease=list(disease_info['disease_name']), buy=list(supplement_info['buy link']))if __name__ == '__main__':app.config['JSON_AS_ASCII'] = Falseapp.run(debug=True)

模型训练的代码

import pandas as pd
import torch.nn as nnclass CNN(nn.Module):def __init__(self, K):super(CNN, self).__init__()self.conv_layers = nn.Sequential(# conv1nn.Conv2d(in_channels=3, out_channels=32, kernel_size=3, padding=1),nn.ReLU(),nn.BatchNorm2d(32),nn.Conv2d(in_channels=32, out_channels=32, kernel_size=3, padding=1),nn.ReLU(),nn.BatchNorm2d(32),nn.MaxPool2d(2),# conv2nn.Conv2d(in_channels=32, out_channels=64, kernel_size=3, padding=1),nn.ReLU(),nn.BatchNorm2d(64),nn.Conv2d(in_channels=64, out_channels=64, kernel_size=3, padding=1),nn.ReLU(),nn.BatchNorm2d(64),nn.MaxPool2d(2),# conv3nn.Conv2d(in_channels=64, out_channels=128, kernel_size=3, padding=1),nn.ReLU(),nn.BatchNorm2d(128),nn.Conv2d(in_channels=128, out_channels=128, kernel_size=3, padding=1),nn.ReLU(),nn.BatchNorm2d(128),nn.MaxPool2d(2),# conv4nn.Conv2d(in_channels=128, out_channels=256, kernel_size=3, padding=1),nn.ReLU(),nn.BatchNorm2d(256),nn.Conv2d(in_channels=256, out_channels=256, kernel_size=3, padding=1),nn.ReLU(),nn.BatchNorm2d(256),nn.MaxPool2d(2),)self.dense_layers = nn.Sequential(nn.Dropout(0.4),nn.Linear(50176, 1024),nn.ReLU(),nn.Dropout(0.4),nn.Linear(1024, K),)def forward(self, X):out = self.conv_layers(X)# Flattenout = out.view(-1, 50176)# Fully connectedout = self.dense_layers(out)return outidx_to_classes = {0: 'Apple___Apple_scab',1: 'Apple___Black_rot',2: 'Apple___Cedar_apple_rust',3: 'Apple___healthy',4: 'Blueberry___healthy',5: 'Cherry___healthy',6: 'Cherry___Powdery_mildew',7: 'Corn___Cercospora_leaf_spot Gray_leaf_spot',8: 'Corn___Common_rust',9: 'Corn___Northern_Leaf_Blight',10: 'Corn___healthy',11: 'Grape___Black_rot',12: 'Grape___Esca_(Black_Measles)',13: 'Grape___Leaf_blight_(Isariopsis_Leaf_Spot)',14: 'Grape___healthy',15: 'Orange___Haunglongbing_(Citrus_greening)',16: 'Peach___Bacterial_spot',17: 'Peach___healthy',18: 'Pepper,_bell___Bacterial_spot',19: 'Pepper,_bell___healthy',20: 'Potato___Early_blight',21: 'Potato___Late_blight',22: 'Potato___healthy',23: 'Raspberry___healthy',24: 'Soybean___healthy',25: 'Squash___Powdery_mildew',26: 'Strawberry___Leaf_scorch',27: 'Strawberry___healthy',28: 'Tomato___Bacterial_spot',29: 'Tomato___Early_blight',30: 'Tomato___Late_blight',31: 'Tomato___Leaf_Mold',32: 'Tomato___Septoria_leaf_spot',33: 'Tomato___Spider_mites Two-spotted_spider_mite',34: 'Tomato___Target_Spot',35: 'Tomato___Tomato_Yellow_Leaf_Curl_Virus',36: 'Tomato___Tomato_mosaic_virus',37: 'Tomato___healthy'}

🫓总结

综上,我们基本了解了“一项全新的技术啦” 🍭 ~~

恭喜你的内功又双叒叕得到了提高!!!

感谢你们的阅读😆

后续还会继续更新💓,欢迎持续关注📌哟~

💫如果有错误❌,欢迎指正呀💫

✨如果觉得收获满满,可以点点赞👍支持一下哟~✨

【传知科技 – 了解更多新知识】

相关文章:

⌈ 传知代码 ⌋ 农作物病害分类(Web端实现)

💛前情提要💛 本文是传知代码平台中的相关前沿知识与技术的分享~ 接下来我们即将进入一个全新的空间,对技术有一个全新的视角~ 本文所涉及所有资源均在传知代码平台可获取 以下的内容一定会让你对AI 赋能时代有一个颠覆性的认识哦&#x…...

CMU生成式人工智能大模型:从入门到放弃(九)

引言 在前面的系列博客中,我们深入探讨了生成式对抗网络(GANs)和变分自编码器(VAEs)等生成式模型。今天,我们将探索扩散模型(Diffusion Models)的进一步应用,并讨论在上…...

HTML基础总结

一、简介 HTML(HyperText Markup Language)即超文本标记语言,是用于创建网页的标准标记语言。它通过使用各种标签来定义网页的结构和内容,告诉浏览器如何显示网页。HTML 文档由标签和文本组成,标签用于描述文本的性质…...

EXCELL中如何两条线画入一张图中,标记坐标轴标题?

1,打开excel,左击选中两列, 2,菜单栏>“插入”>”二维折线图”选中一个 3,选中出现的两条线中的一条右击>最下一行,“设置数据系列格式” 4,右测“系列选项中”>点击“次坐标轴” 5…...

Zabbix企业级分布式监控环境部署

“运筹帷幄之中,决胜千里之外”。在IT运维中,监控占据着重要的地位,按比例来算,说占30%一点也不为过。对IT运维工程师来说,构建一个真正可用的监控告警系统是一项艰巨的任务。在监控系统的开源软件中,可供选…...

水轮发电机油压自动化控制系统解决方案介绍

在现代水电工程中,水轮机组油压自动化控制系统,不仅直接关系到水轮发电机组的安全稳定运行,还影响着整个水电站的生产效率和经济效益。 一、系统概述 国科JSF油压自动控制系统,适用于水轮发电机组调速器油压及主阀(蝶…...

今天不分享技术,分享秋天的故事

引言 这个爱情故事好像是个悲剧,你说的是婚姻。爱情没有悲剧,对爱者而言,爱情怎么会是悲剧呢。对春天而言,秋天是它的悲剧吗。结尾是什么,等待,之后呢,没有之后。或者说,等待的结果…...

转录组上游分析流程(三)

环境部署——数据下载——查看数据(非质控)——数据质控——数据过滤(过滤低质量数据) 测序得到的原始序列含有接头序列和低质量序列,为了保证信息分析的准确性,需要对原始数据进行质量控制,得到高质量序列(Clean Reads),原始序列…...

excel判断某一列(A列)中的数据是否在另一列(B列)中

如B列如果有7个元素,在A列右边的空白列中,输入如下公式: COUNTIF($B$1:$B$7,A1), 其中,$B$1:$B$7代表A列中的所有数据即绝对范围,A1代表B列中的一个单元格....

[环境配置]macOS上怎么查看vscode的commit id

macOS的commit id和windows上有点不一样,windows可以在帮助-关于查看 macOS则需要再左边第一个查看...

.net framework 3.5sp1组件安装进度条不动启动错误怎么解决

安装.NET Framework 3.5 SP1通常需要管理员权限。这是因为安装过程可能需要修改系统文件和注册表项,这些操作通常需要管理员权限才能执行。在Windows系统上,安装.NET Framework 3.5 SP1通常通过控制面板中的“启用或关闭Windows功能”选项进行&#xff0…...

学习threejs,利用THREE.ExtrudeGeometry拉伸几何体实现svg的拉伸

👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️THREE.ExtrudeGeometry拉伸…...

大模型之三十二-语音合成TTS(coqui) 之二 fine-tune

在 大模型之三十-语音合成TTS(coqui)[shichaog CSDN]中提到了xttsv2的fine-tune。 数据情况: 我是从bilibili up主小Lin说提取了一些视频,然后进行了重新的fine-tune。 训练结果 如下图所示,上面波形幅度较大的是xttsv2原始模型的结果&am…...

JVM的内存模型是什么,每个区域的作用是什么,以及面试题(含答案)

JVM(Java 虚拟机)内存模型定义了 Java 程序在运行时如何分配、管理和优化内存。JVM 内存模型主要分为几个关键区域,每个区域有特定的作用: JVM 内存模型 堆内存(Heap): 作用:用于存…...

《设计模式三》Java代理模式实现

Java代理模式实现 静态代理实现 // Subject.java // 主题接口,定义了请求方法 public interface Subject {void request(); }// RealSubject.java // 真实主题实现类,实现了Subject接口 public class RealSubject implements Subject {Overridepublic …...

vue3中计算属性的用法以及使用场景

在 Vue 3 中,计算属性(computed properties)是一种基于依赖项动态计算并缓存的响应式数据。它与 Vue 2 中的计算属性类似,但在组合式 API 中使用 computed 函数来定义。计算属性的核心优势在于能够自动缓存计算结果,仅…...

pytorh学习笔记——cifar10(六)MobileNet V1网络结构

基础知识储备: 一、深度可分离卷积(Depthwise Separable Convolution) MobileNet的核心是深度可分离卷积(Depthwise Separable Convolution),深度可分离卷积是卷积神经网络(CNN&#xf…...

报表系统-连接数据库操作

本专栏用于解析自己开源的项目代码,作为复盘和学习使用。欢迎大家一起交流 本样例说明源码开源在: ruoyi-reoprt gitee仓库 ruoyi-report github仓库 欢迎大家到到项目中多给点star支持,对项目有建议或者有想要了解的欢迎一起讨论 连接数据库…...

[计算机网络] 常见端口号

前言 ​ 常见的端口号是指互联网协议(如TCP/IP)中预留给特定服务使用的数字范围。它们主要用于标识网络应用程序和服务,并帮助数据包在网络中找到正确的接收方。 按协议类型划分 TCP协议端口: 21:FTP文件传输协议2…...

Linux系统块存储子系统分析记录

1 Linux存储栈 通过网址Linux Storage Stack Diagram - Thomas-Krenn-Wiki-en,可以获取多个linux内核版本下的存储栈概略图,下面是kernel-4.0的存储栈概略图: 2 存储接口、传输速度 和 协议 2.1 硬盘 《深入浅出SSD:固态存储核心…...

大数据——本地威胁检测的全球方法

大数据似乎是众多专业人士关注的话题,从在自然灾害发生时帮助挽救生命,到帮助营销团队设计更有针对性的策略以接触新客户。 对于安全工程师来说,大数据分析被证明是抵御不断演变的网络入侵的有效防御手段,这得益于基于大量不同网…...

使用postman接口测试

一 、postman断言 1、什么是断言 postman 断言借助JavaScript -js 语言编写代码,自动判断预期结果与实际结果是否一致。 断言代码写在 Tests 的标签中。(新版本在Scripts标签中) 2、断言工作原理 3、常用断言 断言响应状态码 // 断言响应状态码 是否为 200 pm.…...

Ubuntu24.04双系统安装(Linux/windows共存一文打通)

他向远方望去,无法看到高山背后的矮山,只能看到一座座更高的山峰。 目录 ​编辑 一.前言 二.虚拟机和双系统比较 三.Windows/Linux双系统安装 1.Rufus-制作U盘启动盘系统工具安装 2.Ubuntu24.04下载 3.Ubuntu-u盘启动盘制作 4.压缩磁盘留足安装空…...

C++ - deque

博客主页:【夜泉_ly】 本文专栏:【C】 欢迎点赞👍收藏⭐关注❤️ 文章目录 💡双端队列简介1. 基本特性2. 与其他容器的比较与 vector与 list 3. 中控数组的设计4. 优缺点优点缺点 5. 应用场景6. 结论 💡双端队列简…...

国产!瑞芯微米尔RK357核心板革新AIoT设备,8核6T高算力

随着科技的快速发展,AIoT智能终端对嵌入式模块的末端计算能力、数据处理能力等要求日益提高。近日,米尔电子发布了一款基于瑞芯微RK3576核心板和开发板。核心板提供4GB/8GB LPDDR4X、32GB/64GB eMMC等多个型号供选择。瑞芯微RK3576核心优势主要包括高性能…...

中国人寿财险青岛市分公司践行绿色金融,助力可持续发展

中国人寿财险青岛市分公司积极响应国家绿色发展战略,大力推进绿色金融实践。在保险产品创新方面,推出一系列绿色保险产品。如新能源汽车保险,为新能源汽车产业发展提供风险保障,促进交通领域的节能减排。环境污染责任保险则助力企…...

ajax 读取文件

DOMException: Failed to read the responseXML property from XMLHttpRequest: The value is only accessible if the objects responseType is or document (was blob). at XMLHttpRequest.r ( $.ajax({ url: 未来之窗_服务, method: GET, …...

火语言RPA流程组件介绍--开始监听网络请求

🚩【组件功能】:开始监听内置浏览器网络请求(提示:本组件仅适用于火语言内置浏览器) 配置预览 配置说明 匹配网址 可以添加一个或者多个匹配规则用于筛选需要保存的网络请求. 输入输出 输入类型 万能对象类型(Sy…...

CSS综合案例——新闻详情

一、知识点 1、文字颜色 属性名:color 属性值: 颜色表示方式属性值说明使用场景颜色关键字颜色英文单词red,green,blue学习测试rgb表示法rg(r,g,b)r,g,b表示红绿蓝三原色,取值0-255了解rgba表示法rgba(r,g,b,a)a表示透明度,取…...

【【自动驾驶】车辆运动学模型】

【自动驾驶】车辆运动学模型 1. 引言2. 以车辆重心为中心的单车模型2.1 模型介绍2.2 滑移角 β \beta β 的推导2.2 航向角 ψ \psi ψ推导过程:2.3 滑移角 β \beta β2.3 Python代码实现2.4 C代码实现 3. 前轮驱动的单车模型3.1 模型介绍3.3 Python代码实现3.4 …...

流量与网站/汕头网站建设方案开发

批注[……] 表示他人、自己、网络批注参考资料来源于* 书中批注* CSDN* GitHub* Google* 维基百科* YouTube* MDN Web Docs由于编写过程中无法记录所有的URL所以如需原文,请自行查询{……} 重点内容*……* 表示先前提到的内容,不赘述「第一篇」世界观安全…...

邯郸做网站最好的公司/郑州专业seo首选

公司就一个苹果开发者账号,项目接入交付,人员来来往往,很快就将100台设备名额占满. 移除测试设备有下面两种方式: 1.等待新的会员年 续费开发者账号后,苹果会提供一次更新设备列表的机会. 2.向苹果请求更新设备列表的机会 联系苹果:https://developer.apple.com/contact…...

上海营销网站建设定制服务/热搜词排行榜关键词

C语言练习:第二大整数问题描述编写一个程序,读入一组整数(不超过20个),当用户输入0时,表示输入结束。然后程序将从这组整数中,把第二大的那个整数找出来,并把它打印出来。说明:(1)0表示输入结束…...

推荐昆明做网站建设/境外电商有哪些平台

Python是一种广泛使用的高级编程语言,因其简单易学、灵活性强和广泛的应用领域而闻名。在开始Python编程之前,首先需要在您的计算机上安装Python解释器。本教程将为您提供详细的Python下载和安装步骤,以帮助您顺利安装Python并开始编写Python…...

网站建设方案策划书/搜索引擎论文3000字

实战:结合Dr.Watson系统日志和Vc6来定位多线程环境下程序异常退出的错误 当开发的软件发布以后,在客户那运行时可能会因为各种原因导致程序退出。这种情况很尴尬,很明显我们无法在客户机器上装个Visual Studio调试,所以必须有机制…...

做电影网站的流程/企业网站营销

在搭建 Apache 业务没上线之前,我们需要不断去测试性能以达到甚至远远超过预期,因此我们需要对 Apache 进行深度优化,本次我们将介绍 Apache 的优化及工作模式详解。 Apache 优化 在 Linux 中搭建的 Apache ,要进行优化必须是在编…...