-
2018-11-04 20:56:12
分类和识别是机器学习领域非常常见的一类问题,比如之前非常火热的 ImageNet 挑战赛,还有人脸识别,人脸表情识别等,接触机器学习的一般来说,都是从识别开始,因为识别比较简单直观,而且大家都对目前识别领域比较常见的几个数据集比如 MNIST, CIFAR-10, CIFAR-100 还有 ImageNet 等都比较熟悉了,这些都是为了解决分类识别问题而设计的数据集。
随着深度学习的蓬勃发展,在分类识别领域,又分化出来很多不同的方式,虽然这些概念在深度学习出来之前,就已经有了,但是有了深度神经网络结合大数据,以前的这些概念又被重新翻出来,不管是新瓶装旧酒,还是焕发了第二春,反正这些概念最近又开始被吵的火热了,什么 few-shot learning, zero-shot learning, incremental-learning,meta-learning 之类的又开始受到了越来越多的关注。虽然这些概念不仅仅用于分类识别,不过用分类识别问题来解释这些概念简单直白。
一般来说,给定一个数据集 X = { x i } i = 1 N \mathcal{X}=\{ \mathbf{x}_i \}_{i=1}^{N} X={xi}i=1N,这个数据集属于 K K K类,假设标签空间为 Y = { y j } j = 1 N \mathcal{Y}=\{ \mathbf{y}_j \}_{j=1}^{N} Y={yj}j=1N, x \mathbf{x} x 一般表示为图像,比如手写数字的MNIST数据集,一张图就是一个数字比如 0, 1, 2, 3, 4 等等,或者ImageNet 的图像,一张图表示某一个物体,比如猫啊, 狗啊什么的, y \mathbf{y} y 表示一个标签,就是我们常说的 one-hot 向量,比如 MNIST 的标签是 10 维的向量,ImageNet 的标签是 1000 维的向量, 只有一个位置是1,其他位置都是0,每个类的标签按列拼在一起,就可以组成一个标准的单位矩阵。分类问题,简单来说,就是把属于同一类的图像聚到一起,都是手写数字 0 的图像,应该都归为一类,都是手写数字 2 的图像,应该归为另外一类,不能把手写数字 8 的图像,归到 0 这一类,所以分类问题,简单来说,就是物以类聚。
从数学的角度上来说,分类识别就是图像到标签的一个映射过程 :
X ⇒ Y \mathcal{X} \Rightarrow \mathcal{Y} X⇒Y
说了这么多,我们把什么是分类识别问题解释了,现在来看看,经过这么多年的发展,学术界把分类识别问题又做了不同的划分,根据不同的设定,着手解决不同的问题,归纳起来,主要有以下几类:
- 有监督学习(supervised learning)
- 无监督学习(unsupervised learning)
- 半监督学习(semi-supervised learning)
- 小样本学习(few-shot learning)
- 零样本学习(zero-shot learning)
- 增量学习(incremental learning)
- 元学习(meta-learning)
- open question (classification in the real-world, open environment)
有监督学习
有监督学习,应该是最常见,发展最成熟的一种分类识别问题了,所谓的有监督,那就是类别的标签是已知的,目前学术界研究的大多数分类识别问题都属于这一类,所以我们见到的数据集一般都是带着标签的,这类问题,都是希望找到一个映射,图像空间到类别空间的一个映射,借着类别标签的 “指引”,把同一类的图像尽可能的映射到一块,聚在一起,因为有标签的“指引”,所以这类问题,相对来说比较容易解决,特别是随着深度神经网络与算力的发展,各大从前的榜单都在被不断刷新,ImageNet 火了几年之后,也不再举办了,估计这榜再刷下去也没什么意思了,有监督学习,发展到现在,越来越像在烧钱,比拼的是数据和计算资源。
无监督学习
有监督学习,正如上面说的,需要有标签做“指引”,所以需要很多有标签的数据,而且深度学习需要消耗大量的数据,有标签的数据越来越难获取,需要消耗大量的人力与物力。所以,就有人想,能不能研究一种学习模式,可以不需要类别标签,也能让模型学会分类,所以就发展出了所谓的无监督学习,无监督学习,顾名思义,是不需要类别标签做“指引”的, 直接从数据图像中寻找每一类内在的联系,把同一类图像的特征耦合在一起,不过,到目前为止,这类无监督学习的效果一直不太理想,没有标签的指引,模型好像很难学好。
半监督学习
介绍了有监督学习和无监督学习,接下来介绍半监督学习,半监督学习结合了有监督学习和无监督学习,半监督学习,既不需要有监督学习那么多的有标签数据,不过与无监督学习相比,又多了一些标签数据做 “指引”,所以基本上一种把有标签数据和无标签数据混合在一起学习的一种模式。
小样本学习 (Few-shot learning)
小样本学习,在深度学习火热起来之前,也有一些人研究,最近两年,这个课题又开始受到越来越多的关注,小样本学习,应该还是属于有监督学习的一种,只是与常规的有监督学习相比,每一类的有标注的数据非常少,学术界经常说的的 1-shot, 5-shot 等等,就是说每一类都只有一个或者五个有标签的样本,这个课题的起源,是为了更好的研究模拟人的认知能力,因为人去学习识别一个东西,是不需要去看那么多的有标签的数据的,不过,从目前学术界发表的研究成果来看,基本还是基于 metric-learning 或者 meta-learning 的方式,利用 迁移学习的概念,先在大量的有标签的数据上训练网络,让网络学到一种有效的特征提取或者学到一套有效的模型参数,然后再在小样本数据集上进行训练。目前,这个方向发表出来的结果,在 Mini-Image Net 上的识别率还不是很高,还有进一步的提升空间。
零样本学习 (Zero-shot learning)
零样本学习,是比小样本学习更进一步,最近两年也变得火热起来了, 所谓零样本,那就是完全不需要样本的参考,而去推断识别新的类别,这个研究目前还处于起步阶段,用到的最多的方式,就是基于属性的识别,可以把每个类别进一步拆分成很多个不同属性的组合,某些属性的组合,可能就大概率的对应某个类别,所以,虽然新的类别,没有带标签的样本,但是,从之前的数据集上,可以让模型先学习识别不同的属性,碰到新样本的时候,先识别出该样本的属性,然后再结合不同的属性,进而判断出该样本属于什么类。
增量学习 (Incremental learning)
这个也是目前比较火热的一个研究方向,所谓增量学习,与之前见识的学习问题不太一样,早期的分类识别,都假设类别是已知的,并且是固定的,也就是说,我们会先分好训练集,测试集,并且知道训练集与测试集的类别都是已知的,但是增量学习,提出了另外一种学习问题,在真实的环境中,数据肯定不是一次性就全部给定的,而是在逐渐增加的,逐渐增加的数据,有可能是新的类别,也有可能是原来的类别,这样的话,就需要找到一种学习策略,让模型能够不断的去适应环境,增量学习最想解决的一个问题就是“参数遗忘”,我们知道,神经网络在训练的时候,都是尽可能地去拟合它所见到的数据,如果神经在学习的过程中,只能见到当前的数据,而以前的数据无法再见到的话, 那么之前学到的关于之前数据的性质,都将被遗忘,这就有点像狗熊掰棒子一样,只能顾到当下,以前的全给忘了,增量学习就是想解决这个问题,让模型随着见到的数据越来越多,模型的识别能力可以逐步提升。
元学习(meta-learning)
meta-learning, 号称,learning to learn,是目前比较火的一种学习策略,说通俗一点,就是希望让模型自己学会怎么训练,类似 auto-ML 的一些东西,这个在 few-shot learning 领域,有些研究已经结合了 meta-learning 的思想,去训练网络。
Open question
最后,说一些题外话,现在学术界,考虑分类识别的时候,更多的时候还是在一种可控的环境下来做,比如 ImageNet 1000 类,听起来似乎很多,但是与真实的环境相比,这 1000 类一点也不多,目前所有主流的测评,都是基于这 1000 类来进行比较,而忽略了其他类,这就是我们所说的开放环境,学术界是不考虑开放环境的,因为开放环境太复杂,没有办法做,如果模型在一个封闭的环境下学习,只能认识有限的类别,那这种模型永远没有办法在实际环境中工作。
所以,虽然现在 AI 引爆了一股股的热潮,但是离通用的 AI 还很遥远,即使是在简单的分类识别问题上,学术界的AI 研究,很多时候,都是基于 100% 的已知可控,数据集被研究了无数遍,但是真实环境中,可能 90% 都是未知的,如何用 10% 的已知去应对 90% 的未知,这可能是机器学习最大的难点。
更多相关内容 -
上海 垃圾分类识别模型
2019-07-06 18:15:19快速搭建垃圾分类模型: 使用inception快速搭建的图像分类模型,目前支持1000类识别。从图像中识别出类别后,再通过textcnn模型对垃圾类别进行映射,最终输出垃圾的类别。 注:垃圾类别是以上海分类标准。 -
opencv使用SVM实现图像分类识别
2018-05-08 17:57:16opencv使用SVM实现图像分类识别,代码已测试通过,能帮助我们更好理解SVM和opencv编程的使用。 -
动物图像多分类识别MATLAB可运行
2017-02-11 17:39:52MATLAB运行代码 可实现对四种动物图像的分类识别 提取特征进行分类识别 -
图像特征分类识别程序
2012-12-29 22:29:10基于matlab的 图像特征分类识别 图像处理 分割 树叶图像特征提取 -
【代码分享】手把手教你:图像识别的垃圾分类系统
2021-09-13 16:05:27主要介绍如何使用python搭建:一个基于深度残差网络(ResNet)的图像识别垃圾分类系统。完整代码使用方法可参考博文:https://blog.csdn.net/weixin_43486940/article/details/120267108 -
LabVIEW色彩分类识别(基础篇—15)
2021-08-07 18:18:42色彩分类用于根据样本的颜色信息对其进行分类识别。与单色目标的分类识别类似,色彩分类过程也包括训练和分类两个阶段。色彩分类(Color Classification)用于根据样本的颜色信息对其进行分类识别。与单色目标的分类识别类似,色彩分类过程也包括训练和分类两个阶段。
- 训练阶段主要用来基于各种彩色样本创建分类器。它从每个参与训练的样本中提取色彩特征,并将该特征与类标签进行关联以备后用。
- 分类阶段则主要用于从待分类图像中提取颜色特征,并参照分类器信息对其分类。分类的方法可采用最邻近法、K-邻近法、最小平均距离法或支持向量机分类法。
色彩分类的特征提取过程并不直接使用色谱,而是基于HSL空间构建分辨率可选的(高、中、低3挡)的一维色彩特征向量。它先将彩色样本图像转换到HSL色彩空间,然后计算彩色样本的色调、饱和度和亮度分量的直方图。对于每个由单字节表示的颜色分量直方图,保留色调和饱和度分量直方图中的256个值对应的信息,但是只保留亮度分量直方图中8个亮度值相关的信息。通过这种对亮度分量直方图的抑制,色彩特征向量中的颜色信息会更突出,亮度信息会被抑制在8种灰度之内。将包含256个色调信息和256个饱和度信息的两个直方图,与包含8个亮度信息的直方图进行组合,即可得到高分辨率的色彩特征向量。
中分辨率和低分辨率色彩特征向量是通过先提取高分辨率色彩特征向量,然后再对其应用动态遮罩(Dynamic Mask)获得的。动态遮罩基于参与训练的样本创建,用于从高分辨率色彩特征向量中选出最能代表某个类的色调和饱和度直方图信息。在对于每个新添加的彩色样本学习时,动态遮罩通过下述过程被创建或更新:
- 对于每个类,基于其中每个样本的色调和饱和度的直方图,计算该类的平均色调和饱和度直方图。
- 基于所有类的平均色调和饱和度直方图的均值直方图,计算各类的平均色调和饱和度直方图上元素值的标准差。
- 从类平均色调和饱和度直方图元素值中依次选出128个标准偏差最高的值对应的位置作为遮罩,用于生成中分辨率色彩特征向量。或者依次选出64个标准偏差最高的值对应的位置作为遮罩,用于生成低分辨率色彩特征向量。
- 扫描各类的动态遮罩位置对应的值,确保其中至少包含一个最大色调和一个最大饱和度直方图值。
Nl Vision提供了两种色彩训练方法,一是使用NI色彩分类训练器离线完成色彩训练(位于:National Instruments\Vision\Utility\Color Classification Training Interface\Color Classification Training.exe),二是使用程序代码在运行时完成色彩训练。
NI色彩分类训练器可以在进行色彩分类之前,先从多个采集到的彩色样本图像中提取高分辨率的色彩特征,并将该特征与类标签进行关联。若选择了中分辨率或低分辨率,则训练过程还会对高分辨率的色彩特征施加动态遮罩过程,获得相应分辨率的色彩特征向量。随后,训练过程会将样本的特征向量、样本分类方法连同各个类的动态遮罩等信息一并保存在后缀名为clf的色彩分类器文件中。这样在后续色彩分类过程中,就可从该文件中读取这些信息,对彩色目标进行识别和分类。
下图显示了使用NI色彩分类训练器为洗手液分类系统训练色彩样本时的程序界面。使用该工具可以打开收集到的彩色洗手液样本图像,从中选择蓝色、绿色或白色的瓶盖分别作为类样本进行训练。训练过程中,可对样本进行编辑或删除,训练完成后得到的样本色彩特征可保存在clf文件中以备后用。
Nl Vision还提供了对彩色样本图像进行训练和分类的函数。它们位于LabVIEW的视觉与运动→Machine Vision→Machine Learning→Classification函数选板中,如下图所示:
函数说明及使用可参见帮助手册:
通过使用NI Vision色彩分类函数对洗手液进行分类的实例,了解色彩分类的使用,程序设计思路如下所示:
- 程序先用IMAQ Read Classifier File从NI色彩分类训练器创建的色彩分类器文件Soap.clf中读取学习到的样本特征等信息;
- 随后While循环中的代码逐一取出待测图像文件夹中的图像,由IMAQ Classify或IMAQClassify Color Advanced对指定ROI区域的图像色彩进行分类,返回其类别归属及分类和识别分值等信息。IMAQ Overlay Text可以在图像上以无损图层的方式添加待测图像的类名;
- 当用户单击STOP按钮退出While循环后,程序会丢弃会话,释放内存,然后退出程序。
程序实现如下所示:
运行程序,显示了分类程序检测到绿色洗手液瓶子时的情况:
-
使用机器学习模型快速进行图像分类识别
2021-02-11 04:51:13点击上方蓝色字体“州的先生”选择关注公众号Python编程应用实战,尽在掌握这是...在本篇,我们继续介绍借助sklearn库创建用于进行分类预测的机器学习模型。对分类问题进行预测同样属于监督学习的范畴,通过对...点击上方蓝色字体“州的先生”选择关注公众号
Python编程应用实战,尽在掌握
这是《Python AI极简入门》第5篇
零、前言
在上一篇,我们介绍了使用sklearn库快速创建一个用于预测房价的机器学习回归模型,并通过平均绝对误差、均方差和R3分数有效地评估了这个预测模型的效果。
在本篇,我们继续介绍借助sklearn库创建用于进行分类预测的机器学习模型。
对分类问题进行预测同样属于监督学习的范畴,通过对已知数据的类别的标记,来实现对未知数据的类别的预测和判定。
常见的应用领域包括:垃圾邮件识别、垃圾短信识别、图像分类识别等等。
常见的应用算法则有:SVM(支持向量机)、K紧邻、朴素贝叶斯、随机森林等等。
下面,我们就通过Digits手写数字集来进行机器学习分类模型的介绍。
一、初探手写数字数据集
本篇选用的手写数字数据集同样来自有sklearn.datasets子模块,其由著名的UCI 机器学习库提供:
该数据集由1797个8x8图像组成。每个图像,都是手写数字。
就像上一篇导入波士顿数据集一样,我们从sklearn模块中进行导入:
接着查看数据集中包含的子方法:
与波士顿数据集类似,其提供了images、target_names、target、data、DESCR等方法。其中:
images:表示图像的原始数组;
target_names:表示图像分类中所有的数字;
target:表示图像数组对应的数字名称;
data:表示图像的一维特征数组;
DESCR:表示数据集描述信息;
从这两个数据集可以发现,sklearn的API还是挺统一和规范的,很方便进行学习和调用。接下来,我们看看每个方法中到底都是些什么。
通过查看images的形状,以及已知的图像为8×8的形状,我们可以得知,这个数据集中有1797个图像。看看其中一个图像的内容:
这就是一个图像转换成数组之后的形式,我们怎么知道这是个什么图像呢?可以借助于matplotlib模块来将图像数组还原为图像。
可能之前搭建环境的时候没有安装这个模块,我们先来安装一下:
然后引入matplotlib模块,调用imshow()方法:
可以发现,iamges中的第一个图像似乎数字0。我们继续看下面的内容。
data的target_name信息显示,我们的数据代表的数字分类类别为0到9。
数据的目标值与数据集时匹配的,最后再看看data的data:
数据量还是1797条,但是形状已经从二维的(8, 8)变成了一维的64,我们从一个具体的数据中看看:
可以发现,data.data中的数组将之前8*8的数组合成为了一个数组,这样才能方便对图像的数组运用算法进行训练和计算。那又如何将一维的图像数组还原为图像呢,通过是上面的方法,但是需要先将一维数组转换一下形状:
我们同样将数据集的特征和目标转换为pandas的DataFrame,方便各位同学理解数据集的形状:
二、分割训练测试集
同样使用sklearn提供的train_test_split方法来对数据集进行训练集和测试集的分割:
三、创建分类模型
在此,我们同样选择随机森林算法 作为机器学习模型估计器的基本算法来创建一个机器学习分类器并进行训练:
四、评估模型
在训练完成模型之后,我们同样可以使用模型的predict()方法获取到测试集的预测结果:
在面对回归模型的时候,我们可以使用平均绝对误差、均方差等方法对模型的效果进行评估,而在分类算法模型中,我们使用其他的方法进行模型效果的评估,比如:精度分类评分、召回评分等。而这些方法,也都在sklearn模块的metrics子模块下。
我们来对分类模型进行效果评估:
两种评估方法的最佳结果值都是1,看起来我们的模型准确度还是蛮高的,大家可以尝试其他的算法构建分类模型。
欢迎留言交流讨论:)
下一篇,我们将介绍构建一个聚类预测型。
-
【Raspberry Pi】树莓派垃圾分类识别项目
2020-11-11 22:18:10树莓派垃圾分类识别项目树莓派端配置服务器端配置 树莓派垃圾分类识别项目来源: https://gitee.com/likecy/garbage-raspi 感谢作者,请给作者个Star吧! 树莓派端配置 参考自己的这篇笔记。 USB摄像头要在使用前拔...树莓派垃圾分类识别项目来源:
https://gitee.com/likecy/garbage-raspi
感谢作者,请给作者个Star吧!代码编写环境配置
Pycharm配置SSH
https://www.evget.com/article/2019/12/26/34239.html树莓派端配置
参考自己的这篇笔记
https://blog.csdn.net/qq_45552341/article/details/109558058- USB摄像头要在使用前拔插一次,并通过以下命令查看设备是否已被检测到。
ls /dev/video*
- npm打包时报错:
按照提示安装
sudo snap install snapcraft
提示找不到命令snap,此时执行
sudo apt-get install snap
不🆗还有报错!!!
windows端打包
npm run build
报错:
https://blog.csdn.net/g_soledad/article/details/105053322服务器端配置
- TensorFlow
- Kera
语音合成
语音播报的实现方案,我计划使用百度合成垃圾种类的语音文件,接收到神经网络端的检测结果result后,根据对应类别直接播放对应语音,实现本地语音播报,减少对网络的依赖。
- 修改官方speech_demo的tts.py,将所有垃圾类别语音合成出来。
- 垃圾类别存储在
garbage_classify_rule.json
中,读取json文件。
# 读取json文件内容,返回字典格式 with open('./source_file/info.json','r',encoding='utf8')as fp: json_data = json.load(fp) print('这是文件中的json数据:',json_data) print('这是读取到文件数据的数据类型:', type(json_data)) # 将字典数据写入到json文件中 dict1 = {'name': '张三', 'age': 18, 'sex': '男'} with open('./source_file/info.json','a',encoding='utf8')as fp: json.dump(dict1,fp,ensure_ascii=False) # 如果ensure_ascii ' '为false,则返回值可以包含非ascii值
generate_audio.py
完整代码:
官方tts.py有点复杂,根据说明文档重新写一下。# _*_ coding:UTF-8 _*_ from aip import AipSpeech import os import json # 此处三个参数,在自己申请的百度智智能云账号控制台查看 APP_ID = '******' API_KEY = '******' SECRET_KEY = '******' # 新建一个AipSpeech client = AipSpeech(APP_ID, API_KEY, SECRET_KEY) # 将本地文件进行语音合成 def tts(): with open('./garbage_classify/garbage_classify_rule.json', 'r', encoding='utf8')as fp: json_data = json.load(fp) for index in json_data: word = json_data[index].split('/')[1] result = client.synthesis(word, 'zh', 1, { 'vol': 5, 'per': 4, }) # 合成正确返回index.mp3,错误则返回dict if not isinstance(result, dict): with open('audio/' + index + '.mp3', 'wb') as f: f.write(result) f.close() print(index, 'tts successful') class_dict = {"recyclable": "属于,可回收垃圾。", "harmful": "属于,有害垃圾。", "kitchen": "属于,厨余垃圾。", "other": "属于,其他垃圾。"} def tts_class(): for name in class_dict: class_name = class_dict[name] result = client.synthesis(class_name, 'zh', 1, { 'vol': 5, 'per': 4, }) # 合成正确返回name.mp3,错误则返回dict if not isinstance(result, dict): with open('audio/' + name + '.mp3', 'wb') as f: f.write(result) f.close() print(name, 'tts successful') if __name__ == '__main__': tts() tts_class()
- 在工程garbage_app_sever文件夹下,添加
speak.py
实现语音播报。
Python在程序中打开终端,并执行命令
import os os.system("gnome-terminal -e 'gazebo'") # 执行完关闭 os.system("gnome-terminal -e 'bash -c \"ls; exec bash\"'") # 执行完不关闭
speak.py
注意:os.system("mpg123 " + class_dict[channel])
这里的mpg123
后面有空格,否则无法执行。- class_dict 里面的key,必须是int,就不要加引号,否则和接口获得的key类型不同,会报错。
import time import os # 以下字典建议用文件形势存储,再读取文件,便于后期维护 class_dict = { 0: "./audio/recyclable.mp3", 1: "./audio/other.mp3", 2: "./audio/kitchen.mp3", 3: "./audio/harmful.mp3" } name_dict = { "./audio/0.mp3": "其他垃圾/一次性快餐盒", "./audio/1.mp3": "其他垃圾/污损塑料", "./audio/2.mp3": "其他垃圾/烟蒂", "./audio/3.mp3": "其他垃圾/牙签", "./audio/4.mp3": "其他垃圾/破碎花盆及碟碗", "./audio/5.mp3": "其他垃圾/竹筷", "./audio/6.mp3": "厨余垃圾/剩饭剩菜", "./audio/7.mp3": "厨余垃圾/大骨头", "./audio/8.mp3": "厨余垃圾/水果果皮", "./audio/9.mp3": "厨余垃圾/水果果肉", "./audio/10.mp3": "厨余垃圾/茶叶渣", "./audio/11.mp3": "厨余垃圾/菜叶菜根", "./audio/12.mp3": "厨余垃圾/蛋壳", "./audio/13.mp3": "厨余垃圾/鱼骨", "./audio/14.mp3": "可回收物/充电宝", "./audio/15.mp3": "可回收物/包", "./audio/16.mp3": "可回收物/化妆品瓶", "./audio/17.mp3": "可回收物/塑料玩具", "./audio/18.mp3": "可回收物/塑料碗盆", "./audio/19.mp3": "可回收物/塑料衣架", "./audio/20.mp3": "可回收物/快递纸袋", "./audio/21.mp3": "可回收物/插头电线", "./audio/22.mp3": "可回收物/旧衣服", "./audio/23.mp3": "可回收物/易拉罐", "./audio/24.mp3": "可回收物/枕头", "./audio/25.mp3": "可回收物/毛绒玩具", "./audio/26.mp3": "可回收物/洗发水瓶", "./audio/27.mp3": "可回收物/玻璃杯", "./audio/28.mp3": "可回收物/皮鞋", "./audio/29.mp3": "可回收物/砧板", "./audio/30.mp3": "可回收物/纸板箱", "./audio/31.mp3": "可回收物/调料瓶", "./audio/32.mp3": "可回收物/酒瓶", "./audio/33.mp3": "可回收物/金属食品罐", "./audio/34.mp3": "可回收物/锅", "./audio/35.mp3": "可回收物/食用油桶", "./audio/36.mp3": "可回收物/饮料瓶", "./audio/37.mp3": "有害垃圾/干电池", "./audio/38.mp3": "有害垃圾/软膏", "./audio/39.mp3": "有害垃圾/过期药物" } new_name_dict = {v: k for k, v in name_dict.items()} # print(new_name_dict) def speak_class(channel): os.system("mpg123 " + class_dict[channel]) def speak_name(name): os.system("mpg123 " + new_name_dict[name])
- 运行时,点击拍照识别后会报错
os.system("mpg123 " + new_name_dict[name]) os.system("mpg123 " + new_name_dict[name]) KeyError: "b''" os.system("mpg123 " + new_name_dict.get(name)) TypeError: can only concatenate str (not "NoneType") to str 192.168.137.25 - - [11/Nov/2020 15:27:50] "GET /open_motor?channel=0 HTTP/1.1" 500 -
解决方案:https://www.gongyesheji.org/?p=1340
第一个错要在reques.data前加str(),即str(reques.data)
原因是key要与字典里面key同类型,
第二个报错要在new_name_dict.get(name)前加str(),即str(new_name_dict.get(name))
原因是只有同类型才能用+
拼接。导致无法播放的原因是获取的识别结果为空。实际要在app_sever.py内修改。
name = shut_photo()
修改前端界面
------------未完待续------------
-
遥感影像地图分类识别的研究与实现
2020-11-11 21:02:59遥感影像地物分类是指根据影像中的地物的光谱、纹理、形状等特征,对地物目标进行识别的过程。遥感影像地物分类过程主要有两个部分组成,一是遥感影像的特征提取,二是选择合适的分类器进行地物分类。特征参数的提取... -
K210的20种物体分类识别
2021-08-06 11:02:19K210物体20种分类检测 文章目录 K210物体20种分类检测 前言 一、找到模型原型以及固件 获得K210对应的机器码 获得官方模型...并且可以参考1000类物体分类识别。 **许多的开源模型都能在maixHub中下载并且使用在K210上。 -
基于深度学习的垃圾分类识别系统
2020-04-28 05:46:43垃圾分类识别系统 结束 摘要 随着我国经济的飞速发展,人民生活水平的提高,生活垃圾的产生量也急剧增加。垃圾种类繁多,材质、颜色和外形各异,而且在不同地域和不同场景下的类别划分差异也很大。比如有按干/湿... -
2021年科大讯飞 基于深度学习的小样本分类识别任务挑战赛前三名队伍分享
2022-01-13 11:43:521. 第一名 ndscai ...1.2.6 基于预训练模型的小样本分类 1.3 下阶段优化思路 2. 第二名 Nowhere 2.1 团队介绍 2.2 算法方案解析 2.2.1 赛题理解 2.2.2 数据分析 2.2.3 算法思路 2.2.4 数据预处理 2.2.5 损失函数 -
水果分类识别matlab代码,有详细的注释
2011-05-03 11:19:41水果的分类识别,有详细的注释,希望能给你带来帮助。。 -
LabVIEW目标对象分类识别(理论篇—5)
2021-07-31 16:09:53目标对象分类是机器视觉领域非常活跃的研究方向,在工业领域有极其广泛的应用,例如对生产线上的零件按形状、颜色等特征分拣,统计具有某种特征的零件,或通过辨别目标的类别进行质量检测等。 -
图像分类识别算法(基于halcon)
2020-06-09 17:34:36背景:s10缺陷中间件检测需要对各个面进行检测,每个面的检测内容不同(上顶面对电源线及排线检测/底面对电源线/左侧对散热区螺纹检测/左侧需要对颜色次序排序进行识别),每一个面都有一套算法,面临的一个问题是... -
BCI脑机接口7:特征信号的分类识别
2020-05-18 20:40:29②、特征信号的分类识别: 特征信号分类是基于脑电信号根据不同的运动或意识能使脑电活动产生不同响应的特性,确定运动或意识的类型与特征信号之间的关系。信号分类结果的好坏取决于两个方面的因素:一是要进行分类... -
机器学习:关于图像分类识别的一些思考
2019-04-26 19:31:18在计算机视觉领域,图像的分类识别,可以说是最基础,最常见的一个问题,从之前的手动特征提取结合传统的分类模型,到如今的深度学习,虽然分类识别领域的各个数据库的识别率在不断被刷新,从常见物体识别,到细粒度... -
基于TensorFlow的卷积神经网络的岩石图像分类识别(简易实践案例)
2021-06-05 23:14:40基于TensorFlow的卷积神经网络的岩石图像分类识别 今有砾岩(Conglomerate)、安山岩(Andesite)、石灰岩(Limestone)、石英岩(Quartzite)和花岗岩(Granite)5种岩石图片,每张图片的大小不一。试建立卷积神经模型,利用... -
基于深度学习框架的水声信号的扩充和分类识别
2019-07-27 15:18:10现如今,基于声音信号的海上目标识别是进行海量探测和目标识别的可靠方法,也是水声信号处理领域的重要研究内容。 发表论文: Expansion of restricted sample for underwater acoustic signal based on generative... -
【Deep Learning】基于 Keras 的猫狗分类识别
2018-11-21 11:15:41基于 Keras 的猫狗分类识别 本篇主要实现利用 Keras 来实现 Kaggle 的经典比赛 ——猫狗识别,目的是熟悉 Keras 的基本用法与使用环境,为后期利用 Keras 和 TensorFlow 实现更多的深度学习网络打下基础。 ... -
基于深度学习的语音分类识别(附代码)
2018-12-15 12:11:44此练习题旨在向您介绍通过神经网络来解决通常的分类场景中的音频处理。该数据集包含来自10个类别的城市声音的8732个声音摘录(),即: 冷气机 汽车喇叭 孩子声音 狗皮 ... -
Springboot垃圾分类识别小程序源码带部署文档【免费分享]
2022-04-26 11:58:16前端:微信小程序 采用 uni-app 开发框架,uni-app 是一个使用 Vue.js 开发所有前端应用的框架, 后端:采用 SpringBoot 2 构建后端服务,使用 Swagger2 构建 Restful...语音识别和图像识别采用百度智能云平台服务。 -
基于tensorflow + Vgg16进行图像分类识别的实验
2017-11-26 22:37:37图像分类识别目前已经得到了很大的飞跃,特别是15年微软提出的resnet已经超越人类,能够对图像中的物体进行更好的识别。 为了初步了解一下图像分类识别的过程,学习了一下大牛的主页,发现还是很有意思的。而且... -
基于神经网络的植物叶片分类识别
2013-04-25 17:40:21基于MATLAB,数字图像处理,更便于图像的识别和分类 -
RBF神经网络对iris鸢尾花数据集进行分类识别
2017-05-05 18:21:14RBF神经网络对iris鸢尾花数据集进行分类识别 -
Yolov5实现物体分类识别和电子围栏
2022-01-22 22:48:48物体分类识别:基于yolov5模块,对里面的detect.py函数进行修改(更改输入图片的地址并将save_txt置为True,保存识别框的坐标为txt文件。) 坐标转换函数:由于yolov5保存的坐标为标准化后的坐标,而我们所需要的是... -
百度图像识别(3)垃圾分类应用
2021-08-17 11:04:10之前通过百度AI接口实现了图像识别,目标做图像识别再进行垃圾分类提示,于是乎我在网上查询各垃圾分类的数据集,很多数据集收费的各大网站让我很反感,接下来放两个比较nice的开源站:(开源让技术进步!... -
图像处理 图像识别 模式识别 分类检测
2022-05-02 14:37:08文章目录图像处理图像识别模式识别图像识别的过程图像识别的应用分类与检测 图像处理 图像识别 • 图像识别技术是信息时代的一门重要的技术,其产生目的是为了让计算机代替人类去处理大量的物理信息。随着计算机... -
基于TensorFlow的CNN模型——猫狗分类识别器(一)之前言
2021-03-05 21:35:13猫狗分类识别器 ——基于TensorFlow的CNN模型 前言 本项目是作者(MRL Liu)使用Python学习CNN模型的实践项目,整体难度不高,可以作为手写数字识别项目的进阶选择,模型的训练难度也并不算高。 本项目是基于...