F045 vue+flask棉花病虫害CNN识别+AI问答知识neo4j 图谱可视化系统深度学习神经网络

文章结尾部分有CSDN官方提供的学长 联系方式名片

文章结尾部分有CSDN官方提供的学长 联系方式名片

文章结尾部分有CSDN官方提供的学长 联系方式名片

文章结尾部分有CSDN官方提供的学长 联系方式名片

关注B站,有好处!

B站号: 麦麦大数据

功能介绍

编号:F045

vue+flask+neo4j+mysql 架构 (前后端分离架构)

棉花医院AI问答:前端聊天界面体验超棒(对接千问大模型API)

病虫害图片识别:基于CNN的棉花病虫害识别,可自己训练模型(基于pytorch)

数据为棉花的四个期对应的 各种虫害

知识图谱: 模糊查询+图标+双击+拖动等(双击展示数据)

数据大屏:中国地图显示产地: echarts 分析

病虫害查询: 分页+模糊查询+卡片展示

棉花生长周期:展示4个周期

关键词分析等、登录注册

1 视频讲解

F045vue+flask棉花病虫害CNN识别+AI问答知识neo4j 图谱可视化系统深度学习神经网络

2 架构

功能简介

本系统是一个基于Vue+Flask构建的棉花病虫害AI识别与知识图谱可视化系统,旨在为棉花种植提供智能化的病虫害识别、AI问答以及知识管理服务。系统的核心功能模块包括:AI问答系统,提供与千问大模型对接的智能问答服务,支持用户就棉花病虫害相关问题进行提问;病虫害图片识别模块,基于CNN深度学习模型实现棉花病虫害的图像识别,并支持模型的二次训练功能;知识图谱模块,通过Neo4j实现病虫害知识的存储、查询与可视化,支持模糊查询、双击节点展示详情、图谱拖动等交互功能;数据可视化模块,利用ECharts展示棉花病虫害数据的大屏分析,包括中国地图产地分布、关键词分析以及词云生成;病虫害查询模块,支持分页浏览、模糊查询以及卡片式数据展示;棉花生长周期模块,直观展示棉花的四个生长周期相关信息;用户管理模块,提供身份验证、信息修改、头像设置、密码找回(支持短信验证)以及身份证OCR识别等功能,确保系统的安全性和用户体验。

架构说明

该系统采用B/S(浏览器/服务器)架构模式,前端基于Vue.js框架构建,集成了Vue Router(路由管理)、Vuex(状态管理)、ECharts(数据可视化)等技术,提供流畅的用户交互体验。后端采用Flask框架,负责业务逻辑处理与API接口的搭建,并通过MySQL数据库实现系统数据的持久化存储。知识图谱功能模块采用Neo4j数据库,用于存储和管理棉花病虫害相关的知识实体及其关联关系。病虫害图片识别模块基于PyTorch深度学习框架构建,支持CNN模型的训练与部署,能够识别棉花生长周期中不同的病虫害类型。AI问答功能对接千问大模型API,提供智能化的问答服务。系统还集成了自然语言处理技术,采用jieba、TF-IDF和TextRank算法进行关键词提取和词云分析,为用户提供文本数据的深度洞察。

3 病虫害知识问答

基于阿里千问大模型API实现的棉花病虫害问答

类似聊天界面


4 病虫害识别

基于Pytorch CNN卷积神经网络模型实现的病虫害识别

识别叶甲

上传图片,右侧展示识别结果、图片和相关的信息:

5 知识图谱可视化

图谱的导入

neo4j 界面

可视化

支持模糊搜索显示知识图谱子图,输入"蕾"

点击节点,右侧展示详细节点信息

6 病虫害知识库搜索

可以搜索各种病虫害,支持模糊搜索+分页,画面美观

7 棉花周期科普

8 关键词分析

基于统计、textrank+tfidf双算法的关键词主题词分析

9 词云分析

基于jieba分词的词云分析

10 数据大屏

多种echarts可视化图形数据分析的应用,美观大方

通过中国地图分析棉花产地、药物类型、虫害分析、有效成分等

11 登录和注册


12 个人信息设置,可修改头像等

13 病虫害识别代码

功能说明

该代码实现了一个基于CNN的棉花病虫害识别系统,使用TensorFlow和Keras框架。首先,代码导入必要的库,并准备数据集,包括训练集和验证集。通过ImageDataGenerator进行数据增强和预处理,以增加模型的泛化能力。随后,代码加载了预训练的VGG16模型,并在其基础上添加了自定义的分类层,构建了适用于棉花病虫害识别的CNN模型。模型通过Adam优化器和交叉熵损失函数进行训练,并在验证集上评估性能。最终,模型保存为H5格式,方便后续部署和使用。

核心代码

python 复制代码
class SimpleCNN(nn.Module):
    def __init__(self, num_classes):
        super(SimpleCNN, self).__init__()
        self.conv1 = nn.Conv2d(3, 16, kernel_size=3, stride=1, padding=1)
        self.conv2 = nn.Conv2d(16, 32, kernel_size=3, stride=1, padding=1)
        self.pool = nn.MaxPool2d(kernel_size=2, stride=2, padding=0)
        self.fc1 = nn.Linear(32 * 32 * 32, 128)
        self.fc2 = nn.Linear(128, num_classes)

    def forward(self, x):
        x = self.pool(F.relu(self.conv1(x)))
        x = self.pool(F.relu(self.conv2(x)))
        x = x.view(-1, 32 * 32 * 32)
        x = F.relu(self.fc1(x))
        x = self.fc2(x)
        return x

# 预测函数
def predict(image_path, model, class_names):
    # 定义图像预处理
    # transform = transforms.Compose([
    #     transforms.Resize((128, 128)),  # 统一大小
    #     transforms.ToTensor(),
    # ])

    transform = transforms.Compose([
        transforms.Resize((128, 128)),
        transforms.Lambda(lambda x: x.convert('RGB')),  # 确保转换为RGB模式
        transforms.ToTensor(),
    ])

    # 加载和预处理图像
    image = Image.open(image_path)
    image = transform(image).unsqueeze(0)  # 增加批次维度

    # 将图像输入模型进行预测
    model.eval()  # 设置模型为评估模式
    with torch.no_grad():
        outputs = model(image)
        # print(outputs)
        _, predicted = torch.max(outputs, 1)
    print(predicted.item())
    # 返回预测的类别
    return class_names[predicted.item()]

def predict_interface(test_image_path):
    # 加载训练好的模型
    num_classes = 5  # 根据你的数据集类别数量修改
    model = SimpleCNN(num_classes)
    model.load_state_dict(torch.load(MODEL_PATH))
    model.eval()

    # 类别名称(根据你的数据集修改)
    class_names = ['中黑盲蝽', '台龟甲', '叶甲', '宽棘缘椿', '小长蝽',
                   ]  # 替换为实际类别名称
    # 测试预测
    # test_image_path = '3.jpg'  # 替换为测试图像的路径
    predicted_class = predict(test_image_path, model, class_names)
    return predicted_class

if __name__ == "__main__":
    # 加载训练好的模型
    num_classes = 5  # 根据你的数据集类别数量修改
    model = SimpleCNN(num_classes)
    model.load_state_dict(torch.load('disease_model.pth'))
    model.eval()

    # 类别名称(根据你的数据集修改)
    class_names = ['中黑盲蝽', '台龟甲', '叶甲', '宽棘缘椿', '小长蝽',
]  # 替换为实际类别名称

    # 测试预测
    test_image_path = '3.jpg'  # 替换为测试图像的路径
    predicted_class = predict(test_image_path, model, class_names)
    print(f'Predicted class: {predicted_class}')
相关推荐
IT_陈寒1 小时前
Java 17实战:我从老旧Spring项目迁移中总结的7个关键避坑点
前端·人工智能·后端
渡我白衣2 小时前
字符串的陷阱与艺术——std::string全解析
网络·c++·人工智能·自然语言处理·智能路由器·信息与通信·caffe
Allen200002 小时前
Hello-Agents task2 大语言模型基础
人工智能·语言模型·自然语言处理
music&movie2 小时前
多模态工程师面试--准备
人工智能
机器之心2 小时前
GPT-5.1发布,OpenAI开始拼情商
人工智能·openai
YangYang9YangYan2 小时前
高职单招与统招比较及职业发展指南
大数据·人工智能·数据分析
AI科技星2 小时前
宇宙膨胀速度的光速极限:基于张祥前统一场论的第一性原理推导与观测验证
数据结构·人工智能·经验分享·python·算法·计算机视觉
Mintopia2 小时前
🚀 共绩算力:3分钟拥有自己的图像优化服务-CodeFormer:先进的图像算法优化、修复马赛克、提升图片清晰度等
前端·人工智能·ai编程
南山安2 小时前
🚀 从“Hulk”扩展开发实战,聊聊我找到的“Vibe Coding”最佳姿势
人工智能·设计