• [应用开发] mdc300开发yolo3模型目标检测数据后处理
    【操作步骤&问题现象】 我试图修改dto_perception的示例来实现在mdc300上的YOLOv3目标检测,但是对于数据的后处理有一些问题原先的demo是使用ssd模型,我在代码中看到 使用AINeuralNetworkBuffer保存了outputDataVec_【】的数据,然后地址解码数据对于YOLO3输出的三个S ∗ S ∗ 255∗1 网络,怎么处理AINeuralNetworkBuffer打平了的数据呢
  • [其他] yolo1
    由图可见,其进行了二十多次卷积还有四次最大池化,其中3x3卷积用于提取特征,1x1卷积用于压缩特征,最后将图像压缩到7x7xfilter的大小,相当于将整个图像划分为7x7的网格,每个网格负责自己这一块区域的目标检测。整个网络最后利用全连接层使其结果的size为(7x7x30),其中7x7代表的是7x7的网格,30前20个代表的是预测的种类,后10代表两个预测框及其置信度(5x2)。网络部分代码如下:# relu的改进版 def leak_relu(self,x, alpha=0.1): return tf.maximum(alpha * x, x) # 建立网络部分 def _build_net(self): x = tf.placeholder(tf.float32, [None, 448, 448, 3]) with tf.variable_scope('yolo'): # _conv_layer(self, x, num_filters, filter_size, stride,scope) with tf.variable_scope('conv_2'): # (448,448,3)->(224,224,64) net = self._conv_layer(x, 64, 7, 2,'conv_2') # (224,224,64)->(112,112,64) net = self._maxpool_layer(net, 2, 2) with tf.variable_scope('conv_4'): # (112,112,64)->(112,112,192) net = self._conv_layer(net, 192, 3, 1,'conv_4') # (112,112,192)->(56,56,192) net = self._maxpool_layer(net, 2, 2) with tf.variable_scope('conv_6'): # (56,56,128) net = self._conv_layer(net, 128, 1, 1,'conv_6') with tf.variable_scope('conv_7'): # (56,56,256) net = self._conv_layer(net, 256, 3, 1,'conv_7') with tf.variable_scope('conv_8'): # (56,56,256) net = self._conv_layer(net, 256, 1, 1,'conv_8') with tf.variable_scope('conv_9'): # (56,56,512) net = self._conv_layer(net, 512, 3, 1,'conv_9') # (28,28,512) net = self._maxpool_layer(net, 2, 2) with tf.variable_scope('conv_11'): net = self._conv_layer(net, 256, 1, 1,'conv_11') with tf.variable_scope('conv_12'): net = self._conv_layer(net, 512, 3, 1,'conv_12') with tf.variable_scope('conv_13'): net = self._conv_layer(net, 256, 1, 1,'conv_13') with tf.variable_scope('conv_14'): net = self._conv_layer(net, 512, 3, 1,'conv_14') with tf.variable_scope('conv_15'): net = self._conv_layer(net, 256, 1, 1,'conv_15') with tf.variable_scope('conv_16'): net = self._conv_layer(net, 512, 3, 1,'conv_16') with tf.variable_scope('conv_17'): net = self._conv_layer(net, 256, 1, 1,'conv_17') with tf.variable_scope('conv_18'): net = self._conv_layer(net, 512, 3, 1,'conv_18') with tf.variable_scope('conv_19'): net = self._conv_layer(net, 512, 1, 1,'conv_19') with tf.variable_scope('conv_20'): net = self._conv_layer(net, 1024, 3, 1,'conv_20') # (14,14,512) net = self._maxpool_layer(net, 2, 2) with tf.variable_scope('conv_22'): net = self._conv_layer(net, 512, 1, 1,'conv_22') with tf.variable_scope('conv_23'): net = self._conv_layer(net, 1024, 3, 1,'conv_23') with tf.variable_scope('conv_24'): net = self._conv_layer(net, 512, 1, 1,'conv_24') with tf.variable_scope('conv_25'): net = self._conv_layer(net, 1024, 3, 1,'conv_25') with tf.variable_scope('conv_26'): net = self._conv_layer(net, 1024, 3, 1,'conv_26') with tf.variable_scope('conv_28'): # (7,7,1024) net = self._conv_layer(net, 1024, 3, 2,'conv_28') with tf.variable_scope('conv_29'): net = self._conv_layer(net, 1024, 3, 1,'conv_29') with tf.variable_scope('conv_30'): net = self._conv_layer(net, 1024, 3, 1,'conv_30') net = self._flatten(net) # (7x7x512,512) with tf.variable_scope('fc_33'): net = self._fc_layer(net, 512, activation=self.leak_relu,scope='fc_33') with tf.variable_scope('fc_34'): net = self._fc_layer(net, 4096, activation=self.leak_relu,scope='fc_34') with tf.variable_scope('fc_36'): net = self._fc_layer(net, 7*7*30,scope='fc_36') # 其返回了placeholder_x和(7,7,30)net return net,x # 生成卷积层 def _conv_layer(self, x, num_filters, filter_size, stride,scope): # 生成卷积层的weights in_channels = x.get_shape().as_list()[-1] weight = tf.Variable(tf.truncated_normal([filter_size, filter_size, in_channels, num_filters], stddev=0.1),name='weights') # 生成卷积层的bias bias = tf.Variable(tf.zeros([num_filters,]),name='biases') # 计算要padding的量, pad_size = filter_size // 2 pad_mat = np.array([[0, 0], [pad_size, pad_size], [pad_size, pad_size], [0, 0]]) x_pad = tf.pad(x, pad_mat) # 卷积 conv = tf.nn.conv2d(x_pad, weight, strides=[1, stride, stride, 1], padding="VALID",name=scope) # 经过优化后的relu output = self.leak_relu(tf.nn.bias_add(conv, bias)) return output def _fc_layer(self, x, num_out, activation=None,scope=None): # 全连接层 num_in = x.get_shape().as_list()[-1] weight = tf.Variable(tf.truncated_normal([num_in, num_out], stddev=0.1),name='weights') bias = tf.Variable(tf.zeros([num_out,]),name='biases') output = tf.nn.xw_plus_b(x, weight, bias,name=scope) if activation: output = activation(output) return output def _maxpool_layer(self, x, pool_size, stride): # 最大池化 output = tf.nn.max_pool(x, [1, pool_size, pool_size, 1], strides=[1, stride, stride, 1], padding="SAME") return output def _flatten(self, x): """flatten the x""" tran_x = tf.transpose(x, [0, 3, 1, 2]) # channle first mode nums = np.product(x.get_shape().as_list()[1:]) return tf.reshape(tran_x, [-1, nums])  预测结果如下:可见预测结果较差。
  • [其他] 精选目标检测4——yolo3的loss组成详解
    学习前言 只会预测是不够的,对于只有会了训练才能训练出我们自己的模型! 本次教程是基于github中的https://github.com/qqwweee/keras-yolo3。 详解的不是代码,而是训练思路,主要讲的是yolo3需要被减少的loss到底是什么。 当然配合代码观看肯定更容易看懂。 计算loss所需参数 在计算loss的时候,实际上是y\_pre和y\_true之间的对比: y\_pre就是一幅图像经过网络之后的输出,内部含有三个特征层的内容; y\_true就是一个真实图像中,将它的真实框的位置以及框内物体的种类,转化成yolo3网络输出后的格式的值。 实际上y\_pre和y\_true内容的shape都是 (batch\_size,13,13,3,85) (batch\_size,26,26,3,85) (batch\_size,52,52,3,85) 1、y\_pre y\_pre就是一幅图像图像经过网络之后的输出,内部含有三个特征层的内容; 如下是一副图像在model里经过的各种层: ``` def yolo_body(inputs, num_anchors, num_classes): ```   对于yolo3的模型来说,其最后输出的内容就是三个特征层的内容,三个特征层分别对应着图片被分为不同size的网格后,每个网格点上三个先验框对应的位置、置信度及其种类。 对于输出的y1、y2、y3而言,\[…, : 2\]指的是相对于每个网格点的偏移量,\[…, 2: 4\]指的是宽和高,\[…, 4: 5\]指的是该框的置信度,\[…, 5: \]指的是每个种类的预测概率。 现在的y\_pre还是没有解码的,解码了之后才是真实图像上的情况,解码过程比较简单。如果不懂的可以看我另一篇博文睿智的目标检测7——yolo3详解及其预测代码复现 ``` def yolo_head(feats, anchors, num_classes, input_shape, calc_loss=False): ```  2、y\_true y\_true就是一个真实图像中,将它的真实框的位置以及框内物体的种类,转化成yolo3网络输出后的格式的值。 在yolo3中,其使用了一个专门的函数用于处理读取进来的图片的框的真实情况。 ``` def preprocess_true_boxes(true_boxes, input_shape, anchors, num_classes): ``` 其输入为: ``` true_boxes:shape为(m, T, 5)代表m张图T个框的x_min、y_min、x_max、y_max、class_id。 ``` 其实对真实框的处理是将真实框转化成图片中相对网格的xyhw,步骤如下: 1、取框的真实值,获取其框的中心及其宽高,除去input\_shape变成比例的模式。 2、建立全为0的y\_true,y\_true是一个列表,包含三个特征层,shape分别为(m,13,13,3,85),(m,26,26,3,85),(m,52,52,3,85)。 3、对每一张图片处理,将每一张图片中的真实框的wh和先验框的wh对比,计算IOU值,选取其中IOU最高的一个,得到其所属特征层及其网格点的位置,在对应的y\_true中将内容进行保存。 ``` for t, n in enumerate(best_anchor): ``` 对于最后输出的y\_true而言,只有每个图里每个框最对应的位置有数据,其它的地方都为0。 preprocess\_true\_boxes全部的代码如下: ``` def preprocess_true_boxes(true_boxes, input_shape, anchors, num_classes): ``` loss的计算过程 在得到了y\_pre和y\_true后怎么对比呢?不是简单的减一下就可以的呢。 1、利用y\_true取出该特征层中真实存在目标的点的位置(m,13,13,3,1)及其对应的种类(m,13,13,3,80)。 2、将yolo\_outputs的特征层输出进行处理,得到reshape后的预测值y\_pre,shape分别为(m,13,13,3,85),(m,26,26,3,85),(m,52,52,3,85)。还有解码后的xy,wh。 3、获取真实框编码后的值,后面用于计算loss 4、对于每一幅图,计算其中所有真实框与预测框的IOU,取出每个网络点中IOU最大的先验框,如果这个最大的IOU都小于ignore\_thresh,意味着这个网络点内不存在目标,可以被忽略。 5、计算xy和wh上的loss,其计算的是实际上存在目标的,利用第三步真实框编码后的的结果和未处理的预测结果进行对比得到loss。 6、计算置信度的loss,其有两部分构成,第一部分是实际上存在目标的,预测结果中置信度的值与1对比;第二部分是实际上不存在目标的,在第四步中得到其IOU还较大的预测结果中的值与0对比。 7、计算预测种类的loss,其计算的是实际上存在目标的,预测类与真实类的差距。 其实际上计算的总的loss是三个loss的和,这三个loss分别是:     实际存在的框,编码后的结果与预测值的差距。     实际存在的框,预测结果中置信度的值与1对比;实际不存在的框,在上述步骤中,第四步得到其IOU还较大的预测结果中的值与0对比。     实际存在的框,种类预测结果与实际结果的对比。  作者:Bubbliiing 这样就可以计算loss啦,还是很复杂的!不过还是可以理解的!作者太强啦
  • [其他] 新的AI技术发展趋势--多模态学习技术
    新的AI技术发展趋势有哪些?多模态学习技术一定是其中之一。最近,刚刚宣布“自立门户”的微软AI明星产品小冰改名为“红棉小冰”。殊不知2014年诞生的这一个AI对话机器人已经在5年时间里更新到了第七代了,据称能力上正在“无限接近人类”。现在的小冰,不仅是那个会作诗的机器人了,她还会唱歌作曲、阅读朗诵、撰写新闻,甚至去年还办了一个虚拟7位画家的个人画展。多模态识别技术正是小冰越来越像人一样沟通表达的关键之一。多模态技术同样也在视频网站、电商物流、自动驾驶等领域得到广泛。像爱奇艺推出的“只看TA”功能,优酷视频正在使用的视频帧、人脸帧的图向量检索,都离不开多模态识别技术的支持。而像京东淘宝等电商平台的“拍照购”、“拍立淘”的搜索技术背后也都是在计算机视觉技术下,使用了图像、文本和高层语义属性等多模态下的信息融合,才实现高精度的“以图搜图”功能。百度提出的“多模态深度语义理解”,则让AI实现从“看清听清”到“看懂听懂”的进化。可以说,人工智能在通向人的智能的道路上,多模态学习就是一个绕不开的发展方向。因为人类本身就是一个多模态学习的典范。现在,多模态学习技术正在带来众多全新的应用场景。关注AI技术和应用发展趋势的你,想必也想了解下多模态学习的来龙去脉,以及在这些新应用场景中的技术现状与问题。而这些问题也是本文重点探讨的内容。“多模态学习”,正式认识下模态(Modality),虽然不是我们的日常用语,但却十分容易理解。我们每一天都会接触到各种不同来源和形式的信息。正如我们有视觉、听觉、嗅觉和触觉等,那么我们接触的信息就有视频、图像、文字、语音、味道、软硬度等,这每一种信息的形式就可以称作一种模态。模态的范围要比我们的感知能力更宽泛。除了视觉、听觉获得的模态信息,我们也可以利用传感器获得诸如雷达、红外线等不同感应数据的模态信息。此外,模态的类型定义也可以非常宽泛,比如我们可以把两种不同的语言当做是两种模态,把不同结构下采集的数据,也可以当做两种模态。比如,仅仅一个视频内容数据,就是一个高维度、多模态的数据信息,其中包含了标题、简介、评论、字幕等文本信息,也有视频帧的图像、声音,以及连贯动作视频片段的视觉、声音信息。多模态学习,从上世纪70年代就已经起步,几经发展,现在正进入到机器学习特别是深度学习的阶段。通常称为多模态机器学习(Multi-Modal Machine Learning ,MMML),试图通过机器学习的方法实现对多源模态信息进行分析和理解。当前主要热门的研究方向自然是对图像、视频、音频、语义之间的多模态学习。当前,多模态学习主要研究方向有多模态表示学习、模态间映射,多模态对齐、融合、协同学习等。多模态表示学习,研究如何将多个模态数据所蕴含的语义信息数值化为实值向量,通俗理解就是对多个模态的数据进行相关性编码,让不同模态建立起映射关系。按多模态表示共享的方式,主要分为公共表示学习和特异性表示学习,后者由于是分别学习不同模态的特征,可以应用于诸如零次学习、模态间映射、跨模态检索等任务中。模态间映射,研究如何将某一特定模态数据中的信息映射至另一模态。例如,给定一幅图像,通过机器学习得到这副图像的描述,或者给定一段文字,生成一幅匹配的图像。类似于我们学习中遇到的“看图说话”和“以题作画”的问题。模态间映射早已可以应用于语音合成、图像视频描述以及跨模态检索等应用中。此外,多模态对齐,主要研究如何识别不同模态之间的部件、元素的对应关系,以促进学习到的多模态表示更加精确,例如将电影画面、口型、语音、字幕的自动对齐;多模态融合,主要致力于不同模态间的模型与特征的整合,以获得更全面的特征,提高模型鲁棒性,并且保证模型在某些模态缺失时仍能有效工作;而多模态协同学习,主要考虑如何从信息丰富模态上学习的知识迁移到信息匮乏的模态,使各个模态的学习互相辅助。典型的方法包括多模态的零样本学习、领域自适应等。近两年,随着机器学习的模型的飞速进展,多模态学习中出现的映射质量问题、对齐的匹配度量以及融合噪声干扰等问题,都在实现很好的优化解决,为多模态的落地应用做好了准备。多模态学习,正在丰富哪些应用场景?通过以上解释可以知道,其实很多我们熟知的AI技术都可以归类到模态学习当中。比如,像机器翻译,通过输入的一种A语言即时翻译为另一种B语言,其实质就是一种模态之间的映射转化。类似的还有唇读识别和语音翻译,也就是分别将唇部视觉和语音信息转换为文本信息。在图像识别中,会应用到一种“图片语义分割”,即尝试给图片的不同像素区域对应到每一种类型标签,实现视觉和词汇的对应。这就是多模态对齐在空间维度的应用。当然,基于多模态数据的丰富表示以及映射、对齐和融合的应用,可以将目前AI的三种主要感知模态——语音交互、机器视觉、传感器智能进行多模态组合,产生全新的应用场景。在语音交互上,“多模态深度语义理解”技术正在为其带来更深度的应用场景。对于前几年的智能音箱,我们都有这样的感触,那就是语音交互只能完成简单的搜索,一旦多聊几句,就发现机器人要么只有万能的“套路”公式,要么就“答非所问”。这一问题的根源就是人工智能无法更好的理解对话者的深层涵义,也没有灵活的应答机制和内容。此外,也更难理解人的语气、情绪这类情感模态信息,当然因为没有视觉感知,更不可能去理解人的表情、动作、姿态等信息。多模态深度语义理解可以极大改善这类语音交互的语义理解难题。比如,其中一个应用场景是智能汽车的数字座舱,正在从原本单一的车载语音识别,实现融合视觉、语音、车内外场景图像的多模态识别的转变。在实际的语音交互中,车载智能助手不仅可以实现语音的识别,也可以通过摄像头识别人的表情神态、动作,比如识别疲劳驾驶、分心、发热等状况,以进行即时的语音提醒。语音交互也可以更加以人类的自然语言进行交互,而不必要使用生硬的指令型语言。而在以机器视觉为主的应用中,多模态学习技术也带来新的应用可能。以电商平台购物为例,用户的一大痛点就是看到一些“心水”的好物或者同款,但不知道名字,通过拍照识别和检索,将为用户提供最便捷的推荐服务。另外,在电商的智能客服,用户也希望能够通过简单对话或者发送图片、视频的方式处理订单问题。在这些场景中,跨模态检索和映射转化技术就得到了深度应用。比如,在商品推荐和信息流广告中,就需要结合海量商品图像与对应的商品语义属性,学习图像语义特征表达,以提高符合用户需求的商品推荐度。而与智能客服进行的多轮对话中,融入视觉到语言的跨模态转换技术,可以自动实现对用户上传的图片或视频进行自动应答。在传感器智能上,多模态识别技术可以应用到大量的物联网设备场景中。通过在大量的智能设备中增加视觉、温度、湿度和光线传感器,来实现多模态的智能交互。比如在智能空调中,加入语音交互、视觉识别指令,结合传感器判断屋内温度和湿度,可以根据屋内人数、位置等因素来实现更精准的控温方案。而现在更多智能大屏应用,也在将机器视觉、语音交互和一些智能传感器引入到智能硬件中,实现对屋内光线的调节、音量、观看者状态(离得是否太近,是否有未成年人)等因素的智能识别和调节。而近期,华为推出的一款针对办公场景的智慧屏幕,可以根据视频会议中的发言对象进行视角跟踪,将摄像头跟踪、焦点人物识别和身份识别结合起来。正如开始列举的,多模态学习技术更主要的应用还是集中在语音和视觉的多模态识别上。在爱奇艺的“只看TA”的功能中,除了人脸识别要区分是真人还是卡通人物,还要对**信息,甚至还有微表情、身体语言等识别,多模态技术成为视频场景中不可缺少的技术支撑。而在未来的聊天机器人或者智能助手上,多模态学习将帮助智能机器人综合处理图像、声音和文字信息,同时可以进行综合模态,甚至包括情感等特征信息的输出与表达。技术尚在中途,未来仍需努力不过,我们仍然需要指出的是,尽管多模态学习技术已经有诸多的应用场景,但其技术实现仍然有诸多不足,也会有一些场景仍然是“伪多模态”的技术应用状态,导致一些场景体验仍然不能“尽如人意”。现在的多模态技术的结合多为“松耦合”状态,各个模态可以一起工作,但耦合之下还不够十分紧密。也就是现在更多实现的是两种模态信息的转化和融合。而一旦多种模态数据增加,耦合也会增多,冲突也就会增加,产生各种噪声。比如,对于聊天机器人,如何在回复的声音、文本中增加情感特征,就是一件非常困难的事情。因此,我们遇到的一批智能机器人都很容易是冷冰冰的客服腔调,以致于我们确实不好识别对方是真人还是机器人多模态技术主要还是采用已标注的多模态数据来生成深度学习模型,这导致这些模型在真实场景下的泛化能力受到很大限制。现有的多模态技术更多要与知识图谱结合,融入专家、常识等知识,利用数据和知识的联合来让多模态技术建立其“智能”的作用。此外,正如一位专家指出的,当前的多模态技术还是属于狭隘的单任务学习,整个训练和测试的过程都是在封闭和静态的环境下进行,这就和真实世界中开放动态的应用场景存在一定的差异性。这距离人类在真实场景中的泛化的多模态感知相距甚远。未来为提高多模态的泛化感知能力,可以利用元学习的方式来让模型自己学会如何认知新的多模态知识,实现适用于开放动态场景并具备终生学习能力的多模态模型。而在推动AI的推理能力上,在多模态模型训练的过程中,可以引入自监督、自学习的推理性任务,“强迫”多模态模型进行推理和思考,这也能在一定程度上让机器去慢慢学会推理。通过多模态学习技术实现AI的推理,看起来难度极大,这一假设还需要未来更多实验和验证。总的来说,多模态技术已经在试图“复制”人类在日常生活中的各类场景,尽可能把人类的感知信息进行分析处理和整合,并实现更全面综合的理解,也能结合“数据”和“知识”给出相应的回应。但这距离真正的人类级别的智能还有质的差别。当然,人们对多模态技术的发展前景仍然看好,相比于只侧重单一模态的技术,多模态技术所构建的智能应用场景将更多样化,也与我们普通人期待的智能生活更近一些。更何况,多模态技术仍处在“襁褓状态”,我们应该留给它足够长的成长时间,等待美好发生。
  • [认证交流] 微认证之路 电子相册智慧整理
    ### 名称及链接 [电子相册智慧整理](https://edu.huaweicloud.com/certifications/880d036b9d6243f1871693a0706e7f2a)   ### 课程章节 1. 相册整理与华为云EI服务 2. 图像处理基础知识 3. 卷积神经网络 4. 电子相册智慧整理项目实战   ### 证书 ![wrz-ai-zj-znxc.png](https://bbs-img.huaweicloud.com/data/forums/attachment/forum/202105/19/1044062xthvmub5nhd8z7w.png)   ### 笔记 1. 相册智能整理 1. 图片标签 2. 快速分类 3. 动态相册 4. 智能搜索 2. 华为云EI服务 1. 图像识别 1. 场景分析 2. 目标检测 3. 智能相册 4. 图像搜索 2. modelarts 3. 图像处理运用场景 1. 图像分类 2. 风格化 3. 低曝光增强 4. 超分辨率 5. 图像去雾 3. 计算机视觉 1. 图像的采集获取 2. 图像的压缩编码 3. 图像的存储和传输 4. 图像的合成 5. 三维图像重建 6. 图像增强 7. 图像修复 8. 图像的分类和识别 9. 目标的检测、跟踪、表达和描述 10. 特征提取 11. 图像的显示和输出 4. 颜色空间 1. RGB 2. HSV 3. CMYK 4. Lab 5. 常见图像存储格式 1. BMP 2. JPG 3. GIF 4. PNG 6. 图像预处理 1. 图像灰度调整 1. 最大值法 2. 平均值法 3. 加权平均值法 2. 对比度增强 1. 直方图均衡化 3. 锐化 1. 梯度法 4. 平滑 5. 去噪 6. 其他 1. 通道调整 2. 翻转 3. 缩放 4. 拉伸 5. 旋转 6. 噪声 7. 对比度 8. 剪切 7. 卷积神经网络(一种前馈神经网络) 1. 卷积层 1. 卷积核 2. 特征图 2. 激活函数 1. sigmoid 2. tanh 3. relu 4. leakyrelu 5. SoftMax 3. 池化层 1. 最大池化 2. 平均池化 4. 全连接层 8. 反向传播算法 9. 梯度下降算法 10. anaconda 11. jupyter notebook 12. python图像处理库 1. PIL 2. pillow 3. OpenCV 4. matplotlib 5. scikit-image 13. Base64编码方式   ### 备注 1. 感谢老师的教学与课件 2. 欢迎各位同学一起来交流学习心得^_^ 3. 在线课程、沙箱实验、博客和直播,其中包含了许多优质的内容,推荐了解与学习。
  • [技术干货] 图像处理中的卷积核kernel
    kernel 中的卷积核介绍:简介卷积核(kernel),也叫卷积矩阵(convolution matrix)或者掩膜(mask),本质上是一个非常小的矩阵,最常用的是 3×3 矩阵。主要是利用核与图像之间进行卷积运算来实现图像处理,能做出模糊、锐化、凹凸、边缘检测等效果。
  • [技术干货] 【数字识别】基于matlab数字仪表识别
    一、简介1 灰度化 (grayscale)将彩色图像转化为灰度图像的过程称为图像灰度化。彩色图像中的像素值由RGB三个分量决定,每个分量都有0-255(256种)选择,这样一个像素点的像素值可以有1600万种可能(256256256),而灰度图的像素点的像素值是RGB三个分量值相同的一种特殊的彩色图像, 只有256种可能。所以在图像处理中,往往将各种图像首先灰度化成灰度图像以便后续处理,降低计算量。灰度是指只含亮度信息,不含色彩信息的图像。黑白照片就是灰度图,特点是亮度由暗到明,变化是连续的。灰度图像的描述与彩色图像一样仍然反映了整幅图像的整体和局部的色度和亮度等级的分布和特征,使用灰度图的好处:① RGB的值都一样。② 图像数据即调色板索引值,就是实际的RGB值,也就是亮度值。③ 因为是256色调色板,所以图像数据中一个字节代表一个像素,很整齐。所以,做图像处理时一般都采用灰度图。要表示灰度图,就需要把亮度值进行量化,有四种方法:(1)分量法将彩色图像中的三分量的亮度作为三个灰度图像的灰度值,可根据应用需要选取一种灰度图像。(2)最大值法将彩色图像中的三分量亮度的最大值作为灰度图的灰度值。(3)均值法将彩色图像中的三分量亮度求平均得到灰度图的灰度值。(4)加权平均法根据重要性及其它指标,将三个分量以不同的权值进行加权平均。由于人眼对绿色的敏感最高,对蓝色敏感最低,因此,按下式对RGB三分量进行加权平均能得到较合理的灰度图像,f(i,j)=0.30R(i,j)+0.59G(i,j)+0.11B(i,j))。2 二值化(binaryzation)图像的二值化是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果。将256个亮度等级的灰度图像通过适当的阀值选取而获得仍然可以反映图像整体和局部特征的二值化图像。所有灰度大于或等于阀值的像素被判定为属于特定物体,其灰度值为255,否则这些像素点被排除在物体区域以外,灰度值为0,表示背景或者例外的物体区域。在数字图像处理中,二值图像占有非常重要的地位,首先,图像的二值化有利于图像的进一步处理,使图像变得简单,而且数据量减小,能凸显出感兴趣的目标的轮廓。其次,要进行二值图像的处理与分析,首先要把灰度图像二值化,得到二值化图像。二值化的常用算法有:全局二值化: 一幅图像包括目标物体、背景还有噪声,要想从多值的数字图像中直接提取出目标物体,最常用的方法就是设定一个全局的阈值T,用T将图像的数据分成两部分:大于T的像素群和小于T的像素群。将大于T的像素群的像素值设定为白色(或者黑色),小于T的像素群的像素值设定为黑色(或者白色)。全局二值化,在表现图像细节方面存在很大缺陷。为了弥补这个缺陷,出现了局部二值化方法。局部二值化:按照一定的规则将整幅图像划分为N个窗口,对这N个窗口中的每一个窗口再按照一个统一的阈值T将该窗口内的像素划分为两部分,进行二值化处理。局部二值化也有一个缺陷。这个缺陷存在于那个统一阈值的选定。这个阈值是没有经过合理的运算得来,一般是取该窗口的平局值。这就导致在每一个窗口内仍然出现的是全局二值化的缺陷。为了解决这个问题,就出现了局部自适应二值化方法。局部自适应二值化:在局部二值化的基础之上,将阈值的设定更加合理化。该方法的阈值是通过对该窗口像素的平均值E,像素之间的差平方P,像素之间的均方根值Q等各种局部特征,设定一个参数方程进行阈值的计算,例如:T=aE+bP+c*Q,其中a,b,c是自由参数。这样得出来的二值化图像就更能表现出二值化图像中的细节。3 反色(inverse)反色的实际含义是将R、G、B值反转。若颜色的量化级别是256,则新图的R、G、B值为255减去原图的R、G、B值。这里针对的是所有图,包括真彩图、带调色板的彩色图(又称为伪彩色图)、和灰度图。真彩图不带调色板,每个象素用3个字节,表示R、G、B三个分量。所以处理很简单,把反转后的R、G、B值写入新图即可,比如一个点的颜色为(0,0,0),反色后为(255,255,255)。带调色板的彩色图,其位图中的数据只是对应调色板中的一个索引值,我们只需要将调色板中的颜色反转,形成新调色板,而位图数据不用动,就能够实现反转。
  • 想了解华为在数字图像处理这方面需要人才吗
    想了解华为在数字图像处理这方面需要人才吗。。。入职华为大约需要啥学历
  • [其他] 多模态学习,带来AI全新应用场景
    文丨脑极体新的AI技术发展趋势有哪些?多模态学习技术一定是其中之一。最近,刚刚宣布“自立门户”的微软AI明星产品小冰改名为“红棉小冰”。殊不知2014年诞生的这一个AI对话机器人已经在5年时间里更新到了第七代了,据称能力上正在“无限接近人类”。现在的小冰,不仅是那个会作诗的机器人了,她还会唱歌作曲、阅读朗诵、撰写新闻,甚至去年还办了一个虚拟7位画家的个人画展。多模态识别技术正是小冰越来越像人一样沟通表达的关键之一。多模态技术同样也在视频网站、电商物流、自动驾驶等领域得到广泛。像爱奇艺推出的“只看TA”功能,优酷视频正在使用的视频帧、人脸帧的图向量检索,都离不开多模态识别技术的支持。而像京东淘宝等电商平台的“拍照购”、“拍立淘”的搜索技术背后也都是在计算机视觉技术下,使用了图像、文本和高层语义属性等多模态下的信息融合,才实现高精度的“以图搜图”功能。百度提出的“多模态深度语义理解”,则让AI实现从“看清听清”到“看懂听懂”的进化。可以说,人工智能在通向人的智能的道路上,多模态学习就是一个绕不开的发展方向。因为人类本身就是一个多模态学习的典范。现在,多模态学习技术正在带来众多全新的应用场景。关注AI技术和应用发展趋势的你,想必也想了解下多模态学习的来龙去脉,以及在这些新应用场景中的技术现状与问题。而这些问题也是本文重点探讨的内容。“多模态学习”,正式认识下模态(Modality),虽然不是我们的日常用语,但却十分容易理解。我们每一天都会接触到各种不同来源和形式的信息。正如我们有视觉、听觉、嗅觉和触觉等,那么我们接触的信息就有视频、图像、文字、语音、味道、软硬度等,这每一种信息的形式就可以称作一种模态。模态的范围要比我们的感知能力更宽泛。除了视觉、听觉获得的模态信息,我们也可以利用传感器获得诸如雷达、红外线等不同感应数据的模态信息。此外,模态的类型定义也可以非常宽泛,比如我们可以把两种不同的语言当做是两种模态,把不同结构下采集的数据,也可以当做两种模态。比如,仅仅一个视频内容数据,就是一个高维度、多模态的数据信息,其中包含了标题、简介、评论、字幕等文本信息,也有视频帧的图像、声音,以及连贯动作视频片段的视觉、声音信息。多模态学习,从上世纪70年代就已经起步,几经发展,现在正进入到机器学习特别是深度学习的阶段。通常称为多模态机器学习(Multi-Modal Machine Learning ,MMML),试图通过机器学习的方法实现对多源模态信息进行分析和理解。当前主要热门的研究方向自然是对图像、视频、音频、语义之间的多模态学习。当前,多模态学习主要研究方向有多模态表示学习、模态间映射,多模态对齐、融合、协同学习等。多模态表示学习,研究如何将多个模态数据所蕴含的语义信息数值化为实值向量,通俗理解就是对多个模态的数据进行相关性编码,让不同模态建立起映射关系。按多模态表示共享的方式,主要分为公共表示学习和特异性表示学习,后者由于是分别学习不同模态的特征,可以应用于诸如零次学习、模态间映射、跨模态检索等任务中。模态间映射,研究如何将某一特定模态数据中的信息映射至另一模态。例如,给定一幅图像,通过机器学习得到这副图像的描述,或者给定一段文字,生成一幅匹配的图像。类似于我们学习中遇到的“看图说话”和“以题作画”的问题。模态间映射早已可以应用于语音合成、图像视频描述以及跨模态检索等应用中。此外,多模态对齐,主要研究如何识别不同模态之间的部件、元素的对应关系,以促进学习到的多模态表示更加精确,例如将电影画面、口型、语音、字幕的自动对齐;多模态融合,主要致力于不同模态间的模型与特征的整合,以获得更全面的特征,提高模型鲁棒性,并且保证模型在某些模态缺失时仍能有效工作;而多模态协同学习,主要考虑如何从信息丰富模态上学习的知识迁移到信息匮乏的模态,使各个模态的学习互相辅助。典型的方法包括多模态的零样本学习、领域自适应等。近两年,随着机器学习的模型的飞速进展,多模态学习中出现的映射质量问题、对齐的匹配度量以及融合噪声干扰等问题,都在实现很好的优化解决,为多模态的落地应用做好了准备。多模态学习,正在丰富哪些应用场景?通过以上解释可以知道,其实很多我们熟知的AI技术都可以归类到模态学习当中。比如,像机器翻译,通过输入的一种A语言即时翻译为另一种B语言,其实质就是一种模态之间的映射转化。类似的还有唇读识别和语音翻译,也就是分别将唇部视觉和语音信息转换为文本信息。在图像识别中,会应用到一种“图片语义分割”,即尝试给图片的不同像素区域对应到每一种类型标签,实现视觉和词汇的对应。这就是多模态对齐在空间维度的应用。当然,基于多模态数据的丰富表示以及映射、对齐和融合的应用,可以将目前AI的三种主要感知模态——语音交互、机器视觉、传感器智能进行多模态组合,产生全新的应用场景。在语音交互上,“多模态深度语义理解”技术正在为其带来更深度的应用场景。对于前几年的智能音箱,我们都有这样的感触,那就是语音交互只能完成简单的搜索,一旦多聊几句,就发现机器人要么只有万能的“套路”公式,要么就“答非所问”。这一问题的根源就是人工智能无法更好的理解对话者的深层涵义,也没有灵活的应答机制和内容。此外,也更难理解人的语气、情绪这类情感模态信息,当然因为没有视觉感知,更不可能去理解人的表情、动作、姿态等信息。多模态深度语义理解可以极大改善这类语音交互的语义理解难题。比如,其中一个应用场景是智能汽车的数字座舱,正在从原本单一的车载语音识别,实现融合视觉、语音、车内外场景图像的多模态识别的转变。在实际的语音交互中,车载智能助手不仅可以实现语音的识别,也可以通过摄像头识别人的表情神态、动作,比如识别疲劳驾驶、分心、发热等状况,以进行即时的语音提醒。语音交互也可以更加以人类的自然语言进行交互,而不必要使用生硬的指令型语言。而在以机器视觉为主的应用中,多模态学习技术也带来新的应用可能。以电商平台购物为例,用户的一大痛点就是看到一些“心水”的好物或者同款,但不知道名字,通过拍照识别和检索,将为用户提供最便捷的推荐服务。另外,在电商的智能客服,用户也希望能够通过简单对话或者发送图片、视频的方式处理订单问题。在这些场景中,跨模态检索和映射转化技术就得到了深度应用。比如,在商品推荐和信息流广告中,就需要结合海量商品图像与对应的商品语义属性,学习图像语义特征表达,以提高符合用户需求的商品推荐度。而与智能客服进行的多轮对话中,融入视觉到语言的跨模态转换技术,可以自动实现对用户上传的图片或视频进行自动应答。在传感器智能上,多模态识别技术可以应用到大量的物联网设备场景中。通过在大量的智能设备中增加视觉、温度、湿度和光线传感器,来实现多模态的智能交互。比如在智能空调中,加入语音交互、视觉识别指令,结合传感器判断屋内温度和湿度,可以根据屋内人数、位置等因素来实现更精准的控温方案。而现在更多智能大屏应用,也在将机器视觉、语音交互和一些智能传感器引入到智能硬件中,实现对屋内光线的调节、音量、观看者状态(离得是否太近,是否有未成年人)等因素的智能识别和调节。而近期,华为推出的一款针对办公场景的智慧屏幕,可以根据视频会议中的发言对象进行视角跟踪,将摄像头跟踪、焦点人物识别和身份识别结合起来。正如开始列举的,多模态学习技术更主要的应用还是集中在语音和视觉的多模态识别上。在爱奇艺的“只看TA”的功能中,除了人脸识别要区分是真人还是卡通人物,还要对**信息,甚至还有微表情、身体语言等识别,多模态技术成为视频场景中不可缺少的技术支撑。而在未来的聊天机器人或者智能助手上,多模态学习将帮助智能机器人综合处理图像、声音和文字信息,同时可以进行综合模态,甚至包括情感等特征信息的输出与表达。技术尚在中途,未来仍需努力不过,我们仍然需要指出的是,尽管多模态学习技术已经有诸多的应用场景,但其技术实现仍然有诸多不足,也会有一些场景仍然是“伪多模态”的技术应用状态,导致一些场景体验仍然不能“尽如人意”。现在的多模态技术的结合多为“松耦合”状态,各个模态可以一起工作,但耦合之下还不够十分紧密。也就是现在更多实现的是两种模态信息的转化和融合。而一旦多种模态数据增加,耦合也会增多,冲突也就会增加,产生各种噪声。比如,对于聊天机器人,如何在回复的声音、文本中增加情感特征,就是一件非常困难的事情。因此,我们遇到的一批智能机器人都很容易是冷冰冰的客服腔调,以致于我们确实不好识别对方是真人还是机器人多模态技术主要还是采用已标注的多模态数据来生成深度学习模型,这导致这些模型在真实场景下的泛化能力受到很大限制。现有的多模态技术更多要与知识图谱结合,融入专家、常识等知识,利用数据和知识的联合来让多模态技术建立其“智能”的作用。此外,正如一位专家指出的,当前的多模态技术还是属于狭隘的单任务学习,整个训练和测试的过程都是在封闭和静态的环境下进行,这就和真实世界中开放动态的应用场景存在一定的差异性。这距离人类在真实场景中的泛化的多模态感知相距甚远。未来为提高多模态的泛化感知能力,可以利用元学习的方式来让模型自己学会如何认知新的多模态知识,实现适用于开放动态场景并具备终生学习能力的多模态模型。而在推动AI的推理能力上,在多模态模型训练的过程中,可以引入自监督、自学习的推理性任务,“强迫”多模态模型进行推理和思考,这也能在一定程度上让机器去慢慢学会推理。通过多模态学习技术实现AI的推理,看起来难度极大,这一假设还需要未来更多实验和验证。总的来说,多模态技术已经在试图“复制”人类在日常生活中的各类场景,尽可能把人类的感知信息进行分析处理和整合,并实现更全面综合的理解,也能结合“数据”和“知识”给出相应的回应。但这距离真正的人类级别的智能还有质的差别。当然,人们对多模态技术的发展前景仍然看好,相比于只侧重单一模态的技术,多模态技术所构建的智能应用场景将更多样化,也与我们普通人期待的智能生活更近一些。更何况,多模态技术仍处在“襁褓状态”,我们应该留给它足够长的成长时间,等待美好发生。【转载 自 钛媒体app
  • [其他] 多模态学习
    模态(Modality),虽然不是我们的日常用语,但却十分容易理解。我们每一天都会接触到各种不同来源和形式的信息。正如我们有视觉、听觉、嗅觉和触觉等,那么我们接触的信息就有视频、图像、文字、语音、味道、软硬度等,这每一种信息的形式就可以称作一种模态。模态的范围要比我们的感知能力更宽泛。除了视觉、听觉获得的模态信息,我们也可以利用传感器获得诸如雷达、红外线等不同感应数据的模态信息。此外,模态的类型定义也可以非常宽泛,比如我们可以把两种不同的语言当做是两种模态,把不同结构下采集的数据,也可以当做两种模态。比如,仅仅一个视频内容数据,就是一个高维度、多模态的数据信息,其中包含了标题、简介、评论、字幕等文本信息,也有视频帧的图像、声音,以及连贯动作视频片段的视觉、声音信息。多模态学习,从上世纪70年代就已经起步,几经发展,现在正进入到机器学习特别是深度学习的阶段。通常称为多模态机器学习(Multi-Modal Machine Learning ,MMML),试图通过机器学习的方法实现对多源模态信息进行分析和理解。当前主要热门的研究方向自然是对图像、视频、音频、语义之间的多模态学习。当前,多模态学习主要研究方向有多模态表示学习、模态间映射,多模态对齐、融合、协同学习等。多模态表示学习,研究如何将多个模态数据所蕴含的语义信息数值化为实值向量,通俗理解就是对多个模态的数据进行相关性编码,让不同模态建立起映射关系。按多模态表示共享的方式,主要分为公共表示学习和特异性表示学习,后者由于是分别学习不同模态的特征,可以应用于诸如零次学习、模态间映射、跨模态检索等任务中。模态间映射,研究如何将某一特定模态数据中的信息映射至另一模态。例如,给定一幅图像,通过机器学习得到这副图像的描述,或者给定一段文字,生成一幅匹配的图像。类似于我们学习中遇到的“看图说话”和“以题作画”的问题。模态间映射早已可以应用于语音合成、图像视频描述以及跨模态检索等应用中。此外,多模态对齐,主要研究如何识别不同模态之间的部件、元素的对应关系,以促进学习到的多模态表示更加精确,例如将电影画面、口型、语音、字幕的自动对齐;多模态融合,主要致力于不同模态间的模型与特征的整合,以获得更全面的特征,提高模型鲁棒性,并且保证模型在某些模态缺失时仍能有效工作;而多模态协同学习,主要考虑如何从信息丰富模态上学习的知识迁移到信息匮乏的模态,使各个模态的学习互相辅助。典型的方法包括多模态的零样本学习、领域自适应等。近两年,随着机器学习的模型的飞速进展,多模态学习中出现的映射质量问题、对齐的匹配度量以及融合噪声干扰等问题,都在实现很好的优化解决,为多模态的落地应用做好了准备。
  • 图像识别小程序
    12345678910111213141516171819202122232425import requestsfrom aip import AipOcr image = requests.get('https://res.pandateacher.com/python_classic.png').content APP_ID = '16149264'API_KEY = 'yxYg9r4OuAs4fYvfcl8tqCYd'SECRET_KEY = 'yWg3KMds2muFsWs7MBSSFcgMQl8Wng4s'client = AipOcr(APP_ID, API_KEY, SECRET_KEY)res = client.basicGeneral(image)if 'words_result' in res.keys():    for item in res['words_result']:        print(item['words']) else:    APP_ID = '11756541'    API_KEY = '2YhkLuyQGljPUYnmi1CFgxOP'    SECRET_KEY = '4rrHe2BF828bI8bQy6bLlx1MelXqa8Z7'    client = AipOcr(APP_ID, API_KEY, SECRET_KEY)    res = client.basicGeneral(image)    if 'words_result' in res.keys():        for item in res['words_result']:            print(item['words'])    else:        print(res)
  • [技术干货] 我对华为云会议了解
    刚开始接触华为会议,以为是一个会议软件。进行不断的深入了解后,发现并不是那么简单。华为有自己的纯软化会议产品,他的名字叫做welink,只需要在手机或者电脑中安装此软件就可以随时随地的发起会议,邀请与会者参会。个人认为,华为会议和welink的主要区别在于:华为会议中包含了多种智能硬件设备,它是硬件,是终端,非软件。面向企业、政府会议室应用,可以取代传统的会议桌,实现远程开会等诸多功能。在华为会议的终端上,比如智能协同大屏是华为会议客户端集成在电子大屏上,集会议、投屏、白板于一体2、华为会议支持的设备型号有哪些?在华为会议的购买界面,我们可以看到也是分几块进行计费的。第一部分便是各种接入账号。有华为专业会议终端接入帐号、第三方会议终端接入帐号、华为智慧屏(电视机)接入帐号、电子白板终端接入帐号、华为小型会议终端接入帐号等等。各种接入账号对应的硬件设备不同,具体细节可以登录华为云官网进行查看。购买方式也支持按月以及包年进行付费。那么笔者还是想了解,具体这个会议产品都涉及到了硬件。终于在某个角落找到了介绍。在这里也分享给大家。简单介绍下:这里又丰富的会议终端,全面覆盖大中小会议室、办公桌面等场景,满足企业内外部沟通协作需求。lCloudLink 智能会议室CloudLink适配第三方电子白板,集会议、投屏、电子白板于一体,致力于打造流畅的会议体验lTE系列这个系列主要包含了多种规格的摄像头,从TE10-TE60都有。各个产品型号侧重点不同。比如这里的TE30它的优势在于内置12倍光学变焦摄像机,对于会议场景更加准确清晰的抓到人脸。lRP系列除此之外,还具有RP系列的支持跟踪摄像机、双屏显示器功能的会议室场景lTP系列也有TP系列这种超大屏,5760×1080高清超宽画面,就和手机拍全景照片那种感觉一样,将会议室范围内人员完美呈现其中。3、企业该如何选择相应产品你的需求如何,适合选用那种产品,这里也给出了一个图表,让你的选择不再困难。
  • [产品介绍] OBS特性指南(一)图片处理
    简介图片处理特性(Image Processing)是对象存储服务(Object Storage Service,OBS)为用户提供稳定、安全、高效、易用、低成本的图片处理服务,包括:图片瘦身、图片剪切、图片缩放、图片水印、格式转换等。图片处理特性提供OBS管理控制台和RESTful API接口的使用方法,使用户可以在任何时间和地点对存储在对象存储中的图片进行处理,并且可以快速获取到处理后的图片。
  • [应用开发] 图片处理
    上图中时下发的摄像头配置文件,能否告知YUV跟H265之间的相互转换操作API在哪里查阅?想做的事情:在MINI_0上获取到原始数据和进行画框处理,然后通过一个event把图片数据和框发到host上进行显示。此过程中因为MINI_0上原始数据是YUV类型,而host上时H265压缩格式,调用什么接口或者API能把MINI_0上的YUV格式的图片数据抓换成H265?
  • [技术干货] 云手机常用工具简介
     1、 ADB。 Android 调试桥(Android Debug Bridge),是安卓提供给开发者一种命令行工具。可让您与安卓设备进行通信。adb 命令可用于执行各种设备操作(例如安装和调试应用),并提供对 Unix shell(可用来在设备上运行各种命令)的访问权限。Adb是命令行工具,不能显示手机画面。显示手机画面的工具有Airtest和安卓投屏助手(ARDC)等Adb官网: https://airtest.netease.com/2、 Airtest:是一个跨平台的、基于图像识别的UI自动化测试框架。适用于游戏和App,支持平台有Windows、Android和iOS。Airtest能够显示云手机的画面,可以通过编辑脚本,对云手机实现自动化控制。目前支持windows,macOS和Ubuntu版本。Airtest帮助文档:https://airtest.doc.io.netease.com/3、 ARDC :轻量级安卓投屏工具,入门超级简单。能够用来显示云手机画面,实现简单的云手机群控功能。
总条数:304 到第 页
上滑加载中