上海羊羽卓进出口贸易有限公司

卷积传感器 用于时间序列的Keras中一维卷积神经网络(1D CNN)的介绍

发布时间:2024-10-11 00:10:32

用于时间序列的Keras中一维卷积神经网络(1D CNN)的介绍

介绍

许多文章关注二维卷积神经网络。它们特别适用于图像识别问题。1D CNN有一些扩展,例如自然语言处理(NLP)。很少有文章提供关于如何构造1D CNN的解释性演练,本文试图弥补这一点。

什么时候使用1D CNN?

CNN非常适合识别数据中的简单模式,然后用于在更高层中形成更复杂的模式。当您期望从整个数据集的较短(固定长度)段中获得有趣的特征并且该段中的特征的位置不具有高相关性时,1D CNN非常有效。

这很适用于传感器数据(例如陀螺仪或加速度计数据)的时间序列分析。它还适用于在固定长度周期内(例如音频信号)分析任何类型的信号数据。另一个应用是NLP(尽管这里LSTM网络更有前途,因为单词的接近度可能并不总是可训练模式的良好指标)。

1N CNN和2D CNN之间有什么区别?

CNN具有相同的特征并遵循相同的方法,无论是1D,2D还是3D。关键的区别在于输入数据的维度以及特征检测器(或过滤器)如何在数据中滑动:

问题陈述

在这篇文章中,我们将聚焦于时间切片的加速度传感器数据,这些数据来自于用户腰上携带的智能手机。基于x、y和z轴的加速度计数据,1D CNN应该预测用户正在进行的活动类型(如“步行”、“慢跑”或“站立”)。对于各种活动,数据的每个时间间隔看起来都与此类似。

来自加速度计数据的时间序列示例

如何在Python中构建1D CNN?

有许多标准卷积神经网络(CNN)模型可供选择。我选择了Keras网站上描述的其中一个模型并对其进行了微调(https://keras.io/getting-started/sequential-model-guide/),以适应上述问题。下图提供了构建模型的高级概述。将进一步解释每一层。

让我们首先看看Python代码,以构建这个机器学习模型:

model_m = Sequential()

model_m.add(Reshape((TIME_PERIODS, num_sensors), input_shape=(input_shape,)))

model_m.add(Conv1D(100, 10, activation='relu', input_shape=(TIME_PERIODS, num_sensors)))

model_m.add(Conv1D(100, 10, activation='relu'))

model_m.add(MaxPooling1D(3))

model_m.add(Conv1D(160, 10, activation='relu'))

model_m.add(Conv1D(160, 10, activation='relu'))

model_m.add(GlobalAveragePooling1D())

model_m.add(Dropout(0.5))

model_m.add(Dense(num_classes, activation='softmax'))

print(model_m.summary())

运行此Python代码将产生以下深度神经网络:

让我们深入了解每一层,看看发生了什么:

输入数据 :数据经过预处理后,每个数据记录包含80个时间片(数据以20hz采样率记录,因此每个时间间隔包含4秒的加速度计读数)。在每个时间间隔内,存储x轴、y轴和z轴的三个加速度计值。这就得到了一个80x3矩阵。如果在iOS中使用神经网络,数据必须以长度为240的平面向量的形式传递到神经网络中。网络的第一层必须将其reshape为原始的80 x 3的shape。

第一个1N CNN层 :第一层定义高度为10的过滤器(或称为特征检测器)(也称为核大小)。仅定义一个过滤器将允许神经网络学习第一层中的单个特征。这可能还不够,因此我们将定义100个过滤器。这允许我们在网络的第一层上训练100个不同的特征。第一神经网络层的输出是71×100神经元矩阵。输出矩阵的每列保持一个单个滤波器的权重。使用定义的核大小并考虑输入矩阵的长度,每个过滤器将包含71个权重。第二个1D CNN层 :来自第一个CNN的结果将被馈送到第二个CNN层。我们将再次定义100个不同的过滤器,以便在此级别上进行训练。遵循与第一层相同的逻辑,输出矩阵的大小为62 x 100。最大池化层 :通常在CNN层之后使用池化层,以降低输出的复杂性并防止数据过度拟合。在我们的例子中,我们选择了三个大小。这意味着该层的输出矩阵的大小仅为输入矩阵的三分之一。第三和第四1D CNN层 :接下来是1D CNN层的另一序列以便学习更高级别的特征。这两层之后的输出矩阵是2×160矩阵。平均池化层 :再一个池化层,以进一步避免过度拟合。这次不是取最大值,而是神经网络中两个权重的平均值。输出矩阵的大小为1 x 160个神经元。每个特征检测器在该层上的神经网络中仅剩余一个权重。Dropout层 :Dropout层将随机分配0个权重给网络中的神经元。由于我们选择0.5的比率,50%的神经元将获得零权重。通过此操作,网络对较小的数据变化做出反应变得不那么敏感。因此,它应该进一步提高我们对看不见的数据的准确性。该层的输出仍然是1×160的神经元矩阵。具有Softmax激活的全连接层 :最后一层将高度160的向量减少到六的向量,因为我们有六个类我们想要预测(“Jogging”, “Sitting”, “Walking”, “Standing”, “Upstairs”, “Downstairs”)。这种减少是通过另一个矩阵乘法完成的。Softmax用作激活函数。它强制神经网络的所有六个输出总和为一。因此,输出值将代表六个类中每个类的概率。

训练和测试神经网络

以下是用于训练模型的Python代码,批量大小为400,训练和验证分为80到20。Python代码如下:

callbacks_list = [

keras.callbacks.ModelCheckpoint(

filepath='best_model.{epoch:02d}-{val_loss:.2f}.h5',

monitor='val_loss', save_best_only=True),

keras.callbacks.EarlyStopping(monitor='acc', patience=1)

]

model_m.compile(loss='categorical_crossentropy',

optimizer='adam', metrics=['accuracy'])

BATCH_SIZE = 400

EPOCHS = 50

history = model_m.fit(x_train,

y_train,

batch_size=BATCH_SIZE,

epochs=EPOCHS,

callbacks=callbacks_list,

validation_split=0.2,

verbose=1)

该模型的训练数据精度达到97%。

...

Epoch 9/50

16694/16694 [==============================] - 16s 973us/step - loss: 0.0975 - acc: 0.9683 - val_loss: 0.7468 - val_acc: 0.8031

Epoch 10/50

16694/16694 [==============================] - 17s 989us/step - loss: 0.0917 - acc: 0.9715 - val_loss: 0.7215 - val_acc: 0.8064

Epoch 11/50

16694/16694 [==============================] - 17s 1ms/step - loss: 0.0877 - acc: 0.9716 - val_loss: 0.7233 - val_acc: 0.8040

Epoch 12/50

16694/16694 [==============================] - 17s 1ms/step - loss: 0.0659 - acc: 0.9802 - val_loss: 0.7064 - val_acc: 0.8347

Epoch 13/50

16694/16694 [==============================] - 17s 1ms/step - loss: 0.0626 - acc: 0.9799 - val_loss: 0.7219 - val_acc: 0.8107

针对测试数据运行它可以发现92%的准确率。

Accuracy on test data: 0.92

Loss on test data: 0.39

考虑到我们使用标准1D CNN模型之一,这是一个很好的数字。我们的模型在精确度,召回率和f1分数方面也得分很高。

以下简要回顾一下这些分数的含义:

Accuracy:正确预测的结果与所有预测的总和之比。((TP + TN) / (TP + TN + FP + FN))Precision:当模型预测为正时,它是正确的吗?所有的真阳性除以所有的阳性预测。(TP / (TP + FP))Recall:在所有可能的正样本中,模型确定了多少正样本?真阳性除以所有实际阳性。(TP / (TP + FN))F1-score:这是精确度和召回率的加权平均值。(2 x recall x precision / (recall + precision))针对测试数据的相关混淆矩阵如下所示。

最后

在本文中,您已经看到了一个示例,说明如何使用1D CNN来训练网络,以根据智能手机的一组给定加速度计数据预测用户行为。完整的Python代码可以在github上找到:https://github.com/ni79ls/har-keras-cnn

通过传感器计算打造视觉雷达,下一代自动驾驶系统的关键构成

机器之心专栏

作者:鉴智机器人

2021年10月25日,特斯拉市值站上万亿美金,成为美股第五家市值破万亿的企业,几乎超过美股全部主要车企市值的总和。特斯拉在资本市场的成功,刺激着投资者的神经,也促使市场再一次将视野聚焦在自动驾驶领域,进一步思考自动驾驶技术路线的发展方向。

本文希望从技术角度客观分析和回答以下问题:自动驾驶等级提升需要解决什么关键问题?怎样的自动驾驶方案更加具有实现大规模无人驾驶的可能性?自动驾驶作为现实世界的AI问题,难点在哪里?以上问题促使我们理性客观地思考该如何去实现自动驾驶——这一承载了太多期望、不断挑拨大众神经的技术生产力变革,从而推动行业冷静且务实地向前发展。

1.自动驾驶的眼睛:基于高质量图像成像的视觉雷达

随着自动驾驶等级的不断提高,控制权和责任主体逐渐从驾驶员转换为车辆,智驾系统的定位也将由扩增人的感知能力到接管车辆自主驾驶。由此对智驾系统之于物理世界环境理解的要求完全不同,将由对物理世界部分信息的提取提升到事无巨细的全面感知与理解。而这种变化,首要就是对2D图像成像与3D建模的越来越高的要求:1)更高分辨率和环境适应度的2D图像成像;2)对物理世界准确且稠密的实时3D建模。

Camera是自动驾驶感知物理世界最重要的传感器,其分辨率的提升将极大的提升图像的信息承载量,使得自动驾驶系统能够感知更加细节和更远距离的行车环境。当前主流自动驾驶前视摄像头的分辨率已经到800万像素以上,而更高的分辨率也是未来必然发生的事情。自动驾驶汽车面临的是一个开放性的外部环境,除了分辨率的提升,还需要提升自动驾驶在各种行车路况下的图像成像质量,比如不同的光线环境,傍晚、夜晚等,不同的气候环境,雨雪雾天等。相对于传统汽车应用的车载成像,自动驾驶对于车载成像质量的要求将极大提升,如何通过成像计算获取更高质量的图像就成为一个要解决的关键性问题。

自动驾驶汽车在三维物理世界中运行,必然要求对物理世界进行更加深刻的三维理解。当前的高级别辅助驾驶在道路上不断出现各种各样的事故,这些事故的发生很大程度上是由于没有识别到未被样本库所覆盖的异形、非标等物体,比如一辆拉着一棵树的货车等,而这些corner case是无法被穷尽的。对于行车环境的实时稠密3D建模不仅可以识别异形和非标等物体,还能判断路面坑洼与起伏,这无疑将大大提升自动驾驶的安全级别。当前自动驾驶的3D环境感知,主要依赖激光雷达等主动投射测量装置,但其在分辨率上远低于Camera,也不具备颜色信息。随着深度学习的发展,单目深度估计、双目立体视觉、SFM、MVS等问题已经可以被深度神经网络所建模,从而可以基于多目视觉通过AI的方法实时生成3D点云,其视觉点云天然与图像对齐,并且其分辨率也能达到图像分辨率的级别。因此,如何通过多目视觉实现高分辨率的实时稠密3D建模,即视觉雷达,是另外一个要解决的关键性问题。

视觉传感器的信息承载量极高,目前远未被充分挖掘,但无论2D图像成像还是实时稠密3D建模都需要强有力的算法和算力进行支撑,这需要算法和算力进行协同设计。视觉传感器+算力+算法的传感器计算模式,将更加本质的推动解决自动驾驶当前面临的关键问题,即从2D和3D层面对物理世界进行事无巨细的感知与理解。

鉴智机器人核心团队拥有超过十年的图像处理、AI算法和算力设计的行业经验,将以视觉传感器为核心,通过解决车载ISP、视觉雷达等视觉传感器2D、3D成像的核心问题,打造更加强大的自动驾驶之眼,从而推动自动驾驶安全等级的提升。

1.1 从手机ISP到车载ISP

ISP(Image Signal Processor)是指通过一系列数字图像处理算法完成对数字图像的成像处理。在摄像机成像的整个环节中,ISP负责接收感光元件的原始信号数据,可以理解为整个摄像机图像输出的第一步处理流程。ISP在提高图像质量、增强数据的一致性等方面有着极其关键的作用。

得益于智能手机的发展和手机摄像头像素越来越高,手机ISP在过去几年得到了快速的发展和进步,手机拍照和录像的质量也越来越高,甚至到了惊艳的地步。比如在夜晚等场景,可以拍到比人眼看到的更清晰、光照更充足、色彩更丰富的照片;比如在进出隧道等光照变化剧烈的场景,也可以录制出比人眼表现更稳定、更清晰的视频。这些效果除了源于手机摄像头硬件上的升级,专门的AI ISP处理算法和处理芯片也起到了至关重要的作用。

随着自动驾驶对车载成像质量的阶跃式提升需求,车载ISP,特别是针对驾驶场景优化的AI ISP处理算法和处理芯片,将迎来爆发式的发展。AI在车载ISP整个流程中将变得越来越重要,特别是在降噪、去模糊、HDR等问题上,可以在夜晚、阳光直射、进出隧道等暗光、强光、高动态场景得到远超人眼的成像效果,同时最大程度上解决由Sensor引起的噪点、模糊等问题。将AI计算前置在ISP计算Pipeline中,通过流式计算,使得ISP的计算Pipeline不被打断,也将大大提升AI ISP的性能功耗比。

鉴智机器人拥有全链路的芯片级ISP IP的设计能力,将解决ISP特别是AI ISP在车载场景的核心问题,让车载摄像头成像更清晰,从而进一步提高视觉雷达点云生成和图像语义感知等后续任务的准确性。

图1:鉴智机器人拥有全链路的ISP算法和算法硬核化设计能力

1.2 从2D感知到视觉雷达

面对大规模自动驾驶,对3D点云的信息稠密程度、场景泛化性、性能可扩展性方面提出了更高的要求。基于视觉雷达,通过双目或者多目立体视觉计算,产生实时稠密的3D点云是更优的方式。

双目立体视觉是机器视觉的一种重要形式,与人眼类似,它是基于视差原理,通过计算图像对应点间的位置偏差,来获取物体三维几何信息的方法,和基于TOF、结构光原理的深度相机不同,它不对外主动投射光源,完全依靠拍摄的两张图片(彩色RGB或者灰度图)来计算深度。

传统的双目立体匹配算法针对弱纹理、反光等区域效果比较差,同时对于物体语义信息利用比较少,算法适用范围具有局限性,点云效果上限比较明显。随着深度学习技术的发展,基于CNN、Cost Volume、Transformer的立体匹配算法展现出来了极强的算法效果和潜力。目前知名自动驾驶数据集KITTI上的立体匹配任务排名靠前的基本都是基于深度学习的算法。基于深度学习的双目立体匹配算法对于计算芯片的AI算力提出了比较高的要求,对于研发模式也提出了新的要求,需要从传统的双目相机研发模式变成以AI为核心、软硬结合、数据驱动的研发模式。

从双目立体视觉更进一步,充分利用相机的运动信息和多个相机间的几何约束,通过相机姿态估计、深度估计、光流估计、MVS等算法,以及任务之间互相监督的一系列自监督算法,可以得到360度的点云数据,也就是视觉雷达,从而形成与图像分辨率相匹配的稠密点云。同时,以摄像头+算力+算法为核心的视觉雷达,还具有产业链成熟可控、成本可控、器件稳定性有保证、满足车规等优势,更容易实现大规模前装量产上车使用。

图2:鉴智机器人视觉雷达Roadmap

2自动驾驶的大脑:全流程数据驱动的强单车智能

自动驾驶的大脑负责从感知到决策的驾驶全流程,也是自动驾驶最复杂、最核心和难度最高的部分。传统的以规则为核心的软件1.0工程化系统,在可维护性、扩展性和进化性上都具有一定的局限性。以AI和软件2.0为核心,全流程数据驱动的感知、预测、规控算法和强单车智能的解决方案,无疑是实现大规模无人驾驶更可行的方案。

鉴智机器人核心团队在AI算法和应用、软件2.0的基础设施、数据驱动的大规模实践上拥有丰富的经验,将通过全流程数据驱动的自动驾驶大脑,建立强单车智能,从而降低对外部基础设施的依赖,更加利于自动驾驶的复制与推广。

2.1 深度学习带来的2D感知技术突破

感知是自动驾驶获取信息的第一步, 所谓感知是指通过摄像头或其他传感器识别所看到的物体并理解该物体是什么,这对自动驾驶是至关重要的环节。自动驾驶车辆首先是要识别车道线,然后还要识别红绿灯、标志牌,除此之外就是识别障碍物比如前后左右有没有车辆,有没有行人,才能够进一步规划行驶路线。

过去十年是人工智能技术的黄金十年,深度学习改变了计算机视觉整个领域,也带来了2D感知各个方向技术的突破。2D感知主要有图像分类、图像(物体)识别、细粒度识别(人脸识别)等方向,所采用的技术也从最早的模板匹配、线性分类到现在所广泛使用的深层卷积神经网络,再到最近刷新各大视觉任务榜单的Transformer。随着硬件计算能力的不断提升、算法范式的不断改进、可利用数据资源的不断增长,基于摄像头的2D感知已经成为了乘用车智能驾驶的主流方案,同时也成为了很多解决方案的核心差异点。

鉴智机器人核心团队在国内最早基于深度学习在2D视觉感知各个方向开展系统性研究和大规模落地应用,在众多全球最具影响力的2D感知AI比赛和评测中获得冠军,发表顶级会议和期刊论文几十余篇,在多个业务领域实现了人工智能2D感知技术的大规模应用落地。

(a)目标检测、人体骨骼点

(b)全景分割

(c)360°视觉感知

(d)单目测距

图3:鉴智机器人在2D感知方向具有世界一流的核心能力

2.2 从2D感知到4D感知

如果说2D感知还是在平面上检测、识别、分割物体,那么加入深度信息后,基础的2D感知即转化为3D感知。如果进一步在3D的基础上加入时间这一维度,进化得到的则是4D感知。在自动驾驶领域,4D感知可以完整且连续的探测车辆周围的物体。

基于深度学习和三维视觉技术不断发展,随着Cost Volume、Optical Flow、differentiable Homography、Transformer等技术的成熟,以及多传感器融合、众包重建、稠密重建、自动标注等方向不断发展,可以高效率的提供高质量、大规模的4D场景数据,端到端的4D感知正在成为技术趋势。相比于传统的2D感知+后融合的方案,端到端的4D感知拥有很多优势,可以解决测距抖动较大、多摄像头拼接不准确、时序结果不稳定、迭代效率较低等一系列问题。

更进一步,基于端到端的4D感知,可以进行更好的4D预测,一方面可对于交通参与者进行更优的运动轨迹预测,从而实现性能更加优异的规划控制;另一方面可对于道路行驶区域预测更加精细的3D结构化信息,在线生成局部实时3D地图,降低对高精地图等基础设施的依赖。

图4:鉴智机器人针对复杂路口驾驶场景的4D感知结果

自动驾驶被认为是目前最重要的硬科技创新之一。在汽车行业百年未有之大变革的历史性时刻,中国由于在电动汽车领域的提前布局、全面开花,以及完整产业链的巨大优势,国内企业在自动驾驶方向拥有非常好的机会和产业优势,有机会通过电动化和智能化实现百年汽车工业这一最重要的支柱产业的超车和领先。但自动驾驶的发展速度仍然低于大众和市场的预期,这里存在若干影响自动驾驶等级提升的关键性问题亟待解决,鉴智机器人基于自身在AI算法、AI算力层面的积累,致力于解决自动驾驶成像计算和下一代自动驾驶方案的关键性问题,从而推动自动驾驶的创新发展。

作者简介

都大龙:鉴智机器人联合创始人,硕士毕业于中科院计算所,现清华大学创新领军博士在读。曾任某AI科技公司研发副总裁,地平线算法总监,百度IDL架构师。曾深度参与国内首款AI芯片的产品研发,并实现AI2B产品的大规模落地。因其在卷积神经网络、序列学习、神经网络训练框架方面的突出贡献,曾连续两次获得百度工程师最高荣誉-“百度百万美金最高奖”。发表数十篇AI领域国际顶级会议,并带领团队在MSCOCO、FRVT等多项AI比赛中获得世界一流成绩。

黄冠:鉴智机器人算法负责人,拥有十年的深度学习/机器学习/计算机视觉经验,在国内最早开始深度学习在目标检测、分割、关键点等方向的系统性研究和应用。多次获得FRVT、COCO等全球最具影响力AI比赛冠军,发布全球最大的公开人脸数据集WebFace260M,在人工智能顶级会议和期刊上发表论文十余篇,支撑了多个领域人工智能技术的大规模落地应用,拥有丰富的学术研究和产业落地经验。目前致力于研发全流程数据驱动的算法,用于下一代自动驾驶解决方案。

相关问答

什么是智慧城市?

由国家信息中心和亚洲数据集团共同主办的2021亚太智慧城市发展论坛在深圳隆重举办。论坛同期举办2021年度亚太领军智慧城市颁奖典礼,济南、黄冈、亳州获2021中国...

学大数据需要有基础吗?

您好,本人最近正好在学习大数据方面的知识,就这个问题以自身的切身经验来回答,我的答案是需要,并且需要的基础还不少。个人情况本人是本科理工类专业毕业,...

世界前沿的目标识别技术?

1目前是基于深度学习的卷积神经网络(CNN)。2这种技术通过训练大量的图像数据,可以自动识别和分类出图像中的目标物体。它具有较高的准确性和鲁棒性,可以应...

人工智能的本质是什么,会不会威胁到人类的生存与发展?

如:cuDNN具有可定制的数据布局,支持四维张量的灵活维度排序,跨步和子区域,用作所有例程的输入和输出。在卷积神经网络的卷积运算中实现了矩阵运算,同时减少...4...

如何将人工智能应用到健身训练上?

人体姿态估计的关键在于如何识别人体的关键点,目前主流的做法是基于和监督学习,比如卡耐基梅隆大学的开源项目OpenPose。OpenPose使用卷积神经网络提取图像的Pa...

机器学习工程方面主要面向那些领域,需要什么知识储备?

先回答领域问题机器学习是统计学与数据分析的延伸领域数据分析一直以来应用于各行各业so,机器学习并没有行业领域限制目前各行业技术发展落地水平不同,因此...

Intel AI处理器是什么型号?什么价格?

可能大家还认为英特尔还只是PC领域的芯片老大,但实际上英特尔目前拥有从云端到终端的人工智能解决方案。云端人工智能众所周知,目前在服务器及数据中心市场,...

自动驾驶中的人工智能技术有哪些?

2、标识识别技术:包括车道识别、交通标志识别(比如红绿灯)、车辆行人识别和运动跟踪,在这里,卷积神经网络(CNN)技术成了目前最好的技术,标识识别是无人...3、...

深度学习在医疗诊断应用上有什么突破?

目前在深度学习的医疗诊断应用上,以皮肤癌检测和胸透影像诊断的研究较为受关注,这里简单介绍一下这两个领域的进展。皮肤癌检测2018年5月29日,一篇关于皮肤...

如何理解人工智能学习中“端到端机器学习”中的“端到端”?

他们使用深度卷积神经网络,在图像识别中显示出优越的结果。他们用4帧几乎原始的RGB像素(84×84)作为输入。网络是根据RL进行训练的,奖励代表了比赛得分变化的...

展开全部内容