人工智能机器学习开发实例和深度学习开发实例
机器学习开发任务实例
特征工程与机器学习——搭建一个机器学习模型,人工设计特征:实际工作中,特征比模型本身更重要。
分三步:预处理,去除噪音,例如文本中的停用词;特征提取,从原始数据中提取一些有效的特征。例如图像分类中,提取边缘、尺度不变特征变换特征等;特征转换,对特征进行一定的加工,例如升维和降维。
训练模型和测试模型:训练过程和测试过程完全独立。
开发实例:
明确任务背景和目标:
任务背景:房地产中介在交易中,给房屋进行一个合理报价,让房东和买家进行参考。
任务目标:根据已有的交易数据,训练模型,预测房屋的价格。
任务过程解析:制作数据集,数据准备、数据预处理、数据集划分;特征工程,数据理解、特征分析、特征构造;模型训练,模型优化;模型评测,输出测试集指标、判断模型可用性。
制作数据集:
数据准备:字段、数据内容等。
数据预处理:脏数据处理、缺失值处理(步骤:检查是否有确实、根据业务情况制定处理规则,取0最小值及中位数等、完成缺失值的填充)、格式转换(文本转换为数值,方法是字符串序列化,思路将字符串用同一的编号来代替)。
划分训练集和测试集:训练集用于训练,测试集对泛化效果进行评估。
特征工程:
数据理解:查看样本数据的均值、最大值、最小值、数量、标准差等;查看更详细的数据分位数信息;通过观察加深数据理解,为建模做准备。
特征分析1:通过图分析每个特征与结果的对应关系。
特征分析2:找出现有特征中,与价格的关联度(正数正相关,负数负相关,绝对值大小体现相关性),例如:房间数越多,价格越高;税率越高,价格越低;要去掉不相关的特征,收敛的更快。
特征分析3:对房间特征进行深入的分析。
特征分析4:尝试对特征之间建立关联,房屋数和老旧比例没有关联,就可以去掉1个关联特征,例如去掉老旧房屋比例(价值低)。
特征构造1:特征归一化,将所有特征区间调整为0~1之间。
特征构造2,:使用与价格关联度最大的“房间数”,和其他特征,构造二次特征,房间数税率,房间数环保指数。
模型训练:
训练过程1:按照8:2的比例将训练集数据划分为训练集和验证集。
训练过程2:线性回归;loss,损失函数、误差函数,即用1个标量来标示的训练集标签与真实标签之间的差距;MSE,均方差,参数估计值与参数值之差平方的期望值。
模型优化:
过程:模型调参,选择其他模型。
案例:选择LinearRegression后,MSE从22下降到12,因此选择新的模型。取前20个验证集数据,标注好数据与实际房价对比关系。
模型测评:使用训练好的模型,对预留的测试集数据,评测,得到MSE35。模型交付。
深度学习开发任务实例
深度学习 VS 机器学习
神经网络模型特点:端对端学习,从人类专家知识驱动AI方法论——>有监督大数据驱动的AI方法论,推动了一大类非线性映射函数问题的解决,从人工编码知识到从数据中学习知识,分而治之到全盘考虑,重算法到重数据。
实现方式的对比:
机器学习为图片分类的方法:要训练出一个分类器(非线性分类器)。
深度学习的特征提取方法:卷积,卷积是通信与新信号处理中的重要概念,在线性系统里,卷积用来描述输入信息,脉冲响应和输入信息的关系。
满足线性性和平移不变性,线性性:2个信号分别卷积再加起来,等价于先加起来,再卷积。平移不变性:先平移再卷积和先卷积再平移,是同样的结果。
机器学习:利用算法使计算机能够像人一样从数据中挖掘信息。
深度学习:相比其他方法参数更多、模型更复杂,使得数据对模型理解更深、更智能。
多隐层的深度神经网络介绍:以图像识别为例,构建一个含有2个隐藏层的前馈神经网络,学习的是神经元中的权重参数,神经网络会开发各类特征提取器,信息会被进一步压缩和抽象,卷积神经网络在语音识别和图像处理上有优势,全局共享降低网络的复杂性。
深度学习开发实例(以识别交通指示牌为例)
任务背景和目标
背景:玩具车增加识别交通指示牌的能力。
目标:利用玩具车的前置摄像头,检测交通标志的位置。
任务解析过程:明确数据采集需求、制作数据集、模型训练、模型评测。
任务需求梳理:
计算机视觉实际应用特点:
样本具象化,图像是具体表现形式,除了主体外,还有大量的信息,如背景,光照等。
算法光线敏感:侧光,面向光,背光,强光,暗光,都有影响,如果样本没有这些光线的图片,效果会欠佳。
硬件条件可能造成的图片效果偏差:带来色差、模糊、角度变化,样本如果没有这些资料,效果会欠佳。
客户理解偏差:不理解光线影响,不能清晰的表达述求,都在需求梳理时摸清,否则影响交付。
明确数据采集需求1:赛道样式,看是否有和标志类似的图案。
沟通结果:赛道样式统一、可能出现的赛道变形、转完也要能检测、有特殊标记比如结束标记行人横道等。
明确数据采集需求2:确认使用场地和光照情况;说明模型使用场景和光照;沟通过室内、侧面正面光源以及信号灯的影响等。
明确数据采集需求3:待确认需要检测的交通标志的俯仰角(pitch)、偏航角(yaw)、翻滚角(roll),明确交通标志倾斜角度范围,翻滚角:由于交通标志底部是硬座且不需要考虑交通标志倒地情况,所以翻滚角基本一致。考虑到摄像头可能的固定倾斜,此处角度设定为士10°府仰角:俯仰角可能会收到摄像头俯视情况影响,在距离远近有差异,由于摄像头视角较平,所以角度也认为 士10°偏航角:由于仿真交通标志容易被撞击发生位移,偏航角要求较高,希望在人眼可区分边界情况下均可完成检测,此处认为是 士70°,如下图最左侧与最右侧的标志。
明确数据采集需求4:待确认需要检测的交通标志包含哪些。说明详细列举所有要被检测的交通标志,未被列举的标志不会被识别以及交通标志的数量越多采集工作量越大。
沟通结果包括:1.交通标志有红、黄、绿三种颜色光;2.小人的手部会有举起、放下、平伸三种状态;3.小人存在正面、侧面、背面三种站姿。
明确数据采集需求5,待确认检测覆盖范围,需要明确范围细节,例如:1.是否包含杆体2.边缘出框情况等。
沟通结果:1.对于交通标志牌子,标注范围是交通标志牌所处范围即可。2.对于交通信号灯,标注范围是灯亮的区域。3.对于行人,标注范围是整个行人范围。4.对于边缘出框的场景,如果出框范围不超过50%,也应当予以检测。
待明确检出框分类,说明是否要对每个框体单独检出。
明确数据采集需求6,待确认需要检测的交通标志的最小框;说明需要检测的交通标志的最小框最小框越小,运算量越大,执行效率越低;同时,太小的检测框容易使标注误差变大。沟通玩具车速度较快,需要检测到距离车2米的标志,为后续的小车操控预留时间。
待确认对图片模糊程度的要求,说明实际操作中摄像头模糊效果容忍程度怎样;沟通玩具车摄像头帧率较高,且有处理算法,糊程度实际测试下来最大模糊程度。
待确认设备色差情况,说明是否存在设备色差,沟通摄像头较好,无需考虑摄像头色差,但是在部分场景下可能产生由环境光引起的色域变化和噪点。
制作数据集
数据采集,根据确认的需求,采集对应的图片,图片采集需要注意:使用真实的玩具车进行数据采集、覆盖不同场景、涵盖所有可能的光照情况、涵盖所有可能的交通标志,推动了一大类 非线性映射函数学习问题的解决。
采集数量:根据任务要求不同略有差异,玩具车场景任务较为简单,总计采集1万张图片。
采集方式:让小车在不同场景形式,使用摄像头录制视频,然后将每帧导出为jpg格式图片。
数据标准
工具:开源工具labelme。方法:将所有的交通标志类别命名为traffic、使用矩形对所有图片依次标注。注意:人工标注,矩形框要准确,否则数量再大,效果也不好。
保存格式,yolo目标检测工具,每秒处理45帧图像。保存两个文件,图片同名txt存放标注数据;classes.txt,存放标注类别。
检验,检验标注任务质量,抽查比例由具体任务决定,在标注工具中点击空格将其背景转换为绿色。
数据集拆分,将所有数据按照8:2的比例拆分为训练集(800张)与测试集(2000张)。训练集将提供跟算法组用于模型训练,测试集将提供给测试组用于验证数据的泛化效果。要用随机采样的方式划分,确保独立。
模型训练
检测算法原理1,多隐层的深度神经网络,采用yolo模型。
检测算法原理2,预处理,滑动窗口或分隔等;特征两类信息;和图片去对比,选择出一个最好的;不断拟合,差别越来越小。
训练过程:使用训练集进行训练,同步观察输出结果。
模型测评
效果与指标,使用测试数据。
困难样本考察,边缘情况,确实部分图片,手势,色差,困难样本数据。