人工智能算法综述(一)鬼柒

“那一些被认作常识的东西,是不是只是时代的附属品?从整个历史的长河去看待,也许是一些莫名其妙或者残忍至极的怪事而已”

2017-2018这两年因为一些爆炸式的AI应用,导致又把公众的视野转向这个方向发展,自图灵提出“图灵测试”之后,AI已经爆发了两次热潮,相应的也跌入了两次低谷,目前看应该是进入了第三次的热潮,但是之后是迎来“奇点”,还是第三次低谷,尚不可知。

--------------(这看上去像一根线)--------------------

闲话少说,为各位呈上各类流弊的算法简介(通俗易懂的说明,具体细节不表),可能会有些地方讲的不对,希望能得到一点友情提醒,我会立马修正。

CNN:卷积神经网络

我在上一篇关于tensorflow(谷歌开源AI框架)的踩坑日志有说过一点关于卷积神经网络的基本原理。

就是卷积层+N层神经网络BP层(也叫全链接层)关于BP的原理我之前有写过一篇了,翻回去看看就有了。

那卷积层具体是什么呢?很像是一个滤镜层,我们知道实际上图像是由每个像素点组成的矩阵,然后每个像素点又可以由RGB3原色的数值表示范围是(0-255)如果做一次灰度处理,那么每个像素点就是由0-255的灰度数值表示。那图像就等同于一个2维的数字矩阵。当然如果颜色想保留的话,不做灰度处理的话,RGB就等同于3个不同的矩阵,长宽是一样的。里面的数值不同而已。

那我们回到卷积层,就是拿一个卷积核在这个矩阵上滚一遍(矩阵相乘)得出一个新的矩阵。卷积核也是一个小的2维矩阵,不同数值的卷积核,可以对这张图片提取的信息不同,这就是图像的特征,比如说把一个专门提取竖线的卷积核在原始图片上滚一遍,就能获得一个全部都是竖线的特征图。如果我们要做一个竹子的识别器,肯定要用这个特征了。但是如果要做一个篮球的识别器,就用不上了,用或者不用,这是由BP层决定的。但是提取的工作还是要做的,但是怎么决定卷积核应该是由什么数值构成呢?随机!因为这个算法比较通用,可以做成识别各种东西,所以卷积核应该是任意特征都能提取的,那只要生成1000,1W,或者1亿个卷积核,每个都在这个图像上滚一遍,就能提取1亿种特征了。如果最后BP层只用到其中一个特征就能识别竹子或者篮球。那岂不是非常浪费,所以卷积核的数量要根据识别复杂度而定。否则计算量很可怕。

当然CNN里面还有很多细节,比如池化层,归一化,dropout。

池化层也有几种不同的方法,如果是求均值就是meanpooling,求最大值就是maxpooling

池化就是降维比较好理解一点吧,为了减少计算量。

归一化(Normalization,也叫规范化)是为了让数据在网络中传输的时候不要太大,或者太小,或者太稀疏。

听说效果不错。

dropout是指随机的把一些特征失效掉来训练这个网络,这样泛化能力比较强。我自己实践过一次,但是感觉训练过程变得更久了,波动更大了。慎用。

这里列了一些tensorflow内置的一些梯度下降优化器GradientDescentOptimizer,AdagradOptimizer,MomentumOptimizer,AdamOptimizer

CNN的算法里面有很多参数要调,比如说网络的层数,初始学习率,dropout的概率等等,这类统称为超参数

虽然我们刚才说的都是图像上的,但是文字跟音频也可以转化成这种输入,类似说1*N的矩阵。

----------------------(这看上去跟第一根线没什么区别)----------------------

RL:强化学习(reinforcementlearning)

关于RL的详细内容可以看Deepmind的公开课

强化学习核心的原理是:

造一个agent(智能代理者)跟环境(state)交互(action)然后根据获得的反馈(reward)反复训练后,这个agent可以在遇到任意的state时都能选择最优的决策(action),这个最优的决策会在未来带来最大化的reward。

RL解决的问题是连续决策问题,就是有一系列的决策之后才会获得奖励的现实问题。比方说某baby3岁,暂且先叫A酱,A酱还不会拿杯子喝东西。我们知道最优策略就是

:靠近杯子,拿起来,倒进嘴巴里。

但是她一开始的时候并不知道看到一个杯子在远处,究竟是应该靠近,还是远离。而且就算反复做了这2件事,也没有一些立即奖励给她(喝到东西)。所以说奖励是滞后的,但是我们希望可以对动作的打分,根据分数的高低让智能体选出最佳的决策,比方说靠近杯子10分,远离杯子-10分。如果每一步都有这样的标量作为衡量标准的话,那么她就可以知道要获得奖励的最优策略是什么了,当然有些动作在不同的场景下会导致不同的效果,所以这里的打分要针对state-actionpair(不同状态对应不同的动作)评分。

所以RL的作用就是经过反复的训练,为每对state-action提供一个分数。这就Valuebased(基于分数的算法,其中的一种的RL算法实现方式)。

如果先假设最终的奖励分数是100分。那么究竟前一步应该分配多少分呢?然后前前一步又是多少?这里就用到了贝尔曼方程

s:state

a:action

Q就是我上面讲的分数。然后Qπ指的就是最优策略下的分数函数。

P是指状态s下决定某动作a之后=》下一个状态s的转移概率。(比方说A酱虽然见到了杯子,然后她使用了动作a1(拿起来)但是不一定能够成功,这里有个转移概率P)。

R是指立即奖励。

这里我们可以看到,当前的Q值是由两部分组成,当前R值+下一个状态的Q值。

假设折扣率这里是0.5,最终的奖励分数是100分。

反过来推导的话,A酱在喝到杯中物的时候Q值等于R值,因为没有下一个状态了。在往前一个动作(拿起杯子)因为只有1个动作,而且立即奖励R=0,所以Q值等于0+0.5*100=50。

然后再往前面一步,状态1(见到杯子)的时候选择(靠近),所以Q值是0+0.5*(0+0.5*100)=25

这是我们通过已知最优策略然后用贝尔曼方程反推Q值,这样便于理解Q值的含义。

虽然不知道最优策略,但是如果我们有一个所有状态所有动作的记录Q值的表,只要反复通过上面的过程推导就能知道这个大表的所有值,最终就能通过这个大表知道最优策略。

这就是Q-learning算法的逻辑。

当然Q-learning是不实用的,因为如果state跟action有非常多,这个表数据量要爆炸的。

RL很早很早就有了。

因为alphaGo就是基于RL的,主要用了蒙特卡罗树搜索算法(MCTS)然后RL这两年又被大神们推进了好多优化。

我摘一段放这里说明一下实现RL算法的几种类别:

RL现阶段比较实用的算法是:

DQN,DDPG,A3C,DPPO等

摘一张图大家看看

横轴是训练次数,纵轴是超过人类水平百分比,100%就是等同于平均的人类玩游戏的水平,在57款雅达利游戏中的平均表现。

2017-2018年一些很有趣的开源应用示例,以及使用的算法

CNN:图像识别人脸识别风格迁移

RL:alphaGO游戏代打机器人控制阿里商品推荐系统

GANs:风格迁移草图生成实体图猫脸转狗脸去掉图像遮挡年龄转移超分辨率

RNNLSTM:翻译模型,生成古诗,生成对联,PSD生成HTML代码

THE END
1.[行为识别综述]Goingdeeperintoactionrecognition:Asur左边的这张图是行走的模型,它由一系列3维结构建模。右图是将WALKER 框架扩展到行人识别。 全局表征 通常来说,从视频中构建准确的3D模型是困难并且花销昂贵的,因此,许多解决方案避免使用3D建模和选择在全局或局部的表示一个行为。 (1)全局表示(Holistic representations):动作识别是基于人体结构、形状和运动的全局表示https://blog.csdn.net/dlh_sycamore/article/details/89280697
2.行为识别(actionrecognition)目前的难点在哪?借助高清摄像头对关键岗位和关键作业区域进行严密监控,运用图像识别算法,提取出关键点的位置信息,深度https://www.zhihu.com/question/264575930/answer/57256907884
3.[ML]HumanActivityRecognition人体动作/姿态识别文献综述知乎:基于深度学习的人体动作识别算法总结,桑燊 文章主要列出了一些相关的数据集以及深度学习的方法包括基于无监督学习的行为识别、基于卷积神经网络的行为识别、基于循环神经网络以及一些拓展模型的方法。当然,这里面提到的很多模型都不是最新的技术,还有很多最新的模型和技术都没有包含进来。 https://www.jianshu.com/p/3d409966fe64
4.基于事件的视觉研究综述(SNN部分阅读笔记)Gulico概括:重点介绍了为解锁事件摄像机的卓越性能而开发的应用程序和算法。 我们会从事件摄像头的工作原理,可用的实际传感器及其使用的任务(从低视力(特征检测和跟踪,光学流等)到高视力(重建, 细分,识别)。 我们还将讨论开发用于处理事件的技术,包括基于学习的技术,以及针对这些新型传感器的专用处理器,例如脉冲神经网络。 https://gulico.github.io/2020/07/27/Event-based-Vision-A-Survey/
5.视频中动作识别任务综述但是由于深度数据获取不易,基于深度数据的动作识别在应用上也有其局限性,所以目前基于视频的动作识别是动作识别领域中的主要研究方向。而本文所研究的基于视频的动作识别可以定义为给定动作视频,通过动作识别算法处理后输出视频中动作类别标签的过程。 2 视频中动作识别任务的相关方法https://www.fx361.com/page/2020/0704/6828487.shtml
6.基于深度学习的视频动作识别研究除此之外,基于所设计的残差网络本文构建了双流动作识别模型,针对双流网络缺乏时空特征交互的缺点,模型采用多级融合策略并结合多层级深度特征对识别结果进行联合决策,以充分发掘双流模型的时空表征潜力。最后通过PCA算法对融合后的特征描述子降维后,训练多分类SVM(Support Vector Machine)作为分类器实现对动作的识别。实验结果https://cdmd.cnki.com.cn/Article/CDMD-10617-1020416353.htm
7.动作识别综述(RecentAdvancesinVideoGroup-Skeleton-Based Human Action Recognition in Complex Events 一种新的基于GCN的算法GS-GCN,用于复杂事件中的动作识别,针对复杂事件挑战中大规模以人为中心的视频分析的解决方案。与仅考虑单个人的行为的常规方法不同,所提出的方法研究了不同人之间的潜在行为关系。使用多个MS-G3D从多个人中同时提取骨骼特征。由于https://www.pianshen.com/article/57621994012/
8.基于深度学习的视频人体动作识别算法研究人体动作识别作为视频分析中一个非常重要的组成部分,其已经在多个重要领域发挥至关重要的作用,包括视频监控、人机交互、自动驾驶等等。传统的人体动作识别主要基于RGB图像或视频,但由于尺度、光照变化以及背景噪声等因素的影响,效果不尽如人意。近年来,得益于深度传感器的发展以及人体骨骼关键点检测算法的成熟,越来越多的研https://xuewen.cnki.net/CMFD-1021747961.nh.html
9.面向教室嘲的举手动作识别算法的研究与实现举手算法识别场景动作候选区域 华中科技大学硕士学位论文I摘要随着视觉技术的发展,在教育信息技术领域,自动化的课堂观察成为一个重要问题。通过观察课堂中教师和学生的行为及其交互特征,有助于对学生进行客观的评估,对教师因人而异的制定教学计划,改善老师的教学质量。举手动作作为最为典型的学生动作行为,其检测和识别是自https://www.docin.com/p-2313523248.html
10.基于深度学习的表情动作单元识别综述邵志文,周勇,谭鑫,马利庄,刘兵,姚睿.{{custom_author.name_cn}}基于深度学习的表情动作单元识别综述[J]. 电子学报, 2022, 50(8): 2003-2017. https://doi.org/10.12263/DZXB.20210639 SHAO Zhi-wen,ZHOU Yong,TAN Xin,MA Li-zhuang,LIU Bing,YAO Rui.{{custom_author.name_en}}Survey of Expressionhttps://www.ejournal.org.cn/CN/10.12263/DZXB.20210639
11.浅谈动作识别TSN,TRN,ECO腾讯云开发者社区[3]人脸识别算法演化史【获取码】SIGAI0420. [4]基于深度学习的目标检测算法综述【获取码】SIGAI0424. [5]卷积神经网络为什么能够称霸计算机视觉领域?【获取码】SIGAI0426. [6]用一张图理解SVM的脉络【获取码】SIGAI0428. [7]人脸检测算法综述【获取码】SIGAI0503. https://cloud.tencent.com/developer/article/1346320
12.人体动作识别与评价——区别,联系及研究进展基于视频的人体动作识别算法 综述[J]. 计算机应用研究, 2020, 37(11): 3213-3219. HUANG Q Q, ZHOU F Y, LIU M Z. Survey of human action recognition algorithms based on video[J]. Application Research of Computers, 2020, 37 (11): 3213-3219. [26] PATRONA F, CHATZITOFIS A, ZARPALAS Dhttps://engine.scichina.com/doi/pdf/7116E3A9710B43F4A9D433FAC83F47F7
13.深度图像的获取及其处理.docx目标检测与跟踪是计算机视觉领域的一个重要应用。在深度图像中,我们可以使用各种目标检测算法来检测并跟踪目标,如基于特征的方法、基于深度学习的方法等。5、动作识别动作识别是计算机视觉领域的一个重要应用。在深度图像中,我们可以使用各种动作识别算法来识别人体的动作,如基于特征的方法、基于深度学习的方法等。https://m.renrendoc.com/paper/298490443.html
14.FCSResLNet:动作识别任务上的可接受更长输入的深度残差LSTM网络对于基于图像的识别任务,局部高频信息通常包含丰富的内容,如纹理或边缘信息,在该信息的基础上可进一步提取更大范围的形状和空间关系等低频信息。然而,视频中的局部高频运动信息通常对动作识别没有任何意义,并且很难通过简单地堆叠短程卷积提取远程运动信息。对于动作识别研究来说,由于受主流GPU内存能力限制的原因,目前输入https://news.sciencenet.cn/htmlpaper/2022/10/2022101211122288776270.shtm
15.FG2024Workshop花样滑冰人体动作识别挑战赛与研讨会启动!计算机视觉和机器学习在人体动作理解中的应用 面向专业运动的2D/3D感知技术 细粒度人体动作识别 人体动作分割或定位 开集动作识别 细粒度动作评估 面向人体动作理解的轻量化架构设计 人体动作理解大规模数据集 人体动作理解技术综述 官网 SkatingVerse官网:https://skatingverse.github.io/ https://www.jiqizhixin.com/articles/2024-03-21
16.基于深度强化学习的视觉反馈机械臂抓取系统AprilTag是一个基准视觉库,通过在物体上粘贴Apriltag标签,利用识别算法,确定标签坐标系和摄像头坐标系的关系,即可得到物体的位姿,在增强实现、机器人和相机校准等领域广泛使用。 AprilTag视觉标签与二维码有相似之处,但是降低了视觉标签的复杂度,抗光和抗遮挡性能比较好,能够快速的检测视觉标签信息,并计算相机与标识码之间https://m.elecfans.com/article/2106029.html
17.opencv在人脸识别动作识别作用opencv的人脸识别算法opencv在人脸识别动作识别作用 opencv的人脸识别算法 1:人脸检测的介绍以及综述: 现在人脸检测已经成为我们生活必不可少的一个部分,比如西电进宿舍刷脸(我从来没有成功过),现在基于深度学习的人脸检测算法大致分为以下三类: 基于级联的人脸检测算法。 基于两阶段的人脸基于级联的人脸检测算法。检测算法。https://blog.51cto.com/u_14405/11276453
18.生物传感范文11篇(全文)在基于加速度传感器的运动识别研究中,不仅同一种动作可以被识别,运动的强度也可以被识别。徐川龙[8]提出了一种基于多种时域统计特征的5种走路模式(站立、走路、跑步、上楼和下楼)的识别算法。进而针对3种相似的走路模式难以区分的问题,提出了基于小波能量和四分位间距的走路模式识别算法,细分了3种走路模式(正常走、https://www.99xueshu.com/w/ikeyub412j7q.html