请选择 进入手机版 | 继续访问电脑版
专注物联网产业服务
微信二维码
威腾网服务号
游客您好
第三方账号登陆
  • 点击联系客服

    在线时间:8:00-16:00

    客服电话

    17600611919

    电子邮件

    online@weiot.net
  • 威腾网服务号

    随时掌握企业动态

  • 扫描二维码

    关注威腾小程序

图像识别
图像识别
图像识别,是指利用计算机对图像进行处理、分析和理解,以识别各种不同模式的目标和对象的技术,是应用深度学习算法的一种实践应用。 现阶段图像识别技术一般分为人脸识别与商品识别,人脸识别主要运用在安全检查、身份核验与移动支付中;商品识别主要运用在商品流通过程中,特别是无人货架、智能零售柜等无人零售领域。
  • 利用机器学习技术进行图像识别
    编译|王婧 席雄芬 校对|姚佳灵 图像识别技术可以用来解决人脸识别或字符识别等多种问题。 在本文中,我将对算法进行实际编码来演示识别手写字,特别是手写的数字。我将会使用Python以及Python的许多模块,比如numpy、PIL等。 1 #从PIL库中导入Image 2 from PIL import Image 3 #导入numpy 4 import numpy as np 5 #从文件中载入图像 6 i = Image.open('images/dot.png') 7 #将图像转换成矩阵形式 8 iar = np.asarray(i) 9 #打印矩阵 10 print (iar) 代码中提到的图像“dot.png”基本如下: 下面给你看看图像的矩阵形式,这里只是矩阵的部分截图。 你会注意到一个由8个矩阵块组成的集合。每个矩阵块表示一个“水平行的像素”,如果仔细观察,你会发现图像有8个像素行,因此图像数组有8个矩阵块。进一步观察,图像的第一个像素行是由一个黑色像素后面跟着7个白色像素组成的。现在如果我们回到刚才生成的图像矩阵中,你会注意到像素行的第一个像素[0(R) 0(G) 0(B) 255(A)]为黑色(black),其余的[255(R) 255(G) 255(B) 255(A)]为白色(white)。 注意:A(α值)表示图像的透明度。α值越低,透明度越高,相反α值越高,透明度越低。 下图可以让上面所讲的更清晰地表示出来。 因此,这里共有8行类似这样的结果,剩下的都是白色。 以下代码的输出结果大体上是一个3D图像数组。比如,针对8*8位图像,我们将得到一个8行的3D数组,每一行包含RGB-A(红蓝绿-α)的水平像素值。有一点需要记住的是,α值越高越不透明。我们也可以从另一个角度来理解,第一个维度是整个图像,第二个维度是像素行,第三个维度是RGB-A值(红蓝绿-α)或行中的每一个像素。 现在让我们来看一些有趣的事。你也许想知道为什么有时电脑会习惯于用RGB表示颜色,有时又用RWB或其他类似的方式。好了,有一个理论叫作加色和减色理论。我们在本文中讨论的是加色法。我们以红色画笔为例,如果我们在纸上画一次,会出现红色,再画一次,红色将会变深,如果用手电筒从纸的背面照过来,红色会变得明亮一些,这就是显示器的工作原理。因此,我想说的是, 我将用matplotlib模块来呈现图像。 5 #导入matplotlib 6 import matplotlib.pyplot as plt 7 #从文件中载入图像 8 i = Image.open('images/dotndot.png') 9 #将图像转换成矩阵形式 10 iar = np.asarray(i) 11 #输出图像 12 plt.imshow(iar) 13 plt.show 我导入matplotlib.pyplot函数,并修改了最后两行代码。 下面是输入的图像: 输出结果是: 当计算机尝试识别数字时,会碰到一个问题,有些数字可能会看上去模糊、褪色或变形,就像验证码中或带有彩色零的图像中显示的那样。机器要处理数百万种颜色,增加了计算的复杂度。 并不是所有的图像都有机器容易识别的白色或深色的背景。对于这个问题我们通过设定阈值来解决。我们分析图像的平均颜色,将它作为阈值。高于阈值则认为更接近白色,低于阈值认为接近黑色。 通过设定阈值我们可以简化图像。 让我们来做个最简单的测试。 5 #导入matplotlib库的pyplot 8 i = Image.open('images/numbers/y0.4.png') 9 #将图像转换为矩阵形式 下图是使用matplotlib库绘制的图像。 这是一个以黄色为背景的蓝色零,计算机很难识别这些模糊的图像。 因此,让我们用阈值函数来解决这个问题。使用阈值函数,我们将把任何图像变成黑白两色,这种方法使得计算机不必困惑于数百万种颜色(256*256*256*256),简化了图像识别的工作量。我们提出了将超过阈值的值转化为白色(很明显,一个图像的色彩越多,越接近与白色),同时低于阈值的值转化为黑色。因此现在最有挑战的部分是阈值的确定,该函数基本上是改变数组的值,使每个像素转换为白色或黑色。 下面是阈值函数: 1 #从PIL库导入Image 7 #导入时间 8 import time 9 10 #从文件载入图像i,i2,i3和i4,并将图像转换为矩阵 11 i = Image.open('images/numbers/0.1.png') 12 iar = np.array(i) 13 i2 = Image.open('images/numbers/y0.4.png') 14 iar2 = np.array(i2) 15 i3 = Image.open('images/numbers/y0.5.png') 16 iar3 = np.array(i3) 17 i4 = Image.open('images/sentdex.png') 18 iar4 = np.array(i4) 19 20 #用matplotlib画图,在8*6大小矩形框里内,每张子图行范围(0,4),列范围(0,3), 21 #在(0,0)位置绘制ax1,(4,0)位置绘制ax2,(0,3)位置绘制ax3,(4,3)位置绘制ax4 22 23 fig = plt.figure 24 ax1 = plt.subplot2grid((8,6),(0,0), rowspan=4, colspan=3) 25 ax2 = plt.subplot2grid((8,6),(4,0), rowspan=4, colspan=3) 26 ax3 = plt.subplot2grid((8,6),(0,3), rowspan=4, colspan=3) 27 ax4 = plt.subplot2grid((8,6),(4,3), rowspan=4, colspan=3) 28 29 #输出图像 30 ax1.imshow(iar) 31 ax2.imshow(iar2) 32 ax3.imshow(iar3) 33 ax4.imshow(iar4) 34 35 plt.show 代码输出结果: 在上面的函数中增加阈值函数: 10 #定义阈值函数,参数为图像数组,返回新的图像数组 11 def threshold(imageArray): 12 #balanceAr是数组,用于存放所计算的每行像素的平均值 13 balanceAr = 14 newAr = imageArray 15 for eachRow in imageArray: 16 for eachPix in eachRow: 17 avgNum = reduce(lambda x, y: x + y, eachPix[:3]) / len(eachPix[:3]) 18 balanceAr.append(avgNum) 19 20 #balance是balanceAr的平均值,即所有行像素的均值 21 balance = reduce(lambda x, y: x + y, balanceAr) / len(balanceAr) 22 23 #将每行的像素值与均值比较,如果大于均值,像素转换为白色([255,255,255,255]) 24 #否则,转换为黑色([0,0,0,255]) 25 26 for eachRow in newAr: 27 for eachPix in eachRow: 28 if reduce(lambda x, y: x + y, eachPix[:3]) / len(eachPix[:3]) > balance: 29 eachPix[0] = 255 30 eachPix[1] = 255 31 eachPix[2] = 255 32 eachPix[3] = 255 33 else: 34 eachPix[0] = 0 35 eachPix[1] = 0 36 eachPix[2] = 0 37 eachPix[3] = 255 38 return newAr 39 40 #从文件载入图像i,i2,i3,i4,并转换成数组 41 i = Image.open('images/numbers/0.1.png') 42 iar = np.array(i) 43 i2 = Image.open('images/numbers/y0.4.png') 44 iar2 = np.array(i2) 45 i3 = Image.open('images/numbers/y0.5.png') 46 iar3 = np.array(i3) 47 i4 = Image.open('images/sentdex.png') 48 iar4 = np.array(i4) 49 50 #调用阀值函数 51 threshold(iar3) 52 threshold(iar4) 53 threshold(iar2) 54 55 #用matplotlib作图 56 fig = plt.figure 57 ax1 = plt.subplot2grid((8,6),(0,0), rowspan=4, colspan=3) 58 ax2 = plt.subplot2grid((8,6),(4,0), rowspan=4, colspan=3) 59 ax3 = plt.subplot2grid((8,6),(0,3), rowspan=4, colspan=3) 60 ax4 = plt.subplot2grid((8,6),(4,3), rowspan=4, colspan=3) 61 62 #输出图像 63 ax1.imshow(iar) 64 ax2.imshow(iar2) 65 ax3.imshow(iar3) 66 ax4.imshow(iar4) 67 plt.show 68 输出结果: 你会注意到所有的图像都被转化成黑白图像。阈值设定是图像识别的首要步骤之一。 在阀值函数里,我们通过运行二重循环来读取每个像素行并将该像素行中所有的RGB值取平均值,然后将其添加到balanceAr数组中。这一循环会涉及所有的像素行,计算每一行的像素平均值,然后将其添加到balanceAr数组中。接下来我们将对balanceAr数组中所有的值取平均,并将该平均值存入balance变量中。 我们再回到每个像素行,取平均值并将均值与阈值相比较。如果该均值大于阈值,我们将像素转换为白色,反之转换为黑色。 现在我们已经解决了阈值的问题,并且将所有的图像(彩色或黑白)统一转换成了黑白图像。接下来是比较有趣的部分。我们首先要训练数据,然后教会它如何识别和预测图像。 我们将通过存储本地数据(一些图像)来训练和测试它们,以帮助我们识别图像。 现在, 我的文件夹里已经有了一些图像(数字)文件。我将要做的是用我的numpy函数将这些图像都转化成数组,然后存入数据库中。这样可以节约时间,不必每次处理图像时都要先将其转化为数组。 1 #从PIL导入Image 7 #导入time 10 #定义createExamples函数,将文件里所有图像集转换为数组形式 11 #并写入numArEx.txt文件中 12 def createExamples: 13 #numberArrayExamples是存放图像数组的文件, 14 #numbersWeHave是每个种类图像的数量 15 #versionsWeHave是图像种类的数量 16 numberArrayExamples = open('numArEx.txt','a') 17 numbersWeHave = range(0,10) 18 versionsWeHave = range(1,10) 19 20 for eachNum in numbersWeHave: 21 for eachVer in versionsWeHave: 22 23 #将数组写入文件 24 imgFilePath = 'images/numbers/'+str(eachNum)+ '.'+ str(eachVer)+ 25 '.png' 26 ei = Image.open(imgFilePath) 27 eiar = np.array(ei) 28 eiar1 = str(eiar.tolist) 29 30 #对比所有的数字 31 lineToWrite = str(eachNum)+ '::'+ eiar1 + '\\n' 32 numberArrayExamples.write(lineToWrite) 33 34 #定义阈值函数,参数为图像数组imageArray,返回新的图像数组 35 def threshold(imageArray): 36 balanceAr = 37 newAr = imageArray 38 for eachRow in imageArray: 39 for eachPix in eachRow: 40 avgNum = reduce(lambda x, y: x + y, eachPix[:3]) / len(eachPix[:3]) 41 balanceAr.append(avgNum) 42 balance = reduce(lambda x, y: x + y, balanceAr) / len(balanceAr) 43 for eachRow in newAr: 44 for eachPix in eachRow: 45 if reduce(lambda x, y: x + y, eachPix[:3]) / len(eachPix[:3]) 46 > balance: 47 eachPix[0] = 255 48 eachPix[1] = 255 49 eachPix[2] = 255 50 eachPix[3] = 255 51 else: 52 eachPix[0] = 0 53 eachPix[1] = 0 54 eachPix[2] = 0 55 eachPix[3] = 255 56 return newAr 57 58 #从文件载入图像i,i2,i3,i4,并转换成数组 59 i = Image.open('images/numbers/0.1.png') 60 iar = np.array(i) 61 i2 = Image.open('images/numbers/y0.4.png') 62 iar2 = np.array(i2) 63 i3 = Image.open('images/numbers/y0.5.png') 64 iar3 = np.array(i3) 65 i4 = Image.open('images/sentdex.png') 66 iar4 = np.array(i4) 67 68 #调用阀值函数 69 threshold(iar3) 70 threshold(iar4) 71 threshold(iar2) 72 73 #用matplotlib作图 74 fig = plt.figure 75 ax1 = plt.subplot2grid((8,6),(0,0), rowspan=4, colspan=3) 76 ax2 = plt.subplot2grid((8,6),(4,0), rowspan=4, colspan=3) 77 ax3 = plt.subplot2grid((8,6),(0,3), rowspan=4, colspan=3) 78 ax4 = plt.subplot2grid((8,6),(4,3), rowspan=4, colspan=3) 79 80 #输出图像 81 ax1.imshow(iar) 82 ax2.imshow(iar2) 83 ax3.imshow(iar3) 84 ax4.imshow(iar4) 85 plt.show 我只是在代码中加入了createExamples函数 。文本文件中基本包含了所有不同的数字以及它们的数组形式。现在我们只需要一个步骤:对比。当我们拿到一个数字并需要识别它时,我们只需尝试将该数字的图像数组和数据库中已有的数组进行对比。如果对比结果是一致的,则输出这个数字。实际操作比听起来更加容易。让我们来试一试。 让我们写一个函数用来对比指定图像和数据库中的图像数组。 13 numberArrayExamples = open('numArEx.txt','a') 14 numbersWeHave = range(0,10) 15 versionsWeHave = range(1,10) 16 17 for eachNum in numbersWeHave: 18 for eachVer in versionsWeHave: 19 #print str(eachNum)+ '.'+ str(eachVer) 20 imgFilePath = 'images/numbers/'+str(eachNum)+ '.'+ str(eachVer)+ '.png' 21 ei = Image.open(imgFilePath) 22 eiar = np.array(ei) 23 eiar1 = str(eiar.tolist) 24 25 # 现在我们来对比所有的数字 26 27 lineToWrite = str(eachNum)+ '::'+ eiar1 + '\\n' 28 numberArrayExamples.write(lineToWrite) 29 def threshold(imageArray): 30 balanceAr = 31 newAr = imageArray 32 for eachRow in imageArray: 33 for eachPix in eachRow: 34 avgNum = reduce(lambda x, y: x + y, eachPix[:3]) / len(eachPix[:3]) 35 balanceAr.append(avgNum) 36 balance = reduce(lambda x, y: x + y, balanceAr) / len(balanceAr) 37 for eachRow in newAr: 38 for eachPix in eachRow: 39 if reduce(lambda x, y: x + y, eachPix[:3]) / len(eachPix[:3]) > balance: 40 eachPix[0] = 255 41 eachPix[1] = 255 42 eachPix[2] = 255 43 eachPix[3] = 255 44 else: 45 eachPix[0] = 0 46 eachPix[1] = 0 47 eachPix[2] = 0 48 eachPix[3] = 255 49 return newAr 50 51 #定义whatNumIsThis函数,参数为文件路径filePath,根据文件路径提取图像,将其转为数组 52 def whatNumIsThis(filePath): 53 matchedAr = 54 loadExamps = open('numArEx.txt','r').read 55 56 #分割函数,将所有图像的像素矩阵以\\n分割 57 loadExamps = loadExamps.split('\\n') 58 59 #载入图像文件列表 60 i = Image.open(filePath) 61 iar = np.array(i) 62 iarl = iar.tolist 63 inQuestion = str(iarl) 64 65 #将图像数组跟数据库中已有的图像数组进行比对 66 for eachExample in loadExamps: 67 try: 68 splitEx = eachExample.split('::') 69 currentNum = splitEx[0] 70 currentAr = splitEx[1] 71 72 eachPixEx = currentAr.split('],') 73 eachPixInQ = inQuestion.split('],') 74 75 x = 0 76 77 while x
    发表于昨天 11:56
    最后回复 芝鱿喧 昨天 11:56
    1176 0
  • python图像识别之图片相似度计算
    作者 | a1131825850疯子 来源 | Python爬虫scrapy 1.背景 要识别两张图片是否相似,首先我们可能会区分这两张图是人物照,还是风景照等......对应的风景照是蓝天还是大海......做一系列的分类。 从机器学习的的角度来说,首先要提取图片的特征,将这些特征进行分类处理,训练并建立模型,然后在进行识别。 但是让计算机去区分这些图片分别是哪一类是很不容易的,不过计算机可以知道图像的像素值的,因此,在图像识别过程中,通过颜色特征来识别是相似图片是我们常用的(当然还有其特征还有纹理特征、形状特征和空间关系特征等,这些有分为直方图,颜色集,颜色局,聚合向量,相关图等来计算颜色特征), 为了得到两张相似的图片,在这里通过以下几种简单的计算方式来计算图片的相似度: 直方图计算图片的相似度 通过哈希值,汉明距离计算 通过图片的余弦距离计算 通过图片结构度量计算 一、直方图计算图片的相似度 上三张图片,分别是img1.png, img2.jpg,img.png: 可以看出上面这三张图是挺相似的,在颜色上是差不多的,最相似的是哪两张大家可以猜猜看,看和我们计算的是否一样。 在python中利用opencv中的calcHist()方法获取其直方图数据,返回的结果是一个列表: # 计算图img1的直方图H1 = cv2.calcHist(, [1], None, [256], [0, 256])H1 = cv2.normalize(H1, H1, 0, 1, cv2.NORM_MINMAX, -1) # 对图片进行归一化处理 先计算img1的直方图,在对其归一化,最后在分别对img2,img3计算,做归一化,然后在利用python自带的compareHist()进行相似度的比较: 利用compareHist()进行比较相似度similarity1 = cv2.compareHist(H1, H2, 0) 最后得到三张图片的直方图如下: 图像的x轴是指的图片的0~255之间的像素变化,y轴指的是在这0~255像素所占的比列。 我们可以明显的看出img2与img3的直方图的变化趋势是相符的有重合态的,运行结果如下: 通过运行结果知道img2和img3是值是最为相似的(代码calcImage.py) 上面的是直接调用opencv中的方法来实现的,下面还有自己写的方法: 首先是将图片转化为RGB格式,在这里是用的pillow中的Image来对图片做处理的: # 将图片转化为RGBdef make_regalur_image(img, size=(64, 64)): gray_image = img.resize(size).convert('RGB') return gray_image 在计算两图片的直方图: # 计算直方图def hist_similar(lh, rh): assert len(lh) == len(rh) hist = sum(1 - (0 if l == r else float(abs(l - r)) / max(l, r)) for l, r in zip(lh, rh)) / len(lh) return hist 在计算其相似度: # 计算相似度def calc_similar(li, ri): calc_sim = hist_similar(li.histogram(), ri.histogram())returncalc_sim 得到最终的运行结果: 两种方法的的结果还是有点差距的,可以看到img1和img3的结果相似度高些。 不过两者的相似度计算方法如下: gi和si分别指的是两条曲线的第i个点。 总结: 利用直方图计算图片的相似度时,是按照颜色的全局分布情况来看待的,无法对局部的色彩进行分析,同一张图片如果转化成为灰度图时,在计算其直方图时差距就更大了。 为了解决这个问题,可以将图片进行等分,然后在计算图片的相似度。不过在这里我就不叙述了,大家自行探讨!!! 二、哈希算法计算图片的相似度 在计算之前我们先了解一下图像指纹和汉明距离: 图像指纹: 图像指纹和人的指纹一样,是身份的象征,而图像指纹简单点来讲,就是将图像按照一定的哈希算法,经过运算后得出的一组二进制数字。 汉明距离: 假如一组二进制数据为101,另外一组为111,那么显然把第一组的第二位数据0改成1就可以变成第二组数据111,所以两组数据的汉明距离就为1。简单点说,汉明距离就是一组二进制数据变成另一组数据所需的步骤数,显然,这个数值可以衡量两张图片的差异,汉明距离越小,则代表相似度越高。汉明距离为0,即代表两张图片完全一样。 感知哈希算法是一类算法的总称,包括aHash、pHash、dHash。顾名思义,感知哈希不是以严格的方式计算Hash值,而是以更加相对的方式计算哈希值,因为“相似”与否,就是一种相对的判定。 几种hash值的比较: aHash:平均值哈希。速度比较快,但是常常不太精确。 pHash:感知哈希。精确度比较高,但是速度方面较差一些。 dHash:差异值哈希。精确度较高,且速度也非常快 1. 平均哈希算法(aHash): 该算法是基于比较灰度图每个像素与平均值来实现。 aHash的hanming距离步骤: 先将图片压缩成8*8的小图 将图片转化为灰度图 计算图片的Hash值,这里的hash值是64位,或者是32位01字符串 将上面的hash值转换为16位的 通过hash值来计算汉明距离 # 均值哈希算法def ahash(image): # 将图片缩放为8*8的 image = cv2.resize(image, (8, 8), interpolation=cv2.INTER_CUBIC) # 将图片转化为灰度图 gray = cv2.cvtColor(image, cv2.COLOR_RGB2GRAY) # s为像素和初始灰度值,hash_str为哈希值初始值 s = 0 # 遍历像素累加和 for i in range(8): for j in range(8): s = s + gray # 计算像素平均值 avg = s / 64 # 灰度大于平均值为1相反为0,得到图片的平均哈希值,此时得到的hash值为64位的01字符串 ahash_str = '' for i in range(8): for j in range(8): if gray > avg: ahash_str = ahash_str + '1' else: ahash_str = ahash_str + '0' result = '' for i in range(0, 64, 4): result += ''.join('%x' % int(ahash_str, 2)) # print("ahash值:",result) return result 2.感知哈希算法(pHash): 均值哈希虽然简单,但是受均值影响大。如果对图像进行伽马校正或者进行直方图均值化都会影响均值,从而影响哈希值的计算。所以就有人提出更健壮的方法,通过离散余弦(DCT)进行低频提取。 离散余弦变换(DCT)是种图像压缩算法,它将图像从像素域变换到频率域。然后一般图像都存在很多冗余和相关性的,所以转换到频率域之后,只有很少的一部分频率分量的系数才不为0,大部分系数都为0(或者说接近于0)。 pHash的计算步骤: 缩小图片:32 * 32是一个较好的大小,这样方便DCT计算转化为灰度图 计算DCT:利用Opencv中提供的dct()方法,注意输入的图像必须是32位浮点型,所以先利用numpy中的float32进行转换 缩小DCT:DCT计算后的矩阵是32 * 32,保留左上角的8 * 8,这些代表的图片的最低频率 计算平均值:计算缩小DCT后的所有像素点的平均值。 进一步减小DCT:大于平均值记录为1,反之记录为0. 得到信息指纹:组合64个信息位,顺序随意保持一致性。 最后比对两张图片的指纹,获得汉明距离即可。 # phashdef phash(path): # 加载并调整图片为32*32的灰度图片 img = cv2.imread(path) img1 = cv2.resize(img, (32, 32),cv2.COLOR_RGB2GRAY) # 创建二维列表 h, w = img.shape[:2] vis0 = np.zeros((h, w), np.float32) vis0[:h, :w] = img1 # DCT二维变换 # 离散余弦变换,得到dct系数矩阵 img_dct = cv2.dct(cv2.dct(vis0)) img_dct.resize(8,8) # 把list变成一维list img_list = np.array().flatten(img_dct.tolist()) # 计算均值 img_mean = cv2.mean(img_list) avg_list = ['0' if i gray: dhash_str = dhash_str + '1' else: dhash_str = dhash_str + '0' result = '' for i in range(0, 64, 4): result += ''.join('%x' % int(dhash_str, 2)) # print("dhash值",result)returnresult 4. 计算哈希值差异 #计算两个哈希值之间的差异def campHash(hash1, hash2): n = 0 # hash长度不同返回-1,此时不能比较 if len(hash1) != len(hash2): return -1 # 如果hash长度相同遍历长度 for i in range(len(hash1)): if hash1 != hash2: n = n + 1 return n 最终的运行结果: aHash: dhash: p_hsah: 通过上面运行的结果可以看出来,img1和img2的相似度高一些。 三、余弦相似度(cosin) 把图片表示成一个向量,通过计算向量之间的余弦距离来表征两张图片的相似度。 1. 对图片进行归一化处理 # 对图片进行统一化处理def get_thum(image, size=(64, 64), greyscale=False): # 利用image对图像大小重新设置, Image.ANTIALIAS为高质量的 image = image.resize(size, Image.ANTIALIAS) if greyscale: # 将图片转换为L模式,其为灰度图,其每个像素用8个bit表示 image = image.convert('L') return image 2. 计算余弦距离 # 计算图片的余弦距离def image_similarity_vectors_via_numpy(image1, image2): image1 = get_thum(image1) image2 = get_thum(image2) images = vectors = [] norms = [] for image in images: vector = [] for pixel_tuple in image.getdata(): vector.append(average(pixel_tuple)) vectors.append(vector) # linalg=linear(线性)+algebra(代数),norm则表示范数 # 求图片的范数?? norms.append(linalg.norm(vector, 2)) a, b = vectors a_norm, b_norm = norms # dot返回的是点积,对二维数组(矩阵)进行计算 res = dot(a / a_norm, b / b_norm)returnres 最终运行结果: 结果显示img1和img2的相似度高一些,和计算hash值的汉明距离得到的结果是相一致的。 四、图片SSIM(结构相似度量) SSIM是一种全参考的图像质量评价指标,分别从亮度、对比度、结构三个方面度量图像相似性。SSIM取值范围[0, 1],值越大,表示图像失真越小。在实际应用中,可以利用滑动窗将图像分块,令分块总数为N,考虑到窗口形状对分块的影响,采用高斯加权计算每一窗口的均值、方差以及协方差,然后计算对应块的结构相似度SSIM,最后将平均值作为两图像的结构相似性度量,即平均结构相似性SSIM。 ssim1 = compare_ssim(img1, img2, multichannel=True) 这个是scikit-image库自带的一种计算方法 运行结果: 可以看到img1和img2的相似度高。 好了,以上就是到目前为止我接触到的图片相似度的计算方法,肯定还有许多我没有接触到的计算方法,大家有需要的可以参考一下,有其他方法的大家可以留言一起探讨!!! 原文章作者:CDA数据分析师,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于前天 04:51
    最后回复 宿秀美 前天 05:01
    3519 4
  • 谷歌开源「AI手势识别」算法:凭一帧图像识别21个3D点位
    实时手形与动作跟踪方案,一直是手语识别与手势控制系统中最为核心的组成部分,同时在部分增加现实体验中也扮演着重要角色。然而,现有技术往往因为遮挡或者缺乏对比模式等问题的困扰,无法提供理想的可靠性。 面对这一现实挑战,谷歌公司的科学家们研究出一种新的计算机视觉方法,用于实现手部感知。作为幕后推手,机器学习技术为提供了强大助力。根据介绍,该方案能够在实机实验中仅凭一帧图像识别出一只手(或者多只手)上的21个3D点位。与目前市面的手势识别技术相比,谷歌的全新技术不需要依赖台式机来计算,只要在手机上就能进行实时追踪,并且还能同时追踪多只手,可识别遮挡。 早在今年6月,谷歌就在2019计算机视觉与模式识别大会上公布了此项技术的预览版本。2月之后,谷歌于美国时间8月20日正式宣布将该技术集成于引入MediaPipe当中。MediaPipe是一套开源跨平台框架,用于构建多模应用机器学习流水线,可以处理不同模态(例如视频与音频)中的感知数据。该项目的源代码以及端到端使用场景目前都已经在GitHub上全面公开。 研究工程师Valentin Bazarevsky和Fan Zhang在博文他们的当中写道:“感知手部形状与运动姿态的能力,有望成为改善各类技术表现及平台用户体验的重要助力。我们希望将这种手部感知功能交付至更为广泛的研究与开发社区处,利用大家的力量共同促进创新用例的出现,刺激新的应用方式并开拓出前所未有的研究途径。” 据了解,谷歌的这一技术包含三套串联工作的AI模型:一个手掌探测模型(BlazePalm)用于分析框体并返回手部动作边框;一个手部标记模型(Landmark),用于查看由手掌探测器定义的裁剪后图像区域,并返回3D位点;一个手势识别模型,用于将之前计算得出的位点归类为一组手势。 BlazePalm:手部识别绝不像听起来那么简单。GlazePalm必须能够解决手部遮挡这一现实难题。为此,谷歌团队训练出一款手掌探测器BlazePalm——注意,是手掌而不是手部。他们认为,对拳头这类物体进行边界框描绘,在难度上要比跟踪手指低得多。具体地,BlazePalm可以识别多种不同手掌大小,具备较大的缩放范围,还能识别手部遮挡,能通过识别手臂、躯干或个人特征等信息准确定位手部。除此之外,这种方式还有另一大优势,就是能够很好地兼容握手等特殊场景,利用忽略其它宽高比条件的方形边框模拟手掌,从而将所需的3D点数缩减至以往的三分之一到五分之一。据统计,经过训练之后,BlazePalm识别手掌的准确率可以达到95.7%。 Landmark:在手掌检测之后,手部标记模型开始接管,负责在检测到的手部区域之内建立21个由手到肘的3D定位坐标。在训练当中,模型要求研究人员手动注释多达3万份真实场景下的图像,并立足多种背景对相应坐标进行渲染和映射,最终创建出高质量的合成手部模型。据统计,在经过训练后,算法的平均回归误差可降低到13.4%。 手势识别模型:流水线上的最后一步是手势识别,该模型利用关节旋转角度来确定每根手指的状态(如弯曲或伸直),并将手指状态集合与预定义的手势映射起来,进而预测基础的静态手势。Bazarevsky和Zhang介绍称,该模型能够识别来自多种文化(例如美国、欧洲与中国)的算数手势,以及握拳、“OK”、“摇滚”、“蜘蛛侠”等常见手势。 除此之外,这些模型也可以执行对应的单独任务,例如利用显卡进行图像裁剪与渲染,从而节约计算资源;并且,手掌探测模型只有在必要时才运行——因为在大多数时段内,后续视频帧内的手部位置只凭计算出的手部关键点即可推理得出,不再需要手掌探测器的参与。也就是说,只有当推理置信度低于某个阈值时,手部检测模型才会重新介入。 展望未来,Bazarevsky、Zhang及其团队还计划建立更强大且、更稳定的跟踪扩展技术,同时增加能够可靠检测出的手势数量,并考虑支持即时动态手势识别。他们总结道:“我们相信,这项技术的发布将为研究及开发者社区带来助力,帮助他们发现更多新的创意与应用方向。” 原文章作者:科技行者,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于前天 04:00
    最后回复 茸舔 前天 04:09
    1050 4
  • 如何运用k-means聚类进行图像识别、色彩压缩
    点击上方关注,All in AI中国 300种颜色到24种颜色 对任何人来说,图像应用过滤器都不是一个新概念。我们拍了一张照片,做了一些修改,现在看起来更酷了。但是人工智能从何而来呢?让我们尝试使用Python中的k均值聚类进行无监督机器学习。 我以前写过关于k均值聚类的文章,所以我假设你这次对这个算法很熟悉。 如果你不是,可以看下我写的深入介绍K-Means Clustering: Diving into Unsupervised Learning | Data Stuff。 我还尝试用自动编码器进行图像压缩,取得了不同程度的成功。 然而,这一次,我的目标不是重建最好的的图像,而是看看用尽可能少的颜色重新创建图片的效果。 那么我们应该怎么做呢? 如何用k均值聚类进行图像过滤 首先,最好记住图像只是像素向量。每个像素是由0到255之间的三个整数值(无符号字节)组成的元组,它们表示像素的颜色的RGB值。 我们想要用K个均值聚类来找到K个最能代表图像的颜色。这仅仅意味着我们可以将每个像素看作一个单一的数据点(在三维空间中),并将它们聚在一起。 首先,我们要用Python把图像转换成像素向量。我们是这样做的。 例如,也许我们的照片只有三种颜色:两种红色和一种绿色。如果我们把它放到两个集群中,所有红色的像素都会变成不同的红色(聚集在一起),其他的像素会变成绿色的。 但是这些解释已经足够了,让我们看看这个程序是如何运行的! 像往常一样,你可以自由地使用任何你想要的pic运行它,这里是带有代码的GitHub存储库GitHub - StrikingLoo/K-means-image-compression: Applying K-means clustering to image compression。 或者,也许我们的照片只有三种颜色:两种红色,一种绿色。 如果我们将它放到两个集群中,所有红色像素将变成一些不同的红色阴影(聚集在一起),而其他像素将变成一些绿色的像素。 但这些解释已经足够了,让我们看看这个程序是如何运行的。像往常一样,您可以自由地使用您想要的任何图片运行它,这里是带有代码的GitHub存储库。GitHub - StrikingLoo/K-means-image-compression: Applying K-means clustering to image compression 结果 我们将把过滤器应用到小猫的照片上,照片从"猫狗大战"kaggle数据集中找到。 我们从一只猫的照片,然后对k应用不同值的滤镜。这里是原始的图片: 首先,让我们检查一下这幅图最初有多少种颜色。 只需要一行numpy,我们就可以计算一个像素在这幅图上所取的惟一值。尽管它总共有166167个像素,但在这张图片上有243种不同的颜色。 现在,让我们看一下将它聚类为2、5和10种不同颜色的结果。 只有两种颜色,它所做的只是标记最暗和最亮的区域。 然而,如果你是一个艺术家,用黑白(例如用墨水)绘画一些东西,并想看看参考轮廓是什么样的,那么这可能是有用的。 只有5种不同的颜色,这只猫已经可以辨认了 这10种颜色的图片可能看起来有点迷幻,但它很清楚地代表了原作的内容 你注意到了一个趋势吗? 我们添加的每种颜色都有递减的回报。 2种颜色和5种颜色之间的差异远大于5和10之间的差异。但是,对于10种颜色,平坦区域更小,我们有更多的粒度。 继续看15和24种颜色! 虽然很明显这是一张经过过滤的图片,有24种颜色(原始数量的10%),但我们已经很好地表现了猫的形象,并达到一定程度的细节。 换一幅不同的图片:一个是原始图片(256种不同的颜色),一个是压缩图片(还是24种颜色)。 有趣的是,"压缩"的图像为18KB,而未压缩的图像是16KB。我真的不知道为什么会这样,因为压缩机是相当复杂的野兽,但很乐意在评论中看到你的想法。 结论 我们只能用原来颜色的10%来制作新的图像,这看起来和它们非常相似。由于k均值聚类,我们还得到了一些看起来很酷的过滤器。你能想到其他有趣的集群应用程序吗?你是否认为其他聚类技术可以产生更有趣的结果? 原文章作者:AI中国,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于3 天前
    最后回复 郭斐斐 3 天前
    3428 0
  • 深度学习 论文解读——图像识别中的深度估计
    深度估计是计算机视觉中一个相对冷门,但有很重要的应用价值的分支。它在机器人自动导航、自动驾驶、VR、3D重构等任务中发挥了重要的作用。通常的视觉任务,诸如目标检测、分割、动作识别等都采用CNN监督学习的方法,且都达到了很好的效果。但监督学习有一个主要的缺点是它需要预先收集大量的标注好的训练数据。而对于深度估计任务而言,想要收集大量标注好深度的图像是非常困难的,但大量未标注的图像数据却很容易获取。因此,无监督学习方法在深度估计领域有重要的作用。 模型 本文的模型结构如图所示。首先是学生模型Gs,输入右图,输出深度图。利用输出的深度图可以得到初步预测的左图。使用估计的左图作为训练数据投入Gb中,输出深度图,利用此时输出的深度图,我们可以得到重构后的右图,这便形成了一个循环结构。 这种循环结构有三个主要的优点。一、在训练时,Gb与Gs网络可以共享权重,这意味着预测出的视差图是从原图与第一次的合成图中获取信息,某种意义上来说,这起到了数据增广的作用。二、为了正确合成出原来的右图,我们首先需要获得一个较为正确的左图估计,这对之前生成的dl深度图起到了一个较强的全局约束,它不同于传统的局部的L1,L2范数,因此能起到很好的效果。三、通过对比合成后的右图与原来的右图,我们可以计算出周期不一致程度(cycle inconsistency), 一致的像素位置说明在这一点的深度估计值正确,反之则不正确。然而,由于原左图和右图的空间位置有一个较小的偏移,所以在空间物体的边缘部分必然会出现不一致的情况(例如左眼看不到的边缘部分右眼可以看到)。因此,利用好这一点,会极大的帮助我们建立一个精细化的深度估计图。 通过将得到的不一致信息投入不一致感知网络Gi中(Inconsistency-aware Network)进行训练,输出一个更加精细化的网络(对于先前深度网络中没有被刻画出的边缘信息进行细节化的预测)。然后将Gi与Gb作为教师模型,使用知识蒸馏将模型中的信息传递给学生模型,得到最终的输出结果。 模型效果: 可见教师模型(进行了细节化调优)相对于以前的研究而言有了比较大的提升,而蒸馏后的学生模型也有了提升。 总的来说,这个模型的关键是通过两次构建网络构成了一个循环,然后利用不一致的信息(本质上即是残差)进行学习,最后得到了优化很多的结果。这种残差学习的想法与ResNet,GBDT等经典模型有一定的相似点。可见在很多机器学习任务中,如果能有效的利用好残差信息,模型的效果可能会得到很大的提升。 References: [1]. Pilzer, A., et al., Refine and Distill: Exploiting Cycle-Inconsistency and Knowledge Distillation for Unsupervised Monocular Depth Estimation. 2019. 原文章作者:leo的学习之旅,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于3 天前
    最后回复 峰帷 3 天前
    2579 2
  • 手机还有这么强大的功能,无需扫描仪,几秒就能提取图片中的文字
    眼睁睁看着下班时间进入倒计时,老板却向我走过来了,他就那么随口一说,我们公司机器出问题了,让我把图片上的文字全部提取出来,我准时下班的梦就碎了... 怎么才能又准又快的提取图片中的文字呢?我经过教训后,找出了好几招,无需扫描仪,就可以快速提取出图片中的文字,再也不怕老板找我了~ 一、手机端文字提取 1、QQ提取文字 手机端比较常用的一种就是QQ了,具体怎么操作呢?我们将图片发送给某个好友或小号,点开图片长按就会出现很多选项,选择【提取图中文字】。 等待片刻,就可以看到提取成功的文字,还可以切换不同语种,支持中英翻译,通过全选文字进行复制,或者将文本转发出去。 2、图片转文字 还有一种方法就是使用专业的文字识别软件,小编经常使用到的【掌上识别王】,它可以进行拍照识别、图片识别、翻译等。 点击底部拍照图标,然后对着要识别的文档拍照或导入想要识别的图片就可以了,如果识别出来的内容是其他语言,还可以选择【翻译】,操作起来是不是很方便? 二、电脑端文字提取 1、OneNote 电脑端也有两种方法,我们在电脑中找到【OneNote】应用,打开进入,然后新建一个笔记本,选择【插入】—【图片】,添加图片后鼠标右键选择【复制图片中的文本】。 选择任意空白处,右键选择【只保留文本】,就可以得到图片中的文字了,大家就可以自由复制文本到其他地方了。 2、网页在线操作 我们还可以通过在线网站【convertio】来帮助我们提取图片中的文字内容。 打开这个网站后点击【选择文件】,然后将需要识别文字的图片上传到网站,它就会帮我们进行转换操作了。 好啦,以上就是手机和电脑中多种图片文字识别的方法了,大家都了解了吧?有需要的小伙伴快去试试吧~ 原文章作者:职场进化指南,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于3 天前
    最后回复 尿鸢 3 天前
    3140 0
  • 图像识别的分类问题如何解决?它的小白教程来了
    点击上方关注,All in AI中国 作者——David Louren?o Mestre 导言 大多数与图像识别相关的分类问题都存在着众所周知的/既定的问题。例如,通常情况下,没有足够的数据来对分类系统进行适当的训练,这些数据涵盖的类可能会有所不足,而且最常见的情况是,使用未经仔细检查的数据将意味着我们对数据的标签缺乏合理的分类。 数据是决定你的努力是失败还是成功的关键。这些系统不仅仅需要比人类更多的数据来学习和区分不同的类,它们还需要成千上万倍的数据才能相对较好的完成这项工作。 深度学习依靠大量高质量的数据来预测未来的趋势和行为模式。并且数据集需要代表我们打算预测的类,否则,系统会"曲解"不同类的分布,让你的模型产生偏差。 这些问题通常有一个共同的原因:即查找、提取和存储大量数据的能力不够强大,以及在第二层上对数据的清除、管理和处理能力不足。 虽然我们可以提高计算能力和数据存储能力,但这种情况只有当这是一个复杂的、大的卷积神经网络针对一个大的数据集运行时才会考虑,只有一台机器是不可能的。因为它可能没有足够的空间/内存,而且很可能没有足够的计算能力来运行分类系统。它还需要通过云资源"访问"并行或分布式计算,了解如何运行、组织和设置复杂的集群。 然而,拥有足够的数据和处理能力并不足以防止这些问题的发生。 在这篇文章中,我们将探索和讨论一些不同的技术,这些技术可以解决在处理小数据集时出现的问题,如缓解分类的不平衡,以及如何防止过度拟合。 迁移学习 "数据可能是新的煤炭",引用自NeilLawrence的话。我们知道深度学习算法需要通过大量的标记数据从零开始训练一个成熟的网络,但是我们常常无法完全理解大量这个词意味着多少数据。简单来说,仅仅是找到满足你训练需求的数据量可能都会给你带来挫折感,但是有一些技术,例如数据增强或迁移学习,将为你的模型节省大量的精力和时间。 迁移学习是一种流行的、非常强大的方法,简而言之,它可以概括为是把已训练好的模型参数迁移到新的模型来帮助新模型训练。这意味着利用现有的模型并改变它以适应你自己的目标。这种方法包括"切断"前训练模型的最后几个层,并使用你的数据集对它们进行再训练。这样做有以下优点: 它在较老的模型上建立了一个新的模型,并对图像分类任务进行了验证。例如,一个建立在CNN体系架构上的模型(比如由Google开发的CNN模型Inception-v3),然后经过ImageNet的预训练; 它减少了训练时间,因为它允许重复使用参数以实现可能需要数周才能达到的性能。 不平衡数据 通常,数据集中的一组标签相对于其他数据集中的标签的比例可能是不平衡的,而这个时候,所占比例较低标的标签组往往是我们感兴趣的一组,因为它相对稀有。例如,假设我们有一个二进制分类问题,X类代表95%的数据,Y类代表其他5%的数据。因此,该模型对X类更"敏感",对Y类不太"敏感"。当分类器的准确率达到95%时,我们只能说对X类的预测基本都是正确的。 显然,这里的准确性不是一个适当的"评分"。在这种情况下,我们更应该考虑的是预测错误的代价、预测精确度和查全率。一个合理的起点是对不同类型错误的二维表示,换句话说,是一个混淆矩阵。在本文中,可以将其描述为说明实际标签与预测标签的方法,如下图所示。 通过存储从模型预测中获取的真阳性、假阳性、真阴性和假阴性的每个标签的个数,我们可以使用查全率和精确性来估计每个标签的性能。精度的定义是: 查全率在比率中定义为: 查全率/精确性会暴露出分类不平衡的问题,但并不能解决它。但是,有一些方法可以缓解分类不平衡的问题: 通过给每个标签分配不同的系数; 通过对原始数据集进行重新采样,或者对少数类进行过采样或对多数类进行过采样。也就是说,由于分类边界的更"严格",数据集太小容易带来误差,让过采样更容易导致过度拟合。 通过应用SMOTE方法(对少数过采样进行合成的技术)来解决频繁对分类数据进行复制的问题。该方法在数据增强的背后应用了相同的思想,并通过在少数类的相邻实例之间插值来创建新的合成样本。 过度拟合 正如我们所知,我们的模型通过反向传播和最小化成本函数来学习/概括数据集中的关键特性。每一个来回的步骤都被称为一个轮次,并且随着每一个轮次的调整进行模型的训练和权值的更改,以最小化错误的代价。为了测试模型的准确性,一个常见的规则是将数据集分为训练集和验证集。 训练集用于调整和创建模型,让模型更加符合训练前的目的。验证集测试基于不可见样本模型的有效性。 尽管对实际情况的错误验证会让曲线图有更大的起伏。 在每一个轮次结束时,我们用验证集测试模型,在某个点上,模型开始记忆训练集中的特征。当我们到达某个阶段时,发现验证集上频繁的发生错误并且精度变差,这说明模型是过度拟合的。 选择网络的大小和复杂程度将是过度拟合的决定性原因。复杂的体系结构可能更容易过度拟合,但是,有一些策略可以防止过度拟合: 增加训练集上的样本数量;如果对网络进行更多实际案例的训练,它将具有更好的普遍性; 当过拟合发生时,停止反向传播是另一种选择,这样可以保证成本函数和验证集的准确性; 采用正则化的方法是另一个流行的选择。 L2正则化 L2正则化是一种通过向较大的个体权重进行分配约束来降低模型复杂度的方法。通过设置惩罚约束,减少模型对训练数据的依赖。 Dropout 对于正则化来说,Dropout也是一种常见的选择,它被用于较高层的隐藏单元上,然后我们为每个轮次建立了不同的架构。基本上,该系统随机选择要在训练中去除的神经元,通过不断地重新调整权重,网络被迫从数据中学习更普遍的模式。 结语 正如我们所看到的,有各种不同的方法和技术来解决图像识别中最常见的分类问题,每种方法和技术都有各自的优点和潜在的缺点。存在的一些问题是数据不平衡,过度拟合,其中最通常的问题是不会有足够的数据可用,但是,正如我们已经解释过的,它们可以通过迁移学习、抽样方法和正则化技术来解决。 原文章作者:AI中国,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于4 天前
    最后回复 陀喻 4 天前
    3540 3
  • Python徒手实现识别手写数字—图像识别算法(K最近邻)写在前面
    写在前面 这一段的内容可以说是最难的一部分之一了,因为是识别图像,所以涉及到的算法会相比之前的来说比较困难,所以我尽量会讲得清楚一点。 而且因为在编写的过程中,把前面的一些逻辑也修改了一些,将其变得更完善了,所以一切以本篇的为准。当然,如果想要直接看代码,代码全部放在我的GitHub中,所以这篇文章主要负责讲解,如需代码请自行前往GitHub。 本次大纲 上一次写到了数据库的建立,我们能够实时的将更新的训练图片存入CSV文件中。所以这次继续往下走,该轮到识别图片的内容了。 首先我们需要从文件夹中提取出需要被识别的图片test.png,并且把它经过与训练图片相同的处理得到1x10000大小的向量。因为两者之间存在微小的差异,我也不是很想再往源代码之中增加逻辑了,所以我就直接把增加待识别图片的函数重新写一个命名为GetTestPicture,内容与GetTrainPicture类似,只不过少了“增加图片名称”这一个部分。 之后我们就可以开始进行正式图片识别内容了。 主要是计算待识别图片与所有训练图片的距离。当两个图片距离越近的时候,说明他们越相似,那么他们很有可能写的就是同一个数。所以利用这个原理,我们可以找出距离待识别图像最近的几个训练图片,并输出他们的数字分别是几。比如说我想输出前三个,前三个分别是3,3,9,那就说明这个待识别图片很有可能是3. 之后还可以对每一个位置加个权重,具体的就放在下一次再讲,本节内容已经够多了。 (第一篇文章之中我说过利用图片洞数检测。我尝试了一下,认为有些不妥,具体原因放在本文末。) MAIN代码 所以直接把主要代码放上来,逻辑相对来说还是比较清晰的 import os import OperatePicture as OP import OperateDatabase as OD import PictureAlgorithm as PA import csv ##Essential vavriable 基础变量 #Standard size 标准大小 N = 100 #Gray threshold 灰度阈值 color = 200/255 n = 10 #读取原CSV文件 reader = list(csv.reader(open('Database.csv', encoding = 'utf-8'))) #清除读取后的第一个空行 del reader[0] #读取num目录下的所有文件名 fileNames = os.listdir(r"./num/") #对比fileNames与reader,得到新增的图片newFileNames newFileNames = OD.NewFiles(fileNames, reader) print('New pictures are: ', newFileNames) #得到newFilesNames对应的矩阵 pic = OP.GetTrainPicture(newFileNames) #将新增图片矩阵存入CSV中 OD.SaveToCSV(pic, newFileNames) #将原数据库矩阵与新数据库矩阵合并 pic = OD.Combination(reader, pic) #得到待识别图片 testFiles = os.listdir(r"./test/") testPic = OP.GetTestPicture(testFiles) #计算每一个待识别图片的可能分类 result = PA.CalculateResult(testPic, pic) for item in result: for i in range(n): print('第'+str(i+1)+'个向量为'+str(item)+',距离为'+str(item)) 123456789101112131415161718192021222324252627282930313233343536373839 相比上一篇文章的内容,本篇文章里只增加了下面的的一段代码,即得到待识别图片名称、得到待识别图片向量、计算分类。 下面我们将着重讲解CalculateResult函数的内容,即识别图片的算法。 算法内容 算法大致讲解 我们在大纲之中已经简单介绍过了,所以我就直接把复制过来,并且再添加一些内容。 假设我们在二维平面上有两个点A=(1,1) A=(1,1)和B=(5,5) B=(5,5),我现在再放一个点C=(2,2) C=(2,2),那么请问,C C点离哪一个更近? 学过初中数学的都会知道肯定是离A A点更近。所以我们换一种说法,我们现在有两个类A和B,A类中包括了点(1,1) (1,1),B类中包括了点(5,5) (5,5),所以对于点(2,2) (2,2),它可能属于哪一类? 因为这个点离A类的点更近一点,所以它可能属于A类。这就是结论。那么对于3维空间,A类是点(1,1,1) (1,1,1)和B类是(5,5,5) (5,5,5),那么对于点(2,2,2) (2,2,2)肯定也是属于A类。 可以看出,我们这里是将两个点的距离来作为判断属于哪一类的标准。那么对于我们将图片拉成的1xn维向量,他实际上投影到n维空间上就是一个点,所以我们将训练向量分成10类,分别代表十个数字,那么被识别数字靠近哪一个类,那说明它有可能属于这一个类。 那么我们这里可以假设对于被识别向量,列出距离他最近的前十个向量分别属于哪一类别,然后根据名次加上一个权重,并计算出一个值。该值代表了可能是属于哪一个类,因此这就是我们得出的最终的一个结果——被识别手写数字图片的值。 以上是第一篇文章中的内容,下面我着重讲一下数学方面的内容。 考虑到某些地方不能够输入数学公式(或不方便输入),我还是把这一段内容贴成图片出来。 之后直接挑出前几个离被识别图片最近的向量数字,基本上这几个数字就是被识别图片的数字了。但这样做未免有些简单,所以下一篇文章我会再深入一下,这张先讲计算距离的内容。 主代码 下面的代码中文件夹test用来存放待识别图片,并通过函数GetTestPicture来得到图片向量,之后和训练图片pic一起放进计算距离的函数CalculateResult中计算每一个待识别向量和其他所有图片向量的距离。 #得到待识别图片 testFiles = os.listdir(r"./test/") testPic = OP.GetTestPicture(testFiles) #计算每一个待识别图片的可能分类 result = PA.CalculateResult(testPic, pic) for item in result: for i in range(n): print('第'+str(i+1)+'个向量为'+str(item)+',距离为'+str(item)) 123456789 函数CalculateResult在文件PictureAlgorithm.py中,这个文件里面包含了两个函数为CalculateDistance函数和CalculateResult函数,代表识别图片所用到的算法。 函数CalculateResult 这个函数的逻辑比较简单,也没什么好说的,主要的联系就是这个计算距离的CalculateDistance函数。 def CalculateResult(test, train): '''计算待识别图片test的可能分类''' #得到每个图片的前n相似图片 testDis = CalculateDistance(test[:,0:N**2], train[:,0:N**2], train[:,N**2], n) #将testDis变成列表 tt = testDis.tolist() #输出每一个待识别图片的所有前n个 for i in tt: for j in i: print(j) 12345678910 函数CalculateDistance 函数中我导入了四个参数:被识别向量test,训练向量train,与训练向量对应的每个向量对应代表的数字num,想要导出的前n个距离最近的向量。 def CalculateDistance(test, train, num, n): '''计算每个图片前n相似图片''' #前n个放距离,后n个放数字 dis = np.zeros(2*n*len(test)).reshape(len(test), 2*n) for i, item in enumerate(test): #计算出每个训练图片与该待识别图片的距离 itemDis = np.sqrt(np.sum((item-train)**2, axis=1)) #对距离进行排序,找出前n个 sortDis = np.sort(itemDis) dis = sortDis[0:n] for j in range(n): #找到前几个在原矩阵中的位置 maxPoint = list(itemDis).index(sortDis) #找到num对应位置的数字,存入dis中 dis = num return dis 12345678910111213141516 首先建立一个行数为test内被识别向量数量,列数为2*n的矩阵,每一行前n个放距离,后n个放数字。之后针对每一个被识别向量进行循环。 首先直接计算每个训练图片与该识别图片的距离,直接可以用一行代码表示 itemDis = np.sqrt(np.sum((item-train)**2, axis=1)) 1 这一行代码就是上文中的算法过程,我个人觉得还是比较复杂的,可以详细的拆开看一下,我这里不细讲了。下面的内容就是开始排序并且找到距离最近的前几个向量。 这里的逻辑是:先排序,找到距离最小的前n个,存入矩阵。找到前n个在原矩阵中的位置,并找到对应位置上num的数字,存入dis的后n个。 这样子就相当于完成了所有内容,返回dis即可。 实际测试 我自己动手写了一些数字,如图所示。所以实际上我们的数据库还是比较小的。 所以我又写了一个数字作为待识别图像,通过程序运行以后,我们的以直接输出前十个最相似的向量: 第1个向量为2.0,距离为33.62347223932534 第2个向量为2.0,距离为35.64182105224185 第3个向量为2.0,距离为38.69663119274146 第4个向量为2.0,距离为43.52904133387693 第5个向量为2.0,距离为43.69029199677604 第6个向量为1.0,距离为43.730883339256714 第7个向量为6.0,距离为44.94800943845918 第8个向量为2.0,距离为45.033283944455924 第9个向量为4.0,距离为45.43926712996951 第10个向量为7.0,距离为45.64893989116544 12345678910 之后我又依次从1-9试了一遍,我自己手写的数字全部识别正确,可以看出准确率还是挺高的。所以做到这一步相当于已经完成度很高了。 原文章作者:程序员小新人学习,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于6 天前
    最后回复 叽善廷 6 天前
    1091 5
  • 如何构建识别图像中字符的自动程序?一文解读OCR与HTR
    选自Medium 作者:Ajinkya Khalwadekar机器之心编译 参与:Panda、蛋酱 在机器学习和计算机视觉领域,光学字符识别(OCR)和手写文本识别(HTR)长期以来都是人们研究的重要主题。本文将帮助计算机视觉爱好者大致了解如何对文档图像中的文本进行识别。 光学字符识别和手写文本识别是人工智能领域里非常经典的问题。OCR 很简单,就是将文档照片或场景照片转换为机器编码的文本;而 HTR 就是对手写文本进行同样的操作。作者在文章中将这个问题分解成了一组更小型的问题,并制作了如下的流程图。 图 1.1:应用流程图 按文档边框裁剪图像 在图像处理中,通常需要对图像进行预先编辑,以便获得更好的表征。裁剪是图像编辑中最常用的操作之一,这可以移除图像中不需要的部分,也可以向图像添加所需的特征。 你可以使用 OpenCV 来轻松地找到图像中文档的边缘,查找图像中文档边缘的最佳方法是使用阈值图像。OpenCV 提供了不同的阈值样式,这是由其函数的第 4 个参数决定的。在这个函数中,第一个参数是源图像,这应该是一张灰度图像;第二个参数是用于分类像素值的阈值;第三个参数是 maxVal,这是当像素值超过(有时是低于)阈值时所要给出的值。 下面的代码将能帮助你找到阈值图像,然后确定文档边缘的轮廓,你可以将这些轮廓点与图像边缘进行比较,然后确定文档的边缘。 #thresholdimageret,thresh=cv2.threshold(imgray,150,255,0)cv2.imwrite('thresh.jpg',thresh)#edgecontourscontours,hierarchy=cv2.findContours(thresh,1,2) 检测和裁剪/分割文档中的所有词 在有约束的受控环境中进行词检测通常可以使用启发式方法实现,比如利用梯度信息或者这样的事实:文本通常会被分组成段落以及排列成直线的字符。但是,使用启发式方法是存在缺陷的,图像中很多不需要的区域也会被检测为词,所以我们可以使用 OpenCV 的 EAST(Efficient and Accurate Scene Text)检测器。 可以参考 Adrian Rosebrock 写的 EAST 检测器相关文章:https://www.pyimagesearch.com/2018/08/20/opencv-text-detection-east-text-detector/ 然后再根据 Tom Hoag 分享的方法对其进行改进:https://medium.com/@tomhoag/opencv-text-detection-548950e3494c 这种方法能以很高的准确度检测出手写文本以及机器打印的文本。检测出图像中的词之后,再将它们裁剪出来并将它们全部保存下来。 预处理词图像 应该怎么样对图像进行预处理?这完全取决于你接下来要做什么。如果想要分类手写的和机器打印的词,需要所有图像都处于灰度模式。为了将图像转换为灰度图像,还需要使用 OpenCV: imgray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) 这是手写词吗? 这是一个分类问题:确定一张特定图像中的词是「手写词」还是「机打词」。作者浏览了多篇文章和研究论文,发现支持向量机(SVM)是解决这一问题的最佳方案,然后使用了来自 sklearn 软件包的 SVM 分类器来完成这一任务。 对于用于分类的数据集,作者提到了一个很好的手写词图像有标注数据集 IAM:http://www.fki.inf.unibe.ch/databases/iam-handwriting-database 对于机器打印的词图像,作者收集了大约 2000 张词图像。下面是用于预测的特征: 1. 平均像素强度 2. 像素强度的标准差 3. Otsu 阈值 4. 像素强度直方图中局部最大值的数量 5. 属于像素强度上面的四分之一的像素的百分比 6. 属于像素强度下面的四分之一的像素的百分比 按照上面来看,所有特征都与图像的像素强度有关联。下一个问题是:如何找到像素强度? 灰度图像的像素值就是像素的强度,同样也可以使用 OpenCV 和数学运算来完成这一任务。 使用 TensorFlow 的 HTR 这是本文所有问题中最具有挑战性的问题。在尝试了不同的解决方案之后(包括在手写字符数据集上重新训练 Tesseract),结果显示 Harald Scheidl 这篇文章的方法最佳:https://towardsdatascience.com/build-a-handwritten-text-recognition-system-using-tensorflow-2326a3487cd5 作者使用了类似的方法,不过做了一些小修改,在这里使用了神经网络,由 5 个卷积神经网络(CNN)层、2 个循环神经网络(RNN)层和 1 个连接主义时间分类(CTC)层构成。用于训练这个神经网络的数据集是 IAM 数据集,但你也可以使用任何有标注的词图像数据集。 图 1.2:来自 Herald Scheidl 文章的示意图 CNN 层的输入是大小为 128×32 的灰度值图像。CNN 层的输出是一个序列,其包含 32 项,其中每一项都有 256 个特征。这些特征再进一步由 RNN 层处理,但是,某些特征已经表现出了与输入图像的特定高层面性质的高度相关性。 图 1.3:来自 Herald Scheidl 的文章的示意图 图 1.3 展示了处理一张包含文本「little」的图像时,可视化的 RNN 输出矩阵。最上面的图表中的矩阵包含了字符的分数,这些字符中的最后一项(第 80 个)是一个 CTC 空白标签。其它矩阵项,从上到下分别对应于如下字符:!」#&』()*+,-./0123456789:;?ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz 可以看到,大多数时间里,被预测的字符都刚好出现在它们在图像中的位置处(比如,你可以比较看看图像与图表中 i 的位置。只有最后一个字符 e 没有对齐。但这其实没有问题,因为 CTC 操作是无分割的,而且不在乎绝对位置。最下面的图表展示了字符 l、i、t、e 和 CTC 空白标签的分数,该文本可以轻松地被解码:我们只需要从每个时间步骤取出最可能的字符即可,这会构成所谓的最佳路径,然后我们丢弃重复的字符,最后丢弃所有空白,得到:「l—-ii—t-t—l-…-e」→「l—-i—t-t—l-…-e」→「little」。 更多有关如何实现这一方法的细节信息,请参看 Herald Scheidl 的文章。 Tesseract(OCR) Tesseract 是目前最好的用于机器打印字符识别的开源 OCR 工具。Tesseract 支持 Unicode(UTF-8)字符集,可以识别超过 100 种语言,还包含多种输出支持,比如纯文本、PDF、TSV 等。但是为了得到更好的 OCR 结果,还必须提升提供给 Tesseract 的图像的质量。 注意,在执行实际的 OCR 之前,Tesseract 会在内部执行多种不同的图像处理操作(使用 Leptonica 库)。通常它表现不错,但在某些情况下的效果却不够好,导致准确度显著下降。 在将图像传递给 Tesseract 之前,可以尝试以下图像处理技术,但具体使用哪些技术取决于你想要读取的图像: 1. 反转图像 2. 重新缩放 3. 二值化 4. 移除噪声 5. 旋转/调整倾斜角度 6. 移除边缘 所有这些操作都可以使用 OpenCV 或通过 Python 使用 numpy 实现。 简单总结一下,本文介绍了与 OCR 和 HTR 相关的一些问题和可能的解决方案。如果你想要真正理解,一定要亲自动手实现它们看看。 原文链接:https://medium.com/@ajinkya.khalwadekar/building-ocr-and-handwriting-recognition-for-document-images-f7630ee95d46 原文章作者:机器之心Pro,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于7 天前
    最后回复 应云亭 7 天前
    2527 1
  • 日本开发出利用AI深度学习的乳腺超声图像自动识别系统
    一般使用乳腺X光机来诊断乳腺癌,但对乳腺组织致密的女性来说精度不够高,此时会利用乳腺超声检查诊断。但超声检查也存在问题,比如读解超声图像时往往依赖技师和医生的主观判断及经验;而且由于假阳性率(将良性肿瘤诊断为恶性的比例)较高,很多时候需要再进行乳房穿刺来采集组织和细胞进行活检,增加了患者的精神和肉体负担。 此次,东北大学研究生院医学系研究科医学统计学领域的山口拓洋教授等人组成的研究团队,利用SAS Institute Japan公司的“SAS Viya”,开发了通过人工智能深度学习来识别乳房超声图像内肿瘤的辅助诊断系统。 可高精度识别图像的深度学习方法CNN(Convolutional Neural Network)能通过学习自动获取图像的特征,并可以发现人类难以注意到的肿瘤。本次研究开发了通过结合2种CNN模型的结果实现高精度识别的“集成学习”。另外,并不是通过单张图像识别肿瘤,而是采用每位患者拍摄的多张图像进行综合分析识别。验证结果显示达到了高精度识别,敏感性(准确识别恶性肿瘤的比例)达90.9%,特异性(准确识别良性肿瘤的比例)为87.0%,机器学习的评价指标AUC达0.951。此外还对CNN模型重点关注各图像中的哪部分来输出识别结果做了分析,发现肿瘤区域以外的部分也可能隐藏着用于识别的线索,说明有必要从新的角度进行图像诊断(图1)。 图1:乳房超声图像和基于深度学习的患处检测 (a)乳房超声图像。(b)利用方法1、(c)利用方法2检测患处 此次研究团队在SAS的支持下,将深度学习应用到了超声图像诊断中,并开发出了高精度辅助诊断系统。虽然此次报告的系统还存在无法明确其深度学习过程(黑盒子)等的挑战,但如果今后能应用于实际医疗中,不仅可以减轻医生和患者的负担,还将有助于削减医疗费用。 论文信息 题目:Computer-aided diagnosis system for breast ultrasound images using deep learning 期刊:《Physics in Medicine & Biology》 DOI:10.1088/1361-6560/ab5093 原文章作者:一点资讯,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于2020-1-21
    最后回复 疮邸嘎 2020-1-21 13:08
    1492 0
  • 空客首次实现基于图像识别的全自动起飞
    欧洲空中客车公司2020年1月16日发布新闻公告称,2019年12月空客公司在法国图卢兹机场用一架空客测试飞机首次成功完成了基于图像识别技术的全自动起飞。公告说,这架飞机的全自动起飞系统与目前全球客机广泛使用的“仪表着陆系统”不同,“仪表着陆系统”依靠无线电信号等来帮助飞机起飞和降落,而此次测试的系统依靠图像识别技术,让飞机通过“视觉”实现全自动起飞。空客公司表示,这套系统有助于改善空中交通管理、解决飞行员短缺等问题,还有助于提高飞机安全性。 当前,人工智能技术的开发与应用如火如荼,最广泛被公众了解的是汽车自动驾驶技术。笔者认为,相比汽车面临的复杂的道路情况和交通状况,飞机的自动驾驶可能更加易于实现。笔者相信,飞机的自动驾驶很可能先于汽车的自动驾驶全面应用在我们的日常生活中。未来全自动驾驶的民航航班值得期待。 个人观点,仅供参考。 JerryZang 原文章作者:JerryZang,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于2020-1-20
    最后回复 力烽 2020-1-20 06:36
    1167 1
  • 计算机视觉的9大常见应用,图像识别果然第一
    计算机视觉的领域正从统计方法转变为深度学习神经网络方法。在计算机视觉中依旧需要解决许多具有挑战性的问题。 尽管如此,深度学习方法仍在某些特定问题上取得了最新的成果。有趣的不仅仅是深度学习模型在基准问题上的表现。 事实是,单个模型可以从图像中学习含义并执行视觉任务,从而不需要专门的手工方法。 在本文中,你将发现九个有趣的计算机视觉任务,其中深度学习方法正在取得进展。注意,在图像分类(识别)任务时,采用了ILSVRC的命名约定。 尽管这些任务集中在图像上,但是它们可以推广到视频帧。 我试图将重点放在你可能感兴趣的最终用户问题的类型上,而不是在深度学习方面做得很好的更多学术子问题上。 每个示例都提供了对该问题的描述以及一个示例。是否有未列出的最喜欢的用于深度学习的计算机视觉应用程序? 1、图像分类 图像分类涉及为整个图像或照片分配标签。这个问题也被称为“对象分类”,并且可能更普遍地被称为“图像识别”,尽管后者的任务可能适用于与图像内容分类有关的更广泛的任务集。 图像分类的一些示例包括: 是否将X射线标记为癌症(二进制分类)。 对手写数字进行分类(多类分类)。 为面部照片分配名称(多类分类)。 用作基准问题的图像分类的一个流行示例是MNIST数据集。 街景房门号码(SVHN)数据集是对数字照片进行分类的一种流行的现实版本。 该图像的类别是什么? 有许多涉及对象照片的图像分类任务。 两个受欢迎的示例包括CIFAR-10和CIFAR-100数据集,这些数据集的照片分别分为10类和100类。 大规模视觉识别挑战赛(ILSVRC)是一项年度竞赛,在该竞赛中,团队将根据ImageNet数据库中提取的数据,在一系列计算机视觉任务中争夺最佳性能。 图像分类的许多重要进步来自有关此挑战的任务或有关此任务的论文,其中最著名的是有关图像分类任务的早期论文。 2、具有本地化的图像分类 具有本地化的图像分类涉及为图像分配类别标签,并通过边界框(在对象周围绘制一个框)显示对象在图像中的位置。 这是图像分类的更具挑战性的版本。 具有本地化的图像分类的一些示例包括: 标记X射线是否为癌症,并在癌变区域周围画一个方框。 在每个场景中对动物的照片进行分类并在动物周围画一个方框。用于本地化图像分类的经典数据集是PASCAL视觉对象类数据集,或简称为PASCAL VOC(例如VOC 2012)。 这些是多年来在计算机视觉挑战中使用的数据集。 该任务可能涉及在图像中同一对象的多个示例周围添加边界框。 这样,有时将该任务称为“对象检测”。用于本地化图像分类的ILSVRC2016数据集是一个受欢迎的数据集,包含150,000张照片和1,000个对象类别。 3、物体检测 尽管图像可能包含需要定位和分类的多个对象,但是对象检测是通过定位对图像进行分类的任务。与简单的图像分类或具有定位的图像分类相比,这是一个更具挑战性的任务,因为通常在不同类型的图像中存在多个对象。通常,针对本地化图像分类而开发的技术已被使用并证明用于物体检测。 对象检测的一些示例包括: 绘制边界框并标记街道场景中的每个对象。 绘制边界框并标记室内照片中的每个对象。 绘制边界框并标记景观中的每个对象。 PASCAL视觉对象类数据集或简称PASCAL VOC(例如VOC 2012)是用于对象检测的常见数据集。另一个用于执行多个计算机视觉任务的数据集是Microsoft的“上下文数据集中的通用对象”,通常称为MS COCO。 4、对象分割 对象分割或语义分割是对象检测的任务,其中在图像中检测到的每个对象周围画一条线。 图像分割是将图像分割成多个部分的更普遍的问题。对象检测有时也称为对象分割。 与涉及使用边界框识别对象的对象检测不同,对象分割可识别图像中属于该对象的特定像素。 这就像一个细粒度的本地化。一般而言,“图像分割”可能是指将图像中的所有像素分割为不同类别的对象。 同样,VOC 2012和MS COCO数据集可用于对象分割。KITTI Vision Benchmark Suite是另一个受欢迎的对象细分数据集,它提供用于自动驾驶汽车训练模型的街道图像。 5、样式转移 样式转移或神经样式转移是从一个或多个图像中学习样式并将该样式应用于新图像的任务。可以将此任务视为可能没有客观评估的一种照片滤镜或变换。 例如,将特定的著名艺术品(例如帕勃罗·毕加索(Pablo Picasso)或文森特·梵高(Vincent van Gogh))的风格应用于新照片。数据集通常涉及使用公共领域的著名艺术品和来自标准计算机视觉数据集的照片。 6、图像着色 图像着色或神经着色涉及将灰度图像转换为全色图像。可以将此任务视为可能没有客观评估的一种照片滤镜或变换。示例包括为旧的黑白照片和电影着色。 数据集通常涉及使用现有的照片数据集并创建模型必须学会着色的照片的灰度版本。 7、影像重建 图像重建和图像修复是填充图像缺失或损坏的部分的任务。可以将此任务视为可能没有客观评估的一种照片滤镜或变换。例如,重建旧的,损坏的黑白照片和电影(例如,照片恢复)。数据集通常涉及使用现有照片数据集并创建模型必须学习修复的照片的损坏版本。 8、图像超分辨率 图像超分辨率是生成比原始图像具有更高分辨率和细节的图像新版本的任务。通常,为图像超分辨率开发的模型可以解决相关问题,因此可以用于图像恢复和修复。数据集通常涉及使用现有照片数据集并创建照片的缩小版本,而模型必须学习这些缩小版本的模型才能创建超分辨率版本。 9、图像合成 图像合成是生成现有图像或全新图像的目标修改的任务。这是一个非常广阔的领域,正在迅速发展。它可能包括对图像和视频的少量修改(例如,图像到图像的翻译),例如: 更改场景中对象的样式。 将对象添加到场景。 在场景中添加面孔。 它还可能包括生成全新的图像,例如: 生成面孔。 生成浴室。 产生服饰。 其他问题 我没有涉及其他重要而有趣的问题,因为它们不是纯粹的计算机视觉任务。据推测,人们学会了在其他形式和图像(例如音频)之间进行映射。 计算机视觉与语音识别的应用示例 Gravitylink推出钛灵AIX是一款集计算机视觉与智能语音交互两大核心功能为一体的人工智能硬件,Model Play是面向全球开发者的AI模型资源平台,内置多样化AI模型,与钛灵AIX结合,基于Google开源神经网络架构及算法,构建自主迁移学习功能,无需写代码,通过选择图片、定义模型和类别名称即可完成AI模型训练。 原文章作者:钛灵创新,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于2020-1-20
    最后回复 羿荏辣 2020-1-20 03:52
    3426 1
  • “里程碑意义”!空客首次让飞机通过“视觉”全自动起飞
    ▲空客官方发布的新闻照片 新华社巴黎1月17日电(记者陈晨)欧洲空中客车公司16日发布新闻公告称,去年12月在法国图卢兹机场用一架空客测试飞机首次成功完成了基于图像识别技术的全自动起飞。 公告说,这架飞机的全自动起飞系统与目前全球客机广泛使用的“仪表着陆系统”不同,“仪表着陆系统”依靠无线电信号等来帮助飞机起飞和降落,而此次测试的系统依靠图像识别技术,让飞机通过“视觉”实现全自动起飞。 根据公告,去年12月18日,测试人员在图卢兹机场进行首次基于图像识别技术的全自动起飞测试,在约4.5小时内成功完成了8次起飞。试飞队长扬·博菲斯说,飞机在这一具有里程碑意义的测试中表现符合预期。 空客公司表示,这套系统有助于改善空中交通管理、解决飞行员短缺等问题,还有助于提高飞机安全性。 空客公司于2018年6月启动了“自动滑行、起飞和降落”科研项目,接下来计划在2020年上半年进行基于图像识别的自动滑行和降落测试。 原文章作者:一点资讯,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于2020-1-19
    最后回复 红茜茜 2020-1-19 16:17
    1948 0
  • 这不就可以隔墙认人了么?英特尔最新AI根据热图像识别人脸
    大数据文摘出品 编译:大萌、钱天培 隔墙认人,听起来很玄乎。其实可能只用分两步: 第一步,隔墙收集热图; 第二步,根据热图特征识别人脸。 那么问题来了,热图像是否可以提供足够的信息,使AI模型可以识别人脸特征呢? 最近,英特尔和哥但斯克工业大学的研究人员给出了答案,并在第12届国际人机交互会议期刊(International Conference on Human System Interaction)上发表了成果。在这一研究中,他们在普通可见光图像训练出的模型的基础上,将训练数据替换为热图像进行了再训练。 在需优先考虑或要求保护隐私的情况下,热图像经常用来替代RGB图像,例如在医疗设备的使用中。这是因为热图像能够模糊人体特征,例如眼睛颜色或下颌轮廓。 所以, 热图到底够不够模糊呢? 研究团队采用两套面部热图像数据集,第一套SC3000-DB数据集是使用Flir ThermaCam SC3000红外热像仪拍摄的,共包括40位志愿者的766张图片,志愿者由19名男士和21名女士组成,他们被要求坐在相机前两分钟。 第二套数据集是俄克拉荷马州立大学数据计算和图像处理实验室的IRIS数据集,该数据集包括30个志愿者的4190张图片,其中许多志愿者移动了头部或摆出了不同的面部表情。 研究人员首先使用机器学习模型对图片进行剪切,只保留面部部分。接着使用另一个模型来从图像中提取面部特征并将特征转换为特征向量(为每一个特征设定数值)。最后,采用利用可见光图像训练的第三个模型验证这种模型是否可以应用于热图像。 在实验过程中,研究人员对比了两个面部的特征向量:一个是用于识别人的特征向量,另一个是基于人的轮廓与输入图片相似性的特征向量。 结果发现用可见光图像训练的模型能够很好的泛化到热图像应用中,模型能够成功提取面部特征,并分别以99.5%和82.14%的准确率分辨了SC3000-DB数据集和IRIS数据集中的志愿者。 研究团队希望该研究可以扩展应用到不同场景产生的图像中,例如头部水平或垂向转动的图像。 论文中还评论道,许多有前景的视觉处理应用(例如非接触式生命体征估计和智能家居监控)可能涉及私人或敏感数据,例如关于人体健康的生物体征信息。之前人们普遍认为,热图像能够在提供有用信息的同时保证个人隐私,因此它才能够被广泛用于这些应用当中。 然而,这一研究无疑会让人们开始重新考虑热图的安全性。 相关报道: https://venturebeat.com/2020/01/09/intel-researchers-propose-ai-that-recognizes-faces-from-thermal-images/ 实习/全职编辑记者招聘ing 加入我们,亲身体验一家专业科技媒体采写的每个细节,在最有前景的行业,和一群遍布全球最优秀的人一起长大。坐标北京·清华东门,在大数据文摘主页对话页回复“招聘”了解详情。简历请直接发送至zz@bigdatadigest.cn 志愿者介绍“志愿者”加入我们 原文章作者:一点资讯,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于2020-1-19
    最后回复 邬国 2020-1-19 12:48
    2205 0
  • 空客飞机采用自动驾驶/图像识别技术自主起飞 为飞行汽车奠定基础
    盖世汽车讯 据外媒报道,一架空客(Airbus)飞机利用由计算机视觉系统提供支持的自动驾驶技术,成功自动起飞,标志着自动飞行汽车的实现又向前迈进了一步。 (图片来源:空客) 当地时间1月16日,空客宣布其在2019年12月18日进行了自动飞行测试。测试机组包括两名飞行员、两名飞行工程师和一名试飞工程师,机组人员在4小时内进行了8次起飞操作。 一般来说,飞机会与仪表着陆系统(ILS)通信,ILS会依靠跑道上的无线电广播在起飞过程中,对飞行员提供指导,而且需要传统的机场基础设施才可以启动飞行。 因此,空客在飞机上安装了一个图像识别系统,让飞机在没有飞行员操作控制系统,或飞行员无需与跑道系统通信的情况下,成功起飞。 空客试飞员机长Yann Beaufils在一份声明中表示:“这架飞机在测试中的表现符合预期。在跑道上完成调整,等待空中交通管制的许可,然后我们启动了自动驾驶仪,将油门杆调到起飞设置,然后对飞机进行监控。飞机开始会自动向前移动并加速,保持在起飞跑道中央,以输入系统的转速运行。然后,飞机的机头自动上升,获得预期的起飞值,几秒钟后,就飞上了天空。” 空客一直在投资各种自动飞行项目,2018年,空客测试了一款由其位于硅谷的A?实验室研发的自动驾驶电动飞行出租车。去年,空客推出一个多模态交通系统 - Pop.Up,利用无人机将自动驾驶车辆的乘客舱升到空中,并将乘客送往目的地。 空客表示,此次自动起飞测试是自动驾驶出租车、起飞&降落(ATTOL)项目的另一个里程碑。该公司正利用此类测试,检查此类系统如何影响整辆车。 该公司还表示,今年晚些时候,将对基于视觉的自动化出租车和自动飞行汽车的着陆次序进行测试。 ),获取更多财经资讯 原文章作者:一点资讯,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于2020-1-19
    最后回复 倡膳昀 2020-1-19 11:36
    2746 0
  • 借助图像识别技术,空客首次实现飞机全自动起飞
    你敢坐吗? 据外媒报道,空客近期在法国图卢兹机场用一架测试飞机首次成功完成基于图像识别技术的全自动起飞,官方表示这套系统有助于改善空中交通管理、解决飞行员短缺等问题,并且有助于提高飞机安全性。 在具体测试过程中,一架A350-1000飞机在有两个飞行员的同乘的情况下,依靠图像识别系统,在约4.5小时内成功完成了8次自动起飞。空客放出的视频中也可以看到,飞行员在飞机俯仰时单手休息坐在那里,没有参与操作。 空客试飞机长Yann Beaufils描述了当时试飞的情形,“我们将油门杆移至起飞位置,它开始推出并自动加速,保持着系统输入的精确转速。然后,飞机的机头开始自动抬起,以达到预期的起飞俯仰值,几秒钟后又开始降落。” 空客表示,这次自动起飞背后的技术不同于当前在全球范围内使用的仪表着陆系统(ILS),ILS是依靠无线电信号等来帮助飞机起飞和降落,而本次起飞是通过直接安装在飞机上的图像识别技术实现的。他们下一步计划是在2020年中旬之前实现基于视觉识别技术的自动着陆和滑行能力。 另外,如果能大规模应用这种自主飞行技术,也可以让飞行员更多地专注于战略决策和任务管理。 更多优质内容,请持续关注镁客网~ 原文章作者:镁客网,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于2020-1-19
    最后回复 倪腴 2020-1-19 10:51
    1416 0
  • 敢坐?空客首次实现飞机全自动起飞:基于图像识别
    (原标题:你敢坐吗?空客首次实现飞机全自动起飞:基于图像识别) IT之家1月18日消息 空客公司于1月16日对外透露,其一架测试飞机已能够实现自动起飞,从而使无人驾驶商用喷气式飞机的落地又更进一步。 具体来说,空客表示,在12月18日于图卢兹-布拉尼亚克机场进行的测试中,一架A350-1000飞机上有两名准备接手的飞行员,在自动驾驶飞机上进行了八次起飞。随新闻发布的是一张照片,显示飞行员在飞机俯仰时单手休息坐在那里,没有参与操作。 ▲空客官方发布的新闻照片 “我们将油门杆移至起飞位置,并监控飞机,它开始推出并自动加速,并保持跑道中心线为系统输入的精确转速。然后,飞机的机头开始自动抬起,以达到预期的起飞俯仰值,几秒钟后又开始降落。”空客试飞机长Yann Beaufils说。 空客在周四的新闻稿中说,起飞背后的技术不同于当前在全球范围内使用的仪表着陆系统(ILS),而是通过直接安装在飞机上的图像识别技术实现的。该公司表示,下一步计划是在2020年中旬之前实现基于视觉识别技术的自动着陆和滑行序列能力。 也许未来,不仅有无人驾驶汽车,还有无人驾驶飞机(当然,即使是无人驾驶,也需要机长实时监控的),不过这样的飞机,你敢坐吗? 原文章作者:手机大小事,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于2020-1-18
    最后回复 倪腴 2020-1-18 19:57
    1288 0
  • 你敢坐吗?空客首次实现飞机全自动起飞:基于图像识别
    IT之家1月18日消息 空客公司于1月16日对外透露,其一架测试飞机已能够实现自动起飞,从而使无人驾驶商用喷气式飞机的落地又更进一步。 具体来说,空客表示,在12月18日于图卢兹-布拉尼亚克机场进行的测试中,一架A350-1000飞机上有两名准备接手的飞行员,在自动驾驶飞机上进行了八次起飞。随新闻发布的是一张照片,显示飞行员在飞机俯仰时单手休息坐在那里,没有参与操作。 ▲空客官方发布的新闻照片 “我们将油门杆移至起飞位置,并监控飞机,它开始推出并自动加速,并保持跑道中心线为系统输入的精确转速。然后,飞机的机头开始自动抬起,以达到预期的起飞俯仰值,几秒钟后又开始降落。”空客试飞机长Yann Beaufils说。 空客在周四的新闻稿中说,起飞背后的技术不同于当前在全球范围内使用的仪表着陆系统(ILS),而是通过直接安装在飞机上的图像识别技术实现的。该公司表示,下一步计划是在2020年中旬之前实现基于视觉识别技术的自动着陆和滑行序列能力。 也许未来,不仅有无人驾驶汽车,还有无人驾驶飞机(当然,即使是无人驾驶,也需要机长实时监控的),不过这样的飞机,你敢坐吗? 原文章作者:一点资讯,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于2020-1-18
    最后回复 掏柿孜 2020-1-18 18:43
    1682 0
  • 每经23点 | 空客称首次实现基于图像识别的全自动起飞;“15康美债”存兑付风险上交所对ST康美提出监管要求
    1丨美大型科技股转跌 蔚来汽车涨4% 周五美股三大股指高开,截至22:55,道指涨0.11%,纳指涨0.14%,标普500指数涨0.19%。个股方面,多只美股大型科技股转跌,奈飞、微软、亚马逊、Facebook均转跌。芯片类股多数下跌,台积电跌近1%,美光科技跌0.5%,英特尔跌0.3%,英伟达跌0.2%。蔚来汽车涨4%。 2丨28只科创板股票获券商维持“买入”评级 年内平均涨幅28% 据上海证券报,东财Choice数据显示,剔除4只年内上市的次新股,截至1月16日,科创板共有28只股票获一家或多家券商维持“买入”评级,这28只股票新年以来平均涨幅为28%。而另外42只没有券商评级或没有券商维持“买入”评级的股票,新年以来平均涨幅为20%。南微医学共获7家券商维持“买入”评级,居所有科创板股票首位。但需要指出的是,虽然部分科创板股票获券商维持“买入”评级,但最新股价已超出券商当初给予的目标价,显示公司最新估值已经达到券商的合理预期,投资者务必谨慎看待。 3丨“15康美债”存兑付风险 上交所对ST康美提出监管要求 1月17日晚间,针对ST康美债券风险事项,上交所向ST康美发出监管函,要求公司结合目前财务状况,再次认真核实能否按期足额兑付债券回售本金及利息,及时披露相关资金安排,做好风险提示,保护好债券持有人的利益。如存在无法按时足额兑付的情形,公司应妥善做好处置安排,及时披露有关情况,充分提示风险,避免误导投资者。此前,ST康美披露风险提示公告,“15康美债”存在未能及时全额兑付回售本金及利息的风险,公司目前生产经营正常,正全力筹措资金,正考虑和完善差异化支付方案。 4丨空客称首次实现基于图像识别的全自动起飞 据新华社,欧洲空中客车公司16日发布新闻公告称,去年12月在法国图卢兹机场用一架空客测试飞机首次成功完成了基于图像识别技术的全自动起飞。公告说,这架飞机的全自动起飞系统与目前全球客机广泛使用的“仪表着陆系统”不同,“仪表着陆系统”依靠无线电信号等来帮助飞机起飞和降落,而此次测试的系统依靠图像识别技术,让飞机通过“视觉”实现全自动起飞。 5丨现货钯金站上2400美元/盎司关口 截至22:10分左右,现货钯金站上2400美元/盎司关口,再创新高,日涨幅约5%。 生态环境部答每经记者提问:全面实行居民阶梯水价制度等任务已按时限要求完成 每日经济新闻 原文章作者:一点资讯,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于2020-1-18
    最后回复 庇细 2020-1-18 00:40
    1617 0
  • 空客称首次实现基于图像识别的全自动起飞
    欧洲空中客车公司16日发布新闻公告称,去年12月在法国图卢兹机场用一架空客测试飞机首次成功完成了基于图像识别技术的全自动起飞。 ),获取更多财经资讯 原文章作者:一点资讯,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于2020-1-17
    最后回复 祉足 2020-1-17 23:32
    4941 0
  • 西交利物浦大学学者为图像识别提供更优方案
    中国首个单模型弱监督语义分割研究 西交利物浦大学学者为图像识别提供更优方案 近日,西交利物浦大学电气与电子工程系关于弱监督语义分割的研究成果被第34届人工智能领域顶级会议AAAI大会spotlight论文收录,该项目也在2019年获得了国家自然科学基金面上项目的资助。 据论文的第一作者、电气与电子工程专业博士生张冰峰介绍,他们的论文是中国首个单模型弱监督语义分割研究。张冰峰的指导老师肖继民博士表示:“建立端到端可测试的(即单模型)弱监督语义分割一直是计算机视觉研究的难点,我们的研究成果不仅提高了模型的鲁棒性,同时也提高了测试精度。我们提出的方法在节省人力标注投入、缩短耗时的同时,提高了计算机图像识别的准确率,最后的测试性能甚至超过了目前学术界最好的非端到端模型。” 语义分割是人工智能领域的重要分支之一,是通过将图像中的像素进行分类来识别图像内容,这项技术被广泛应用于地理信息系统、无人驾驶、医疗影像分析等领域,而弱监督语义分割的研究也是这一分支中的前沿研究方向。 张冰峰解释道:“当我们给计算机进行强监督语义分割训练的时候,需要对大量样本图片进行像素级别的人工标注,比如说图片中有人、车和道路,需要人工标注出哪些像素分别属于人、车或道路,每一张图的每一个像素都需要标注其类别;计算机在‘学习’了这些标注过的图片之后,就可以通过分辨像素来识别出新的图片中有什么。” “但这种强监督语义分割需要投入大量的人力成本,弱监督语义分割就是希望减少人工标注——只进行图像级别的标注,即只需要提供这张图片中有什么,而不需要对每个图像的像素进行标注。” 他补充说,当前大多数弱监督语义分割都需要至少两个模型,第一个模型通过图像的显著特征定位种子点,第二个模型通过延伸种子点定位整个图像的位置。“比如图片中有行人,计算机通过第一个模型定位出行人的头部,通过第二个模型定位出整个行人的位置。” “两个模型的优势是任务明确,但劣势是训练周期长,而且需要人工设置很多参数。”张冰峰说,“我们提出的单模型可以同时进行两个任务,因此耗时更短、更节省人力。” 通过计算机视觉领域公开数据集Pascal VOC的测试,张冰峰提出的单模型弱监督语义分割明显优于另外一个英国学者的单模型方法。为了优化性能,张冰峰和团队在单模型的算法基础上提出了两个双模型方法,测试结果也优于其他弱监督语义分割。 (图片说明:Pascal VOC数据集的定性测试结果。a行至d行依次为原始图片、官方提供的真实值、英国学者的单模型、张冰峰和团队提出的单模型,e行和f行是张冰峰和团队提出的两个双模型方法。) 肖继民博士表示,论文提交到arXiv平台之后,收到了包括北京大学在内的国内多所高校研究人员的积极反馈,将在后续合作中共同深入弱监督语义分割的研究。(通讯员:胡秋辰) 原文章作者:中国高校之窗,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于2020-1-17
    最后回复 抹截 2020-1-17 20:09
    1405 0
  • 算法工程师耗尽心血,终成TensorFlow深度学习应用实践,值得一学
    本篇总的指导思想是在掌握深度学习的基本知识和特性的基础上,培养使用TensorFlow进行实际编程以解决图像处理相关问题的能力。全篇力求深入浅出,通过通俗易懂的语言和详细的程序分析,介绍TensorFlow的基本用法、高级模型设计和对应的程序编写。 本篇强调理论联系实际,重点介绍TensorFlow编程解决图像识别的应用,提供了大量数据集,并以代码的形式实现了深度学习模型,以供读者参考。 本篇可作为学习人工神经网络、深度学习TensorFlow 程序设计以及图像处理等相关内容的程序设计人员学习。 本篇共22章,内容包括Python类库的安装和使用、TensorFlow 基本数据结构和使用、TensorFlow 数据集的创建与读取、人工神经网络、反馈神经网络、全卷积神经网络的理论基础、深度学习模型的创建、模型的特性、算法、ResNet、 Slim、 GAN等。 由于细节内容实在是太多了,所以小编只把部分知识点截图出来粗略的介绍,每个小节都有更加细化的内容,希望大家能够从中得到真谛! 第1章介绍深度学习的基本内容,初步介绍深度学习应用于计算机视觉和发展方向,介绍使用深度学习解决计算机视觉问题的应用前景,旨在说明使用深度学习和人工智能实现计算机视觉是未来的发展方向,也是必然趋势。 第2章介绍Python的安装和最常用的类库。Python语言是易用性非常强的语言,可以很方便地将公式和愿景以代码的形式表达出来,而无须学习过多的编程知识。Python 专用类库threading并不常见,只是要为后文的数据读取和TensorFlow专用格式的生成打下基础。 第3章全面介绍机器学习的基本分类、算法和理论基础,这里介绍了不同的算法,例如回归算法和决策树算法的具体实现和应用。这些是深度学习的基础理论部分,通过这些向读者透彻而准确地展示深度学习的结构与应用,为更进一步掌握深度学习在计算机视觉中的应用打下扎实的基础。 第4章主要介绍Python语言的使用。通过介绍和实现不同的Python类库,帮助读者强化Python的编程能力、学习相应类库。这些都是在后文中反复使用的内容。同时借用掌握的知识学习数据的可视化展示技能。这项技能在数据分析中虽是基本技能,但具有非常重要的作用。 第5-6章是对OpenCV类库使用方法的介绍。本书以图像处理为重点,对图像数据的读取、编辑以及加工是本书的重中之重。OpenCV 是Python 中专门用以对图像处理的类库,通过基础讲解和进阶介绍使读者掌握这个重要类库的使用。学会对图像的裁剪、变换和平移的代码编写。 第5章以例子的形式对卷积核的基础内容做了一个介绍,并用Python语言实现了卷积核的功能。卷积核是本书中非常重要的基础部分,也是图像处理中非常重要的组成部分,通过编写相应的程序去实现卷积核对图像的处理、掌握和理解:卷积神经网络有很大帮助。 第7~8章是TensorFlow的入门基础,通过一一个娱乐性质的网站向读者展示TensorFlow的基本应用,用图形图像的方式演示神经网络进行类别分类的拟合过程,在娱乐的同时了解其背后的内容。 第9章是本书的一个重点,也是神经网络的基础内容。本章的反馈算法是解决神经网络计算量过大的里程碑算法。笔者通过详细认真的讲解,使用通俗易懂的语言对这个算法进行介绍,并通过独立编写代码的形式为读者实现这个神经网络中最重要的算法内容。本章的内容看起来不多,但是非常重要。 第10章对TensorFlow的数据输入输出做了详细的介绍。从读取CSV文件开始,到教会读者制作专用的TensorFlow 数据格式TFRecord, 这在目前市面上的书籍中鲜有涉及。使用TensorFlow框架进行程序编写、数据的准备和规范化是重中之重,因此本章也是较为重要的个章节。 第11~12章是应用卷积神经网络在TensorFlow框架上进行学习的一一个基础教程,经过前面章节的准备和介绍,采用基本理论一卷 积神经网络进行手写体的辨识是深度学习最基本的技能,也是非常重要的一个学习基础。并且在程序编写的过程中,作者向读者展示了参数调整对模型测试结果的重要作用。这是目前市面上相关书籍没有涉及到的内容,非常重要。 第13~14 章是卷积神经网络算法的介绍和应用。在这两章内容中,笔者详细介绍卷积神经网络的应用,特别是在图像识别中的应用,由单纯的手写体数值的识别发展到对显示物体的识别。借助于图像识别比赛的数据集,使用在比赛中得奖的卷积神经网络模型,使读者掌握卷积神经网络的变种。卷积神经网络的理论基础就是卷积的正向和反向过程,一般正向过程较好理解和学习,但是对于反向运算,基本上没有涉及,有的话也仅仅是对公式的复制和摘抄。在14章中详细地介绍卷积神经网络反向过程的运算和计算方法,通过大量例子的表述,第一次非常详细地描述了卷积神经网络的反向运算。这是相关书籍中欠缺的内容。 第15章通过一个完整的例子演示使用卷积神经网络进行图像识别的流程。例子来自于ImageNet图像识别竞赛,所采用的模型也是比赛中获得准确率最高的模型。通过对项目每一步的详细分析,手把手地教会读者如何使用卷积神经网络进行图像识别。 第16章介绍VGGNet的组成结构,着重介绍VGGNet的网络调参以及在其后执行Finetuning 的能力。本章将第15章的例子复用VGG16实现,给读者提供-一个以不同的视角和不同的模型方法解决问题的思路。 第17章针对目前深度学习就业者给出的一-些面试题的答案,这些问题可以帮助招聘者分析谁是高水平的面试者,也能帮助就业者完善自己的技术概念和知识,找准自己的定位,为将来升职加薪铺平道路。 第18章介绍深度学习网络ResNet模型,它是在网络中使用大量残差模块作为网络的基本组成部分,主要作用是使得网络随着深度的变化增加,而不会产生权重衰减和梯度衰减或者消失等这些问题。除了ResNet 模型,本章还介绍了新兴的卷积神经模型,包括SqueezeNet 和Xception。 第19-20章开始进入TensorFlow 学习的高级阶段,重点介绍的是一个API一Slim, 它是一个用于定义。训练和评估较为复杂模型的轻量级开发类库。这两章不光介绍了它的使用方法,还通过它制作了一个多层感知机MLP、一个卷积神经网络CNN,最后还使用Slim预训练模型进行Finetuning。 第21章介绍全卷积神经网络图像分割,先讲解分割的理论基础和实现方法,然后给出了全卷积神经网络进行图像分割的分步流程与编程基础,最后给出了使用VGG16全卷积网络进行图像:分割的实战。 第22章讲解的是GAN一对抗生成网络, 本章理论虽然看似枯燥,但笔者用一个“生成器”和一个“辨别器”共同在一个网络中不停地进行“对抗”来比喻,降低了阅读的难度。最终还通过使用GAN生成手写体数字的案例让读者真正学会GAN的应用。 除此之外,全篇对于目前图像识别最流行和取得最好成绩的深度学习模型做了介绍,这些都是目前的深度学习的热点和研究重点。 由于文章篇幅限制,所以小编就在此做过多的介绍了,需要本【TensorFlow 深度学习应用实践】文档的小伙伴就可以转发关注小编++++++ V x ①⑧①③③⑤③②⑨⑦ 就可以获取了! 通过TensorFlow图像处理,全面掌握深度学习模型及应用

    全面深入讲解反馈神经网络和卷积神经网络理论体系结合深度学习实际案例的实现,掌握TensorFlow程序设计方法和技巧着重深度学习实际应用程序开发能力和解决问题能力的培养

    原文章作者:一点资讯,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于2020-1-17
    最后回复 崎溜 2020-1-17 14:45
    5608 0
  • 得助智能:人工智能语音系统一般包含哪些关键技术?
    人工智能语音系统一般包含以下关键技术: 1、智能图像识别。基于视频识别、图像识别和人脸识别技术,精准识别用户信息,为企业提供审核核查、客户意图等行业解决方案。 2、智能语音质检。采用语音识别技术,通过大量语料训练,不断优化语音识别效果,为企业节省80%的人力成本。 智能机器人。通过机器学习和深度学习算法,精确匹配行业知识,提高语义解析的准确性,提供媲美人工客服的专业服务。 3、数据应用及服务。整合通讯,金融及内部应用数据,基于大数据分析和开放API,满足金融、保险等行业的安全和征信业务需求。 4、可视化数据分析。采集用户轨迹信息和客服接待行为数据,构建数据模型,并提供可视化大屏监控和统计报表,帮助企业快速决策。 5、行业用户画像。利用数据挖掘技术和算法,基于行业模型和用户行为分析,形成行业独有的用户画像数据标签,为精准营销创造更多可能性。 6、全渠道在线客服。可深度对接各大在线客服平台,包括微信、网页和APP等渠道,并结合工单、CRM等功能,协助企业全面优化的工作流程,提高内部协作效率。 7、视频和语音服务。支持视频和语音统一接入,与在线客服渠道相辅相成,为客户提供更直观的服务体验。 原文章作者:一点资讯,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于2020-1-15
    最后回复 益玮琪 2020-1-15 13:29
    3330 0
  • 清华大学张长水教授:机器学习和图像识别(附PPT下载)
    本篇干货整理自清华大学自动化系教授张长水于2018年4月27日在清华大学数据科学研究院第二届“大数据在清华”高峰论坛主论坛所做的题为《机器学习和图像识别》的演讲。 注:头条号私信后台回复关键词“0427”,下载完整版PPT。 张长水:大家好,我来自清华大学自动化系,主要做机器学习和图像识别的研究。现在人工智能很流行,机器学习也推到风口浪尖上,图像识别已经变成产品,新闻媒体告诉我们AlphaGo、AlphaGozero已经战胜了人类、皮肤癌的识别超过了大夫、无人车已经上路测试,很快要量产。这些新闻仿佛告诉我们,图像识别的问题已经解决了,然而很多高科技做图像识别公司都还在高薪聘用掌握机器学习的人才。图像识别问题解决了吗?我们看看现在图像识别还有些什么问题。 一、大量数据 现在做图像识别,要求有大量的数据。什么叫大量的数据?比如上图是在业界做图像识别的数据集,包含很多类别的图像,像飞机、鸟、猫、鹿、狗。对于一个物体,需要有不同的表现,需要有不同的外观在不同的环境下的表现,所以我们需要很多照片素材。 尽管在我们领域里有很多大的数据集,但其实这些数据集远远不能满足我们的实用产品的要求。比如说我们看这样一个文字识别的例子。文字识别比一般的图像识别要简单,因为文字不涉及到三维,它只是一个平面的东西。 二、大量的样本 比如我们要识别清华大学的“清”,通常的做法是收集“清”的各种各样的图像,所谓各种各样的图像就是说要包括不同的字体,不同的光照,不同的背景噪声,不同的倾斜等,要想把“清”字识别好,就需要收集上很多这样的样本。那么这么做得困难是什么? 三、困难 1、样本的获取 当我们应用于实际、设计产品的时候,就会发现不是每一种情况下都有那么多数据。所以,怎么获得丰富的数据是首要的问题。 上图给大家展示的这一排图像是一个交通标志的识别任务。我们如果需要去识别路上的交通标志,就要在不同的环境下,不同的光照下,比如说早晨、中午、晚上,逆光还是背光,不同的视角,是否有遮挡,所有的因素都要考虑到,来采集数据。经验上每种标识收集上千张或者更多的图像,才能保证识别率到达实际应用的水平。 我们的问题是什么?看第一张图像。第一张图是有连续急转的标志。这样的标志在城市很难见到,除非到山区。这个例子说明,图像获取本身就不容易。 2、样本的标注 我们现在的图像识别方法是基于标注的数据的,这叫做监督学习。图像标注就意味着把图像一张一张抠出来。如果我们开车穿梭在北京市大街小巷,但是交通标志并不是在视频的每一张图片上出现。如果我们需要把视频中交通标志如果都要标出来,需要花很多钱。做机器学习的人会关心我们能不能通过一些其他更廉价的方法去做数据标注,例如能不能通过一些众包的方式去做。在12306网站购买火车票,每次让我们勾出相对应的图像,这可以看做是在标注数据。但是众包标注数据也存在一些问题,就是每个人标的时候会不一样,有时会有错误。所以在机器学习中,有人关心在众包情况下、标注数据有错的时候,我们如何设计学习算法,使得它对错误的标注不敏感。这个事大概七八年前就开始研究,不断的有新的文章出现。 当数据没有那么多的时候,怎么办?机器学习界遇到了这样的问题,就是小样本的数据学习。当样本不多的时候能不能达到和大数据量类似的识别效果?例如上图中只有几张狗的图片的时候,要识别狗,还能从哪里得到狗的信息?思路是从其他的图片中来,比如上边有有鸟,有猫,有鹿,它们的皮毛很像狗等等。换句话说,他从其他的丰富的图像中获取一些信息,把那些信息迁移到这个少量的数据上,从而能够实现对狗的识别。 另外,图片数量是否能降到只有一张?比如清华大学的“清”,只有一个模板图像,是否能够把文字识别做好。更极端的例子,能不能做到一个样本都没有,也就是说,机器在没有见过狗的情况下,是否能把狗识别出来,这都是研究人员关心的事情。 3、大数据量的训练 有了很多的数据还需要对它进行训练,这通常需要花很长时间,需要配备高端的设备去训练。 我们有了大量的数据怎么去做训练?可以采用GPU去做训练,这样可以达到特别快的速度。在这大的数据量上进行训练和学习的问题,叫做big learning。 Big learning 关心是否有更快速的方法训练呢,需要一个月才能训练出来的问题,能不能在一天就训练出来;能不能用并行训练?如果数据不能一次存到硬盘里,这个时候怎么学习呢?这些就是企业和机器学习界都关心的事。 除此之外,我们发现深度学习模型很容易被攻击。如上图左边是一只熊猫,我们已经训练好网络能够识别出这是一只熊猫。如果我在这张图像上加了一点点噪声,这个噪声在右图你几乎看不出来,我再把这个叠加后的图像给网络,它识别出来的不是熊猫,是别的东西。而且它以99.3%的信心说这不是熊猫,甚至你可以指定他是任何一个东西。这件事情的风险在什么地方?如果只是娱乐一下,也没什么大关系。但是如果把它用于军事或者金融后果就比较严重了。因此我们一直在关心这个问题怎么解决,就是希望算法能够抗攻击性强一点,但目前只是缓解而没有彻底解决。 而且研究中会发现这个问题,相当于去研究分类器的泛化性能。泛化性能这件事在机器学习里是理论性很强的问题,是机器学习圈子里面非常少的一些人做的事情。换句话说,这个问题看起来很应用,其实它涉及了背后的一些很深理论。为什么会出现这样的情况?因为我们对深度学习这件事没有太好的理论去解释它,我们没有那么好的方法去把所有的问题解决。 我们再说风险,图像识别中我们会把一个学习问题往往形式化一个优化问题,然后去优化这个函数,使这个函数最小。我们把这个函数叫做目标函数。有的时候我们会把这样的函数叫做损失函数,物体识别有错就带来损失。就是说在整个过程我们希望不要有太多的损失。其实,风险函数可能是更合适的词。因为你识别错了,其实是有风险的。一般来说目标函数对应于错误率,把狗识别成猫错了一张,把猫识别成狗又错了一张,都影响错误率,而错误率足以反映算法的性能。 但是在不同的问题里,识别错误的风险是不一样的。比如我们做一个医学上的诊断,本来是正常人,你判别说他有癌症,这种错误就导致虚惊一场。还有一种情况是他患有恶性肿瘤,算法没有识别出来而导致了延误治疗。这样的错误风险就很大。因此我们在优化的时候,这个目标函数其实是应该把这样的决策错误和风险放到里面去,我的目标是优化这个风险。但是这件事往往是和应用、和我们的产品设计相关。所以不同的产品设计,它的决策风险不一样。所以我们在设计产品的时候,是要考虑。 苹果宣称他们的人脸识别错误率是百万分之一,如果别人来冒充你去用这个手机是百万分之一的可能性,就是说,别人冒充你是很难的;但是人脸识别还有一种错误,就是:我自己用我的手机,没有识别出是我,这个错误率是10%。换句话说,你用十次就会有一次不过。在用手机这个问题上不明显,但是如果用于金融,这个事就有风险。我们设计产品的时候,你就要考虑风险在哪,我们怎么样使得整个风险最小,而不是只考虑其中一边的错误率。 有公司会宣传说错误率可以降到百万分之一,让人误以为人脸识别的问题已经解决了,然而我们在CAPR、ICCA这样的学术会议上依旧能看到怎么去做文字的检测,怎么去做人脸识别的研究。换句话说这件事还没有到那么容易使用的地步。所以我们做图像识别的产品有风险,产品设计要考虑风险,我们做这件事就要考虑用技术的时候,用对地方很重要,用错地方就会很大的风险。 机器学习是一个和应用紧密结合的学科,虽然有很多高大上的公式,其实都是面向应用,希望能解决实际问题。实际应用给我们提出很多需求,图像识别遇到的问题给我们提出了挑战。最后,感谢各位的聆听。 注:头条号私信后台回复关键词“0427”,下载完整版PPT。 原文章作者:THU数据派,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于2020-1-14
    最后回复 钴惆 2020-1-14 23:47
    2065 18
  • 人工智能热门技术是图像识别,5大应用场景无法反驳
    图像识别已成为当下的主流,每天都有成千上万的公司和数百万的消费者在使用这项技术。 图像识别由深度学习提供动力,特别是卷积神经网络(CNN),这是一种神经网络体系结构,可模拟视觉皮层如何分解并分析图像数据。CNN和神经网络图像识别是计算机视觉深度学习的核心组成部分,它具有许多应用场景,包括电子商务,游戏,汽车,制造业和教育。 在本文中,你将学习到: 1)什么是图像识别? 2)图像识别如何工作? 3)神经网络的图像数据预处理步骤 4)使用神经网络建立图像预测模型 5)卷积神经网络及其在图像识别中的作用 6)图像识别的应用 1、什么是图像识别? 图像识别使用人工智能技术自动识别图像中的对象,人物,位置和动作。 图像识别用于执行任务,例如使用描述性标签标记图像,在图像中搜索内容以及引导机器人,自动驾驶汽车和驾驶员辅助系统。 图像识别对于人类和动物来说是很自然的,但是对于计算机来说却是一项极其困难的任务。 在过去的二十年中,计算机视觉领域出现了,并且已经开发了可以挑战的工具和技术。目前用于图像识别任务的最有效工具是深层神经网络,特别是卷积神经网络(CNN)。 CNN是一种旨在有效处理,关联和理解高分辨率图像中的大量数据的体系结构。 2、图像识别如何工作? 人眼将图像视为一组信号,由大脑的视觉皮层来解释。结果是一个场景的体验,它链接到保留在内存中的对象和概念。图像识别模仿了这一过程。计算机以一组矢量(带有彩色注释的多边形)或一个栅格(一个带有颜色离散数值的像素画布)“看到”图像。 在神经网络图像识别过程中,图像的矢量或光栅编码被转换为描绘物理对象和特征的构造。计算机视觉系统可以从逻辑上分析这些构造,首先是通过简化图像并提取最重要的信息,然后通过特征提取和分类来组织数据。最后,计算机视觉系统使用分类或其他算法来决定图像或图像的一部分-它们属于哪个类别,或者如何最好地描述它们。 3、图像识别算法 一种图像识别算法是图像分类器。它以图像(或图像的一部分)作为输入并预测图像包含的内容。输出是一个类别标签,例如狗,猫或桌子。需要训练该算法以学习和区分类。 在一个简单的情况下,要创建一种可以识别带有狗的图像的分类算法,你将训练具有数千个狗的图像和数千个没有狗的背景图像的神经网络。该算法将学习提取识别“狗”对象的特征,并正确分类包含狗的图像。虽然大多数图像识别算法是分类器,但其他算法可用于执行更复杂的活动。例如,循环神经网络可用于自动编写描述图像内容的标题。 4、神经网络的图像数据预处理步骤 神经网络图像识别算法依赖于数据集的质量-用于训练和测试模型的图像。以下是图像数据准备的一些重要参数和注意事项。 1)图像大小-更高质量的图像为模型提供了更多信息,但需要更多的神经网络节点和更多的计算能力来处理。 2)图像数量-你向模型提供的数据越多,它将越精确,但要确保训练集代表实际人口。 3)通道数-灰度图像具有2个通道(黑白),彩色图像通常具有3个颜色通道(红色,绿色,蓝色/ RGB),其颜色表示为[0,255]。 4)高宽比-确保图像具有相同的高宽比和尺寸。通常,神经网络模型采用正方形输入图像。 5)图像缩放-一旦所有图像都经过平方处理,就可以缩放每个图像。有许多放大和缩小技术,它们可以作为深度学习库中的函数使用。 6)输入数据的均值,标准差-在所有训练示例中,你可以通过计算每个像素的平均值来查看“均值图像”,以获得有关图像中基础结构的信息。 7)标准化图像输入-确保所有输入参数(在这种情况下为像素)均具有均匀的数据分布。训练网络时,这将加快融合速度。你可以通过从每个像素中减去平均值,然后将结果除以标准偏差来进行数据归一化。 8)降维-你可以决定将RGB通道折叠为灰度通道。如果你打算使神经网络对该尺寸不变,或者使训练的计算强度降低,则可能需要减小其他尺寸。 9)数据扩充-涉及通过扰动当前图像的类型(包括缩放和旋转)来扩充现有数据集。这样做是为了使神经网络具有多种变体。这样,该神经网络不太可能识别数据集中的有害特征。 5、使用神经网络建立图像预测模型 准备好训练图像后,你将需要一个可以处理它们并使用它们对新的未知图像进行预测的系统。该系统是一个人工神经网络。神经网络图像识别算法可以对几乎所有内容进行分类,从文本到图像,音频文件和视频。 神经网络是称为神经元或感知器的节点的互连集合。每个神经元都会获取一份输入数据,通常是图像的一个像素,然后应用称为激活函数的简单计算来生成结果。每个神经元都有影响其结果的数值权重。 该结果将被馈送到其他神经层,直到该过程结束时,神经网络为每个输入或每个像素生成一个预测。多层感知器此过程针对大量图像重复进行,并且网络在称为反向传播的过程中为每个神经元学习最合适的权重,从而提供准确的预测。训练模型后,将其应用于未参与训练的一组新图像(测试或验证集)以测试其准确性。进行一些调整后,该模型可用于对真实世界的图像进行分类。 6、常规神经网络在图像识别中的局限性 传统的神经网络使用完全连接的体系结构,如下所示,其中一层中的每个神经元都连接到下一层中的所有神经元。完全连接的神经网络在处理图像数据时,完全连接的体系结构效率很低: 对于具有数百个像素和三个通道的普通图像,传统的神经网络将生成数百万个参数,这可能会导致过拟合。 该模型将需要大量的计算。 可能难以解释结果,调试和调整模型以提高其性能。 7、卷积神经网络及其在图像识别中的作用 与完全连接的神经网络不同,在卷积神经网络(CNN)中,一层中的神经元不会连接到下一层中的所有神经元。相反,卷积神经网络使用三维结构,其中每组神经元都分析图像的特定区域或“特征”。 CNN会按接近程度过滤连接(仅针对附近的像素分析像素),从而可以在计算上实现训练过程。 在CNN中,每组神经元都专注于图像的一部分。例如,在猫的图像中,一组神经元可能会识别出头部,另一组是身体,另一组是尾部等。在分割的几个阶段中,神经网络图像识别算法会分析图像的较小部分,以便例如,在头部,猫的鼻子,胡须,耳朵等内部。最终输出是概率矢量,它针对图像中的每个特征预测其属于某个类别或类别的可能性。 8、卷积神经网络的有效性和局限性 CNN架构使使用行业基准数据集预测图像中的对象和面部的可能性达到了95%的准确性,而人类能力达到了94%的准确性。 即便如此,卷积神经网络也有其局限性:需要高处理能力。 通常在具有专用图形处理单元(GPU)的高成本机器上训练模型。 当图像旋转或倾斜时,或者图像具有所需对象的特征,但顺序或位置不正确时,可能会失败,例如,鼻子和嘴巴张开的脸。 已经出现了一种称为CAPSNet的新体系结构来解决此限制。 9、图像识别应用 图像识别的实现包括安全性和监视,面部识别,视觉地理定位,手势识别,对象识别,医学图像分析,驾驶员帮助以及网站或大型数据库中的图像标记和组织。图像识别已进入主流。人脸,照片和视频帧识别已在Facebook,Google,Youtube和许多其他高端消费者应用程序中使用。已经出现了工具包和云服务,可以帮助较小的参与者将图像识别集成到他们的网站或应用程序中。 10、在各行业中使用图像识别 1)电子商务行业-图像识别用于自动处理,分类和标记产品图像,并实现强大的图像搜索。例如,消费者可以搜索带有特定扶手的椅子并接收相关结果。 2)游戏产业-图像识别可用于将数字层置于真实世界的图像之上。增强现实为现有环境添加了细节。精灵宝可梦Go是一款依靠图像识别技术的流行游戏。 3)汽车工业-自动驾驶汽车在美国处于测试阶段,并在许多欧洲城市用于公共交通。为了促进自动驾驶,传授了图像识别功能,以识别道路上的物体,包括移动的物体,车辆,人和道路,以及识别交通信号灯和道路标志。 4)制造业-在制造周期的不同阶段采用图像识别。它用于减少制造过程中的缺陷,例如,通过存储具有相关元数据的组件的图像并自动识别缺陷。 5)教育—图像识别可以帮助有学习障碍和残疾的学生。例如,以计算机视觉为动力的应用程序提供了图像转语音和文本转语音功能,可以向阅读障碍或视力障碍的学生朗读材料。 计算机视觉与语音识别的应用示例 Gravitylink推出的钛灵AIX是一款集计算机视觉与智能语音交互两大核心功能为一体的人工智能硬件,Model Play是面向全球开发者的AI模型资源平台,内置多样化AI模型,与钛灵AIX结合,基于Google开源神经网络架构及算法,构建自主迁移学习功能,无需写代码,通过选择图片、定义模型和类别名称即可完成AI模型训练。 在本文中,我们介绍了图像识别的基础知识,以及如何通过卷积神经网络实现它。当你开始研究CNN项目时,使用TensorFlow,Keras和PyTorch等深度学习框架来处理图像和对图像进行分类时,你会遇到一些实际挑战: 1)追踪实验 跟踪实验源代码,配置和超参数。卷积网络可以具有许多参数和结构变化。你需要进行成百上千次实验才能找到提供最佳性能的超参数。组织,跟踪和共享实验数据和结果可能是一个挑战。 2)在多台机器上运行实验/在本地或云端扩展实验 CNN的计算量很大,在实际项目中,你需要在多台计算机上扩展实验规模。无论是在内部还是在云上配置机器,将它们设置为运行深度学习项目并在它们之间分发实验都是非常耗时的。 3)管理训练数据集/管理培训数据 计算机视觉项目涉及诸如图像或视频之类的富媒体,其大型培训集的大小从千兆字节到PB级。将数据复制到每台训练机,然后在更改训练集时重新复制,这既耗时又容易出错。 原文章作者:人工智能与科技,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于2020-1-14
    最后回复 红茜茜 2020-1-14 14:12
    1330 0
  • 图像识别深度学习各厂商方案详评
    嵌入式AI主要用于图像识别和语音识别,图像识别主要用于工业、自动化、医疗等行业。以医疗行业为例,由于医疗保健行业大量使用大数据及嵌入式人工智能,进而精准改善疾病诊断、医疗人员与患者之间人力的不平衡、降低医疗成本、促进跨行业合作关系。此外嵌入式人工智能还广泛应用于临床试验、大型医疗计划、医疗咨询与宣传推广和销售开发。嵌入式人工智能导入医疗保健行业从2016年到2022年维持很高长大,预计从2016年的6.671亿美元达到2022年的79.888亿美元年均复合增长率为52.68%。 多家半导体厂商已经推出嵌入式AI平台,比如 华为海思今年4月份发布的Hi3559A,这个样品超过100美金/片集成寒武纪AI核(遗憾不是最新的版本,因为最近寒武纪又发布最新的AI版本,同时还集成大名鼎鼎Cadence的 4核DSP);赛灵思Xilinx的FPGA—— Zynq 7020,ZU2CG开发难度大,价格不菲,还有其他家的ARM+FPGA方案也不便宜,开发难度也不小;英伟达的GPU——JETSON TX2,TX2核心板英伟达自己生产,价格太贵,不适合产品小型化生产;TI 的TDA2x系列和DAVINCI系列最新的DM505,以及后续的版本,专注辅助驾驶ADAS,他的64bit浮点DSP C66X+EYE也支持深度学习(不要小瞧EYE,深度学习一个EYE比2个C66X 浮点DSP还强),不过功耗太高,软件资源也不好搞到,海掏买美国D3公司DEMO板价格不菲,而且没技术支持开发周期过长,价格也不便宜。Intel的Movidius Myriad 2,在软件资源方面,Intel推出神经计算棒的免费NCSDK,这个软件资源让很多公司看到嵌入AI领域的希望,很多公司都在嵌入式开发板树莓派3上面加这个神经计算棒学习。 华为海思Hi3516A/D + VPU和Hi3519V101+VPU,因为海思Hi3516A/D和Hi3519V101支持H.264/H.265编解码,带有ISP,还带有一个IVE(智能视频分析算法加速器,确切的说是传统机器视觉算法加速器),然后再加上Intel Movidius 这个支持深度学习的VPU,就是上海速嵌智造的可深度定制开发的ARM+VPU深度学习平台。也就是说同时支持传统机器视觉算法+深度学习算法,而且还支持H.265编解码。 海思Hi3516A/D和Hi3519V101的IVE支持的功能太过技术细节,将另文讲述。 Movidius Myriad 2 VPU (Vision Processing Unit——视觉处理器)被称作为“第三次影像革命的开端”的芯片方案。Movidius 已经被Intel收购,Intel Movidius Myriad 2 VPU可在不同目标应用中提供低功耗、高性能的视觉处理解决方案,其中包括嵌入式深度神经网络、位姿估计、室内导航、3D深度感应、3D制图(3D扫描建模),视觉惯性测距,以及手势/眼部跟踪,基于深度学习的环境感知。 安防巨头海康和大华把Movidius Myriad 2(MA2450)视觉处理单元应用于视频监控摄像头,在完成监控和录制等传统任务外,提供人群密度监测、立体视觉、面部识别、人数统计、行为分析以及检测非法停放车辆等先进的视频分析功能。Myriad 2为大疆最近发布的首款迷你无人机Spark提供了视觉智能技术,大批量生产。 这颗芯片被一分为二,其中一部分有12个SHAVE 128位处理器,专为影像处理负载做优化,每颗都运作在600MHz的频率下,而且有超频潜能,第一代的180MHz显然是不够看的;与这些处理器相匹配的是Movidius称之SIPP过滤器(Streaming Inline Processing Pipeline filters)的硬件加速器——可完成一些预设的影像处理任务,比如将来自不同类型摄像头的数据融合到一起,或者将多个视频内容接合到一起;另外还有2个32位RISC处理器用于芯片管理,这就是LEON4(LEON是一款32位RISC处理器,支持SPARC V8指令集,由欧洲航天总局旗下的Gaisler Research开发、维护,目的是摆脱欧空局对美国航天级处理器的依赖。LEON的主要产品线包括LEON2、LEON3、LEON4)。SHAVE这一端对原始影像数据做计算处理,OEM厂商可以选择不同的方案;SIPP则可协力处理通常任务;集中型的寄存器结构令芯片两侧可同时对相同的数据做处理。这些对于降低延迟是相当有价值的。 鉴于这样的架构设计,Myriad 2 VPU芯片面积是6.5mm,厚度1mm,具体的性能则是可以48fps的帧率同时处理来自12个1300万像素摄像头的数据,以60fps拍摄4K视频自然也是毫无压力,功耗低于0.5W(台积电28nm HPC工艺)。按照El-Ouazzane的说法,相比能够提供同等效果的GPU,Myriad 2的功耗低了最少10倍。 深度学习框架方面,支持Caffe,Caffe的全称是Convolutional Architecture for Fast Feature Embedding,是一个清晰、高效的开源深度学习框架,核心语言是C++,支持命令行、Python和Matlab接口,既可以在CPU上运行也可以在GPU上运行。同时也支持Google的TensorFlow。所以C/C++、Python程序员可以快速切入深度学习的架构去工作。前面提到的Intel Movidius神经元棒,包括他们提供的免费NCSDK软件包,可以满足那些C/C++程序员、Python程序员轻松在WIN下直接开发AI软件,也可以在ubuntu下直接开发软件,很方便,而在嵌入式前端,同样也可以支持NCSDK软件包,熟悉Caffe和TensorFlow应该很快上手进行算法优化和设计。 而2017年推出的Movidius Myriad X(MA2485)将提供十倍于Myriad 2同样功率范围内深层神经网络(DNN)的性能。 嵌入式AI MA2485 Myriad X 有4个可C编程的128位VLIW矢量处理器和可配置的MIPI通道,并扩展了2.5 MB的芯片内存和更多的固定功能成像/视觉加速器。就像在Myriad X中发现的一样,Myriad X的矢量单位都是专有的SHAVE (流混合的架构矢量引擎)处理器,对计算机视觉工作负载进行了优化。Myriad X也支持最新的LPDDR4,MA2085变体只配置了外部存储器接口。 Myriad X的另一个新功能是4K硬件编码,4K在30Hz(H.264/H.265)和60 Hz(M/JPEG)支持。从接口上看,Myriad X带来了USB 3.1和PCIe 3.0支持,这两个都是Myriad VPU家族新支持的接口。与Myriad 2一样,所有这些都是在同一个小于2W的功率范围中完成的,更具体地说是在1W以内,使用台积电16nm FFC工艺。所以说,在如此低功耗下就能完成很多视频处理和深度学习,前面提到的几个平台根本无法做到。 从目前前端图像识别市场反馈的角度看,这个Myriad 2 VPU(MA2450) 和 Myriad X VPU(MA2485)芯片出货量比较大。在开发板-学习板方面,树莓派3+可以直接拿神经计算棒进行深度学习算法开发。如果是产品设计,速嵌智造推荐ARM + VPU方案可以快速定制开发出产品。我们在HI3516D+VPU和Hi3519V101+VPU板上测试: 图像识别AI 图像识别AI 原文章作者:匠物志,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于2020-1-12
    最后回复 柞枫 2020-1-12 09:08
    3597 0
  • 图像识别AI遇上对抗性图像变“瞎子”,准确率猛降90%
    【新智元导读】在视觉方面,AI和人类的差距有多大?来自UC Berkeley等高校的研究人员创建了一个包含7500个“自然对抗实例”的数据集,在测试了许多机器视觉系统后,发现它们的准确度下降了90%!在某些情况下,软件只能识别2%-3%的图像。这样的AI若用在自动驾驶汽车上,后果不敢想象! 近几年来,计算机视觉有了很大的改善,但依旧有可能犯严重的错误。犯错如此之多,以至于有一个研究领域致力于研究AI经常误认的图片,称为“对抗性图像”。可以把它们看作计算机的光学错觉,当你看到树上有一只猫时,人工智能看到了一只松鼠。 AI把爬上树的猫误认为松鼠 研究这些图像是很有必要的。当我们把机器视觉系统放在AI安全摄像头和自动驾驶汽车等新技术的核心位置时,我们相信计算机和我们看到的世界是一样的。而对抗性图像证明并非如此。 对抗性图像利用机器学习系统中的弱点 但是,尽管这个领域的很多关注点都集中在那些专门设计用来愚弄AI的图片上(比如谷歌的算法把3D打印的乌龟误认为是一把枪),但这些迷惑性图像也会自然的出现。这类图像更令人担忧,因为它表明,即便不是我们特意制作的,视觉系统也会犯错。 为了证明这一点,来自加州大学伯克利分校、华盛顿大学和芝加哥大学的一组研究人员创建了一个包含7500个“自然对抗实例”的数据集,他们在这些数据上测试了许多机器视觉系统,发现它们的准确度下降了90%,在某些情况下,软件只能识别2%-3%的图像。 下面就是一些“自然对抗实例”数据集的例子: AI眼中是“沉船”,其实是虫子爬在枯叶上 AI眼中是“火炬” AI眼中是“瓢虫” AI眼中是“日晷” AI眼中是“棒球运动员” 这些数据有望帮助培养更强大的视觉系统 在论文中,研究人员称这些数据有望帮助培养更强大的视觉系统。他们解释说,这些图像利用了“深层缺陷”,这些缺陷源于该软件“过度依赖颜色,纹理和背景线索”来识别它所看到的东西。 例如,在下面的图像中,AI错误地将左侧的图片当作钉子,这可能是因为图片的木纹背景。在右边的图像中,它们只注意到蜂鸟饲养器,但却错过了没有真正的蜂鸟存在的事实。 下面的四张蜻蜓照片,AI在颜色和纹理上进行分析后,从左到右依次会识别为臭鼬、香蕉、海狮和手套。我们从每张图片中都可以看出AI为什么会犯错误。 AI系统会犯这些错误并不是新闻了。多年来,研究人员一直警告说,利用深度学习创建的视觉系统是“浅薄”和“脆弱”的,它们不会像人一样灵活地理解世界上的一些几乎相同的细微差别。 这些AI系统在成千上万的示例图像上进行了训练,但我们通常不知道图片中的哪些确切元素是AI用于做出判断的。 一些研究表明,考虑到整体形状和内容,算法不是从整体上看图像,而是专注于特定的纹理和细节。本次数据集中给出的结果似乎支持这种解释,例如,在明亮的表面上显示清晰阴影的图片,会被错误地标识为日晷。 AI视觉系统真的没救了? 但这是否意味着这些机器视觉系统没得救了?完全不是。一般这些系统所犯的错误都是小错,比如将排水盖识别为沙井,将货车误认为豪华轿车等。 虽然研究人员说这些“自然对抗性的例子”会骗过各种各样的视觉系统,但这并不意味着可以骗过所有系统。许多机器视觉系统非常专业,比如用于识别医学扫描图像中的疾病的那些专门系统。虽然这些系统有着自己的缺点,可能无法理解这个世界和人类,但这并不影响它们发现并诊断癌症。 机器视觉系统有时可能会很快而且很脏,但通常都会产生结果。这样的研究暴露了机器成像研究中的盲点和空白,我们下一步的任务就是如何填补这些盲点了。 论文地址: https://arxiv.org/pdf/1907.07174.pdf 代码和数据集: https://github.com/hendrycks/natural-adv-examples 原文链接: https://www.theverge.com/2019/7/19/20700481/ai-machine-learning-vision-system-naturally-occuring-adversarial-examples 原文章作者:新智元,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于2020-1-11
    最后回复 悚舱擢 2020-1-11 19:15
    1009 17
  • 掌握可视化卷积神经网络模型,带你畅游图像识别技术领域
    点击上方关注,All in AI中国 在走进深度学习的过程中,最吸引作者的是一些用于给对象分类的模型。最新的科研结果表示,这类模型已经可以在实时视频中对多个对象进行检测。而这就要归功于计算机视觉领域最新的技术革新。 众所周知,在过去的几年里,卷积神经网络(CNN或ConvNet)在深度学习领域取得了许多重大突破,但对于大多数人而言,这个描述是相当不直观的。因此,要了解模型取得了怎样大的突破,我们应该先了解卷积神经网络是怎样工作的。 卷积神经网络可以做些什么? 卷积神经网络用于在图像中寻找特征。在CNN的前几层中,神经网络可以进行简单的"线条"和"角"的识别。我们也可以通过神经网络向下传递进而识别更复杂的特征。这个属性使得CNN能够很好地识别图像中的对象。 卷积神经网络 CNN是一个包含各种层的神经网络,其中一些层是卷积层、池化层、激活函数。 卷积层是如何工作的? 要了解CNN如何工作,你需要了解卷积。卷积涉及浏览图像和应用滤波器等具体内容。 上图是一个5x5的矩阵。现在,你另外选取一个3x3矩阵,然后移动到图像上,将3x3矩阵与被覆盖的图像部分相乘以生成单个值。紧接着,3x3矩阵向右和向下移动以"覆盖"整个图像。最后,我们将获得如上所示的内容。 卷积层的目标是过滤。滤波器是由矢量的权重堆叠乘以卷积输出的值来表示的。当训练图像时,这些权重会发生变化,也就是说当进行图像评估时,它会通过它捕捉到的一些特征来预测出图像的内容。 池化层 卷积层之后的层主要是CNN架构中的池化层。它将输入的图像分割为一组不重叠的矩形,并且对于每个子区域都输出一个值。 两个主要的池化层是最大池和平均池。 最大池 - 输出子区域的最大值。 平均池 - 输出子区域的平均值。 池化层用于减少空间维度而不是深度。 减少空间维度的主要优点是: 通过减少空间信息,可以优化计算性能。通过减少空间信息意味着你可以使用较少的参数来训练模型,从而减少过度拟合的可能性。获得一些固定的值。 激活函数 激活函数的工作方式与其他神经网络完全相同,该函数的主要左右是将值压缩到一个特定的范围内。一些常用的激活函数是: 最常用的激活函数是ReLu激活函数。它需要输入'x'并判断'x'是否为正,如果不为正则返回0。使用ReLu函数的原因是因为它的执行成本很低。 上图是卷积层的一般表示。我们通过池化层进行了卷积和ReLu函数。这些层彼此堆叠。 虽然定义和训练深度神经网络(DNN)比以往任何时候都容易,但大多数人还是会陷入误区。 为此目的,我们使用可视化来理解CNN模型中的各种层。 使用Keras实现可视化 在这部分我们将尝试使用Keras实现可视化。我们将使用Keras可视化输入,最大限度地激活VGG16体系结构的不同层中的滤波器,并对ImageNet进行训练。 首先,让我们从在Keras中定义VGG16模型开始: 请注意,我们只进入最后一个卷积层。原因是添加完全连接的层会强制你使用模型的固定输入大小(224x224,原始ImageNet格式)。 通过保留卷积模块,我们的模型可以适应任意输入大小。 该模型加载了一组预先在ImageNet上训练过的权重。 现在让我们定义一个损失函数,它将促进特定层(layer_name)中的特定滤波器(filter_index)的激活。我们通过Keras后端函数执行此操作,该函数支持我们的代码在TensorFlow和Theano之上运行。 一切都很简单。这里唯一的技巧是规范输入图像的像素梯度,以确保梯度上升足够平滑。 现在我们可以使用我们定义的Keras函数在输入空间中进行梯度上升: 使用TensorFlow在CPU上执行此操作需要几秒钟。 然后我们可以提取并显示生成的输入: 结果: 第一层基本上只是编码方向和颜色。然后将这些方向和滤波器组合成基本网格和斑点纹理。这些纹理逐渐组合成越来越复杂的图案。 你可以将每层中的滤波器视为矢量的基础,它通常是完整的,可用于以紧凑的方式将输入层进行编码。当滤波器开始整合来自越来越大的空间范围的信息时,滤波器会变得更加复杂。 以下是从不同层生成的要素图的图片: 第1层主要生成水平、垂直和对角线。主要用于检测图像中的边缘。 第2层将尝试提供更多的信息。它主要检测角落。第3层我们开始可以检测到一些复杂的图案,如眼睛、脸等。我们可以假设这个特征图是从训练过的人脸检测模型中获得的。在第4层,它可以在面部的更复杂部分(例如眼睛)。 在第5层中,你可以使用要素图生成人的具体面孔、汽车轮胎、动物的面孔等。此要素图包含有关图像中的大多数信息。 结论 一般而言,CNN和其他图像识别模型并没有太大区别。我们可以通过阅读相关书籍加深对这方面的了解。 原文章作者:AI中国,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于2020-1-10
    最后回复 踱姗 2020-1-10 22:11
    2682 13
  • 这是一个关于图像识别的正式教程
    点击上方关注,All in AI 中国 本教程改编自2019年的Fastai DL第1课,并添加了我的许多补充和说明。 在本教程之后,您将能够在您选择的任何图像数据集上构建和训练图像识别器,同时充分了解底层模型架构和训练过程。 本教程包括: [*]数据提取 [*]数据可视化 [*]模范训练:CNN、ResNets、迁移学习 [*]结果解释 [*]模型层的冻结和解冻 [*]微调:学习速率查找器,一周期策略 本教程主要针对的是一些深度学习实践者,任何想要使用CNN和ResNets“刷”图像分类基础知识的人,或任何没有使用过fastai库并希望试用它的人。 本教程的笔记本也可以在这里找到。Fastai-iNotes-iTutorials/Image_Recognition_Basics.ipynb at master · SalChem/Fastai-iNotes-iTutorials · GitHub 要运行笔记本,您只需使用Google Colab打开它即可。 笔记本电脑都是独立的,没有bug,所以你可以按原样运行它。 进入Colab后,请务必更改以下内容以启用GPU后端, 运行时 - >更改运行时类型 - >硬件加速器 - > GPU 本教程中的代码简要说明。有关任何类、方法等的进一步文档可以在fastai docs| fastai上找到。 让我们开始吧… 设置IPython内核并初始化 导入必要的库, 我们做一些初始化, bs是我们的批量大小,即一次输入模型的训练图像的数量。模型参数会在每批迭代之后更新。 例如,如果我们有640个图像,我们的批量大小为64;参数将在1个历元的过程中更新10次。 如果您在本教程中的某个时刻遇到内存不足的情况,则较小的批处理大小可以提供帮助,批次大小通常是2的倍数。 使用特定的值初始化上面的伪随机数生成器可使系统稳定,从而产生可重现的结果。 1.数据提取 我们将使用的数据集是Oxford-IIIT Pet Dataset,它可以使用fastai数据集模块检索。 URLs.PETS是数据集的URL,它有12个猫品种和25个狗品种,untar_data解压并将数据文件下载到我们的路径中。 get_image_files获取images目录中包含的所有文件的路径,并将它们存储到fnames中。来自fnames的实例如下所示, PosixPath('/home/jupyter/.fastai/data/oxford-iiit-pet/images/scottish_terrier_119.jpg') 由于每个图像的标签都包含在图像文件名中,我们将使用正则表达式来提取它。正则表达式(通常缩写为正则表达式)是描述一定量文本的模式。我们提取图像标模式如下, 最后一步是特定于此数据集的。例如,如果属于同一类的图像位于同一文件夹中,我们不必担心它。 现在让我们创建我们的训练和验证数据集, ImageDataBunch根据路径path_img中的图像创建训练数据集train_ds和验证数据集valid_ds。 from_name_re使用在编译表达式模式pat后获得的正则表达式从文件名称列表中获取标签。 df_tfms是动态应用于图像的转换。在这里,图像将调整为224x224,居中,裁剪和缩放。这种转换是数据增强的实例,已经证明在计算机视觉中很有前景。此类转换不会更改图像内部的内容,但会更改其像素值以获得更好的模型泛化。 normalize使用ImageNet图像的标准偏差和平均值对数据进行标准化。 2.数据可视化 训练数据样本表示为 (Image (3, 224, 224), Category scottish_terrier) 其中第一个元素表示图像3RGB通道、行和列。第二个元素是图像标签。 这个实例的相应图像是, len(data.train_ds)和len(data.valid_ds)分别输出训练和验证样本的数量5912和1478。 data.c和data.classes分别输出类及其标签的数量。有37个类别,以下标签, ['Abyssinian', 'Bengal', 'Birman', 'Bombay', 'British_Shorthair', 'Egyptian_Mau', 'Maine_Coon', 'Persian', 'Ragdoll', 'Russian_Blue', 'Siamese', 'Sphynx', 'american_bulldog', 'american_pit_bull_terrier', 'basset_hound', 'beagle','boxer', 'chihuahua', 'english_cocker_spaniel', 'english_setter', 'german_shorthaired', 'great_pyrenees', 'havanese', 'japanese_chin', 'keeshond', 'leonberger', 'miniature_pinscher', 'newfoundland', 'pomeranian', 'pug', 'saint_bernard', 'samoyed', 'scottish_terrier', 'shiba_inu', 'staffordshire_bull_terrier', 'wheaten_terrier', 'yorkshire_terrier'] show_batch在批处理中显示少量的图像。 3.模型训练 cnn_learner使用来自给定架构的预训练模型构建CNN学习器。来自预训练模型的学习参数用于初始化我们的模型,允许更快的收敛和高精度。 这里使用的CNN架构是ResNet34,它在过去几年中取得了巨大成功,依旧被认为是最先进的。 讨论CNN和ResNets非常有价值,因为这将有助于我们更好地理解我们的训练流程。我们可以? CNNs简而言之: 首先,什么是卷积神经网络(CNN或convNet)?我们可以将ConvNet视为将图像卷转换为输出卷的图层列表,就像本教程中的情况一样,它可以是一个类得分。这些层由连接到前一层的其他神经元的神经元组成。为了你更好的进行阅读,我这里强烈推荐斯坦福大学CS231课程的卷积神经网络。 典型的CNN架构 该图展示了一个典型的convNet架构。我们可以将所有CNN架构视为不同可微函数(卷积、下采样和仿射变换)的各种组合。上图只有很少的层,但深层网络有几十到几百层。 ResNets简而言之: 深度网络中一个非常普遍的问题是降级问题,其中模型精度达到饱,然后迅速降级。这是违反直觉的,因为我们期望附加层应该能够实现更详细和抽象的表示。这个问题正是ResNets旨在解决的问题,因为它们可以安全地优化训练更深层次的网络,而不必担心降级问题。 ResNets解决降级问题的方法是引入“身份快捷连接”,跳过一个或多个层。跳过连接的输出被添加到堆叠层的输出中,如下图所示。跳过连接有效地跳过某些层上的学习过程,使深层网络在某种程度上也充当浅层网络。 Skip函数创建所谓的残差块,图中的F(x),这就是残差网这个名称的由来。传统网络的目标旨在直接学习输出H(x),而ResNets旨在学习残差F(x)。使F(x)= 0允许网络跳过该子网,如H(x)= x。 已经表明,添加这些身份映射允许模型更深入而不降低性能,并且这种网络比普通堆叠层更容易优化。 ResNets有几种变体,例如ResNet50、ResNet101、ResNet152; ResNet编号表示ResNet网络的层数(深度)。 在本教程中,我们使用的是ResNet34,如下所示, ResNet34的体系结构和卷积内核 在图中,底部数字表示输入或特征地图大小(高度x宽度),上面的数字表示通道数(过滤器数量)。例如,第一个左块表示输入图像(224 x 224 x 3)。图中的每个“层”都包含很少的残余块,这些残余块又包含具有不同可微函数的堆叠层,从而导致34层端到端。下面是ResNet34架构的完整底层布局,与类似的普通架构相比;侧箭头表示身份连接。 平面34层CNN(左)和34层ResNet(右) 您可以随意尝试任何其他resnet,只需替换模型即可。resnet34by模型。resnet50或任何其他所需的架构。请记住,增加层数将需要更多的GPU内存。 我们上面描述的使用预训练模型并使其适应我们的数据集的内容称为迁移学习。但为什么要使用迁移学习呢? 迁移学习: 深度神经网络具有大量参数,通常在数百万的范围内。在小型数据集(一个小于参数数量的数据集)上训练此类网络会极大地影响网络的推广能力,从而导致过度拟合。因此在实践中,通过随机权重初始化从头开始训练网络是很少见的。 预训练模型通常在非常大的数据集上训练,例如ImageNet,其包含具有1000个类别的120万个图像。因此,预训练模型已经学会捕获其早期层中的曲线、颜色梯度和边缘等通用特征,这对于大多数其他计算机视觉分类问题是相关且有用的。迁移学习也被证明在其他领域也是有效的,例如NLP和语音识别。 现在,通过迁移学习,我们的模型已经在ImageNet上进行了预训练,我们只需要使其更具体地掌握我们数据集的细节。我们有两个选项可以做到这一点,我们只能更新最后一层的参数,或者我们可以更新所有模型的图层。第一个选项通常称为特征提取,而第二个选项称为微调。在这两种方法中,由于ImageNet预训练模型的输出层的大小为1000,因此,重要的是首先对最终层进行重新塑造,使数据集中的类数量相同。 到目前为止,我们已涵盖了许多核心概念 我们继续...... 现在让我们在数据集上训练模型, epochs数字表示模型查看整个图像集的次数。但是,在每个epoch,我们的数据增加后,相同的图像略有不同。 通常,度量误差将随着每个epoch而下降。只要验证集的精度不断提高,增加epoch数就是个好主意。然而,大量的epoch可能导致学习特定的图像而不是普通的类,这是我们想要避免的。 我们刚刚在这里进行的训练就是我们所说的特征提取,所以只更新了我们模型的头部(最后一层)的参数。接下来我们将尝试微调所有层。 恭喜!该模型已成功训练,以识别狗和猫品种。 我们达到的准确率是≈93.5% 我们能做得更好吗?微调后我们会看到。 让我们保存当前的模型参数,以防我们稍后想要重新加载。 4.结果解释 现在让我们看看如何正确解释当前的模型结果。 Classification Interpretation提供错误分类图像的可视化。 plot_top_losses显示带有top loss的图像及其: 预测标签/实际标签/损失/实际图像类别的概率 高损失意味着对错误答案的高度信任。绘制最高损失是可视化和解释分类结果的好方法。 具有最高损失的错误分类图像 分类混淆矩阵 在混淆矩阵中,对角线元素表示预测标签等于真实标签的图像的数量,而非对角线元素是由分类器错误标记的元素。 most_confused简单地抓住预测和实际类别中最混乱的组合;换句话说,最经常出错的那些。我们可以看到它经常将斯塔福郡斗牛犬错误分类为美国斗牛梗,它们实际上看起来是有点相似的。 [('Siamese', 'Birman', 6), ('american_pit_bull_terrier', 'staffordshire_bull_terrier', 5), ('staffordshire_bull_terrier', 'american_pit_bull_terrier', 5), ('Maine_Coon', 'Ragdoll', 4), ('beagle', 'basset_hound', 4), ('chihuahua', 'miniature_pinscher', 3), ('staffordshire_bull_terrier', 'american_bulldog', 3), ('Birman', 'Ragdoll', 2), ('British_Shorthair', 'Russian_Blue', 2), ('Egyptian_Mau', 'Abyssinian', 2), ('Ragdoll', 'Birman', 2), ('american_bulldog', 'staffordshire_bull_terrier', 2), ('boxer', 'american_pit_bull_terrier', 2), ('chihuahua', 'shiba_inu', 2), ('miniature_pinscher', 'american_pit_bull_terrier', 2), ('yorkshire_terrier', 'havanese', 2)] 5.冷冻和解冻 默认情况下,在fastai中,使用预先训练的模型会冻结较早的层,以便网络只能更改最后一层的参数,如上所述。冻结第一层并仅训练较深层可以显著减少大量计算。 我们总是可以通过调用unfreeze函数来训练所有网络层,然后是fit或fit_one_cycle。这就是我们所谓的微调,因为我们正在调整整个网络的参数。我们开始做吧, 现在的准确度比以前差一点。这是为什么? 这是因为我们以相同的速度更新所有层的参数,这不是我们想要的,因为第一层不需要像最后一层那样需要做太多改变。控制权重更新量的超参数称为学习率,也称为步长。它根据损失的梯度调整权重,目的是减少损失。例如,在最常见的梯度下降优化器中,权重和学习率之间的关系如下, 顺便说一下,梯度只是一个向量,它是导数的多变量泛化。 因此,对模型进行微调的更好方法是对较低层和较高层使用不同的学习速率,通常称为差异或判别学习速率。 顺便说一句,我在本教程中可以互换使用参数和权重。更准确地说,参数是权重和偏差,但我们不需要担心这里的细微之处。但请注意,超参数和参数不同;超参数无法在训练中估计。 6.微调 为了找到最适合微调模型的学习率,我们使用学习速率查找器,其中学习速率逐渐增加并且在每批之后记录相应的损失。 fastai库在lr_find中实现了这一点。如需进一步阅读,请查看@GuggerSylvain如何找到良好的学习率。 让我们加载之前保存的模型并运行lr_find, recorder.plot方法可用于绘制损失与学习率的关系。当损失开始分歧时,情节会停止。 从得到的图中,我们一致认为适当的学习率约为1e-4或更低,在损失开始增加并且失去控制之前。我们将1e-4分配给最后的层,将1e-6分配给较早的层。同样,这是因为早期的层已经训练有素,可以捕获通用功能,并且不需要那么多的更新。 如果您想知道我们之前的实验中使用的学习率,因为我们没有明确声明它,它是0.003,这是库中默认设置的。 在我们使用这些判别性学习率训练我们的模型之前,让我们揭开fit_one_cycle和fitmethods之间的差异,因为两者都是训练模型的合理选择。这个讨论对于理解训练过程非常有价值,但可以直接跳到结果。 fit_one_cycle vs fit: 简而言之,不同之处在于fit_one_cycle实现了Leslie Smith 1循环策略,它不是使用固定或降低的学习速率来更新网络的参数,而是在两个合理的较低和较高学习速率范围之间振荡。让我们再深入了解一下这对我们的训练有何帮助。 训练中的学习率超参数 在调整我们的深度神经网络时,良好的学习率超参数是至关重要的。高学习速率允许网络更快地学习,但是太高的学习速率可能使模型无法收敛。另一方面,较小的学习率会使训练进度非常缓慢。 各种学习率对收敛的影响 在我们的案例中,我们通过查看不同学习率下记录的损失来估算适当的学习率(lr)。在更新网络参数时,可以将此学习速率用作固定值;换句话说,将通过所有训练迭代应用相同的学习率。这就是learn.fit(lr)所做的。一种更好的方法是随着训练的进行改变学习率。有两种方法可以做到这一点,即学习速率计划(基于时间的衰减、逐步衰减、指数衰减等)或自适应学习速率方法(Adagrad,RMSprop,Adam等)。有关此内容的更多信息,请查看有关参数更新的CS230 Stanford类注释。另一个很好的资源是@Sebastian Ruder对梯度下降优化算法的概述。 简而言之,一个周期策略 一个周期策略是一种学习速率调度器,其允许学习速率在合理的最小和最大边界之间振荡。这两个界限的价值是什么?上限是我们从学习速率查找器获得的,而最小界限可以小10倍。这种方法的优点是它可以克服局部极小点和鞍点,鞍点是平面上具有典型小梯度的点。事实证明,1cycle策略比其他调度或自适应学习方法更快、更准确。 Fastai在fit_one_cycle中实现了1cycle策略,该策略在内部调用fit方法和1cycle Scheduler回调。 在fastai实现中对1cycle策略的一个小修改包括在从lr_max到0的第二阶段中的余弦退火。 1cycle策略发现 莱斯利史密斯首先发现了一种他称为循环学习率(CLR)的方法,他表明CLR在计算上并不昂贵,并且它们不需要找到最佳学习速率值,因为最佳学习速率将介于最小和最大界限之间。然后,他使用另一种规范的神经网络超参数方法来跟踪该论文:第1部分 - 学习率、批量大小、动量和权重衰减,他强调了各种评论和建议,以便加快网络训练以产生最佳结果。其中一个建议是使用仅一个周期的CLR来实现最佳和快速的结果。作者将方法命名为1cycle策略。 下图展示了如何使用56层残差网络架构,在Cifar-10更少的迭代中,超收敛方法比典型的(分段常数)训练机制达到更高的精度。 在Cifar-10上,超收敛精度测试与具有相同架构的典型训练机制的比较 如果你选择跳过阅读莱斯利史密斯的论文,我依旧会建议阅读这篇文章@GuggerSylvain的1cycle策略。 关键时刻 现在,我们为层选择了有区别的学习率,我们可以解冻模型并相应地进行训练。 切片函数将1e-4赋值给最后一层,将1e-6赋值给第一层;中间的层在此范围内以相等的增量获得学习率。 我们看到准确度有所改善,但并不多,所以我们想知道是否需要对模型进行微调? 在微调任何模型之前始终要考虑的两个关键因素,数据集的大小及其与预训练模型的数据集的相似性。查看斯坦福大学关于何时以及如何微调的CS231笔记?在我们的例子中,我们的Pet数据集类似于ImageNet中的图像,并且它相对较小,这就是为什么我们从一开始就实现了高分类精度而没有对整个网络进行微调。 尽管如此,我们依旧能够提高我们的结果并学到很多东西,所以非常棒的工作 下图说明了使用和微调预训练模型的三种合理方法。在本教程中,我们尝试了第一个和第三个策略。策略2在数据集较小但与预训练模型的数据集不同或者数据集较大但与预训练模型的数据集相似的情况下也很常见。 在预先训练的模型上微调策略 恭喜,我们已经成功地使用最先进的CNN覆盖了图像分类,并具有基础结构和训练流程的坚实基础。 您已准备好在自己的数据集上构建图像识别器。如果您还没有,可以从Google图像中删除图像并组成数据集。我为此做了一个非常简短的教程。「链接」 原文章作者:AI中国,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于2020-1-10
    最后回复 抹截 2020-1-10 20:16
    2036 0
  • 厉害了!阿里AI再获图像识别冠军,可将深度学习算法压缩100倍
    记者7月30日获悉,在CVPR 2019的低功耗图像识别挑战赛上,阿里AI获得在线图像分类任务第一名。阿里AI识别百万图像的算法,在手机上也能跑起来了。 CVPR是计算机视觉领域的顶级学术会议,低功耗图像识别挑战赛由IEEE Rebooting Computing (RC)项目负责发起,通过识别准确率、执行速度和能量消耗三项指标,考察AI视觉识别技术在轻量级设备上的表现。 阿里AI参加了挑战赛三项任务之一的在线图像分类。比赛使用Pixel 2手机,要求AI在10分钟内分类20000张图像,考察分类速度和精度。 LPIRC2019官网宣布的比赛结果,阿里AI获得在线图像分类任务第一名 挑战赛使用Imagenet数据集作为训练数据,AI学习了约120万张涵盖1000个类别的图像,实现67.4%的分类精度,比官方提供的基准线高3.5%。在最终的测试中,阿里AI实现了23ms的单张图片分类速度,排名第一。 这项技术可将深度学习算法压缩40到100倍,便捷地部署于端侧设备,在智能手机、自动驾驶、工业自动化等领域应用前景广阔。 好的深度学习模型通常拥有复杂的结构和巨大的参数量,必须借助云端的大数据处理能力和高性能芯片的算力运行。如果移到端侧,就得搭载体积大、功耗高的设备。比如无人车,它们在行驶过程中实时收集大量路况数据,一部分在云端处理,一部分在本地处理。相比云端计算,本地计算不容易受时延影响,但受限于功耗,本地服务器能够承担的任务很有限。 阿里达摩院线下智能团队为端侧人工智能提供了解决方案。基于目前主流的移动端轻量级网络,该团队设计了一个快速小型网络,在低分辨率图像输入情况下仍能保持较高的分类精度。利用量化技术,该模型还可进一步压缩,在几乎无损精度的同时提升速度。 阿里AI能够识别百万图片,现在这套算法在手机端也能跑起来 如果把该算法部署于无人车,就能在维持原有性能的前提下大大降低处理器功耗;或在不牺牲功耗的情况下大大提升处理器性能,甚至将部分云端处理任务挪到本地。 目前,这项技术已在卫星遥感影像分析上显示威力。卫星遥感影像常被用来监测土地、河流等自然资源,单张影像大小以GB为单位。同样规模的影像分析任务,传统人力方法需要几个月,交给AI则只要几分钟。部署在GPU服务器、TX2端上盒子等的低功耗图像识别技术,能以非常高的精度、极速完成海量图片识别。 来源:科技金融时报(记者 林洁) 编辑:甘玲 原文章作者:科技金融时报,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于2020-1-10
    最后回复 吟肫 2020-1-10 19:16
    3165 2
  • AI人像摄影和科学防抖怎么做到的?本文带你科普自动图像识别算法
    自媒体时代,我们所有人都使用照片在网上表达我们的身份。 我们经常使用手机自拍,或者在视频中截取照片。但是无论是自拍还是视频截取,都有一个共同的问题,它们都是运动的,即便我们自拍时努力保持静止也会产生轻微的运动,稍微的颤抖就有可能导致拍照不清晰。 另外,更重要的是,很多时候我们并没有机会拍摄静止的事物,例如一位美女不经意间的微笑,我们如何拍摄到美女精彩的微笑瞬间又不让照片模糊呢? 现在的AI人像摄影和科学防抖已经做到了这一点。其中的算法值得人们玩味。 但是,静态照片可能无法捕捉到我们在现实生活中的面孔上看到的个性,包括我们的表情,微笑,大笑以及它们之间的过渡。短视频可以捕捉到这些动态,但是由于它们太动态,因此它们像在线人像一样笨拙。视频可以包含相机和背景运动,以及头部和身体的大范围运动。它们也有一个时间表,开始,中间和结束。 电影摄影是一种结合了静态图像和视频优点的新媒介。大部分帧是静态的,但是某些部分以无缝循环的形式进行动画处理。例如,人像电影摄影机(AI人像美颜)可以显示动态面部表情,同时保持静态的整体头部姿势和背景。不幸的是,这样的肖像电影很难创建,要花费专业艺术家数小时甚至是数小时才能完成。 但是,随着计算机技术的发展,手机的功能越来越强大,手机摄像功能便能实现简单的人像摄像机功能。 人像电影是介于照片和视频之间的一种流行的新型视觉媒体。电影摄影对人像特别有效,因为它们捕捉了我们动态面部表情的细微差别。手机可以全自动的从手持摄像机拍摄的短视频生成人像电影,这其中用到了计算机特殊的算法,算法结合了面部跟踪和点跟踪功能,将面部运动分为两类: (1)从视频中删除幅度过大的运动和保留动态面部表情,这种分割可以消除空间变化的扭曲,从而消除大范围的运动 (2)并且将帧的图形切割成动态和静止区域,保留更精细的面部表情运动。 当手机进行拍摄时,大概经历了以下几个步骤。 人体KLT轨迹选择 系统选择KLT轨迹,以引导一个空间变化的扭曲来固定脸部和躯干,对于稳定大规模头部运动有用的KLT轨迹位于脸部,而不是落在表情变化的任何移动面部区域上。它们还与每帧单应变换一致,这通常是改变姿势的脸部整体运动的良好近似。 然后系统计算输入视频的KLT轨道。 为了找到对稳定有用的KLT轨道,算法会使用面部跟踪器在整个视频中标记面部特征点并分析其运动以识别哪些面部区域正在移动,在运动的面部区域中删除KLT轨迹(对于稳定没有用)会大大减少轨迹选择的迭代次数。 面部表情监测 跟踪面部特征的目的是使算法不仅可以识别面部位置,还可以确定面部主要面部区域的运动。考虑四个主要的面部区域。眼睛,眉毛,嘴巴和下颌。嘴进一步细分为三个子区域。嘴唇和下嘴唇的最左边和最右边的区域。 每个脸部区域的位置是其相应的脸部特征点的中心,算法用坐标变换监视整个时间范围内每个脸部区域的位置,测量摄像机它与人脸取向轴的垂直距离,以检测更精细的运动。一条轴将通过鼻梁的面部垂直平分,另一条轴将整个鼻梁的底部水平平分。垂直轴是穿过鼻子和下巴的面部特征点的最佳拟合线,水平轴是穿过鼻基部的面部特征点的最佳拟合线。 接着测量每个面部区域与运动变化占优势的轴之间的垂直距离,这使设备可以细粒度地识别运动,因此手机可以区分嘴唇闭合时的轻微微笑(边缘的水平位移)和笑声(下嘴唇的垂直位移)。例如,眉毛的位置是从水平轴测量的垂直距离。 计算半径r和脸部的鼻子长度l。半径r是通过鼻子中心到下颌,左耳和右耳的三个像素距离来计算的。长度l只是鼻子的平均长度(以像素为单位),该平均长度是根据鼻子在所有帧上的起点和终点得出的。算法对所有距离计算进行归一化,使算法与人脸大小无关,这样脸大脸小的人都不用担忧了。 在计算每帧每个面部区域的距离后,算法使用内核大小为5的中值滤波器来平滑时间噪声。注意当面部区域移动时,距离测量值也会变化,例如使用测量结果与大小为35,标度为4的高斯(LoG)内核的拉普拉斯算术进行卷积,以检测1秒时间内的突然变化。卷积响应的峰值指示面部相应区域的潜在移动。面部动态运动的区域,卷积响应中的峰值会大于指定值。 人像修饰 首先,算法会删除大部分KLT轨迹,仅选择面部区域中的轨迹。然后删除位于运动面部区域内部或0.2l距离之内的轨道,进一步修剪形成表情的动态面部区域上的轨道。 删除这些轨迹后,使用RANSAC使每帧单应性适合面部运动。RANSAC还删除了不遵循整体面部运动的其它异常值。为什么要删除那么多轨迹呢? 轨迹的删除除大大提高了单应性拟合的离群值与离群值的比率。内在比率的略微改善可以明显减少RANSAC找到拟合的良好可能性所需的迭代次数,从而减少所需的计算量。使用这种音轨去除技术可将所需的RANSAC迭代次数最多减少2个数量级。 在每个RANSAC迭代中,计算机使用线性最小二乘法将每帧的单应性拟合到其余轨道,来消除整个视频中的面部运动。 算法应用相同的技术来稳定躯干,但将躯干的中心设置为面下方3r,并且仅考虑位于该中心半径4r之内的轨迹。算法没有执行特定于躯干的轨迹选择,但是在面部轨选择过程中删除的任何轨迹也不会用于躯干,即使它们落在躯干半径内。 最小二乘法固定扭曲的轨迹 找到要扭曲的目标帧,将所有其它帧添加到目标帧后,自动选择的目标帧会产生最少的变形。 由于轨迹在静态区域上指定了位置,因此它们在扭曲后不应移动。因此,算法使用最小二乘法求解一组网格,所以面部轨迹随着时间的推移是固定的,从而将计算成本降低多达50%。 合成图片 图形切割之后,将变形的视频与目标静止帧进行合成。每个节点n对应于一个空间像素位置,并在切割后被分配以下两个标签之一:λ= {still,warp}。对于2D图片,在节点上分配的标签将确定整个时间上该空间位置的像素源。 接着选择能源。主要有两种,节点电势和接缝成本。节点电势由在节点n处分配的标签确定,接缝成本在两个相邻节点n1和n2上确定。当图形切割到最小化时,标签将生成合成的电影胶片,该胶片具有自然的色彩,并具有无缝过渡的所需动画和静态区域。 人像识别的优缺点 摄像机和面部的运动很简单,常规的视频稳定算法能够足够稳定地输入视频以创建电影胶片。但是,在背景区域中移动背景或轨道错误的输入视频可能会导致常规视频稳定功能失败。但是人像识别算法方法不会遇到这个问题,人像识别仅使用位于脸部和躯干固定区域上的轨迹。 对于眼睛和眉毛。所有输入视频的眨眼运动都会使眼睛运动。算法可以成功地将眨眼以及任何眉毛移动合成了最终的图像。眉毛的大幅度运动也能被成功地保留并输出在电影胶片中。但是有时输出的照片中还包括眼睛的轻微移动。 对于嘴唇和下巴。大部分视频都具有嘴部动作,例如微笑,这些动作在输出的摄影作品中已被成功固定。下颌动作最难合成,因为面部通常会显著改变其外观。静态扭曲越少,扭曲轨迹的选择就越难,由于大多数人脸都带有动画效果,因此大大降低了合成错误。尽管人脸的整个面部都有较大的运动,但计算机依旧能够生成良好的人像图片。 当然,对于面部运动幅度特别大的,输出图片也会模糊。 由于算法依赖于准确的面部特征跟踪,因此如果面部特征跟踪器失败,将不会产生良好的结果。算法使用的是空间变化的扭曲来对齐面部,因此无法处理面部的大旋转,在这种情况下,遮挡和深度不连续性会变得很明显。 科学让世界变得美好。对于人脸识别,我们的技术已经很成熟,未来还会对整个身体,衣服,动作等其他方面进行识别。这样,人像拍摄就会演化为整个人体拍摄。不过有的人可能会说了:这是看脸的天下,美个颜就够了,身子还需要美颜?哈哈。 原文章作者:多多小媳妇,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于2020-1-10
    最后回复 惠转 2020-1-10 18:58
    1976 0
  • 什么是图像识别
    什么是图像识别? 图像识别是计算机视觉的机制之一,而计算机视觉是人工智能的一个分支。 正如我们在AI、机器学习与深度学习的区别一文中提到的那样,人工智能(也称AI)是一种能够模仿人类特征并胜任通常需要人类智能才能完成的任务的计算机系统。 为了让AI更有说服力,我们需要所谓的“计算机视觉”。根据Venture Beat的说法,计算机视觉是“计算机获取,处理和分析主要来自视觉提示或热传感器,超声波等类似来源的数据。 简而言之,计算机视觉使得机器能够“看”事物——甚至包括人类无法看到的事物。例如,位于匹兹堡(美国)的卡内基梅隆大学实际上正致力于研究名为“呼吸凸轮”的计算机视觉应用。该应用配备了四个云连接摄像头,可以让用户监控和记录空气污染,甚至可以追溯到污染的源头。是的,它“看到”了空气质量。 然而,要想让机器做到人类无法做到的事情,我们必须首先使机器能够做到人类可以做的事情:看到并标记物体和生物。这是图像识别的主要功能。 Tensorflow是一个由Google开发人员创建的开源软件库,它将图像识别定义为计算机将图像或视频分解为像素,识别形状,以便“看到”这些图像的内容,并对它们进行分类的过程。 发票识别 发票扫描识别系统利用扫描仪完美的采集发票的图像(JPG/TIFF/BMP格式),同步进行图像处理,利用OCR识别技术识别出发票图像上的关键信息,同步生成TXT文本和XML格式文件,完成发票信息的采集。扫描识别的对象包括了增值税专用发票、增值税普通发票和机动车销售统一发票等。目前发票扫描识别系统主要应用在企事业单位的财务票据验审系统以及汽车销售行业的DMS管理系统之中,发票扫描识别系统能够大大提升发票录入效率、降低运营成本的同时,提高了业务处理时效、提升了服务品质,节省了大量的人力物力。 车牌识别 车牌识别技术是一项对静态图像进行车牌号码、车牌颜色自动识别的模式识别技术,当然对于车辆动态视频也可以进行识别,但是对车辆的动态视频识别原理跟静态图像识别原理是一样,我们都知道视频是有图片的一帧一帧组成的,车牌识别算法也是对车辆的动态视频中抽取十到十五帧,然后通过对比选取其中最清晰的图像进行识别。而车牌识别系统组成一般为摄像设备、地感线圈、识别车牌号码的处理机(如计算机)、车牌识别算法和后台管理计费软件等。 图像识别何昱霖 原文章作者:图像识别专家何昱霖,转载或内容合作请点击 转载说明 ,违规转载法律必究。寻求报道,请 点击这里 。
    发表于2020-1-10
    最后回复 躬甍 2020-1-10 18:34
    3244 0

快速发帖

还可输入 80 个字符
您需要登录后才可以发帖 登录 | 立即注册

本版积分规则

在本IOT圈子中寻找帖子
IOT圈子地址
[复制]
Weiot(威腾网)是一家以原创内容、高端活动与全产业渠道为核心的垂直类物联网产业媒体。我们关注新兴创新的物联网领域,提供有价值的报道和服务,连接物联网创业者和各种渠道资源,助力物联网产业化升级。
15201069869
关注我们
  • 访问移动手机版
  • 官方微信公众号

© 2014-2020 Weiot.NET 威腾网 北京微物联信息技术有限公司 ( 京ICP备20000381号 )|网站地图