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

【蔬菜识别】Python+深度学习+CNN卷积神经网络算法+TensorFlow+人工智能+模型训练

一、介绍

蔬菜识别系统,本系统使用Python作为主要编程语言,通过收集了8种常见的蔬菜图像数据集(‘土豆’, ‘大白菜’, ‘大葱’, ‘莲藕’, ‘菠菜’, ‘西红柿’, ‘韭菜’, ‘黄瓜’),然后基于TensorFlow搭建卷积神经网络算法模型,通过多轮迭代训练最后得到一个识别精度较高的模型文件。在使用Django开发web网页端操作界面,实现用户上传一张蔬菜图片识别其名称。

二、系统效果图片展示

img_06_22_10_17_53

img_06_22_10_18_12

img_06_22_10_18_47

三、演示视频 and 完整代码 and 安装

视频+介绍+代码:https://www.yuque.com/ziwu/yygu3z/uc1z9asdufhe1co7

四、ResNet50算法

ResNet50是一种深度残差网络,它通过引入残差学习框架解决了深度网络训练中的梯度消失问题。ResNet50包含50层网络结构,使用多个残差块(Residual Block)堆叠而成,每个残差块内部包含多个卷积层和批量归一化层(Batch Normalization),以及ReLU激活函数。ResNet50通过跳跃连接(Skip Connection)将输入直接添加到输出,使得网络可以学习到恒等映射,从而减轻梯度消失问题,使得训练更深的网络成为可能。

以下是使用MindSpore框架的ResNet50算法的示例代码:

# 定义ResNet50网络
network = resnet50(pretrained=True)
# 全连接层输入层的大小
in_channel = network.fc.in_channels
fc = nn.Dense(in_channels=in_channel, out_channels=10)
# 重置全连接层
network.fc = fc

# 设置学习率
num_epochs = 5
lr = nn.cosine_decay_lr(min_lr=0.00001, max_lr=0.001, total_step=step_size_train * num_epochs,
                        step_per_epoch=step_size_train, decay_epoch=num_epochs)
# 定义优化器和损失函数
opt = nn.Momentum(params=network.trainable_params(), learning_rate=lr, momentum=0.9)
loss_fn = nn.SoftmaxCrossEntropyWithLogits(sparse=True, reduction='mean')
def forward_fn(inputs, targets):
    logits = network(inputs)
    loss = loss_fn(logits, targets)
    return loss
grad_fn = ms.value_and_grad(forward_fn, None, opt.parameters)
def train_step(inputs, targets):
    loss, grads = grad_fn(inputs, targets)
    opt(grads)
    return loss

这段代码首先定义了一个ResNet50网络,并替换了原始网络的全连接层以适应新的分类任务。接着,设置了学习率调度器、优化器和损失函数,并定义了训练步骤函数。


http://www.kler.cn/a/377363.html

相关文章:

  • 查看网路信息-ifconfig命令
  • Synchronized锁、锁的四种状态、锁的升级(偏向锁,轻量级锁,重量级锁)
  • H7-TOOL的LUA小程序教程第17期:扩展驱动AD7606, ADS1256,MCP3421, 8路继电器和5路DS18B20(2024-11-01)
  • web开发Django+vue3
  • HiveSQL 中判断字段是否包含某个值的方法
  • 【JAVA】java 企业微信信息推送
  • el-date-picker日期选择器动态设置日期
  • 基于python的语音识别与蓝牙通信的温控系统
  • 2024年大厂AI大模型面试题精选与答案解析
  • ffmpeg常用命令
  • RabbitMQ的主题模式
  • ensp中acl的使用
  • Vue页面带参数跳转
  • UE5 材质篇 0 创建一个材质
  • 如何在社媒平台上使用代理IP来保护帐号安全
  • solidity selfdestruct合约销毁
  • C语言专题
  • CSS元素类型(二)
  • 单个相机矫正畸变
  • 【图解版】力扣第121题:买卖股票的最佳时机
  • 使用贪心策略求解糖果罐调整次数
  • C# 单个函数实现各进制数间转换
  • 设计模式 - 简单工厂模式
  • 使用官网tar包制作OpenSSL及OpenSSH rpm包进行升级安装(OpenSSH_9.9p1, without OpenSSL未解决)
  • 在平衡中追寻高度:探秘AVL树的自我调节之美
  • 基础算法——排序算法(冒泡排序,选择排序,堆排序,插入排序,希尔排序,归并排序,快速排序,计数排序,桶排序,基数排序,Java排序)