基于卷积神经网络的蘑菇识别微信小程序

共 5001字,需浏览 11分钟

 ·

2023-07-09 06:12



a7ecb685c662bb80d4720b0cbfb17002.webp


向AI转型的程序员都关注了这个号👇👇👇








项目描述


本项目是基于SpringBoot和图像分类算法用来识别蘑菇的微信小程序,根据拍摄上传的蘑菇图片,通过python脚本调用训练好的模型,经过后端处理,最后返回识别结果的类别及其识别准确率。


技术亮点



  • 采用MobileNetV2进行作为蘑菇图像分类的特征提取网络,使模型轻量化,使得参数量减少了60%,加快访问速度




  • 通过@ControllerAdvice注解实现拦截器,利用@ExceptionHandler注解捕捉所有异常,进行统一处理




  • 为提升查询效率,在蘑菇学名字段上建立了索引



1.1 总体设计


介绍了小程序的整体系统架构以及使用小程序进行蘑菇识别的流程。


1.1.1 系统架构


小程序采用前后端分离架构,前端采用taro框架,后端采用springboot框架,并通过nginx进行请求转发。


 7d196487272293ca6b94ec178c289bdd.webp


1.1.2 识别流程


使用小程序对蘑菇进行识别时,小程序会向后端发起请求,后端再调用python脚本进行识别,并从数据库查询蘑菇具体信息。



4bd082bdb569304e98ce37c6c92102f5.webp


1.2 算法实现


介绍了蘑菇识别算法采用的数据集,识别算法的设计与实现,以及算法的识别效果与所做的改进。







项目开源代码获取地址:




关注微信公众号 datayx  然后回复 
蘑菇
  即可获取。







1.2.1 数据集


在kaggle获取,地址:


https://www.kaggle.com/datasets/maysee/mushrooms-classification-common-genuss-images


该数据集中有9个最常见的北欧蘑菇属图像文件夹。每个文件夹包含300到 1500个蘑菇属的选定图像。标签是文件夹的名称。



0c822fc72fe6aa458ef2400e1a87477a.webp



5e5456d424caf4963cc29c62f14ae5db.webp


1.2.2 算法设计与实现


处理数据集:用tensorflow.image.decode_jpeg和tensorflow.image.resize 对图片进行标准化。


训练:将图片与标签(文件夹名即标签)打包后,将前百分之80设置为训练集,后百分之20设置为验证集。利用tf.keras.Sequential构建模型model,最后调用model.fit进行训练。


识别:利用tf.keras.Sequential构建模型model,并调用


model.load_weights加载训练好的模型,最后调用model.predict进行预测。


1.2.3 识别结果与改进


训练集准确率:98.53%,测试集准确率:72.32%。




64057c6287b668b9a467c8378ce9ab04.webp



129abe3972db5f414c66f8c0d4cd6421.webp


可以发现这个结果很不理想。一开始我以为是因为过拟合了,于是尝试增加dropout,但发现并没有起到什么作用[张1] 


于是我去看了看数据集中的数据,发现有很多图片是脏数据,比如:



04682053574060f0c5f70838571c34e7.webp


之后我对这些脏数据进行了手动删除,同时我发现图片中干扰元素较多(比如背景中的花草),可能会导致网络无法很好地对蘑菇进行分类。于是我尝试使用了github上的开源库https://github.com/nadermx/backgroundremover 对数据集中的数据进行去背景处理。


去背景脚本:遍历原图片,对当前图片执行 os.system('backgroundremover -i "'+original_file+'" -o "'+new_file+'"')命令进行去除图片操作,并将结果存入另一个文件下。


去背景前:



356d5a2c6e61fefef23493561e58a243.webp


去背景后:



302f7332132d3ba3409ca5b8d4a2c7ed.webp


最后使用去除了脏数据,并进行了去背景操作后的数据集进行训练,训练集准确率:99.88%, 测试集准确率:81.25%。



c022647b813ed6d24c4f654bb756d535.webp



6423375df34420904f8564d9e616e2fc.webp


1.3 应用实现


介绍了小程序应用数据库、后端、前端的设计与实现。


1.3.1 数据库


采用Mysql数据库。由于系统比较简单,只有一张表:mushroom。


mushroom表字段:id(主键),name(蘑菇名称),scientific_name (学名),species(所属科属),toxicity(毒性),feature(特征),文献(documents),img_path(图片路径)。


其中为提升查询效率,在scientific_name字段上建立了索引。


1.3.2 后端


用springboot框架进行开发,用mybatis-plus框架进行数据库交互。


核心接口逻辑:将前端传过来的图片上传至服务器指定路径下-->利用Runtime.getRuntime().exec(command)执行python命令:python identify.py <图片路径>(python脚本读取该路径下的图片进行识别)--> 读取python脚本打印出来的结果(所有类别及其识别准确率),并进行排序-->删除上传至服务器的图片-->返回识别准确率前三的类别。


统一错误处理:通过@ControllerAdvice注解实现一个拦截器,并利用@ExceptionHandler(value = Exception.class)注解捕捉所有异常,进行统一处理。


1.3.3 前端


基于Taro(React)框架进行开发。


上传图片:使用Taro.chooseImgae api选择图片,选择成功后调用Taro.uploadFile api将图片上传至服务器。


页面间传递对象参数:父页面调用Taro.eventCenter.trigger api触发事件,将参数放入事件中。子页面调用Taro.eventCenter.once api监听事件,取得参数。


获取蘑菇详细信息:通过Taro.request api调用后端接口获取详细信息。


1.4 效果展示


使用“识菇”微信小程序进行蘑菇识别的效果如下:


c13579168712684da8ae297112ba1c56.webp 3b52d23414b21df79b0c407afde0ac04.webp 88254cf9c5c93eccf28aa1ce0a044dbc.webp c3f9d23b7f39ec0efe8926f1565d60e7.webp bc20146418b85eab6eb888c9dfa5a811.webp






机器学习算法AI大数据技术





 搜索公众号添加: 

datanlp








长按图片,识别二维码










阅读过本文的人还看了以下文章:







TensorFlow 2.0深度学习案例实战







基于40万表格数据集TableBank,用MaskRCNN做表格检测







《基于深度学习的自然语言处理》中/英PDF







Deep Learning 中文版初版-周志华团队







【全套视频课】最全的目标检测算法系列讲解,通俗易懂!







《美团机器学习实践》_美团算法团队.pdf







《深度学习入门:基于Python的理论与实现》高清中文PDF+源码






《深度学习:基于Keras的Python实践》PDF和代码






特征提取与图像处理(第二版).pdf






python就业班学习视频,从入门到实战项目






2019最新《PyTorch自然语言处理》英、中文版PDF+源码






《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码






《深度学习之pytorch》pdf+附书源码






PyTorch深度学习快速实战入门《pytorch-handbook》






【下载】豆瓣评分8.1,《机器学习实战:基于Scikit-Learn和TensorFlow》






《Python数据分析与挖掘实战》PDF+完整源码






汽车行业完整知识图谱项目实战视频(全23课)






李沐大神开源《动手学深度学习》,加州伯克利深度学习(2019春)教材






笔记、代码清晰易懂!李航《统计学习方法》最新资源全套!






《神经网络与深度学习》最新2018版中英PDF+源码






将机器学习模型部署为REST API






FashionAI服装属性标签图像识别Top1-5方案分享






重要开源!CNN-RNN-CTC 实现手写汉字识别






yolo3 检测出图像中的不规则汉字






同样是机器学习算法工程师,你的面试为什么过不了?






前海征信大数据算法:风险概率预测






【Keras】完整实现‘交通标志’分类、‘票据’分类两个项目,让你掌握深度学习图像分类






VGG16迁移学习,实现医学图像识别分类工程项目






特征工程(一)






特征工程(二) :文本数据的展开、过滤和分块






特征工程(三):特征缩放,从词袋到 TF-IDF






特征工程(四): 类别特征






特征工程(五): PCA 降维






特征工程(六): 非线性特征提取和模型堆叠






特征工程(七):图像特征提取和深度学习






如何利用全新的决策树集成级联结构gcForest做特征工程并打分?






Machine Learning Yearning 中文翻译稿






蚂蚁金服2018秋招-算法工程师(共四面)通过






全球AI挑战-场景分类的比赛源码(多模型融合)






斯坦福CS230官方指南:CNN、RNN及使用技巧速查(打印收藏)






python+flask搭建CNN在线识别手写中文网站






中科院Kaggle全球文本匹配竞赛华人第1名团队-深度学习与特征工程









不断更新资源




深度学习、机器学习、数据分析、python





 搜索公众号添加: 

datayx  










浏览 115
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报