云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

百度云_死神来了3百度云_

小七 141 0

利用Databricks机器学习运行时识别视频中的可疑行为

在Databricks中试试这个笔记本系列随着摄像机和视频记录的指数级增长,视频识别和分类过程的操作化和自动化变得越来越重要。从识别正确的猫视频到视觉分类对象的应用越来越普遍。随着全球数百万用户每天产生和消费数十亿分钟的视频,您将需要基础设施来处理这一巨大规模。由于快速扩展的基础设施、管理多个机器学习和深度学习包以及高性能数学计算的复杂性,视频处理可能会变得复杂和令人困惑。负责此项工作的数据科学家和工程师将不断遇到一些体系结构问题:在构建基础设施时,如何扩展以及如何扩展?有了大量的数据科学组件,除了apachespark基础设施之外,我如何集成、维护和优化各种机器学习和深度学习包?数据工程师、数据分析师、数据科学家和业务干系人将如何合作?我们针对这个问题的解决方案是Databricks统一分析平台,它包括Databricks笔记本、协作和工作区功能,这些功能允许组织中的不同角色在单个工作区中聚集并协作。Databricks包括用于机器学习的Databricks运行时,它通过机器学习框架(包括但不限于XGBoost、scikit learn、TensorFlow、Keras和Horovod)进行了预配置和优化。Databricks在AWS和Azure中提供了优化的自动缩放集群以降低成本,并支持GPU。在本博客中,我们将展示如何将分布式计算与Apache Spark和深度学习管道(Keras、TensorFlow和Spark深度学习管道)与Databricks运行时相结合,以便对可疑视频进行分类和识别。对可疑视频进行分类在我们的场景中,我们有一组来自欧共体资助的鱼子酱项目/IST 2001 37540数据集的视频。我们使用来自INRIA的剪辑(第一集),鱼子酱团队成员表演了六个基本场景,包括:行走浏览休息、倒下或晕倒丢下袋子人们/团体聚会、一起散步和分手两个人在打架在这篇博文和视频数据库笔记本中的相关识别可疑行为中,我们将对这些视频进行预处理、提取图像特征并应用机器学习。资料来源:鱼子酱会员再现打斗场面——欧共体资助的鱼子酱项目/IST 2001 37540例如,我们将通过应用机器学习模型,针对从我们的训练视频数据集中提取的不同图像集进行训练,来识别从我们的测试数据集(如上面的视频)中提取的可疑图像(如下图所示)。高级数据流下图描述了我们处理源视频的高级数据流,用于训练和测试逻辑回归模型。我们将执行的高级数据流是:视频:利用欧盟资助的鱼子酱项目/IST 2001来自INRIA的37540个视频片段(第一个视频)作为我们的培训和测试数据集(即培训和测试视频集)。预处理:从这些视频中提取图像以创建一组训练和测试图像集。deepimagefeatureizer:使用Spark Deep Learning Pipeline的deepimagefeatureizer,创建图像特征的训练和测试集。Logistic回归:然后我们将训练和拟合一个Logistic回归模型来分类可疑和不可疑的图像特征(最终是视频片段)。执行此安装所需的库:h5py型张量流煤油激发深度学习渠道张量框架开放式CV在Databricks Runtime for ML中,除了OpenCV之外,其他所有的都已经预先安装并配置为使用Keras、TensorFlow和Spark深度学习管道来运行深度学习管道。有了Databricks,您还可以享受到自动缩放的集群的好处,可以选择多种集群类型,Databricks工作区环境(包括协作和多语言支持),以及Databricks统一分析平台,以端到端地满足您的所有分析需求。源视频为了帮助您快速开始视频处理,我们已经将INRIA(第一组)视频[EC资助的鱼子酱项目/IST 2001 37540]中的鱼子酱片段复制到/databricks数据集。培训视频(srcVideoPath):/databricks datasets/cctvVideos/train/测试视频(srcTestVideoPath):/databricks datasets/cctvVideos/Test/标签数据(labeledDataPath):/databricks datasets/cctvVideos/labels/cctvFrames_train_标签.csv预处理我们最终将根据视频中单个图像的特征执行我们的机器学习模型(logistic回归)。第一步(预处理)是从视频中提取单个图像。一种方法(包含在Databricks笔记本中)是使用OpenCV每秒提取图像,如下面的代码片段所示。##每秒提取一个视频帧并将帧另存为JPGdef extractImages(路径):计数=0srcVideos="/dbfs"+src+"(.*.mpg)"p=重新编译(源视频)vidName=str(p.search(pathIn).group(1))vidcap=cv2.VideoCapture(pathIn)成功,图像=视频捕获读取()成功=正确成功的同时:摄像机组(cv2.CAP_PROP_POS_MSEC(计数*1000))成功,图像=视频捕获读取()print('读取新框架:',成功)cv2.imwrite("/dbfs"+tgt+vidName+"frame%04d.jpg"%count,image)#将帧另存为JPEG文件count=计数+1print('写入新框架')在本例中,我们从dbfs位置提取视频,并使用OpenCV的VideoCapture方法创建图像帧(每1000ms拍摄一次),并将这些图像保存到dbfs。完整的代码示例可以在Video Databricks笔记本中的"识别可疑行为"中找到。提取图像后,可以使用以下代码段读取和查看提取的图像:从pyspark.ml.image导入ImageSchema列车图像=ImageSchema.readImages(目标路径)显示器(列车图像)其输出类似于下面的屏幕截图。 注意,我们将在训练和测试视频集上执行此任务。深成像特征仪正如在为深度学习而进行的转移学习的简介中所指出的,转移学习是一种技术,其中一项任务(例如识别汽车图像)的培训模型被重新用于另一项相关任务(例如识别卡车的图像)。在我们的场景中,我们将使用Spark深度学习管道对图像执行传输学习。来源:TensorFlow的初始如下面的代码片段所述,我们使用deepimagefeatureizer中的Inception V3模型(TensorFlow中的Inception)自动提取预训练神经网络的最后一层,将这些图像转换为数字特征。#使用DeepImageFeatureizer和InceptionV3构建Featureizer特征化器=深成像特征化器(\inputCol="图像"\outputCol="功能"\modelName="接收v3"\)#转换图像以拉出#-图像(原点、高度、宽度、通道、模式、数据)#-和功能(udt)功能=特征化器.变换(图片)#将特征信息推送到拼花地板文件格式功能。选择( \"图像.原点"功能"\).合并(2)。写入模式("覆盖").parquet(文件路径)训练和测试图像集(来源于各自的视频)都将由deepimagefeatureizer处理,并最终保存为储存在拼花地板文件中的特征。对数几率回归在前面的步骤中,我们已经完成了将源培训和测试视频转换为图像的过程,然后使用OpenCV和Spark Deep Learning Pipelines deepimagefeatureizer(使用Inception V3)以拼花格式提取和保存特征。在这一点上,我们现在有一组数字特性来适应和测试我们的ML模型。因为我们有一个训练和测试数据集,并且我们试图对一个图像(及其相关视频)是否可疑进行分类,因此我们有一个经典的监督分类问题,我们可以尝试一下logistic回归。这个用例是受监督的,因为源数据集中包含labeledDataPath,它包含一个带标签的数据CSV文件(一个图像帧名称和可疑标志的映射)。下面的代码片段读取这个手工标记的数据(labels_df),并将其连接到training features Parquet文件(featureDF),以创建我们的列车数据集。#读取手动标记数据从pyspark.sql.functions进口出口标签=spark.read.csv( \labeledDataPath,header=True,inferSchema=True\)标签_df=标签.withColumn("文件路径",expr("concat('"+前缀+",ImageName)")\).drop('ImageName')#读入特征数据(以拼花地板格式保存)特征DF=spark.read.拼花地板(imgFeaturesPath)#通过连接标签和特征创建训练数据集列车=功能df.join( \标签,来源特征==标签_文件路径\).select("功能","标签",来源特征)我们现在可以根据这个数据集拟合逻辑回归模型(lrModel),如下面的代码片段所述。从pyspark.ml.分类导入逻辑回归#拟合逻辑回归模型lr=逻辑回归(\maxIter=20,regParam=0.05,elasticNetParam=0.3,labelCol="label")LR型号=左后安装(列车)在训练了我们的模型之后,我们现在可以在我们的测试数据集上生成预测,也就是说,让我们的LR模型预测哪些测试视频被归类为可疑的。如下面的代码片段所述,我们从Parquet加载测试数据(featuresTestDF),然后使用之前训练的模型(lrModel)在测试数据(结果)上生成预测。从pyspark.ml.分类导入LogisticRegressionModel#负载测试数据功能测试DF=spark.read.拼花地板(imgFeaturesTestPath)#生成预测