关于人脸识别:QCN9274-Wallys-M2-Industrial-Wireless-ModuleWifi7

QCN9274 WIFI7 M.2 Industrial High performance Wireless Module WallysIntroduction:In today's fast-paced digital era, reliable and high-speed wireless connectivity is essential for various industrial applications. Wallys, a leading technology company, has introduced the QCN9274 WiFi 7 M.2 Industrial High-Performance Wireless Module, revolutionizing the way industrial devices connect to wireless networks. This blog post will explore the features and benefits of this advanced wireless module and its potential impact on industrial applications. ...

June 1, 2023 · 3 min · jiezi

关于人脸识别:经济学动态模型平均DMA动态模型选择DMSARIMATVP预测原油时间序列价格附代码数据

全文链接:http://tecdat.cn/?p=22458最近咱们被客户要求撰写对于动静模型均匀的钻研报告,包含一些图形和统计输入。 本文提供了一个经济案例。着重于原油市场的例子。简要地提供了在经济学中应用模型均匀和贝叶斯办法的论据,应用了动静模型平均法(DMA),并与ARIMA、TVP等办法进行比拟 简介心愿对经济和金融畛域的从业人员和钻研人员有用。 动机事实上,DMA将计量经济学建模的几个特点联合在一起。首先,最终预测是通过模型平均化从几个回归模型中产生的。其次,该办法是贝叶斯办法,也就是说,概率是以置信水平的形式解释的。例如,对工夫t的DMA预测只基于截至工夫t-1的数据。此外,新数据的取得间接导致参数的更新。因而,在DMA中,回归系数和赋予模型的权重都随工夫变动。 贝叶斯办法不是古代计量经济学的支流。然而,这些办法最近正取得越来越多的关注。这其中有各种起因。首先,咱们能够将其与钻研中日益增多的数据量分割起来。因为技术提高,人们通常面临着许多潜在的解释变量的状况。只管大多数变量可能并不重要,但研究者通常不晓得哪些变量应该被剔除。 当然,到某种程度上依然能够应用惯例办法。但因为不足足够的信息,通常无奈对参数进行准确预计。最简略的例子是当解释变量的数量大于工夫序列中的察看值的数量时。例如,即便在线性回归的状况下,规范的一般最小二乘法预计也会呈现一个奇怪矩阵,导致不可能取其倒数。在贝叶斯框架下,依然能够得出一个有意义的公式。贝叶斯办法仿佛也能更好地解决适度参数化和适度拟合问题。 在最近的预测趋势中能够发现各种办法。以原油价格为例,预测办法通常能够分为工夫序列模型、构造模型和其余一些办法,如机器学习、神经网络等。一般来说,工夫序列模型的重点是对稳定的建模,而不是对现货价格的建模。构造模型顾名思义包含因果关系,但它们通常在某些期间有很好的预测能力,而在其余期间则很差。另外,基于小波合成、神经网络等的其余办法通常疏忽了其余因素的影响,只关注繁多工夫序列。这些使得DMA成为从业者的一个乏味的办法。 DMA的下一个方面是,它容许回归系数是随工夫变动的。事实上,在经济呈现迟缓和疾速(结构性中断)变动的状况下,计量经济学模型的这种属性是十分可取的。当然,这样的办法也存在于传统的方法论中,例如,递归或滚动窗口回归。 实践框架咱们将简短地形容fDMA的实践框架。特地是,动静模型平均化(DMA)、动静模型抉择(DMS)、中位概率模型。 动静模型均匀(DMA)DMA在[1]的原始论文中失去了十分具体的介绍。然而,上面是一个简短的阐述,对于了解fDMA中每个函数的作用是必要的。 假如yt是预测的工夫序列(因变量),让x(k)t是第k个回归模型中独立变量的列向量。例如,有10个潜在的原油价格驱动因素。如果它们中的每一个都由一个适合的工夫序列来示意,那么就能够构建2^10个可能的线性回归模型。每个变量都能够包含或不包含在一个模型中。因而,每个变量有两种抉择,形成了2^10种可能性。这包含一个只有常数的模型。因而,一般来说,有潜在的有用的m个独立变量,最多能够构建K=2^m个模型。换句话说,状态空间模型是由以下几个局部组成的 其中k = 1, ... . ,K,t是回归系数的列向量。假如误差遵循正态分布,即e(k)t∼N(0,V(k)t)和(k)t∼N(0,W(k)t)。 在此请留神,有m个潜在的解释变量,2m是构建模型的下限。然而,本文形容的所有办法(如果没有特地阐明的话)都实用于这些2m模型的任何子集,即K≤2m。 动静模型抉择(DMS)动静模型抉择(DMS)是基于雷同的理念,与DMA的理念雷同。惟一的区别是,在DMA中进行的是模型平均化,而在DMS中是模型抉择。换句话说,对于每个期间t,抉择具备最高后验概率的模型。这意味着,只需将公式批改为 其中HT示意k模型。 一个例子:原油市场咱们举一个原油市场的例子。据此能够说,在哪些工夫序列能够作为预测现货原油价格的有用解释变量方面,存在着不确定性。 xts对象crudeoil蕴含来自原油市场的选定数据,即。 -WTI代表WTI(西德克萨斯中质油)现货价格,以每桶计。 MSCI代表MSCI世界指数。TB3MS代表3个月国库券二级市场利率(%)。CSP代表粗钢产量,单位是千吨(能够作为掂量寰球经济流动的一种形式)。TWEXM代表贸易加权的指数(1973年3月=100)。PROD代表原油产品供应量,单位为千桶。CONS代表经合组织的原油产品总消费量。VXO代表规范普尔100指数的隐含稳定率(即股票市场稳定率)。这些数据的频率为每月一次。它们涵盖了1990年1月至2016年12月的期间。 xts对象的趋势蕴含来自谷歌的对于选定搜索词的互联网数量的数据。 stock_markets代表Google Trends的 "股票市场"。interest_rate代表Google Trends的 "利率"。economic_activity示意 "经济流动 "的Google趋势。exchange_rate代表 "汇率 "的谷歌趋势。oil_production示意 "石油生产 "的Google趋势。oil_consumption代表 "石油生产 "的谷歌趋势。market_stress代表Google Trends的 "市场压力"。这些数据也是以月度为频率的。它们涵盖了2004年1月至2016年12月这段时间,因为谷歌趋势没有涵盖更早的期间。从经济角度来看,思考这些工夫序列的对数差分是正当的 R> drivers <- (lag(crudeoil[ , -1], k = 1))[-1, ]R> l.wti <- (diff(log(wti)))[-1, ]R> l.drivers <- (diff(log(driv )))[-1, ] R> archtest(ld.wti) R> descstat((ld)) 除了PROD的一些问题,所有的工夫序列都能够在5%的显著性程度上被认为是安稳的。对于WTI差分也存在ARCH效应。因而,在DMA中思考指数加权挪动均匀(EWMA)预计方差仿佛是正当的。此外,还能够测试一些忘记因子。依据倡议,对月度工夫序列采取=0.97。所有的方差都小于1。因而,仿佛没有必要对工夫序列进行从新标准化。在DMA的预计中,采取initvar=1仿佛也足够了。  DMA(y = lwti, x = ldrivers,+  alpha = ra, lambda = rl,    meth = "ewma" ) 依据最小化RMSE,最佳DMA模型是=0.99和=0.97的模型。因而,对这个模型稍作钻研。  plot(x$y, type="l", ylim=c(min(x$y,x$y.hat),max(x$y,x$y.hat)),   xlab="", ylab="", main="理论值和预测值", axes = F)比拟图1和图2能够看出,在市场的动荡期间,DMA迅速适应,对有更多变量的模型赋予更高的权重。事实上,这与图3统一。在这一时期,所有解释变量的绝对变量重要性都在回升。咱们还能够看到,自2007年以来,发达的股票市场的作用有所增加。然而,在2013年之后,这种作用变得越来越小;而其余变量的作用开始减少。这一点非常明显,特地是对于汇率。 图3应与图4能够看出。尽管,绝对变量的重要性可能很高,但这个变量的回归系数的预期值可能在0左右。事实上,高的绝对变量重要性同时察看到MSCI、CSP和TWEXM的预期回归系数不为零。所以,这个剖析当初证实了这三个因素在2007年和2013年之间对原油价格起到了重要的预测作用。自2013年以来,股票市场的作用缩小了,被汇率所取代。在2013年前后,最重要的作用是由发达股票市场施展的。  图1  for (i in 1:7)    {      inc[i+1] <- floor(i * nrow( post.incl)/7)    }    plot( exp.var, type="l" ylim=c(0,ncol(x$models))   main="变量数量期望值 ", axes = F) 图2 for (i in 1:(ncol( post.incl)-1))plot( post.incl[,i+1], type="l", col=col[i+1], ylim=c(0,1), xlab="", ylab="", main="后蕴含概率", axes = F) 图3 点击题目查阅往期内容 [](http://mp.weixin.qq.com/s?__b...)R语言:EM算法和高斯混合模型的实现 左右滑动查看更多 01 02 03 ...

February 10, 2023 · 1 min · jiezi

关于人脸识别:COMPX203计算机系统

Department of Computer ScienceCOMPX203 Computer SystemsExercise 2 – C and WRAMP ProgrammingDue Date: 13 April 2022ObjectivesThis exercise explores the relationship between high level programming languages, assembly code,and the system stack. You’ll be writing programs using C and WRAMP assembly code, and interactingbetween the two using the system stack.It is highly recommended that you read this entire specification before beginning to write any code.AssessmentThis exercise contributes 10% towards your internal grade, to be assessed in two parts:● The correctness of your source code, to be submitted via Moodle (7%)● Your completion of an online quiz about the exercise, also on Moodle (3%)Both of these parts must be completed on or before the due date.This is an individual exercise; while you may discuss the assignment with others in general terms,you must write your own code, and complete the quiz by yourself.The name of the file must match the following format:ex[exercise number]_q[question number].srecFor example, the third question in this exercise would be called ex2_q3.srecQuestions ...

October 30, 2022 · 10 min · jiezi

关于人脸识别:Python代码编写CSC108H-TicTacToe

全文链接:http://tecdat.cn/?p=29592Requ... is a two-player game that children often play to pass the time. The game is usually played using a 3-by-3 game board. Each player chooses a symbol to play with (usually an X or an O) and the goal is to be the first player to place 3 of their symbols in a straight line on the game board (either across a row on the board, down a column or along one of the two main diagonals).In this Assignment, you are to complete some functions that make up part of a larger program for playing tic-tac-toe. In the program, game boards are not restricted to being 3-by-3, but are instead N-by-N, where N is one of the integers from 1 through 9, inclusive. Our game boards will always be square. When you have completed your functions for this Assignment, you will be able to play games of tic-tac-toe on your computer!AnalysisTic-tac-toe又称井字棋,通常是在3x3的棋盘上,单方轮流落子,先将3枚棋子连成一线的一方获胜。本题将游戏进行了拓展,变为NxN的棋盘,加大了难度。咱们须要依据提供的框架实现游戏的逻辑局部,尤其是AI局部。解题的要害须要了解游戏的规定,读懂整个框架,找到切入点,依据给定的测试集一直调试即可。Tips从测试集动手>>> game_won('XXX-O-O--', 'X')True>>> game_won('XOXOXOOXO', 'X')False从__main__开始一路调试,到def play_tictatoe(): ... hava_a_winner = game_won(game_board, player_symbol)进入函数后,减少解决逻辑,外围代码如下def game_won(game_board, symbol): ... for col in range(1, board_size + 1): extract = tictactoe_functions.extract_line(game_board, 'dowm', col) if extract == winning_string: return True for row in range(1, board_size + 1): extract = tictactoe_functions.extract_line(game_board, 'across', row) if extract == winning_string: return True ... return False ...

October 26, 2022 · 1 min · jiezi

关于人脸识别:中国企业出海墨西哥红利客观ADVANCEAI为其保驾护航

放眼新兴拉美市场,中国企业出海墨西哥能取得的红利依然十分主观,然而和欧美等成熟的市场相比,开辟新兴市场须要面对各种未知的情景,例如墨西哥当地的政策就很值得关注。ADVANCE.AI作为中国企业出海服务商,深知企业出海痛点,以下为其整顿的墨西哥监管政策简要内容。 监管机构 墨西哥金融监管次要由墨西哥中央银行、墨西哥财政与公共信贷部负责。 墨西哥财政与公共信贷部设有以下5个机构:银行与证券委员会、保险与担保委员会、养老金治理委员会、银行存款保护局、爱护金融消费者全国委员会。 2018年3月,墨西哥出台《金融科技法案》(下文简称《法案》),成为拉丁美洲第一个引入特定金融科技法律框架的司法管辖区。 根据《法案》,墨西哥金融科技行业的次要监管机构是墨西哥中央银行(Banco de Mexico,罕用简称BM)、墨西哥国家银行和证券委员会(a la Comisión Nacional Bancaria y de Valores, 罕用简称CNBV),负责监督当地金融科技行业企业对《法案》的恪守状况。 监管指标 根据《法案》要求,对于金融科技行业,墨西哥监管部门以“保护金融稳固”“防备非法经营”为外围监管指标。 《法案》紧扣金融实质,厘定了金融科技机构的服务属性、业务边界,将各类翻新业务依照其金融性能纳入相应监管体系,监管业务类型涵盖了众筹、电子货币、数字领取等热门金融科技商业状态。此外,《法案》也具体规定了金融科技从业机构的初始资本、内控合规等要求,并严打无照经营等守法违规行为。 监管重点 1.经营必须取得许可,对无牌照经营设置严格惩办措施。 2.标准了监管机构回答、批复各类许可的工夫限期。 3.明确指明虚构资产不是法定货币,经营加密货币相干业务必须取得墨西哥中央银行的受权批准。 4.提倡翻新,施行监管沙盒制度。进入沙盒试点的相干翻新业务,最长受权期限为2年;对已获许可的传统金融机构的“翻新商业模式”沙盒试点受权,最长受权期限为1年。 5.要求金融生态系统中的不同行为者有任务提供利用程序接口(API),以便互相分享信息。 2020年3月9日,按照《法案》领导,墨西哥中央银行公布了无关凋谢银行模式(Open Banking Model)的第一份细则,指明用于通过API接口凋谢的共享数据包含三类:公开数据(Open data)、结算数据(Aggregated data)和交易数据(Transactional data)。数据共享的前提是用户批准授予相干机构对数据的拜访权限。 监管特色 墨西哥对当地金融科技行业的监管思路和需要都十分清晰:一方面,疏导金融科技的倒退,用以补救当地传统金融服务的供应短板;激励金融科技的推广,施展其对落实金融普惠指标的比拟劣势;提供沙盒试点,激励翻新。 另一方面,对金融科技翻新进行严格监管。如果相干机构以翻新为名,本质指标却是为了寻租套利,或从事守法的金融流动,墨西哥监管部门将予以严格惩办、打击。整体而言,监管伎俩宽严并济,监管思路遵循趋利避害准则,立场明确、清晰。 中国出海企业若想在墨西哥落地生根,除了要关注当地的监管政策,在扩充贸易交易的同时更要留神找到靠谱的数字身份验证服务商单干,ADVANCE.AI在基于新建数字身份验证及风险管理解决方案的根底上,打造了本人的自动化数字身份验证与反欺诈零碎,取代过往以人工审核为主的风控体系。 据悉,ADVANCE.AI的风控服务零碎截至目前曾经服务了寰球9大行业,700余家企业客户。

July 13, 2022 · 1 min · jiezi

关于人脸识别:惊储户近200万存款被刷脸盗走快看看你的银行卡有这三类风险吗

据凤凰网科技报道,某大型行的人脸识别零碎存在破绽,造成6名储户百万元现金被异地盗取。受害人示意,远在异地的犯罪分子,7次通过了银行的人脸识别,6次通过活检,一次都没辨认进去犯罪分子应用的是假人脸。 法院断定,银行未见存在显著的过错和差错。受益储户认为,法院回避了银行人脸识别破绽问题,示意会保持上诉。 顶象业务平安专家示意,外表上看,这是人脸识别零碎的问题,然而背地还有登录账户生疏设施未疾速预警、异地转账生产未无效校验等平安问题。“人脸识别不够精准,设施指纹响应不及时,银行风控体系存在BUG”。 他倡议,银行须要增强人脸识别技术的精准度、预警性和安全性,“从源头到利用,提供全链条的辨认、预警、防护,晋升人脸识别的安全性。” 银行业务中的人脸识别技术存在哪些危险?人脸具备唯一性、难以复制性,是人最常见的生物辨认特色,在采集和应用上具备非接触性、非强制性、多并发性、暗藏性和简略易用性等特点,基于人脸的辨认技术被宽泛使用于金融畛域,次要作用是实现在线身份认证,已成为登录、确认、申请、批改等业务环节中重要的验证技术。 因为人脸识别技术使用主体的技术条件和管理水平参差不齐,不法分子通过各类工具绕过、烦扰、攻打人脸识别零碎和算法,进而施行冒用登录、非法转账/生产、骗取贷款、盗取银行资金等攻打,给用户和银行带来经济损失。 2017年“3·15”晚会上,主持人在技术人员反对下,仅凭观众自拍照就现场“换脸”破解了某“刷脸登录”认证零碎。清华大学钻研人员也曾做过一个钻研,应用网上下载的照片,通过人脸识别的形式,15分钟内解锁了19台智能手机。 综合来看,银行业务的人脸识别技术存在如下三类危险。 第一,人脸识别被绕过危险。戴上眼镜、帽子、面具等假装伎俩,或者能够制作人皮高仿模型、将2D人脸照片3D建模、利用AI技术将动态照片变成动静照片等多种技术均,混同算法判断,骗过有效性不高的人脸识别算法和活体监测算法。 第二类,人脸信息被盗取冒用危险。通过各类公开或非法手段,收集、保留、盗取失常的人脸数据,而后通过各种形式进行非法冒用。 第三类,人脸识别零碎遭劫持篡改危险。近程入侵篡改人脸识别系统验证流程、信息、数据等,将后盾或前端的真数据替换为假数据,以实现虚伪人脸信息的通过。 人脸识别为什么会有危险?据顶象与中国信通院联结公布的《业务平安白皮书—数字业务危险与平安》显示,数字化业务中隐匿着大量安全隐患:在电商、领取、信贷、账户、交互、交易等状态的业务场景中,存在着各类等欺诈行为,这些欺诈行为日益专业化、产业化,且具备团伙性、复杂性、隐蔽性和传染性等特点。 以大规模牟利为目标网络黑灰产,相熟业务流程以及防护逻辑,可能纯熟使用自动化、智能化的新兴技术,一直开发和优化各类攻打工具。此前有媒体报道,大量社群和境外网站进行真人人脸识别视频的贩卖。“价高质优”的验证视频百元一套,动静软件将人脸照片制作成“动静视频”只有几元,以实现各类线上业务人脸识别的验证。 某银行储户资金被盗取不是个案,近两年来金融畛域屡次产生过通过人脸识别破绽盗取钱财的案件。2020年10月,四川警方查处一个上百人的欺骗团伙。该团伙购买大量人脸视频,借助“僵尸企业”“空壳公司”,为6000多人人包装公积金信息,而后向多家银行申请公积金贷款,最终带来10亿多元的坏账。 2021年,广州互联网法院通报了一起因为“刷脸”引发的借款纠纷。客户在遗失了身份证后,却被人冒用身份通过银行的“人脸识别”贷款。最终经司法笔迹鉴定,认为案涉客户签名并非自己签订,手机号码亦未曾注销在客户名下,由此驳回银行上诉。 如何防备人脸识别危险?人脸识别是一种技术核验,但不能作为惟一的伎俩。波及到业务的要害操作须要对身份证、手机号码、银行卡、操作行为、设施、环境等进行综合核验,甚至须要人工电话核实。 顶象业务平安专家示意,一方面,须要增强人脸识别零碎的精准度、预警性和安全性;另一方面,加强人脸识别从源头到利用的全链条辨认、预警、防护,晋升整体风控能力。 第一,晋升人脸识别零碎的精准度。人脸识别零碎须要增强空间域的、图像取证、生物频率、GAN伪影、生物信号、视声不统一以及视觉上不天然等检测,并通过模型和算法进步真伪判断。 第二,晋升人脸识别零碎的预警性。通过设施指纹多维度构建用户的设施画像,实时出现给以后设施的环境情况,疾速辨认可疑行为及高风险设施,帮忙风控系统疾速甄别操作者的真伪,及时预警账号被盗用危险。 第三,保障人脸识别零碎的安全性。防备人脸识别零碎和设施API接口被篡改劫持,保障输入成果、生成网络成果的真实性。同时,及时预警和拦挡设施和零碎端口、通信的异样,保障人脸数据存储以及传输的完整性、秘密,避免灌入虚伪、混同人脸信息或库内人脸信息被替换篡改。 顶象进攻云可能无效助力银行防备人脸识别危险,晋升金融风控能力,进一步保障储户和银行资金平安。 顶象进攻云保障人脸识别利用平安顶象进攻云基于多年实战经验和技术产品,领有丰盛的技术工具、数万个安全策略及数百个业务场景解决方案,具备情报、感知、剖析、策略、防护、处理的能力,提供模块化配置和弹性扩容,助企业疾速、高效、低成本构建自主可控的业务平安体系。其集成业务感知进攻平台、验证码、设施指纹和端加固等产品,以及业务威逼情报、云策略等服务。 其中,设施指纹反对安卓、iOS、H5、公众号、小程序,可无效侦测模拟器、刷机改机、ROOT越狱、劫持注入等危险。100%的唯一性、稳定性大于99.99%、响应工夫小于0.1秒、解体率小于1/10000。它采纳MongoDB分布式存储,反对海量数据状况下实时剖析数据,可能秒级构建出设施的残缺画像。 业务平安感知进攻平台(挪动版)通过对挪动端100+危险项及异样行为的剖析辨认,及时发现针对摄像头劫持、设施伪造等危险,并提供从危险辨认、预警处理、黑样本积淀的闭环治理。 顶象进攻云是国内首批通过中国信通院“业务平安能力要求”认证的产品。 法律法规护航人脸识别利用平安司法机构为人脸识别护航。2021年7月,最高法院公布《对于审理应用人脸识别技术解决个人信息相干民事案件适用法律若干问题的规定》。解释明确规定,在宾馆、商场、车站、机场、体育场馆、娱乐场所等经营场所、公共场所违反法律、行政法规的规定,应用人脸识别技术进行人脸验证、辨识或者剖析,该当认定属于侵害自然人人格权利的行为。 2022年两会上最高人民法院示意,最高法院针对一个具体问题专门出台一个司法解释是不多见的。司法标准“刷脸”,体现的是法院依法保护集体信息安全的显明态度,就是专门回应大家对人脸信息安全的担心,作出了相应的标准。 行业机构也在牵头制订利用规范。2021年4月7日,中国信息通信研究院云计算与大数据研究所倡导发动成立“可信人脸利用守护打算”。顶象等多家公司入选第二批“可信人脸利用守护打算”成员单位,将与各界通力合作,积极探索人脸利用治理与倒退的可信指引,助力人脸识别利用平安倒退,共建可信的人脸利用生态。 技术与监管双重发力,多重保障人脸识别利用平安。

July 12, 2022 · 1 min · jiezi

关于人脸识别:人脸信息被冒用贷款手机银行的人脸识别风险分析

手机银行是银行高效便捷的业务办理渠道。《2021中国数字金融调查报告》显示,2021年,集体手机银行用户达到20.5亿户,渗透率达85%,已成为银行业最重要的线上流量入口。 某区域银行的手机银行将业务嵌入到不同的生存场景中,让用户在生存场景中产生金融需要。疫情期间,在保障客户日常金融需要的同时,该区域银行手机银行提供了多种疫情相干金融、生存类服务,晋升用户应用频次和用户粘性。在大幅晋升用户便捷体验的同时,该手机银行却也遭逢到一起用户人脸信息被冒用骗取贷款的事件。 也就是不法分子收集、保留、盗取失常的人脸人像数据和敏感个人信息,而后仿冒被盗用申请贷款,骗取银行资金。 相似事件不是个案,近两年来屡次产生。2020年10月,四川警方查处一个上百人的欺骗团伙。该团伙购买大量人脸视频,借助“僵尸企业”“空壳公司”,为6000多人人包装公积金信息,而后向多家银行申请公积金贷款,最终带来10亿多元的坏账。 2021年,广州互联网法院通报了一起因为“刷脸”引发的借款纠纷。客户王兰(化名)在遗失了身份证后,却被人冒用身份通过银行的“人脸识别”贷款,导致王兰因逾期原告上了法庭。经司法笔迹鉴定,认为案涉客户签名并非王兰自己签订,手机号码亦未曾注销在王兰名下。最终,法院驳回银行全副诉讼请求。 人脸被冒用贷款的危险剖析人脸识别作为一种生物辨认技术,被宽泛使用于金融畛域,次要作用是实现在线身份认证,广泛应用在自助终端、柜台以及挪动端多个渠道上,已成为登录、确认、申请、批改等业务环节中重要的验证技术。 有媒体报道,大量社群和境外网站进行真人人脸识别视频的贩卖。“价高质优”的验证视频百元一套,动静软件将人脸照片制作成“动静视频”只有几元,以实现各类线上业务人脸识别的验证。此外,清华大学钻研人员已经在15分钟解锁了19个生疏智能手机。 被冒用贷款的问题呈现,次要源于人脸利用存在人脸信息被冒用、人脸信息遭盗用、人脸识别利用遭劫持篡改等若干危险。 仿冒登录。戴上眼镜、帽子、面具等假装伎俩,或者能够制作人皮高仿模型、将2D人脸照片3D建模、利用AI技术将动态照片变成动静照片等多种技术均,混同算法判断,骗过有效性不高的人脸识别算法和活体监测算法。 盗取冒用。通过各类公开或非法手段,收集、保留、盗取失常的人脸数据,而后通过各种形式进行非法冒用。 劫持篡改。近程入侵篡改人脸识别系统验证流程、信息、数据等,将后盾或前端的真数据替换为假数据,以实现虚伪人脸信息的通过。 三方面加强手机银行的安全性在人脸识别的公共服务上,须要在多方面增强防护,晋升整体平安能力。 第一,晋升人脸识别零碎的精准度。基于空间域的检测、图像取证的检测、生物频率、GAN伪影检测、基于生物信号的检测、视声不统一以及视觉上不天然等检测等措施,通过模型和算法进步真伪判断。 第二,保障人脸识别零碎的安全性。防备API接口被篡改劫持,保障输入成果、生成网络成果的实在;保障发现设施和零碎端口、通信的异样;及时预警,避免灌入虚伪人像、混同虚实人像、库内人像信息被篡改;保障人脸数据存储以及传输的完整性、机密性等。 第三,晋升人脸识别辨认的风控能力。人脸识别是一种技术核验,但不能作为惟一的伎俩。须要采纳身份证、手机号码、银行卡、操作行为、设施、环境等综合伎俩进行核验,甚至须要人工电话核实。通过平面的风控体系,加强人脸识别从源头到利用的全链条预警、拦挡、防护能力,晋升人脸识别利用的安全性。 顶象业务平安感知进攻平台基于威逼探针、流计算、机器学习等先进技术,集设施危险剖析、运行攻打辨认、异样行为检测、预警、防护处理为一体,可能实时发现摄像头遭劫持、设施伪造等歹意行为,无效防备人脸识别利用的各类危险。 通过网银、手机银行、微信银行、网贷App等非柜面渠道的惟一标识,顶象业务平安感知进攻平台可能及时发现设施指纹异样、模拟器检测、多开检测、注入、Hook检测等异样,无效分辨失常用户及黑灰产的设施特色,加强手机银行的危险感知能力。同时对手机银行做实时监测,进一步保障手机银行安全性,良好满足《挪动金融客户端应用软件平安治理标准》治理要求。 顶象业务平安感知进攻平台领有如下特点: 威逼可视化:针对环境危险、运行攻打,能够将辨认的危险标签展现在控制台,并反对按工夫查问危险趋势、危险对应的设施型号散布、零碎版本散布等维度数据。 威逼可追溯:黑灰产的每一步攻打数据,命中的进攻策略及处理,都能够在基于需要定制和回放,让所有行为有迹可查。 设施关联剖析:基于历史数据、关联剖析生成的设施画像,全面呈现出以后设施的所有历史申请,蕴含呈现过的危险标签、罕用地址、关联IP等状况。 多账户治理:满足多业务数据隔离需要,反对一级、二级等多级机构配置或下发不同策略。

April 19, 2022 · 1 min · jiezi

关于人脸识别:AI-加持实时互动|ZegoAvatar-⾯部表情随动技术解析

一、AI“卷”进实时互动2021年,元宇宙概念席卷寰球,国内各大厂减速赛道布局,通过元宇宙为不同的利用场景的相干内容生态进行赋能。针对“身份”、“沉迷感”、“低提早”、“随时随地”这四个元宇宙外围根底,ZEGO 即构科技基于互动智能的业务逻辑,提出并落地了 ZegoAvatar 解决方案,将 AI 视觉技术利用至虚构形象,实现了业务和技术的无缝连接。  图1:Avatar 产品 AI 能力矩阵 ZegoAvatar 根底能力包含:面部表情随动、语音驱动表情、AI 人脸特色辨认(AI 捏脸)、骨骼捏脸等,波及的 AI 技术点包含人脸检测、人脸跟踪、人脸关键点检测、头部姿势检测、3D人脸重建、AI 特色辨认等。 本文将重点针对 ZegoAvatar 中面部表情随动这一技术点进行解读。 二、ZegoAvatar 面部表情随动成果展现在技术分享前首先让咱们通过一组具体的数字和视频来看下 ZegoAvatar 的面部表情随动成果,咱们别离在配置从低到高四种不同安卓设施上进行理论推理开销测试,取 1000 次推理后果求均匀:  图2:测试数据 从上述的数据中能够看到,ZegoAvatar 在不同机型上均以极低的提早实现了实时推理的成果,在保障表情精准稳固的同时,为用户带来了晦涩极致的应用体验。可点击下方⬇️视频查看成果: https://mp.weixin.qq.com/s/Et... ZegoAvatar面部表情随动成果视频展现 三、面部表情随动技术计划解析面部表情捕获(Facial Expression Capture)广泛应用于电影、游戏、动漫制作等畛域,而目前的面部动作捕获依靠于相机或激光扫描仪将人脸转换为一系列参数数据,而后用于生成计算机图形、电影、游戏或实时化身的计算机动画。 与捕获由关节点形成、较为稳固的人体动作相比,面部表情更为轻微简单,因而对数据精度的要求也更高。当初支流的3D 面部表情捕获次要有基于相机阵列和基于构造光两种办法,存在拍摄难度大,设施老本高的问题。  图3:表情捕获示意图  图4:欧拉角示意图 ZegoAvatar 技术计划中的挪动端面部表情随动是指通过挪动端摄像头进行人脸检测以及跟踪,通过人脸地位、关键点信息定位出人脸在屏幕上的地位,并实时输入蕴含面部、舌头、眼球在内的 52 种根底面部表情维度的线性组合以及头部姿势的三个欧拉角,最初导入虚构形象进行实时渲染驱动。 目前 ZegoAvatar 面部表情随动在不同性能的硬件设施上均实现了低提早的落地成果,通过实时的虚实交互,为用户带来沉迷式的体验。本文将向大家具体解读 ZegoAvatar 的面部表情随动的算法整体架构以及如何在落地过程中做到面部表情随动成果的准确与天然。 ZegoAvatar 的挪动端面部表情随动的技术计划分为模型训练和部署推理两局部。 在训练过程,咱们设计了一个轻量化的全卷积神经网络,包含网络骨干(BackBone)和三个不同的工作分支(如图3)。 Backbone 是由规范卷积 + MobileNetV2 Block + MobileViT Block 组成(如图4);多个输入分支别离为:3D面部特色点定位、面部表情辨认、头部欧拉角姿势预计,其中不同的分支负责不同的工作。咱们通过多任务学习的思维和迁徙学习的技巧,给模型送入人脸特色和表情以及欧拉角标签,输入稳固的相干的映射关系。  图5:网络结构示意图 图6:网络骨干(Backbone)示意图 图7:训练和推理流程示意图 ...

April 15, 2022 · 1 min · jiezi

关于人脸识别:人脸识别的三类安全风险及四类防护思路

人脸识别技术是基于人面部特色数据进行身份辨认的一项生物特色辨认技术。随着大数据、人工智能、云计算、5G等技术迅猛发展,人脸识别技术取得了广泛应用空间。手机解锁、身份验证、下班打卡等,人脸识别技术在金融、医疗、安检、领取、娱乐等诸多畛域失去遍及,这为数字经济社会倒退和人们日常生活带来了新机遇。带来便捷的同时,各类危险隐患层出不穷。 2021年央视“3·15”晚会上,一起人脸识别事件引发社会宽泛谈论。某卫浴品牌多个门店在消费者不知情的状况下,利用摄像头违规窃取人脸数据。一旦顾客进入门店,就会被摄像头抓取并生成主动编号,顾客人脸信息被偷偷获取。 “换脸”、“偷脸”、“争脸”景象层出不穷,除了人脸识别技术本就存在的有余和缺点,还有商家对于人脸识别的滥用和不负责外,以及技术的滥 人脸识别面临的三类危险 顶象业务平安专家剖析,目前人脸识别危险次要分为仿冒、攻打、盗取等三类。 第一类,通过各类伎俩实现人脸信息的仿冒登录。 坑骗:戴上眼镜、帽子、面具等假装伎俩,通过检测形式断定为异样,因而能够混同算法判断,达到坑骗零碎的目标。 劫持:破解设施或零碎端口,通过数据包劫持,把通过交互活体检测的真人图像替换为攻打用的数字样本,达到坑骗后盾零碎算法的成果,使其做出误判。 第二类,通过对人脸识别零碎的攻打,实现人脸识别零碎的终止。 阻塞:DDoS流量攻击方式阻塞辨认与认证,使人脸识别零碎生效。 篡改:近程入侵篡改人脸识别系统验证流程、信息、数据等,使虚伪或有效人脸数据通过。认证, 劫持:通过劫持传输、验证、数据库等信息,将后盾或前端的真数据替换为假数据,以实现虚伪人脸信息的通过。 第三类,通过盗取人脸识别信息,实现人脸冒用。 通过各类公开或非法手段,收集、保留、盗取失常的人脸数据,而后非法进行冒用。 “护脸”须要监管与技术并行 倒退与平安并重,监管部门多措并举推动人脸平安利用。2021年7月,《最高人民法院对于审理应用人脸识别技术解决个人信息相干民事案件适用法律若干问题的规定》明确对公民的人脸识别数据提出爱护。各地区也都出台了相应的人脸识别措施,比方不得强制采取人脸识别信息等等。 为了标准人脸利用衰弱倒退,行业机构逐渐牵头引领规范制订。2021年4月7日,中国信息通信研究院云计算与大数据研究所倡导发动成立“可信人脸利用守护打算”,旨在通过规范制订、测试评估、行业自律等伎俩,增进行业和社会共识,促成产业衰弱倒退,为人脸识别技术和利用“正名”,促成产业衰弱倒退。 近日第二批“可信人脸利用守护打算”成员单位颁布,顶象等多家企业入选。顶象将与各界通力合作,积极探索人脸利用治理与倒退的可信指引,助力人脸识别利用平安倒退,共建可信的人脸利用生态。 技术上的“护脸”翻新也在不断涌现,目前来看分为四类。 第一类,晋升人脸数据多维性。源头数据采集更简单。应用3D多维人像采集,让人像更加平面多维,从而防止人脸遭仿冒。 第二类,晋升人脸识别精准度。通过模型和算法进步真伪判断;基于空间域的检测,例如图像取证的检测、生物频率,如GAN的伪影检测、基于生物信号的检测,视声不统一以及视觉上不天然等。 第三类,保障人脸识别零碎安全性。对人像辨认做二次验证;防备API接口被篡改劫持,保障输入成果、生成网络成果的实在、发现设施和零碎端口、通信的异样;及时预警,避免灌入虚伪人像、混同虚实人像、库内人像信息被篡改;保障人脸数据存储以及传输的完整性、机密性等。 第四类,晋升人脸识别利用的风控能力。通过全生命周的平安治理,加强人脸识别从源头到利用全链条的预警、拦挡、防护能力,晋升人脸识别利用的危险预警及平安防护能力。 以顶象近日拦挡发现的“考勤打卡神器”为例。该工具是破解了某保险公司的官网App,通过屏蔽摄像头影像采集、拦挡无线网络检测,并对GPS劫持,伪造虚伪的LBS地理位置。在进行相干设置后,代理人输出本人的工号、上传照片即实现“考勤打卡”。 顶象挪动态势感知进攻零碎基于威逼探针、流计算、机器学习等先进技术,集设施危险剖析、运行攻打辨认、异样行为检测、预警、防护处理为一体的被动平安进攻平台,可能实时发现摄像头遭劫持、设施伪造等歹意行为,无效防控虚伪考勤、人脸识别舞弊、打卡舞弊等危险,良好保障公司失常考勤秩序。 目前,顶象挪动态势感知进攻零碎已在多家保险公司利用。其中,在某保险公司省级分公司部署后,当月发现10000+名代理人通过劫持人脸信息进行虚伪考勤打卡,当月拦挡阻止超过15万次危险操作,为分公司挽回500万元的代理费用。 最初如果你感觉此文对你有一丁点帮忙,点个赞。或者能够退出我的开发交换群:1025263163互相学习,咱们会有业余的技术答疑解惑 如果你感觉这篇文章对你有点用的话,麻烦请给咱们的开源我的项目点点star:http://github.crmeb.net/u/defu不胜感激 ! PHP学习手册:https://doc.crmeb.com技术交换论坛:https://q.crmeb.com

March 22, 2022 · 1 min · jiezi

关于人脸识别:创新的力量-天翼云推动科技创新技术实践落地

4月23日,由国务院国资委新闻核心主办的小新书院读书会流动在北京机械工业出版社顺利举办。国务院国资委新闻核心主任杨景百、机械工业信息研究院院长、机械工业出版社社长李奇、中国企业联合会党委委员、常务副理事长于吉以及等泛滥央企负责人及专家学者汇聚一堂,以“翻新的力量”为主题,分享央企翻新与改革成绩。 在圆桌访谈过程中,天翼云科技有限公司副总经理广小明针对“企业如何综合使用翻新伎俩打造世界一流企业”的议题作了精彩分享。 广小明提出,现阶段,科技翻新的首要任务是围绕自主可控开展。对科技公司来说,技术创新是破除产业倒退窘境的突破口。天翼云作为一家科技翻新公司,致力于打造创新型企业,构建云网交融底座及数字化平台,开发自主可控的全栈云平台,继续推动数字化转型的过程。其次,技术创新的生命力体现在为社会一直发明价值的过程中,承当产业倒退的“倍增器”,同样作为翻新主体的企业在推动技术实际落地的同时,实现企业的社会价值。 据理解,作为国内当先的云服务商,天翼云始终以科技力量服务人民,一直施展价值作用,推动社会经济倒退。2020年疫情肆虐之际,天翼云凭借翻新技术的力量打响并打赢了“武汉市卫健委官网上云”“火神山、雷神山医院外围IT零碎上云”“方舱医院的AI阅片”三场“科技战疫”。在保障政抗疫信息及时、通明公布的同时,还建成我国第一座“云上医院”,通过“5G+云+AI”技术开发智能AI阅片零碎,大大缓解了医务人员的诊疗压力。 科技是国家强盛之基,翻新是民族提高之魂。企业不仅是市场的主体,也是科技翻新的主体,数字化时代,企业须要联合5G带来的“新速度”、大数据带来的“新视角”、物联网带来的“新模式”、强化翻新平台带来的“新共享”等,以翻新技术推动数智交融,打造科技翻新洼地,独特建设“数字中国”。

March 17, 2022 · 1 min · jiezi

关于人脸识别:融云通信周边能力上新啦一键-Get-美颜CDN-服务

阳春三月,春暖花开,正是约闺蜜吃吃下午茶聊聊八卦分享心事的好时节。关注【融云寰球互联网通信云】理解更多 说起来,下午茶的必备因素是什么?能够没有茶,也能够不是下午,但相对不能没有美颜。 如果不能线下团聚,直播连麦也是个不错的抉择。 融云直播 SDK,残缺封装了一对一、一对六、三宫格、四宫格、七宫格、九宫格等 7 种合流布局模式,无论是小姐妹的线上茶话会,还是培训、庄重探讨甚至线上相亲,多种热门连麦直播场景,都能够轻松实现。 当然,美颜仍然必不可少。 融云把直播场景用户感知最强烈的两个步骤——直播前筹备 ➡ 开启直播——封装成 API。 在第一步的筹备环节就能够配置曾经封装的根底美颜、贴纸等能力,进行视频流预处理;第二步即可开启视频直播。 在直播 SDK 中,融云不仅在外围的首帧、卡顿、提早、回声等体验方面做到了极致优化;暗藏所有直播流程实现逻辑,开发者只须要调用接口就能够实现业务,极大晋升开发效率,升高开发成本。 同时,SDK 以弱小的底层能力领有扩展性强,生态化好的劣势。 在非通信核心技术方面提供贴合市场和业务需要的 X 通信周边能力,满足开发者理论业务需要。 比方,直播业务中当根底美颜无奈满足需要时,可一键接入融云美颜 SDK,取得高阶美颜能力;当面对寰球业务对高并发和性价比有更多要求时,可抉择融云的 CDN 服务 美颜 SDK动静人脸识别,美颜美型一键接入开发者能够一键接入,无需额定适配即可领有高阶美颜能力: 动静人脸识别,一键美颜美型,匹配最 IN 滤镜、妆容;人脸识别关键点达 106 个,在逆光或暗光状况下也能无痕美颜;反对 Android、iOS 零碎,完满适配实时音视频 SDK;提供贴纸、特效等性能,加强 APP 趣味性,为主播提供更多与用户互动的工具。融云美颜 SDK 外围性能实时美颜实时调节美颜成果,反对多级调节,蕴含美白、磨皮、红润等。 极致美型利用人脸关键点检测技术,对五官进行丑化调整,蕴含大眼、瘦脸、瘦鼻等。 智能美妆基于人脸特色点和 AI 人像技术,实现对五官的美妆渲染,蕴含睫毛、唇彩等。 多彩滤镜通过接入滤镜 SDK,配合图像增强技术,打造浪漫、清爽、唯美等滤镜成果。 动静贴纸基于人脸识别和动静渲染技术,实现各种 2D 动静贴纸特效。 一键美颜可对面部全方位丑化,反对优雅、可恶、粗劣、天然、网红、脱俗等成果。 融云美颜 SDK 利用场景娱乐直播 社交软件 视频会议 在线教育 CDN寰球就近散发,直播性能更弱小从技术逻辑上看,直播要有限靠近线下实时沟通,也就是在高并发的状况下仍然实现低延时、高晦涩的交互。 对于发展寰球业务的直播利用来说,CDN 散发就十分重要了。CDN 由散布在世界各地的服务器组成,能够依据用户的地位将用户的拜访指向间隔最近的缓存服务器,缩小源服务器的负载。 面对寰球业务的高并发需要,开发者能够抉择接入融云 CDN 服务,晋升直播性能。 寰球笼罩:寰球节点资源 2800+,就近接入散发;实时响应用户申请,保障直播体验反对高并发:海量资源冗余,直播散发服务外围负载平衡零碎,可能全网流量进行智能调度,轻松应答并发拜访压力一体化视频解决:直播散发提供视频推拉流、存储、转码、播放等一体化的视频流解决服务高清低码:提供动静转码等服务,实现低码率状况下高清观影,保障用户体验同时升高 CDN 减速服务老本融云 CDN 服务外围性能急速直播将用户申请实时调度至最合适的 CDN 减速节点,放慢直播流散发服务,无效升高时延、升高卡顿比,晋升直播品质。 ...

March 8, 2022 · 1 min · jiezi

关于人脸识别:使用卷积神经网络进行实时面部表情检测

在社交互动中,面部表情在非语言交换中起着至关重要的作用。 心理学家保罗·埃克曼提出,全世界的人都有七种情绪表达方式:高兴、悲伤、诧异、恐怖、愤恨、讨厌和藐视。 建设更好的人机交互,例如通过图像检测人类情绪,可能是一项艰巨的工作。 面部表情对于社交互动很重要,并且在非语言人机交互方面施展着重要作用。本篇文章的指标是创立一个模型,该模型能够应用网络摄像头等一般设施辨认和分类一个人以后的情绪。 数据集应用的数据集是从 Kaggle 的 2013 年面部情感辨认挑战赛中收集的,连贯在文章最初。 数据由人脸的 48x48 像素灰度图像组成。并且曾经通过了主动对齐,也就是说在每张图像中占据大致相同的空间,并且基本上都是居中的。 咱们的工作是依据面部表情中显示的情绪将每张脸分为七类之一(0=愤恨,1=讨厌,2=恐怖,3=高兴,4=悲伤,5=诧异,6=中性) . 训练集蕴含 28,709 个示例,公共测试集蕴含 3,589 个示例。 数据预处理对数据集进行根本数据分析后,咱们能够看到数据存在类别不均衡问题,其中一类“讨厌”的图像数量很少,而其余情绪的图像数量更多。 为了解决这个类不均衡问题,依据它们在原始数据集中的呈现状况,为每个类增加了独自的权重。而后通过执行根本图像操作和深度学习办法(如 ImageDataGenerator)来加强图像数据,该办法通过实时数据加强生成批量图像数据。 Haar 级联是一种应用 Viola 和 Jones 提出的边缘或线检测特色的算法。在这里应用 Haar 级联分类器用于在咱们的图像数据集中执行人脸检测。 基线模型反对向量机 SVM 是一种监督学习算法,用于解决数据集上的分类、回归和异样值检测问题。它通过创立一个拆散数据点的超平面来实现。咱们反对向量机是通过将给定数据以 3:1 的比例拆分为训练和测试数据,而后将超参数 C 的值设置为 1000,将 gamma 设置为 0.01(由 GridSearchCV 发现)来实现的,核函数应用径向基函数或 RBF。咱们将模型拟合到训练数据上,而后在测试数据上测试模型。准确度约为 46%。 随机森林 随机森林是一种监督学习算法,可用于分类和回归问题。它应用称为预计器的决策树进行预测,并联合它们的后果来取得其后果。这里咱们应用了 250 个预计器,最大特色和最小样本叶别离设置为 0.5 和 3。应用大小 48x48 的图像,所有这些像素值都用作咱们模型的输出。在训练数据上拟合随机森林后,预测测试数据的类别,准确率为 45.62%。 咱们将它们两个作为基线模型,比照应用卷积神经网络的性能。 卷积神经网络在深度学习中,卷积神经网络(CNN 或 ConvNet)是最罕用于剖析视觉图像的一类人工神经网络。 CNN 次要用于剖析视觉图像。基本上,CNN 应用卷积的数学概念,该概念显示了一个函数在另一个函数上进行卷积时如何扭转另一个函数的形态。CNN是一个由每一层神经元组成的多层网络。当一个图像被输出到一个层时,它会通过卷积操作将后果输入给其余层。第一个卷积层通常提取基本特征,例如程度或对角边缘,随着咱们在层中进一步向下挪动,这些特色变得更加简单,咱们也能够辨认人脸。池化层缩小了卷积特色的空间大小,以缩小计算量。激活层负责增加激活函数。激活函数有助于决定在每一层上激活哪些神经元。最罕用的激活函数之一是 ReLu,因为它不会同时激活所有神经元。 这里应用模型实现由 26 层组成,包含 2 个全连贯层和卷积、池化、ReLu、BN、Dropout 和激活层。 ...

December 14, 2021 · 1 min · jiezi

关于人脸识别:小区人脸识别访问安全吗一起来看看吧

社区存在肯定水平的安全隐患,如产品销售员、发宣传单、陌生人、生疏车辆随便来往等,带来微小的安全隐患。传统的拜访控制系统通常应用门禁卡、指纹和明码。这些识别方法都有一个独特的特点,比方安全漏洞高,门禁卡容易忘记失落的危险,被复制的可能性也高。人们始终认为的指纹识别和门卡辨认是绝对平安。其实你能够在网上仍然能买到响应指纹封面和门卡钥匙的明码。 随着科学技术和人工智能技术的晋升,传统的门禁系统也失去了很大的改良。越来越多的小区抉择装置人脸识别门禁,对小区的平安起到至关重要的作用。那么人脸识别拜访平安吗?答案是必定的。 人脸识别零碎通常采纳最先进的人脸识别计算计划,并应用高速计算芯片作为人脸识别算法的计算平台。将人脸识别零碎利用于门禁时,只需在治理后盾增加居民的手机号、身份证和人脸图像即可。未在零碎中注销信息的人员无奈自在进出,无效避免陌生人随便进出,增强社区平安治理。它能够刷社区里固定一群人的脸,访客注册后也能够进出刷脸,或者通过身份比对。当用户进入辨认区域时,能够自动识别,零碎会疾速响应并与人脸数据库进行比对进行辨认。如果胜利,门会主动关上。居民能够自在进出,无需伸手插钥匙、输出明码、按指纹,实现智能化。 人脸识别门禁中应用的人脸识别技术采纳区域特征分析算法,交融计算机图像处理技术和生物特色辨认原理,利用计算机图像处理技术从视频中提取人像特色点,利用生物特色辨认原理即人脸特色模板剖析建设数学模型。利用建设的人脸特色模板和被测者的人脸图像进行特征分析,并依据剖析后果给出类似度值。这个值能够用来判断是否是同一个人。该零碎还能够辨认摄像头前的人是真人还是照片,避免用户伪造照片。 目前很多智慧社区抉择应用人脸识别门禁,之所以人脸识别门禁能在短时间内被市场承受,次要是因为人脸识别门禁系统具备存储空间大、活体辨认、红外双目检测、防拍照、防视频等长处。除了人脸识别门禁,它甚至能够进行人脸识别生产、人脸识别考勤等场景,能够广泛应用于社区、写字楼、办公室、景区等。人脸识别门禁有本人的平台加外围算法,反对考勤和访客治理。领有自主知识产权的软件平台,集成了离线人脸识别、口罩辨认、证人验证、刷卡开门、云对讲呼叫等性能。在日常利用中,能够实现门禁、考勤、访客等身份认证的利用,为人们的生存和工作提供了便当。人脸识别零碎容许业主在没有任何辨认设施的状况下自在进出,而陌生人不能随便进入,大大提高了小区业主的安全性,因而人脸识别门禁系统越来越受欢迎。 商城:http://www.xmjisujia.cn 公众号:极速佳

November 26, 2021 · 1 min · jiezi

关于人脸识别:千呼万唤web人脸识别登录完整版来了这样式我爱了

大家好,我是小富~ 在我最开始写文章的时候已经写过一篇文章 基于 Java 实现的人脸识别性能,因为刚开始码字不晓得写点什么,就简略弄了个人脸识别的Demo。 但让我没想到的是,在过来的一年里有好多好多粉丝加我好友征询这个小demo,因为里边有点小bug,导致一些老手敌人不能胜利启动。 从此我就开启不厌其烦的解答各种疑难,不过我精力毕竟无限,最初切实答复不过去,罗唆弄了个群粉丝相互分享教训。 问题大面积呈现的时候我就想过再出一个完整版的demo,可家里工作一大堆事搞得一点精力都没有,始终拖到了当初,正好当初把这个人脸识别登录性能用在了本人的我的项目上,借此机会分享进去了,这次尽可能不给大家留(埋)bug 哈哈哈 。 具体操作之前先看下成品的成果,线上预览地址:https://fire100.top,这里大家能够释怀,不会收集面部图片,只是提取了面部特色,并没有上传云端。下边咱们来做个演示看看成果,辨认速度和成功率还是不错的。 性能流程整个性能的逻辑很简略,前端调起摄像头,辨认到人脸后拍照上传到后盾,后端SDK辨认出图片中的人脸特色后,与数据库内的用户人脸特色做比对,比对胜利(类似度在0.8~1之间即算同一个人)登录,如辨认到人脸但数据库内未比对胜利则视为新用户注册。 留神:如果要在线上利用,必须要应用https能力调起摄像头,本地测试没有限度。 https://p3-juejin.byteimg.com... 申请SDK启动我的项目之前先做一点筹备工作,因为应用的是三方的人脸识别SDK,所以要先在平台申请一个账号,而后在下载对应版本的SDK。 SDK地址 可能会有人抬杠为啥你不本人写个人脸识别,别问,问就是不会! 目前反对Linux、Windows、IOS、Android版本,每个实名认证的账号能够激活100台设施,换句话说就是同一个账号申请的SDK能够在100个设施上运行,个别状况下够用了。 下载的SDK包目录构造中libs最为重要,samplecode里有示例代码,doc有API文档。咱们须要的是libs里边的arcsoft-sdk-face-3.0.0.0.jar、和三个对应平台的引擎文件.dll或者.so后缀的文件。 我的项目配置我的项目自身是springboot + vue 前后端拆散的,但为了小伙伴们开箱即用,我把这个性能前后端整合在一起,再用个 jpa做长久化,表也不必本人建了,给大家省点工夫。 应用SDK的时候遇到过一点小坑,所以下边说的具体一点 首先在springboot启动类所在我的项目根目录下创立一个lib目录,将SDK中解压出的arcsoft-sdk-face-3.0.0.0.jar放进去,pom.xml文件中引入这个 Jar。 <dependency> <groupId>com.arcsoft.face</groupId> <artifactId>arcsoft-sdk-face</artifactId> <version>3.0.0.0</version> <scope>system</scope> <systemPath>${basedir}/lib/arcsoft-sdk-face-3.0.0.0.jar</systemPath></dependency>maven打包配置要特地留神一点,肯定要加上includeSystemScope,这样 maven 打包时会将内部引入的jar包(比方在根目录下或resource文件下新加内部jar包)打包到我的项目jar中,服务器上我的项目能力运行。 不加此配置,本地能够运行,因为本地能够再lib下找到内部包,然而服务器上jar中是没有的。 <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring-boot.version}</version> <configuration> <includeSystemScope>true</includeSystemScope> <fork>true</fork> <mainClass>com.firebook.FireBookApplication</mainClass> <skip>false</skip> </configuration></plugin>application.yml 文件的配置更简略,搞个数据库寄存人脸特色数据,填写申请SDK时失去的appId 和 sdkKey,以及 path 为寄存引擎文件.dll或者.so后缀的文件门路。 spring: datasource:# type: com.zaxxer.hikari.HikariDataSource driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://127.0.0.1:3306/face?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai username: root password: 123456# 人脸识别-windowsface: appId: #********************* sdkKey: #********************* path: D://face配置好这些间接执行FireControllerApplication就能够了,拜访:127.0.0.1:8081/login/face。 ...

November 24, 2021 · 1 min · jiezi

关于人脸识别:人生金句50

1.不要艳羡任何人,想要的本人去争取。 2.月亮不会奔向你,但我会,不远万里的那种。 3.放弃好身材让本人更丑陋永远重要。 4.邀一夜星河,去你梦里做客。 5.想陪你,在雪山上捞月亮,张网捕星光,摘一缕清风下酒喝一碗旧时光。 6.天台一场雨后,烟花布满夜空,你看,世间究竟值得。 7.对你好不代表你就是非凡的,换下一个待遇可能和你一样。 8.长不过执念,短不过善变。 9.人要先感到幸福,能力看到玫瑰。 10.苏醒温顺知进退致力上进且优良。 11.无需畏惧光明,但你要成为光。 12.温顺半两,从容毕生。 13.该留下的人,总会始终在的。 14.人生十有八九不如意,但总会有一点小欢喜。 15.无论你在哪里,吹过我的风,都在替我拥抱你。 16.彻悟后,便去水中捞月。沿途花事轻薄,谎言香艳。 17.你携缓缓月色而来,而雪也好似温顺洋溢。 18.春风不识路,此身在何处。 19.时光的沙漏里,细沙流走的是时光。淡淡檀香里,袅袅燃尽的是时光。 20.比加油这个词再和煦一点的就是,无论最初的后果好坏,记得我始终都在。 21.愿大风刮过,吹散十里桃花。 22.生存有时会呈现一个大洞,咱们能够只看甜的局部。 23.笑一笑就能过来的事何必闹得人尽皆知。 24.你携缓缓月色而来,而雪也好似温顺洋溢。 25.鲸落于海,星沉于洼,风隐于密林,蝉鸣漏进夏至,想让世间所有温顺住进你眼里。 26.一个人时跋山涉水,两个人时穿过四季 27.与人来往要有底线,值得的真心相待不辜负,不值得的一笑而过不再多说。 28.步履一双,踏遍山河,心有明月,山河明媚。 29.与其拼了命也要出类拔萃,不如努把力让本人来到那群鸡。 30.不要没精打采了,显矮。 31.不负时光、不负本人、不负被爱。 32.我会长大的,我的爱也会。 33.总之岁月漫长,然而值得期待。 34.极致的爱意会消融暴戾和不安。 35.想和你在雨天喝黄酒。酒过三巡,杯底话梅要留给你。 36.愿大风刮过,吹散十里桃花。 37.酒入豪肠,七分酿成月光,残余三分啸成剑气袖口一吐,便是半个盛唐。 38.五迷三道的街灯,四下无人的夜,城市在匀称呼吸,越不过秋水界,我坐在石凳上想你,天空没有星和月。 39.日落跌进迢迢星野,世间忽晚,山河已秋。 40.想陪你,在雪山上捞月亮,张网捕星光,摘一缕清风下酒喝一碗旧时光。 41.天台一场雨后,烟花布满夜空,你看,世间究竟值得。 42.但凡过往,皆为序章。 43.坏的别去想,好的暗自致力。 44.我没有太多的货色能够给你,然而如果你拍板,我就是你的。 45.没关系,天空越黑,星星越亮。 46.你买得起充电分钟的手机,却找不到通话两小时的人。 47.你期待着来日方长,却遗记了世态炎凉。 48.缓缓了解世界,缓缓更新本人,一路人生,要去开心,要去期待,要去酷爱。 49.我来到这个世界,为了看看太阳和蓝色的地平线。 50.青春太好,好到你无论怎么过都觉浪掷,回头一看,都要生悔。

November 21, 2021 · 1 min · jiezi

关于人脸识别:人脸识别主板能应用哪些产品设备

在市场上看到很各种各样的人脸识别主板,有些是CPU不一样,有是接口不一样,比方双赞主板SZ3391。 双赞主板SZ3391 基于 RK3399 六核芯片平台,双 Cortex-A72 大核+四 Cortex-A53 小核,GPU 应用 Mali-T860, 芯片性能强。板载有 LVDS、EDP、HDMI 显示输入接口,内置通用背光板接口及屏电压跳线,兼容更多 品种的显示屏,反对双屏异显性能。板载千兆以太网,WIFI,Mini-PCIE 接口及 SIM 卡座,可接 3G/4G 通信模块。板载 2 路串口,4 路 GPIO,6 路 USB,不便连贯各种工业设施。反对 Android/Linux 零碎, 软件反对欠缺,适宜企业开发高清显示的商显广告机、自助售货机、教育终端、POS 收银机、人脸识别等。 双赞主板SZ3391 那么,人脸识别主板有2 个 USB3.0,4 个 USB2.0 口,2 个可选 TTL/RS232,2 个 I2C 接口,4 个 GPIO 扩大口,能利用哪些产品设施呢?双赞工控给大家分享一下! 一、 门禁系统 受平安爱护的地区能够通过人脸识别辨识试图进入者的身份。人脸识别零碎可用于企业、住宅平安和治理。如人脸识别门禁考勤零碎,人脸识别防盗门等。 二、刷脸领取 顾客不必带现金、银行卡甚至手机,只有在刷脸领取收银机前刷一下脸就能实现领取,不必找续领钱,不怕收到假币,更不怕没带手机没网络,刷脸领取只需几秒钟就能搞定,在人流密集的商业街上应用刷脸领取收银机,放慢了收银领取速度,让生产更晦涩顺心。 三、物证辨认 如电子护照及身份证。这或者是将来规模利用。在国内民航组织已确定,从 2010年 4月 1日起,其 118个成员国家和地区,必须应用机读护照,人脸识别技术是首推识别模式,该规定曾经成为国际标准。 起源:双赞科技, 转载请标注上起源!

October 21, 2021 · 1 min · jiezi

关于人脸识别:DATA5100

DATA5100: Data Mining: R ProgrammingShort Project 1 Scenario The only data researcher/chemical analyst has resigned at the Blane Research Company. Prior to this person resigning, the wine dataset results from a chemical analysis of wines grown in the same region in Italy but derived from three different cultivars was under analysis for research recommendations for local growers in the same region. The analysis determined the quantities of 14 constituents found in each of the three types of wines. ...

October 6, 2021 · 2 min · jiezi

关于人脸识别:双赞的一体机主板能应用到哪些行业

在公共场所上都看到很多一体机的产品,比方:触控一体机、金融一体机、触摸屏一体机、互动一体机、教育一体机、门禁一体机、触摸查问一体机、广告一体机、教学一体机、人脸识别一体机、工业一体机、会议一体机、游戏一体机等等。不同行业的一体机,所需要的性能也不同,因而主板的需要也不一样!双赞的一体机主板能利用到哪些行业?双赞工控给大家剖析一下! 一、广告一体机 广告一体机是利用规范液晶显示器、液晶电视机,通过联网和多媒体系统管制等形式实现信息显示和视频广告播放的新一代智能设施。广告一体机性能有外触摸技术,可任意切割画面,同时播放视频、图片、文字,互不烦扰、色调丰盛,亮丽,可双屏展现,达到最佳广告宣传成果,反对中英文滚动字幕,可选多种显示模式。双赞安卓主板SZ3280基于rk3288处理器,Mail-T764 GPU,播放视频,图片很不错的。反对(LVDS+EDP,HDMI+EDP,HDMI+LVDS)双屏同显/异显多种显示模式! 双赞安卓主板SZ3280 二、教学一体机 教学一体机将触控技术、智能化办公教学软件、多媒体网络通信技术、高清平板显示技术等多项技术综合于一体,整合了投影仪、投影幕布、电子白板、电脑(可选项)、电视、触摸屏等多种设施于一体的多功能互动式教学设备。需要实现互动教学、书写、批注、对实物摄像显示、文本辨认、外接VGA、播放多媒体音频和视频等性能!双赞安卓主板SZ328G基于rk3288处理器,Mail-T764 GPU,播放视频,图片很不错的。反对2.4WIFI,反对4G模块,反对VGA+HDMI显示接口,双屏同显/异显/拼接。 双赞安卓主板SZ328G 三、人脸识别一体机 人脸识别一体机基于高性能的硬件配置,适配多种人脸识别算法,领有弱小的人脸识别性能,反对多种识别模式,高效响应检测速度,并配套欠缺的后盾管理软件,可间接利用到刷脸领取、门禁、考勤等各种我的项目中,缩减研产工夫与老本。需要实现性能有反对身份证、IC卡、二维码、条形码疾速辨认,内置双声道喇叭,实现语音播报、语音揭示;采纳六核64位“服务器级”处理器RK3399,芯片性能强悍,主频高达1.8GHz,集成四核Mali-T860 GPU,反对多格局视频编解码,解决性能更加杰出。双赞安卓主板SZ3390基于rk3399 六核处理器,主频高达2.0GHz,四核ARMMali-T860 GPU,板载4R/3Wx2功放(4R/10Wx2功放),左右声道输入等等 双赞安卓主板SZ3390 四、工业一体机 工业一体机是业余用在工业上的计算机,它的形成和性能跟咱们一般的商业机差不多,然而工业一体机更重视在工业环境应用中机器的牢靠和稳定性, 要求有低功耗处理器,规范VGA,音频输入,RS232串口,USB输入,网络唤醒,上电自启等等。双赞安卓主板有基于rk3288,rk3128,rk3399,Px30等处理器开发的,都是低耗处理器,规范VGA,音频输入,RS232串口,USB输入,网络唤醒,上电自启等这些都有! 双赞的一体机主板利用的行业还有很多,包含商显,教育,安防,自助,游戏,工业等等行业,能够按需要定制开发。前面还有很多话题分享的! 起源:双赞科技, 转载请标注上起源!

September 16, 2021 · 1 min · jiezi

关于人脸识别:如何选择收银机主板

什么是收银机?其实收银机就相当是一台一体式电脑,内部结构有主板、CPU、内存,存储还有显示屏。双赞主板利用的收银机在超市、商场、医院、酒店、景区、车站等其它公共服务场合畛域都能看到。主板的性能,扩大,稳定性等因素都间接影响到收银机的工作效率。那么如何抉择收银机主板?双赞工控来剖析一下! 一、收银机的组成 收银机般是由扫描器、电脑主机、钱箱、键盘、打印机、顾客显示屏、电脑显示屏、刷卡器等级成。 二、收银机的性能 依据习惯性、方便性,收银机的性能有搁置商品、扫描商品、电脑系统、搁置营业款和备用金、手输条码及其它操作、打印电脑小票、不便顾客看到本人所购商品的价格、收银员核实商品材料与电脑显示材料是否相符。 三、收银机主板CPU的要求 CPU是收银机中的次要热源,如果温度过高,散热不良,兴许造成收银机死机。因此应筛选低功耗的CPU。比方:rk3288,rk3128,rk3399,Px30等这些CPU都是低性能的,是收银机主板的较好的抉择。双赞主板都应用这些CPU来开发。 四、收银机主板的接口 收银机主板接口大多数有多个串口,一个或两个并口、钱箱口、以太网口、EDP、多USB口、双屏异显等。比方,双赞主板,板载千兆以太网,2.4Gwifi/BT4.0,有6个com,1个Debug,8个USB2.0,反对LVDS+EDP+HDMI显示接口,双屏同显或异显。 双赞安卓主板SZ3281 先要理解收银机的特点和要求去抉择主板的。双赞主板还有很多型号都适宜收银机利用的。抉择好的主板,收银机的工作效率也会进步。 起源:双赞科技, 转载请标注上起源!

September 11, 2021 · 1 min · jiezi

关于人脸识别:安卓工控主板双网口有什么用途

双网口就是个别你能看到的就是两个网卡接口接网线的(网卡芯片 个别是集成在主板上),在操作系统外面能够看到的是两块网卡,你能够通过接入不同的线路设置不同的IP以达到服务器多IP拜访或者其余成果的性能。这么说,双网口主板对于普通用户来说在一般上网利用来说必定是没有什么用处,然而如果用户要搭建服务器的话就齐全不一样了。咱们能够应用其中一个网口连贯外网,而另一个网口能够连贯交换机或者内网网络。最初,再将两个网卡桥接,就可能搭建一个简略的家用级服务器。当初双赞工控跟大家看看安卓工控主板双网口有什么用处?一、双网口工控主机以前的工控机绝大多数都是趋向于单网口的工控机,然而现今越来越多的工控机须要有更多的性能,单网口在很多的性能中处于弱势,曾经不能满足客户的需要。所以双赞科技研发了一款双网口的工控主机。双赞SZ328A工控主机基于 Rockchip RK3288 芯片平台,四核 ARM Cortex-A17 核,主频最高达 1.8GHz, Mali-T764 GPU,芯片性能优异。板载有 VGA、HDMI 显示输入接口,反对双屏异显性能。板载 2 路百兆 以太网,WIFI/BT4.2,Mini-PCIE 接口及 SIM 座,可接 4G 通信模块。板载 2 路 RS485,8 路 RS232,8 路 GPIO,6 路 USB,不便连贯各种工业设施。反对 Android\Linux 零碎,软件反对欠缺,适宜企业开发 各类智能终端产品,可升高研发门槛,缩短产品研发周期。双赞SZ328A安卓主板工控主机 二、双网口软路由器软路由器是指利用主机或服务器配合软件造成路由解决方案,次要靠软件的设置,达成路由器的性能;而硬路由则是以特有的硬设备,包含处理器、电源供给、嵌入式软件,提供设定的路由器性能。 软路由器只能工作于以太网络,实现局域网之间的互联。硬件路由器领有丰盛的接口类型,因而实用于各种类型的网络,既可利用于局域网的互联,也可用于广域网和Internet互联。 三、 双网口录像机企业内网和监控网连贯、冗余链路保障监控稳固等等都须要双网口录像机,它有几个工作模式。1、多址设定两张网卡参数互相独立,网卡独立工作。2、容错模式两张网卡应用雷同的IP 地址,当一块网卡的网络呈现故障时,零碎启用备份网卡来保证系统的网络工作失常。3、 端口聚合两张网卡应用雷同的IP 地址,将录像机的两个网口汇聚在一起造成一个逻辑上的物理端口,聚合后能够减少带宽;同时,两个网口之间彼此动静备份,进步连贯可靠性。 安卓工控主板双网口的用处还有很多的,都是轻易生存需要的扭转,用处也不一样。目前也有很多需要是双网口以上的主板,前面再分享了。 起源:双赞科技, 转载请标注上起源!

September 7, 2021 · 1 min · jiezi

关于人脸识别:基于Facenet下蒙面人脸识别的实践

写在后面本文是对Github我的项目Masked-Face-Recognition-using-Facenet的实际。 实际步骤一、收集图像下载并解压Masked-Face-Recognition-using-Facenet我的项目。收集图片。这些图片的要求如下: A.非蒙面人脸图像B.带眼镜或护目镜的非蒙面人脸图像C.用任何类型的口罩(如N-95、布或内科口罩)蒙面D.用任何类型的口罩如N-95、布或内科口罩以及眼镜或护目镜遮住脸。E.用手帕或任何布或围巾遮住脸。F.戴眼镜或护目镜时,用手帕或任何布或围巾遮住脸。新建dataset文件夹。在dataset文件夹中新建若干文件夹,这些文件夹以你要辨认的人名来命名。在这些文件夹中放入用户口罩图片。目录格局如图所示: 你也能够不命名为dataset,批改embeddings_generator.py的base_dir变量即可(见下)。 二、生成embeddings关上谷歌硬盘,关上model文件夹,点击右键下载facenet_keras.h5。 谷歌硬盘不须要科/学/上/网,这里提供一个谷歌拜访助手:google-access-helper2021,2021/9/7亲测“红”可用。下载结束后,将facenet_keras.h5重命名为facenet.h5并放到该目录下。 你也能够不命名为facenet.h5,批改embeddings_generator.py的第20行model_emb变量即可: #批改前:model_emb=load_model('facenet.h5')#批改后:model_emb=load_model('facenet_keras.h5')或model_emb=load_model('下载的h5文件的相应门路')关上embeddings_generator.py这一文件,批改第6行为你的数据集目录。 如果你将图片放在dataset\人名目录下,则批改为base_dir=r'dataset'即可。 例如,我将人脸照片放在\Masked-Face-Recognition-using-Facenet-main\dataset\zsq这一文件夹中,则我批改第6行为: #批改前:base_dir=r'Location to the direcotory that contain directories with images of persons to be trained.'#批改后base_dir=r'dataset'在命令行应用如下命令装置MTCNN包: pip install mtcnn运行embeddings_generator.py。如果产生以下报错可批改程序: 如果报错 File "E:\Masked-Face-Recognition-using-Facenet-main\Masked-Face-Recognition-using-Facenet-main\embeddings_generator.py", line 50, in loady.append(img.split('/')[-2])IndexError: list index out of range则能够将y.append(img.split('/')[-2])批改为: #批改前:y.append(img.split('/')[-2])#批改后y.append(img.split('\\')[-2])如果报错 File "E:\Masked-Face-Recognition-using-Facenet-main\Masked-Face-Recognition-using-Facenet-main\embeddings_generator.py", line 72, in <module>trainx_embed=load_embeddings(trainx_pix)NameError: name 'trainx_pix' is not defined则能够将trainx_embed=load_embeddings(trainx_pix)批改为: #批改前:trainx_embed=load_embeddings(trainx_pix)#批改后trainx_embed=load_embeddings(trainx)运行embeddings_generator.py。运行结束如图: 三、人脸识别在cmd命令行应用如下命令装置streamlit包: pip install streamlit如果太慢,也可参考streamlit装置踩坑应用如下命令: pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com streamlit装置实现后,在命令行应用streamlit hello命令进行测试,在Email:处按回车即可。如果呈现下图则streamlit装置胜利:CTRL+C退出测试。 在该我的项目文件的目录中关上cmd命令行,执行以下命令: streamlit run face_recognizer.py执行命令后,浏览器会主动关上http://localhost:8501/这一Streamlit我的项目。 期待若干秒、网页加载结束后,点击Browse files能够上传你要辨认的图片:上传完毕后,期待若干秒,呈现辨认的图片:参考Masked-Face-Recognition-using-Facenetgoogle-access-helper2021streamlit装置踩坑 ...

September 7, 2021 · 1 min · jiezi

关于人脸识别:安卓工控主板通信接口有哪些呢

看到双赞安卓主板利用设施网络系统和数据通信零碎实现数据的端到端传输。这些数据则是能够用来表白传统媒体模式的信息,如声音、图像、动画等。这些传输的端点,咱们能够说是通信接口。通信接口也指的是中央处理器和规范通信子系统之间的接口。那么,安卓工控主板通信接口有哪些呢?当初,双赞工控给大家分享安卓工控主板通信接口有UART,RS232,RS485、RJ45等等,及它们的特点作用。 一、UART接口 通用异步收发传输器,通常称作UART。UART作为异步 串口通信协议 的一种,工作原理是将传输数据的每个字符一位接一位地传输。它将要传输的材料在串行通信与并行通信之间加以转换。作为把并行输出信号转成串行输入信号的芯片,UART通常被集成于其余通信接口的连贯上。UART是一种通用串行数据总线,用于异步通信。该总线双向通信,能够实现全双工传输和接管。在嵌入式设计中,UART用于主机与辅助设施通信。 在发送数据信号的时候,会同时送出一根同步时钟信号, 用来同步发送方和接管方的数据采样频率。同步通信时,信号线1是一根同步时钟信号线,以固定的频率进行电平的切换,其频率周期为t,在每个电平的回升沿之后进行对同步送出的数据信号线2进行采样(高电平代表1,低电平代表0),依据采样数据电平高下获得输入数据信息。如果单方没有同步时钟的话,那么接管方就不晓得采样周期,也就不能失常的获得数据信息。 在异步通信技术中,数据发送方和数据接管方没有同步时钟,只有数据信号线,只不过发送端和接收端会依照协商好的协定(固定频率)来进行数据采样。数据发送方以每秒钟57600bits的速度发送数据,接管方也以57600bits的速度去接收数据,这样就能够保证数据的无效和正确。通常异步通信中应用波特率(Baud-Rate)来规定单方传输速度,其单位为bps(bits per second每秒传输位数)。 串行通信好比是一列横队,每个数据元素顺次纵向排列。传输时一个比特一个比特的串行传输,每个时钟周期传输一个比特,这种传输方式绝对比较简单,速度较慢,然而应用总线数较少,通常一根接管线,一根发送线即可实现串行通信。它的毛病是要减少额定的数据来管制一个数据帧的开始和完结。 并行通信好比一排横队,齐头并进同时传输。这种通信形式每个时钟周期传输的数据量和其总线宽度成正比,然而实现较为简单。UART通信采纳的是串行形式进行通信的。双赞安卓工控主板 二、RS232接口 RS232接口是罕用的串行通信接口规范之一,因为RS232接口标准呈现较早,不免有不足之处,次要有以下四点: (1)接口的信号电平值较高,易损坏接口电路的芯片。RS232接口任何一条信号线的电压均为负逻辑 关系。与TTL电平不兼容故需应用电平转换电路方能与TTL电路连贯。 (2)传输速率较低,在异步传输时,比特率为20Kbps;因而在51CPLD开发板中,综合程序波特率只能采纳19200,也是这个起因。 (3)接口应用一根信号线和一根信号返回线而形成共地的传输模式,这种共地传输容易产生共模烦扰,所以抗噪声烦扰性弱。 (4)传输间隔无限,最大传输间隔标准值为50英尺,实际上也只能用在15米左右。 三、RS485接口 在工业管制场合,RS485总线因其接口简略,组网不便,传输距离远等特点而失去广泛应用。次要有以下四点: RS485的电气个性:采纳差分信号正逻辑,逻辑“1”以两线间的电压差为+(2~6)V示意;逻辑”0“以两线间的电压差为-(2~6)V示意。接口信号电平比RS-232-C升高了,就不易损坏接口电路的芯片, 且该电平与TTL电平兼容,可不便与TTL电路连贯。RS485的数据最高传输速率为10Mbps。RS485接口是采纳均衡驱动器和差分接收器的组合,抗共模干扰能力加强,即抗噪声烦扰性好。RS485最大的通信间隔约为1219m,最大传输速率为10Mbps,传输速率与传输间隔成反比,在100KbpS的传输速率下,才能够达到最大的通信间隔,如果需传输更长的间隔,须要加485中继器。RS485总线个别最大反对32个节点,如果应用特制的485芯片,能够达到128个或者256个节点,最大的能够反对到400个节点。四、RJ45接口 RJ45接口通常用于数据通信传输,最常见的利用为网卡接口。J45接口是罕用的以太网接口,反对10兆和100兆自适应的网络连接速度,常见的RJ45接口有两类:用于以太网网卡、路由器以太网接口等的DTE类型,还有用于交换机等的DCE类型。 DTE咱们能够称做“数据终端设施”,DCE咱们能够称做“数据通信设施”。从某种意义来说,DTE设施称为“被动通信设施”,DCE设施称为“被动通信设施”。当两个类型一样的设施应用RJ45接口连贯通信时,必须应用穿插线连贯。 起源:双赞科技, 转载请标注上起源!

August 25, 2021 · 1 min · jiezi

关于人脸识别:百度大脑FaceID人脸识别模型量化技术确保算法精度无损加速一倍

随着FaceID人脸识别技术在手机、IoT等设施的遍及,受能耗和设施体积的限度,端上硬件的计算性能和存储能力绝对较弱,这给端上人脸识别带来了新的挑战——须要更小更快更强的模型。 为了实现FaceID人脸识别技术在挪动端上更快更准的运行,量化就成为一个重要伎俩。量化简略来说,就是用更低比特数据代替原浮点数据,已达到放大模型的过程。其最外围的挑战,是如何在缩小模型数据位宽的同时,保障人脸识别的准确率。为了解决人脸识别速度和精度的均衡问题,就须要思考整个人脸识别过程中的诸多因素,接下来顺次论述人脸模型量化的益处、应用传统量化面临的问题、百度FaceID人脸识别模型量化技术/量化收益、以及对不同芯片的反对状况等。 一、 人脸模型量化的益处\人脸模型量化,是将以往用32/64bit表白的浮点数,用8/16bit甚至1bit、2bit等占用较少内存空间的模式进行存储。量化之后的益处是: 缩小模型体积。升高模型存储空间需要,使模型更容易在端上部署。压缩老本。升高端设施内存带宽,及数据拜访功耗,使得设施运维老本升高。减速计算。针对反对SIMD(单指令流多数据流)的设施,以128-bit 寄存器为例,单个指令能够同时运算 4个32位单精度浮点,或8个16 位整型,亦或16个8位整型。显然8位整型数在 SIMD 的加持下,运算速率要更快。在大部分ARM芯片上能够实现40%到一倍的减速。二、 人脸模型应用传统量化面临的问题:精度受损\传统的人脸识别模型量化映射形式,是将32bit浮点数转换成8bit整数,转换过程分为三种形式: 非饱和形式:将模型中浮点数正负绝对值的最大值映射到整数的最大最小值。饱和形式:先计算模型中浮点数的阈值,而后将浮点数的正负阈值映射到整数的最大最小值。仿射形式:将模型中浮点数的最大最小值映射到整数的最大最小值。 图片说明:红色代表非饱和形式,黄色代表饱和形式,绿色代表仿射形式 那么,应用传统的量化形式,对人脸识别模型进行量化时,无论哪种映射形式,都会受到离群点、float参数散布不平均的影响,造成量化后辨认精度损失减少。如图,因为左侧的离群点,使得量化的范畴更大,让量化后的右侧数值点变的适度密集,增大了量化损失。 三、 百度大脑FaceID人脸识别模型量化原理\针对人脸识别模型量化过程中的精度损失状况,百度FaceID团队通过对量化技术的钻研总结,发现模型量化次要包含两个局部,一是对权重Weight量化,一是针对激活值Activation量化。同时对两局部进行量化,能力取得最大的计算效率收益。 针对模型权重Weight量化,百度FaceID人脸识别技术钻研人员在做模型训练的时候,退出了网络正则化等伎俩,实现了让权重散布更紧凑,缩小了离群点、不均匀分布等状况的产生。 针对激活值Activation量化,百度钻研人员采纳了一种全新的量化办法,在量化激活值之前,去掉一些离群点来升高模型量化带来的精度损失。百度提出截断式的激活函数,该截断的上界,即 是可学习的参数,这保障了每层可能通过训练学习到不一样的量化范畴,最大水平升高量化带来的舍入误差。 如上图,百度FaceID人脸识别模型的量化的办法是,一直裁剪激活值范畴,使得激活值散布收窄,从而升高量化映射损失。具体量化公式如下: 通过对激活数值做裁剪,从而缩小激活散布中的离群点,使量化模型可能失去一个更正当的量化scale,升高量化损失。 四、 百度大脑FaceID人脸识别模型量化收益\人脸识别模型作为FaceID端人脸识别技术中体积最大、模型最耗时、对后果影响最间接的模块,如何无效的对模型进行减速的同时保障模型精度不变显得至关重要。联合百度自研的量化技术及PaddleLite预测库减速,咱们实现了在RK3288 ARM芯片上有一倍的减速,同时能够放弃模型精度不变。 五、 百度大脑FaceID人脸识别模型量化技术对不同芯片的反对\百度FaceID人脸识别量化技术不仅在ARM系列芯片上验证无效,在不同NPU芯片上也获得了不俗成果。其中针对目前罕用海思3559、RV1109两款芯片做了量化前后速度及精度比照。在不同芯片上,量化技术都能在速度及精度上获得最佳均衡,实现精度简直不降的同时减速1倍左右。针对不同芯片做了不同模型适配,目前已反对17款芯片SDK专项适配,助力不同客户业务开发需要落地。 百度AI开发者社区https://ai.baidu.com/forum ,为全国各地开发者提供一个交换、分享、答疑解惑的平台,让开发者在研发路上不再“孤军奋战”,通过一直地交换与探讨找出更好的技术解决方案。如果你想尝试各种人工智能技术、开辟利用场景,赶快退出百度AI社区,你对 AI 的所有畅想,在这里都能够实现! 扫描下方二维码,增加小助手微信「京东卡、小度定制周边、神秘礼盒、行李箱」等更多福利你来拿~

August 3, 2021 · 1 min · jiezi

关于人脸识别:百度人脸离线识别SDK安卓版升级指南

安卓SDK公布最新6.0版本,「通用版」实用惯例闸机通行、企业考勤、物证核验、金融领取场景,「口罩版」专项反对戴口罩人脸识别,版本升级迭代的同时,产品标准化建设也越来越欠缺。 2018年6月百度人脸离线辨认SDK公布了安卓1.0版本,到现在曾经降级到了6.0版本,经验了6个大版本的迭代,其中有3.2、4.2、5.1等等,均匀每3个月就要降级一次版本,忍不住感叹一句这个更新速度也太快了。 4.0版本底层算法模型整体进行了降级,4.0和3.2版本成了整个安卓版SDK的“分水岭”。咱们在做降级的时候,就要留神目前正在应用的SDK具体版本号,并应用如下对应的降级操作: 4.0之前SDK降级至最新版本  留神: 1、 更新版本要刷新人脸底库,从新导入人脸,因而倡议大家提前备份好人脸库,以避免从新采集人脸。 2、 提前向百度官网申请对应数量的激活受权,百度官网是反对收费降级的,提交工单、拨打400电话、或分割商务经理都能够。甚至能够本人在控制台申请哦,申请理由中具体阐明,后盾审核人员看到会被动分割的。 筹备好以上两点,就能够开始降级到最新版本啦~~ libs下所有jar和文件替换成最新版本的assets下所有模型文件替换成最新版本的PS:下图红色字体为“模型文件绝对路径“ GlobalSet 模型门路要对应到 assets 下相应的文件夹 依据上方正文掉 FaceSDKManager 标注的代码,实现以上操作便能够降级到最新版本啦。  4.0当前SDK降级至最新版本  留神:更新版本要刷新人脸底库,从新导入人脸,因而倡议大家提前备份好人脸库,以避免从新采集人脸。(必不可少哦) 1.libs 下所有 jar 和文件替换成最新版本的\2.assets 下所有模型文件替换成最新版本的,\GlobalSet 模型门路要对应到 assets 下相应的文件夹 PS:下图红色字体为“模型文件绝对路径“ 留神:如何防止 SDK 降级后导致误识和漏识? 如果 SDK 降级后,产生误识和漏识的问题,须要刷新本地人脸库, 从新把人脸信息导入到本地人脸库。 百度人脸离线辨认SDK,齐全离线本地部署,业务平安有保障,性价比颇高。一个SDK人脸检测与采集、多模态活体检测、人脸比对与辨认全能力交付,提供全品类SDK,笼罩安卓、Windows、海思、RV1109等版本。大家如有需要可扫描以下二维码理解更多详情,同时,参加百度智能云7月流动,各类AI产品供您抉择,新老用户同享超值优惠价 。 单干征询                  查看流动详情 官网链接: 单干征询:https://ai.baidu.com/consulta... 百度智能云7月流动页面: https://cloud.baidu.com/campa...

July 28, 2021 · 1 min · jiezi

关于人脸识别:人脸特效项目之兔耳朵帽子

1 我的项目简介&学习目标&利用场景 我的项目简介:在咱们当初应用的短视频APP中,人脸特效是十分常见的利用,然而对于其背地的原理,可能很多人并不分明。 因而本我的项目,在Mask利用的根底上,学习如何在人头上增加兔子帽子。此外,因为本我的项目波及到一些人脸识别相干的知识点,人脸识别入门视频,能够参考平台上的《深入浅出人脸根底及我的项目利用》。 而对于人脸特效入门的视频,能够参考平台上的《深入浅出人脸特效之Mask实战利用》。 学习目标:学习如何对图像Mask解决?学习如何增加人脸特效?可利用场景:直播行业、短视频人脸特效等文章作者:江大白平台网站:www.jiangdabai.com 2 原理简述 兔耳朵帽子人脸特效:在人脸特效中,通常须要先对图片中的人脸进行检测。再依据人脸的大小,调整帽子的大小,进而将帽子戴在人脸的特定区域即可。 在本我的项目中,人脸检测采纳dlib指标检测的形式。 当然,在本地利用时,咱们也能够训练Yolo、Centernet等算法,构建人脸检测器。 留神:对于指标检测入门的视频,能够查看平台上《30天入门深度学习》课程中的第五章节,入门且具体易懂。 3 我的项目实际 很多同学刚开始进入计算机视觉畛域,因而大白次要从三个方面教大家一步步入门。 大白次要从软件装置(用于编写代码)+conda装置(代码运行环境)+库文件装置(代码运行须要的函数),总共三个方面解说。 留神:如软件、环境、库文件曾经装置,可跳过第三章,间接进入第四章。 3.1 软件装置(1)Pycharm的装置 计算机视觉算法入门,大白首推Python语言进行编程,超级简略不便。 而在编程中,为了便于管理代码,举荐大家应用Pycharm软件。 思考到很多人刚入门时,通常应用Window环境。 对于Pycharm的装置,能够参考平台上大白的文章,《Window零碎装置Pycharm软件具体教程》 3.2 conda装置(1)Conda在工作中,经常会遇到,不同我的项目所依赖环境不一样的状况。 比方有的我的项目须要用python2.7,有的我的项目须要用python3.8等等。 为了不同的我的项目互不烦扰,十分举荐大家应用Conda环境。 这里对于Conda环境的装置,能够参考平台上大白的文章,《Window零碎装置Conda具体教程》 3.3 库文件装置留神:以下如果哪个库文件曾经装置过,能够跳过,装置下一个库文件。(1)Opencv库 Opencv是计算机视觉畛域,十分罕用的图像算法库。 装置形式:进入Conda终端环境。(如不知如何进入,能够查看平台上的文章《Window零碎Conda环境装置库文件具体阐明》) 输出代码:pip install opencv-python装置参考:(如果没有装置过numpy,同时也会顺带下载numpy库,用于数值转换) (1)dlib库dlib库,蕴含很多算法模型性能,比方指标检测、要害定位、特征提取等。 装置形式:进入Conda终端环境 输出代码:conda install dlib(留神:这里不是pip install dlib,这种形式大白在window零碎下装置,也遇到了很多问题) 装置参考: 4 代码文件编写(1)代码获取形式代码获取页面:点击查看 (2)局部代码详情 (3)文件详情 main_image.py:读取图像,对图像中的人脸,增加兔耳朵帽子特效。main_video.py:读取视频,对视频中的人脸,增加兔耳朵帽子特效。image_draw文件夹:为了便于大家查看每一步的成果,大白将算法中外围代码,每一步的成果图片都保留下来,大家查看代码的输入名称,和image_draw文件夹中的相应文件名,比照查看,会更加直观。目标:通过代码,学习应用dlib人脸检测,如何增加人脸特效。 5 代码运行测试 图像人脸检测:在Pycharm中,运行main_image.py文件即可,大家也能够在最下方的配置信息中,更换不同的图片,进行尝试。 视频人脸检测:在Pycharm中,运行main_video.py文件即可,也能够批改不同的视频门路,或者调节跳帧数,学习如何增加兔耳朵帽子特效。

June 1, 2021 · 1 min · jiezi

关于人脸识别:人脸识别常用数据集

继续更新~ 1.Labeled Faces in the Wild(LFW)官网:http://vis-www.cs.umass.edu/lfw/ 介绍: 数据集蕴含从互联网收集的13233张,来自5749集体的面部图像。每张图像都标有人物的名字。其中1680人领有两个或更多图像。毛病: 人脸验证和其余模式的人脸识别是截然不同的问题。例如,很难从验证性能推断到1:N辨认性能。LFW中没有很好地代表许多个人。例如,只有很少的孩子,没有婴儿,年龄在80岁以上的人很少,而妇女的比例绝对较小。另外,许多种族的代表很少或基本没有。尽管实践上能够将LFW用于评估某些亚组的绩效,但该数据库的设计没有足够的数据来得出无关亚组的弱小统计论断。简而言之,LFW不足以提供证据证实特定软件曾经过全面测试。LFW的次要局部不在于,例如光线有余、极其姿态、强烈的遮挡、低分辨率和其余重要因素,但这也些是评估的重要畛域。

January 29, 2021 · 1 min · jiezi

阿里云人脸识别公测使用说明

概述之前阿里云人脸识别只提供人脸检测,人脸属性及人脸对比三个API接口,关于这方面的介绍及使用细节,可以参考阿里云人脸识别使用流程简介,之前使用的服务地址为:dtplus-cn-shanghai.data.aliyuncs.com。目前新版本加入了1:N人脸查找的功能,新版本还处于公测阶段,服务地址:face.cn-shanghai.aliyuncs.com。下面主要介绍如何使用新版本的地址调用之前的三个API的功能。使用流程1、服务开通及1:N人脸识别使用阿里云人脸识别 1:N 使用简明示例 2、接口调用Code示例 import com.aliyuncs.CommonRequest;import com.aliyuncs.CommonResponse;import com.aliyuncs.DefaultAcsClient;import com.aliyuncs.exceptions.ClientException;import com.aliyuncs.http.MethodType;import com.aliyuncs.profile.DefaultProfile;public class CommomDemo { //DefaultProfile.getProfile的参数分别是地域,access_key_id, access_key_secret public static DefaultProfile profile = DefaultProfile.getProfile("cn-shanghai", "********", "********"); public static DefaultAcsClient client = new DefaultAcsClient(profile); public static void main(String[] args) { String imageUrl_1 = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1559655604341&di=3d6995f6dee1c4795d1827e754a00452&imgtype=0&src=http%3A%2F%2Fimg0.ph.126.net%2F90u9atgu46nnziAm1NMAGw%3D%3D%2F6631853916514183512.jpg"; String imageUrl_2 = "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1559655604338&di=ee3d8fb39f6e14a21852a4ac3f2c5a14&imgtype=0&src=http%3A%2F%2Fc4.haibao.cn%2Fimg%2F600_0_100_0%2F1473652712.0005%2F87c7805c10e60e9a6db94f86d6014de8.jpg"; // 人类检测定位 DetectFace(imageUrl_1); // 人类属性识别 GetFaceAttribute(imageUrl_1); // 人脸对比 VerifyFace(imageUrl_1,imageUrl_2); } /** * DetectFace API 人脸检测定位 * * @param imageUrl 检测人脸图片的URL */ public static void DetectFace(String imageUrl) { CommonRequest request = new CommonRequest(); request.setMethod(MethodType.POST); request.setDomain("face.cn-shanghai.aliyuncs.com"); request.setVersion("2018-12-03"); request.setAction("DetectFace"); request.putBodyParameter("ImageUrl", imageUrl);// request.putBodyParameter("Content", "/9j/4AAQSkZJRgABA..."); //检测图片的内容,Base64编码 CommonResponse response = null; try { response = client.getCommonResponse(request); } catch (ClientException e) { e.printStackTrace(); } System.out.println(response.getData()); } /** * GetFaceAttribute API 人脸属性识别 * * @param imageUrl 检测人脸图片的URL */ public static void GetFaceAttribute(String imageUrl) { CommonRequest request = new CommonRequest(); request.setMethod(MethodType.POST); request.setDomain("face.cn-shanghai.aliyuncs.com"); request.setVersion("2018-12-03"); request.setAction("GetFaceAttribute"); request.putBodyParameter("ImageUrl", imageUrl);// request.putBodyParameter("Content", "/9j/4AAQSkZJRgABA..."); //检测图片的内容,Base64编码 CommonResponse response = null; try { response = client.getCommonResponse(request); } catch (ClientException e) { e.printStackTrace(); } System.out.println(response.getData()); } /** * VerifyFace API 人脸比对 * * @param imageUrl_1 对比人脸图片1 * @param imageUrl_2 对比人脸图片2 */ public static void VerifyFace(String imageUrl_1, String imageUrl_2) { CommonRequest request = new CommonRequest(); request.setMethod(MethodType.POST); request.setDomain("face.cn-shanghai.aliyuncs.com"); request.setVersion("2018-12-03"); request.setAction("VerifyFace"); request.putBodyParameter("ImageUrl1", imageUrl_1); request.putBodyParameter("ImageUrl2", imageUrl_2);// request.putBodyParameter("Content", "/9j/4AAQSkZJRgABA..."); //检测图片的内容,Base64编码 CommonResponse response = null; try { response = client.getCommonResponse(request); } catch (ClientException e) { e.printStackTrace(); } System.out.println(response.getData()); }}3、测试结果 ...

July 8, 2019 · 1 min · jiezi

智东西公开课干货盘点-全方位解析人脸识别商用落地

近两周虹软携手智能行业第一媒体智东西,共同推出“虹软人脸识别技术公开课”线上直播课程。6月18日,虹软视觉开放平台产品总监徐科带来了第一课《人脸识别技术的商业落地及挑战》,6月25日,虹软视觉开放平台技术总监潘海波又以《如何从0到1快速搭建人脸识别应用》为题带来了第二讲。两节课分别从产品落地以及技术应用角度,全方位剖析了人脸识别商用的各个环节和关键点,好评如潮,累计观看过万,讨论及互动破千,堪称智东西公开课迄今为止最热的一个系列课程。 公开课干货盘点技术革新为落地提供有力支撑 深度学习、边缘计算等技术的革新为人脸识别大规模商业化落地提供了有力支撑。人脸识别相比于指纹、虹膜等其他生物识别方式,具有先天优势,非接触式的交互,可以满足更多的应用场景。现有大量摄像头部署、人脸设备成本的下降等基础设备的完善,也为人脸识别应用提供了有利的条件。技术的革新、国家政策的支撑以及先天优势为人脸识别带来的产业升级提供了非常有利的条件。 人脸识别的原理及应用流程 先通过海量数据,基于深度学习卷积网络训练出人脸特征模型。首先采用光线规整、图像增强、关键点分析、人脸对齐等先进行预处理,检测出人脸后采用训练出来的特征模型进行人脸特征值提取,并对提取出来的特征值进行比对。配合活体检测环节,增加人脸识别的应用安全性。 人脸识别的技术方案选型 针对不同场景,人脸识别算法上可根据不同的场景分为1:1模型或1:N模型,1:1人证核验主要证明你是你,主要应用于车站、机场、大型活动、机关单位、银行、酒店、网吧等人员流动频繁场所,而针对于社区、楼宇、工地、学校等较大规模的人脸考勤签到、人脸通行等应用场景,则可选择1:N的模型,1:N模型主要证明你是谁。虹软ArcFace SDK可以适配以上所有技术方案并100%保护客户隐私。 人脸识别产业链商用落地 人脸识别的产业链看,包含了算法提供商、硬件设备商、应用集成商,即一个人脸识别项目的落地会涉及到算法、硬件以及应用的结合,是三位一体的融合。目前,虹软视觉开放平台已经免费离线开放了人脸识别、人证核验、活体检测SDK,支持Android、Windows、Linux、iOS全平台。工程化上,虹软结合原有手机端上的积累,做了相应的优化,做到高性能、低功耗、低成本。帮助中小企业以最低的成本、快速实现产品的商用落地。 智慧景区解决方案案例 景区外部入口通过1:1人证比对方案,实现无人工核验,并完成人脸注册。景区内部,通过外部系统已经注册的人脸信息进行1:n人脸库实时比对,确认是否放行。针对部分外部通道未成功完成人脸比对的游客,通过内部通道时再次获取现场抓拍照与证件比对,比对成功即上传抓拍照至人脸库。 通过两节课程的介绍,虹软两位讲师系统地解释了人脸识别落地应用的各个环节,目前,人脸识别带来的产业升级也在智慧校园、智慧社区、智慧旅游、智慧楼宇、消费电子、金融等众多不同的领域得到了广泛应用。作为一家资深计算机视觉算法服务提供商和解决方案供应商,也通过虹软视觉开放平台,让大家快速实现产品落地,抓住刷脸时代红利。 对虹软免费的人脸识别算法感兴趣的话可以戳https://ai.arcsoft.com.cn/uce...

July 2, 2019 · 1 min · jiezi

虹软人脸识别-faceId及IR活体检测的介绍

前几天虹软推出了 Android ArcFace 2.2版本的SDK,相比于2.1版本,2.2版本中的变化如下: • VIDEO模式新增faceId(类似于之前文章中提到的trackId)• 新增IR活体检测功能• 新增IR、RGB的活体阈值设置 一、faceId介绍1. 定义 在连续的视频帧中,当一个人脸进入视频画面直到离开,其faceId不变。 2. 应用场景举例 在门禁应用场景下,若一个人长时间停留在画面中,借助faceId的功能,在此人的人脸特征提取成功后,可不再对此人的后续人脸信息进行处理。 3. 注意事项 faceId在VIDEO模式下有意义;faceId在IMAGE模式下无效。 二、 IR活体检测1. 接口介绍 支持的颜色格式如下:Windows: GRAY、DEPTH_U16、NV21、NV12、I420Android: GRAY、DEPTH_U16、NV21注:若图像数据的颜色格式不在上述列表中,必须对图像数据进行格式转换。 2. IR活体检测实现方案 • 单目摄像头检测方案(IR) 单目摄像头检测流程 注意:在Windows平台下,若通过OpenCV获取IR摄像头的图像数据,由于其颜色格式为BGR_24,不能用于IR活体检测,需要转成GRAY(或IR活体检测接口支持的其他颜色格式),但BGR_24数据可直接用于人脸检测。 • 双目摄像头检测方案(IR + RGB)双目摄像头检测流程 人脸检测结果信息调整 :若RGB摄像头和IR摄像头的成像不一致(存在偏移、旋转、镜像等问题),需要将传递给IR活体检测的人脸信息(人脸框、人脸角度)进行调整。 3. 双目IR活体检测遇到的坑 在双目的画面有明显的不一致的情况时,若我们直接把RGB摄像头的人脸检测结果用于IR活体检测,很有可能会报81925(人脸置信度低)错误。原来,摄像头回传的数据和我们直接看到的画面很可能是不一样的,我们看到的画面可能是经过处理的(缩放、旋转、镜像等)。 • 检测方法 最直观的检查方法就是将摄像头数据显示到屏幕上。只要我们把2个摄像头回传的数据显示到屏幕上,就能了解两个摄像头数据的成像关系。例如Android平台可使用以下方式查看NV21数据:示例流程nv21 -> YuvImage -> jpg bytes -> bitmap -> ImageView。示例代码 @Override public void onPreview(final byte[] nv21, Camera camera) { ...... //30帧一次,把帧数据显示到界面上(要是每帧都做就太卡了),若还是影响UI请放到子线程处理 if (index++ % 30 == 0) { YuvImage yuvImage = new YuvImage(nv21, ImageFormat.NV21, previewSize.width, previewSize.height, null); ByteArrayOutputStream baos = new ByteArrayOutputStream(); yuvImage.compressToJpeg(new Rect(0, 0, previewSize.width, previewSize.height), 100, baos); byte[] bytes = baos.toByteArray(); ivFrame.setImageBitmap(BitmapFactory.decodeByteArray(bytes, 0, bytes.length)); } ...... }• 解决方案 ...

June 19, 2019 · 1 min · jiezi

虹软AI-人脸识别SDK接入-参数优化篇

引言 使用了免费的人脸识别算法,感觉还是很不错的,但是初次接触的话会对一些接口的参数有些疑问的。这里分享一下我对一些参数的验证结果(这里以windows版本为例,linux、android基本一样),希望能更好的帮助各位接入虹软的人脸识别算法。本文主要分析以下两个参数:• detectFaceMaxNum• combinedMaskdetectMode参数介绍 在引擎初始化的时候,需要选择video或image模式,在接口头文件中定义了宏ASF_DETECT_MODE_VIDEO、ASF_DETECT_MODE_IMAGE,根据需要的模式传入即可。video模式对应人脸追踪算法(FT),image模式对应人脸检测算法(FD),关于FT/FD算法的区别可以参考虹软AI 人脸识别SDK接入 — 参数优化篇(1) 通过测试数据,个人感觉image模式下的数据更能准确的体现算法的能力,下面关于其他参数的介绍均在image模式下进行;测试机器硬件配置:• 处理器:Intel(R)Corei5-7400 CPU @ 3.00GHZ 300GHZ• 安装内存(RAM):16.00GB(15.9GB可用)• 系统类型:win-10 64位操作系统参数介绍:一、detectFaceMaxNum参数说明1.1 推荐值 初始化接口中detectFaceMaxNum参数的设置决定ASFDetectFaces(FT/FD)接口单帧图片允许检测的最大人脸数,官网推荐最大值不超过50,虽然可以设置更大的值,但是没有必要,下面数据可以说明;1.2 检测到的人脸数对应的性能消耗测试用例: 1280*720像素图像数据;循环检测100次取平均值;• ASF_DETECT_MODE_IMAGE模式单帧图片中人脸数 耗时(ms)1 162 214 1678 18616 289• ASF_DETECT_MODE_VIDEO模式单帧图片中人脸数 耗时(ms)1 32 44 48 416 5 通过以上数据可以看出,image模式下图片中人脸数越多单次检测的耗时会越长,video模式下图片中人脸数越多单次检测的耗时也会有略微增加。综上,detectFaceMaxNum参数的设置多少并不影响内存的分配以及性能的消耗,仅是设置算法单帧检测的最大人脸数。二、combinedMask参数说明2.1 内存占用 combinedMask参数是初始化引擎时传入不同属性功能组合,传入的属性越多引擎分配的内存越大。实际应用情况下,传入必需的属性组合即可,传入多余属性只会占用内存。下表数据是在测试其他参数固定,只修改mask参数时初始化接口内存的占用情况(数据取自windows任务管理器):ASFInitEngine(ASF_DETECT_MODE_IMAGE, ASF_OP_0_ONLY, 32, 5, combinedMask, &handle);combinedMask 内存占用(KB) 对应算法接口全属性 121,148 全接口无属性 4,920 无ASF_FACE_DETECT 44,424 ASFDetectFacesASF_FACERECOGNITION 27,564 ASFFaceFeatureExtractASFFaceFeatureCompareASF_AGE 23,008 ASFProcess/ASFGetAgeASF_GENDER 23,316 ASFProcess/ASFGetGenderASF_FACE3DANGLE 20,484 ASFProcess/ASFGetFace3DAngleASF_LIVENESS 53,200 ASFProcess/ASFGetLivenessScore2.2 ASFInitEngine接口与ASFProcess接口中combinedMask参数的关系官方文档对ASFProcess接口中combinedMask参数的解释:初始化中参数combinedMask与ASF_AGE | ASF_GENDER | ASF_FACE3DANGLE | ASF_LIVENESS交集的子集;举例说明:例1:ASFInitEngine接口中传入全属性,则ASFProcess接口可以传入ASF_AGE、ASF_GENDER、 ASF_FACE3DANGLE、 ASF_LIVENESS四种属性的任意组合。例2:ASFInitEngine接口中传入ASF_FACE_DETECT | ASF_FACERECOGNITION | ASF_AGE | ASF_GENDER ,则ASFProcess接口只能传入ASF_AGE、 ASF_GENDER两种属性的任意组合。2.3 cpu占用 ...

June 13, 2019 · 1 min · jiezi

1小时玩转OCR实战

在日常生活工作中,我们难免会遇到一些问题,比如自己辛辛苦苦写完的资料,好不容易打印出来却发现源文件丢了。难的收集了一些名片,却要很麻烦的一个一个录入信息。快递公司的业务越来越好,但每天却需要花费很多时间登记录入运单,效率非常的低。 那么,有没有什么技术能帮助我们解决这些难题呢?有的,那就是OCR文字识别技术。 什么是OCR? OCR 是实时高效的定位与识别图片中的所有文字信息,返回文字框位置与文字内容。支持多场景、任意版面下整 图文字的识别,以及中英文、字母、数字的识别。通俗的来说,就是将图片上的文字内容,智能识别成为可编辑的文本,例如: OCR的技术原理是什么? OCR本质是图像识别。其原理也和其他的图像识别问题基本一样。包含两大关键技术:文本检测和文字识别。先将图像中的特征的提取并检测目标区域,之后对目标区域的的字符进行分割和分类。 以深度学习兴起的时间为分割点,直至近五年之前,业界最为广泛使用的仍然是传统的OCR识别技术框架,而随着深度学习的崛起,基于这一技术的OCR识别框架以另外一种新的思路迅速突破了原有的技术瓶颈(如文字定位、二值化和文字分割等),并已在工业界得到广泛应用。 首先文本定位,接着进行倾斜文本矫正,之后分割出单字后,并对单字识别,最后基于统计模型(如隐马尔科夫链,HMM)进行语义纠错。 OCR技术的难点是什么? 复杂背景、艺术字体、低分辨率、非均匀光照、图像退化、字符形变、多语言混合、文本行复杂版式、检测框字符残缺,等等。 如何克服这些难点的? 从几个方面入手。一是使用场景,另一方面是从技术上的改进腾讯优图实验室在文本检测技术方进行了深度优化,提出了Compact Inception,通过设计合理的网络结构来提升各尺度的文字检测/提取能力。同时引入RNN多层自适应网络和Refinement结构来提升检测完整性和准确性。 腾讯云OCR目前支持什么功能? 基于腾讯优图实验室世界领先的深度学习技术,目前我们已支持: 身份证识别,银行卡识别,名片识别,营业执照识别,行驶证驾驶证识别,车牌号识别,通用印刷体识别,手写体识别。 通用印刷体的技术难点,使用场景 大家都知道身份证识别可广泛应用在金融行业中,有用户的身份认证中,可以减少用户的信息输入,提升效率,提高用户体验,营业执照的识别完全省去了手工录入的繁琐,还可以为企业省去大量的人力资源成本,这些场景大家都已经比较熟悉。 对于通用印刷体,腾讯优图实验室自主设计一整套全方位多尺度文字识别引擎,可攻破模糊,散焦,透视,文字部分遮挡的问题,识别准确率高达90%以上,处于业界领先水平。使用场景广泛,例如对任意版面上图像的文字识别,可广泛应用在印刷文档、广告图、医疗、物流等行业中的识别。 对于通用印刷体有没有什么好的例子? 例如这个广告,内容多字体,中英文与数字混合,背景也比较随意。咱们的OCR通过透视矫正、去模糊等,能大幅还原图像真实度,极大提升算法的鲁棒性。 再例如识别文字密集,行间距小,透视畸变等的海报。人工识别需要不仅耗费时间,肉眼也比较难识别。但腾讯云OCR 设计了小而精的特征提取网络,配合先进的预处理技术,识别准确率高达93%以上。 有时候也会遇到识别率不理想的情况,如何可以提高识别准确率? 首先会确认下当前的场景,造成准确度不高的原因。评估可提高的空间设计,之后做出相应的修改,列入预处理等等。 关于腾讯云手写体识别方面的案例 腾讯是国内首家将手写体识别应用在复杂场景下的服务商,数字识别准确率高达90%以上,单字识别速度在15ms以内,复杂汉字准确率超过80%。 腾讯云手写体OCR已运用到的运单识别场景,解决了物流行业每日快递单人工输入工作量极大且极易出错,非常低效等问题。 运单识别与传统人工识别的区别 如果传统人工识别按照3min/单,1000单需要6.25个人/天,保证运单时效则需要耗费大量人力,考虑人力成本则影响运单及时性,成本和服务难两全。 我们的运单识别速度可以达到毫秒级/单,并支持24小时识别服务 ,业务增长时只需要投入计算用服务器资源即可,弹性较大。 与传统识别相比,不仅成本可以降低,提高准确性,还可以保护用户的隐私泄露风险。 腾讯云OCR在行业中落地案例 新版手Q就用到了咱们的技术,在扫一扫、聊天窗口和空间图片大图预览共三个入口上支持了提取图片中文字的功能。 方便用户阅读、编辑、保存图片上的文字,从而可以对提取出的文字进行翻译、搜索。在多种场景下可以极大提升用户对图片上文字的阅读和记录效率。 企业微信中的名片识也用到了咱们OCR技术。用户只需拍照或选择名片图片,就能准确快速地识别出名片中的文字,并自动提取为对应的字段,极大简化了名片录入流程,也避免了手动录入过程可能出现的错误。 福利时间:腾讯云大学6月10日(周一)晚19:00-20:30邀请到大数据与人工智能产品中心大咖,开设免费线上直播课程,现场讲解API落地使用!讲师将会在直播课程中为大家解答疑惑。 适合人群: 0-3岁开发者OCR与人脸核身使用者人脸识别从业者对人脸识别感兴趣的小伙伴非开发者0基础不要紧,现场手把手教学,一小时你能收获的不止有实战指导,更有鹅厂大咖的经验分享! 大咖讲师: 腾讯云AI视觉产品项目经理 张诚 课程内容:1、 腾讯云OCR文字识别产品简介2、 OCR通用印刷体识别动手实验室3、 腾讯云慧眼·人脸核身产品简介4、 人脸核身H5动手实验室 如何观看课程?扫描下方海报二维码即可预约课程,开播前15分钟将短信通知! 重要提示:提前关注微信【学习君】,入群还可以领取更多鹅厂内部技术资料

June 5, 2019 · 1 min · jiezi

阿里开源轻量级深度学习端侧推理引擎-MNN

阿里妹导读:近日,阿里正式开源轻量级深度学习端侧推理引擎“MNN”。AI科学家贾扬清如此评价道:“与 Tensorflow、Caffe2 等同时覆盖训练和推理的通用框架相比,MNN 更注重在推理时的加速和优化,解决在模型部署的阶段的效率问题,从而在移动端更高效地实现模型背后的业务。这和服务器端 TensorRT 等推理引擎的想法不谋而合。在大规模机器学习应用中,考虑到大规模的模型部署,机器学习的推理侧计算量往往是训练侧计算量的十倍以上,所以推理侧的优化尤其重要。” MNN背后的技术框架如何设计?未来有哪些规划?今天一起来深入了解。 1、MNN是什么? MNN 是一个轻量级的深度学习端侧推理引擎,核心解决深度神经网络模型在端侧推理运行问题,涵盖深度神经网络模型的优化、转换和推理。目前,MNN已经在手淘、手猫、优酷、聚划算、UC、飞猪、千牛等 20 多个 App 中使用,覆盖直播、短视频、搜索推荐、商品图像搜索、互动营销、权益发放、安全风控等场景,每天稳定运行上亿次。此外,菜鸟自提柜等 IoT 设备中也有应用。在 2018 年双十一购物节中,MNN 在天猫晚会笑脸红包、扫一扫、明星猜拳大战等场景中使用。 该项目已经在 Github 开源,关注“阿里技术”官方公众号,并在对话框内回复“MNN”,即可获得 Github 下载链接、了解更多详情。 2、MNN的优势MNN 负责加载网络模型,推理预测返回相关结果,整个推理过程可以分为模型的加载解析、计算图的调度、在异构后端上高效运行。MNN 具有通用性、轻量性、高性能、易用性的特征: 通用性: 支持 Tensorflow、Caffe、ONNX 等主流模型格式,支持 CNN、RNN、GAN 等常用网络;支持 86 个 TensorflowOp、34 个 CaffeOp ;各计算设备支持的 MNN Op 数:CPU 71 个,Metal 55 个,OpenCL 40 个,Vulkan 35 个;支持 iOS 8.0+、Android 4.3+ 和具有POSIX接口的嵌入式设备;支持异构设备混合计算,目前支持 CPU 和 GPU,可以动态导入 GPU Op 插件,替代 CPU Op 的实现;轻量性: 针对端侧设备特点深度定制和裁剪,无任何依赖,可以方便地部署到移动设备和各种嵌入式设备中;iOS 平台上,armv7+arm64 静态库大小 5MB 左右,链接生成可执行文件增加大小 620KB 左右,metallib 文件 600KB 左右;Android 平台上,so 大小 400KB 左右,OpenCL 库 400KB 左右,Vulkan 库 400KB 左右;高性能: ...

May 7, 2019 · 2 min · jiezi

活体检测很复杂?仅使用opencv就能实现!(附源码)

摘要: 活体检测在各行各业应用比较广泛,如何实现一个活体检测系统呢?早期实现很困难,现在仅使用opencv即可实现,快来尝试一下吧。什么是活体检测,为什么需要它?随着时代的发展,人脸识别系统的应用也正变得比以往任何时候都更加普遍。从智能手机上的人脸识别解锁、到人脸识别打卡、门禁系统等,人脸识别系统正在各行各业得到应用。然而,人脸识别系统很容易被“非真实”的面孔所欺骗。比如将人的照片放在人脸识别相机,就可以骗过人脸识别系统,让其识别为人脸。为了使人脸识别系统更安全,我们不仅要识别出人脸,还需要能够检测其是否为真实面部,这就要用到活体检测了。目前有许多活体检测方法,包括:纹理分析(Texture analysis),包括计算面部区域上的局部二进制模式(LBP)并使用SVM将面部分类为真脸或假脸;频率分析(Frequency analysis),例如检查面部的傅里叶域;可变聚焦分析(ariable focusing analysis),例如检查两个连续帧之间的像素值的变化。基于启发式的算法(Heuristic-based algorithms),包括眼球运动、嘴唇运动和眨眼检测;光流算法(Optical Flow algorithms),即检查从3D对象和2D平面生成的光流的差异和属性;3D脸部形状,类似于Apple的iPhone脸部识别系统所使用的脸部形状,使脸部识别系统能够区分真人脸部和其他人的打印输出的照片图像;面部识别系统工程师可以组合上述方法挑选和选择适合于其特定应用的活体检测模型。但本教程将采用图像处理中常用方法——卷积神经网络(CNN)来构建一个能够区分真实面部和假面部的深度神经网络(称之为“LivenessNet”网络),将活体检测视为二元分类问题。首先检查一下数据集。活动检测视频为了让例子更加简单明了,本文构建的活体检测器将侧重于区分真实面孔与屏幕上的欺骗面孔。且该算法可以很容易地扩展到其他类型的欺骗面孔,包括打印输出、高分辨率打印等。活体检测数据集来源:iPhone纵向/自拍;录制了一段约25秒在办公室里走来走去的视频;重播了相同的25秒视频,iPhone重录视频;获得两个示例视频,一个用于“真实”面部,另一个用于“假/欺骗”面部。最后,将面部检测应用于两组视频,以提取两个类的单个面部区域。项目结构$ tree –dirsfirst –filelimit 10.├── dataset│ ├── fake [150 entries]│ └── real [161 entries]├── face_detector│ ├── deploy.prototxt│ └── res10_300x300_ssd_iter_140000.caffemodel├── pyimagesearch│ ├── init.py│ └── livenessnet.py├── videos│ ├── fake.mp4│ └── real.mov├── gather_examples.py├── train_liveness.py├── liveness_demo.py├── le.pickle├── liveness.model└── plot.png6 directories, 12 files项目中主要有四个目录:*dataset /:数据集目录,包含两类图像:在播放脸部视频时,手机录屏得到的假脸;手机自拍视频中真脸;face_detector /:由预训练Caffe面部检测器组成,用于定位面部区域;pyimagesearch /:模块包含LivenessNet类函数;video/:提供了两个用于训练了LivenessNet分类器的输入视频;另外还有三个Python脚本:gather_examples.py:此脚本从输入视频文件中获取面部区域,并创建深度学习面部数据集;train_liveness.py:此脚本将训练LivenessNet分类器。训练会得到以下几个文件:1.le .pickle:类别标签编码器;2.liveness.model:训练好的Keras模型;3.plot.png:训练历史图显示准确度和损失曲线;liveness_demo.py:该演示脚本将启动网络摄像头以进行面部实时活体检测;从训练数据集中检测和提取面部区域数据目录:1.dataset / fake /:包含假.mp4文件中的面部区域;2.dataset / real /:保存来自真实.mov文件的面部区域;打开 gather_examples.py文件并插入以下代码:# import the necessary packagesimport numpy as npimport argparseimport cv2import os# construct the argument parse and parse the argumentsap = argparse.ArgumentParser()ap.add_argument("-i", “–input”, type=str, required=True, help=“path to input video”)ap.add_argument("-o", “–output”, type=str, required=True, help=“path to output directory of cropped faces”)ap.add_argument("-d", “–detector”, type=str, required=True, help=“path to OpenCV’s deep learning face detector”)ap.add_argument("-c", “–confidence”, type=float, default=0.5, help=“minimum probability to filter weak detections”)ap.add_argument("-s", “–skip”, type=int, default=16, help="# of frames to skip before applying face detection")args = vars(ap.parse_args())首先导入所需的包:第8-19行解析命令行参数:input:输入视频文件的路径;output:输出目录的路径;detector:人脸检测器的路径;confidence:人脸检测的最小概率。默认值为0.5;skip:检测时略过的帧数,默认值为16;之后加载面部检测器并初始化视频流:# load our serialized face detector from diskprint("[INFO] loading face detector…")protoPath = os.path.sep.join([args[“detector”], “deploy.prototxt”])modelPath = os.path.sep.join([args[“detector”], “res10_300x300_ssd_iter_140000.caffemodel”])net = cv2.dnn.readNetFromCaffe(protoPath, modelPath)# open a pointer to the video file stream and initialize the total# number of frames read and saved thus farvs = cv2.VideoCapture(args[“input”])read = 0saved = 0此外还初始化了两个变量,用于读取的帧数以及循环执行时保存的帧数。创建一个循环来处理帧:# loop over frames from the video file streamwhile True: # grab the frame from the file (grabbed, frame) = vs.read() # if the frame was not grabbed, then we have reached the end # of the stream if not grabbed: break # increment the total number of frames read thus far read += 1 # check to see if we should process this frame if read % args[“skip”] != 0: continue下面进行面部检测: # grab the frame dimensions and construct a blob from the frame (h, w) = frame.shape[:2] blob = cv2.dnn.blobFromImage(cv2.resize(frame, (300, 300)), 1.0, (300, 300), (104.0, 177.0, 123.0)) # pass the blob through the network and obtain the detections and # predictions net.setInput(blob) detections = net.forward() # ensure at least one face was found if len(detections) > 0: # we’re making the assumption that each image has only ONE # face, so find the bounding box with the largest probability i = np.argmax(detections[0, 0, :, 2]) confidence = detections[0, 0, i, 2]为了执行面部检测,需要从图像中创建一个区域,该区域有300×300的宽度和高度,以适应Caffe面部检测器。此外脚本假设视频的每一帧中只有一个面部,这有助于防止误报。获得最高概率的面部检测指数,并使用索引提取检测的置信度,之后将低概率的进行过滤,并将结果写入磁盘: # ensure that the detection with the largest probability also # means our minimum probability test (thus helping filter out # weak detections) if confidence > args[“confidence”]: # compute the (x, y)-coordinates of the bounding box for # the face and extract the face ROI box = detections[0, 0, i, 3:7] * np.array([w, h, w, h]) (startX, startY, endX, endY) = box.astype(“int”) face = frame[startY:endY, startX:endX] # write the frame to disk p = os.path.sep.join([args[“output”], “{}.png”.format(saved)]) cv2.imwrite(p, face) saved += 1 print("[INFO] saved {} to disk".format(p))# do a bit of cleanupvs.release()cv2.destroyAllWindows()提取到面部区域后,就可以得到面部的边界框坐标。然后为面部区域生成路径+文件名,并将其写入磁盘中。构建活体检测图像数据集打开终端并执行以下命令来提取“假/欺骗”类别的面部图像:$ python gather_examples.py –input videos/real.mov –output dataset/real \ –detector face_detector –skip 1[INFO] loading face detector…[INFO] saved datasets/fake/0.png to disk[INFO] saved datasets/fake/1.png to disk[INFO] saved datasets/fake/2.png to disk[INFO] saved datasets/fake/3.png to disk[INFO] saved datasets/fake/4.png to disk[INFO] saved datasets/fake/5.png to disk…[INFO] saved datasets/fake/145.png to disk[INFO] saved datasets/fake/146.png to disk[INFO] saved datasets/fake/147.png to disk[INFO] saved datasets/fake/148.png to disk[INFO] saved datasets/fake/149.png to disk同理也可以执行以下命令获得“真实”类别的面部图像:$ python gather_examples.py –input videos/fake.mov –output dataset/fake \ –detector face_detector –skip 4[INFO] loading face detector…[INFO] saved datasets/real/0.png to disk[INFO] saved datasets/real/1.png to disk[INFO] saved datasets/real/2.png to disk[INFO] saved datasets/real/3.png to disk[INFO] saved datasets/real/4.png to disk…[INFO] saved datasets/real/156.png to disk[INFO] saved datasets/real/157.png to disk[INFO] saved datasets/real/158.png to disk[INFO] saved datasets/real/159.png to disk[INFO] saved datasets/real/160.png to disk注意,这里要确保数据分布均衡。执行脚本后,统计图像数量:假:150张图片真:161张图片总计:311张图片实施“LivenessNet”深度学习活体检测模型LivenessNet实际上只是一个简单的卷积神经网络,尽量将这个网络设计的尽可能浅,参数尽可能少,原因有两个:减少过拟合可能性;确保活体检测器能够实时运行;打开livenessnet .py并插入以下代码:# import the necessary packagesfrom keras.models import Sequentialfrom keras.layers.normalization import BatchNormalizationfrom keras.layers.convolutional import Conv2Dfrom keras.layers.convolutional import MaxPooling2Dfrom keras.layers.core import Activationfrom keras.layers.core import Flattenfrom keras.layers.core import Dropoutfrom keras.layers.core import Densefrom keras import backend as Kclass LivenessNet: @staticmethod def build(width, height, depth, classes): # initialize the model along with the input shape to be # “channels last” and the channels dimension itself model = Sequential() inputShape = (height, width, depth) chanDim = -1 # if we are using “channels first”, update the input shape # and channels dimension if K.image_data_format() == “channels_first”: inputShape = (depth, height, width) chanDim = 1 # first CONV => RELU => CONV => RELU => POOL layer set model.add(Conv2D(16, (3, 3), padding=“same”, input_shape=inputShape)) model.add(Activation(“relu”)) model.add(BatchNormalization(axis=chanDim)) model.add(Conv2D(16, (3, 3), padding=“same”)) model.add(Activation(“relu”)) model.add(BatchNormalization(axis=chanDim)) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) # second CONV => RELU => CONV => RELU => POOL layer set model.add(Conv2D(32, (3, 3), padding=“same”)) model.add(Activation(“relu”)) model.add(BatchNormalization(axis=chanDim)) model.add(Conv2D(32, (3, 3), padding=“same”)) model.add(Activation(“relu”)) model.add(BatchNormalization(axis=chanDim)) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Dropout(0.25)) # first (and only) set of FC => RELU layers model.add(Flatten()) model.add(Dense(64)) model.add(Activation(“relu”)) model.add(BatchNormalization()) model.add(Dropout(0.5)) # softmax classifier model.add(Dense(classes)) model.add(Activation(“softmax”)) # return the constructed network architecture return model创建活体检测器训练脚本打开train_liveness .py文件并插入以下代码:# set the matplotlib backend so figures can be saved in the backgroundimport matplotlibmatplotlib.use(“Agg”)# import the necessary packagesfrom pyimagesearch.livenessnet import LivenessNetfrom sklearn.preprocessing import LabelEncoderfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import classification_reportfrom keras.preprocessing.image import ImageDataGeneratorfrom keras.optimizers import Adamfrom keras.utils import np_utilsfrom imutils import pathsimport matplotlib.pyplot as pltimport numpy as npimport argparseimport pickleimport cv2import os# construct the argument parser and parse the argumentsap = argparse.ArgumentParser()ap.add_argument("-d", “–dataset”, required=True, help=“path to input dataset”)ap.add_argument("-m", “–model”, type=str, required=True, help=“path to trained model”)ap.add_argument("-l", “–le”, type=str, required=True, help=“path to label encoder”)ap.add_argument("-p", “–plot”, type=str, default=“plot.png”, help=“path to output loss/accuracy plot”)args = vars(ap.parse_args())此脚本接受四个命令行参数:dataset:输入数据集的路径;model:输出模型文件保存路径;le:输出序列化标签编码器文件的路径;plot:训练脚本将生成一个图;下一个代码块将执行初始化并构建数据:# initialize the initial learning rate, batch size, and number of# epochs to train forINIT_LR = 1e-4BS = 8EPOCHS = 50# grab the list of images in our dataset directory, then initialize# the list of data (i.e., images) and class imagesprint("[INFO] loading images…")imagePaths = list(paths.list_images(args[“dataset”]))data = []labels = []for imagePath in imagePaths: # extract the class label from the filename, load the image and # resize it to be a fixed 32x32 pixels, ignoring aspect ratio label = imagePath.split(os.path.sep)[-2] image = cv2.imread(imagePath) image = cv2.resize(image, (32, 32)) # update the data and labels lists, respectively data.append(image) labels.append(label)# convert the data into a NumPy array, then preprocess it by scaling# all pixel intensities to the range [0, 1]data = np.array(data, dtype=“float”) / 255.0之后对标签进行独热编码并对将数据划分为训练数据(75%)和测试数据(25%):# encode the labels (which are currently strings) as integers and then# one-hot encode themle = LabelEncoder()labels = le.fit_transform(labels)labels = np_utils.to_categorical(labels, 2)# partition the data into training and testing splits using 75% of# the data for training and the remaining 25% for testing(trainX, testX, trainY, testY) = train_test_split(data, labels, test_size=0.25, random_state=42)之后对数据进行扩充并对模型进行编译和训练:# construct the training image generator for data augmentationaug = ImageDataGenerator(rotation_range=20, zoom_range=0.15, width_shift_range=0.2, height_shift_range=0.2, shear_range=0.15, horizontal_flip=True, fill_mode=“nearest”)# initialize the optimizer and modelprint("[INFO] compiling model…")opt = Adam(lr=INIT_LR, decay=INIT_LR / EPOCHS)model = LivenessNet.build(width=32, height=32, depth=3, classes=len(le.classes_))model.compile(loss=“binary_crossentropy”, optimizer=opt, metrics=[“accuracy”])# train the networkprint("[INFO] training network for {} epochs…".format(EPOCHS))H = model.fit_generator(aug.flow(trainX, trainY, batch_size=BS), validation_data=(testX, testY), steps_per_epoch=len(trainX) // BS, epochs=EPOCHS)模型训练后,可以评估效果并生成仿真曲线图:# evaluate the networkprint("[INFO] evaluating network…")predictions = model.predict(testX, batch_size=BS)print(classification_report(testY.argmax(axis=1), predictions.argmax(axis=1), target_names=le.classes_))# save the network to diskprint("[INFO] serializing network to ‘{}’…".format(args[“model”]))model.save(args[“model”])# save the label encoder to diskf = open(args[“le”], “wb”)f.write(pickle.dumps(le))f.close()# plot the training loss and accuracyplt.style.use(“ggplot”)plt.figure()plt.plot(np.arange(0, EPOCHS), H.history[“loss”], label=“train_loss”)plt.plot(np.arange(0, EPOCHS), H.history[“val_loss”], label=“val_loss”)plt.plot(np.arange(0, EPOCHS), H.history[“acc”], label=“train_acc”)plt.plot(np.arange(0, EPOCHS), H.history[“val_acc”], label=“val_acc”)plt.title(“Training Loss and Accuracy on Dataset”)plt.xlabel(“Epoch #")plt.ylabel(“Loss/Accuracy”)plt.legend(loc=“lower left”)plt.savefig(args[“plot”])训练活体检测器执行以下命令开始模型训练:$ python train.py –dataset dataset –model liveness.model –le le.pickle[INFO] loading images…[INFO] compiling model…[INFO] training network for 50 epochs…Epoch 1/5029/29 [==============================] - 2s 58ms/step - loss: 1.0113 - acc: 0.5862 - val_loss: 0.4749 - val_acc: 0.7436Epoch 2/5029/29 [==============================] - 1s 21ms/step - loss: 0.9418 - acc: 0.6127 - val_loss: 0.4436 - val_acc: 0.7949Epoch 3/5029/29 [==============================] - 1s 21ms/step - loss: 0.8926 - acc: 0.6472 - val_loss: 0.3837 - val_acc: 0.8077…Epoch 48/5029/29 [==============================] - 1s 21ms/step - loss: 0.2796 - acc: 0.9094 - val_loss: 0.0299 - val_acc: 1.0000Epoch 49/5029/29 [==============================] - 1s 21ms/step - loss: 0.3733 - acc: 0.8792 - val_loss: 0.0346 - val_acc: 0.9872Epoch 50/5029/29 [==============================] - 1s 21ms/step - loss: 0.2660 - acc: 0.9008 - val_loss: 0.0322 - val_acc: 0.9872[INFO] evaluating network… precision recall f1-score support fake 0.97 1.00 0.99 35 real 1.00 0.98 0.99 43 micro avg 0.99 0.99 0.99 78 macro avg 0.99 0.99 0.99 78weighted avg 0.99 0.99 0.99 78[INFO] serializing network to ’liveness.model’…从上述结果来看,在测试集上获得99%的检测精度!合并起来:使用OpenCV进行活体检测最后一步是将所有部分组合在一起:访问网络摄像头/视频流;对每个帧应用面部检测;对于检测到的每个脸部,应用活体检测器模型;打开liveness_demo.py并插入以下代码:# import the necessary packagesfrom imutils.video import VideoStreamfrom keras.preprocessing.image import img_to_arrayfrom keras.models import load_modelimport numpy as npimport argparseimport imutilsimport pickleimport timeimport cv2import os# construct the argument parse and parse the argumentsap = argparse.ArgumentParser()ap.add_argument("-m", "--model", type=str, required=True, help="path to trained model")ap.add_argument("-l", "--le", type=str, required=True, help="path to label encoder")ap.add_argument("-d", "--detector", type=str, required=True, help="path to OpenCV's deep learning face detector")ap.add_argument("-c", "--confidence", type=float, default=0.5, help="minimum probability to filter weak detections")args = vars(ap.parse_args())上述代码导入必要的包,并加载模型。下面初始化人脸检测器、LivenessNet模型以及视频流:# load our serialized face detector from diskprint("[INFO] loading face detector...")protoPath = os.path.sep.join([args["detector"], "deploy.prototxt"])modelPath = os.path.sep.join([args["detector"], "res10_300x300_ssd_iter_140000.caffemodel"])net = cv2.dnn.readNetFromCaffe(protoPath, modelPath)# load the liveness detector model and label encoder from diskprint("[INFO] loading liveness detector...")model = load_model(args["model"])le = pickle.loads(open(args["le"], "rb").read())# initialize the video stream and allow the camera sensor to warmupprint("[INFO] starting video stream...")vs = VideoStream(src=0).start()time.sleep(2.0)之后开始循环遍历视频的每一帧以检测面部是否真实:# loop over the frames from the video streamwhile True: # grab the frame from the threaded video stream and resize it # to have a maximum width of 600 pixels frame = vs.read() frame = imutils.resize(frame, width=600) # grab the frame dimensions and convert it to a blob (h, w) = frame.shape[:2] blob = cv2.dnn.blobFromImage(cv2.resize(frame, (300, 300)), 1.0, (300, 300), (104.0, 177.0, 123.0)) # pass the blob through the network and obtain the detections and # predictions net.setInput(blob) detections = net.forward()使用OpenCV blobFromImage函数生成一个面部数据,然后将其传递到面部检测器网络继续进行推理。核心代码如下: # loop over the detections for i in range(0, detections.shape[2]): # extract the confidence (i.e., probability) associated with the # prediction confidence = detections[0, 0, i, 2] # filter out weak detections if confidence &gt; args["confidence"]: # compute the (x, y)-coordinates of the bounding box for # the face and extract the face ROI box = detections[0, 0, i, 3:7] * np.array([w, h, w, h]) (startX, startY, endX, endY) = box.astype("int") # ensure the detected bounding box does fall outside the # dimensions of the frame startX = max(0, startX) startY = max(0, startY) endX = min(w, endX) endY = min(h, endY) # extract the face ROI and then preproces it in the exact # same manner as our training data face = frame[startY:endY, startX:endX] face = cv2.resize(face, (32, 32)) face = face.astype("float") / 255.0 face = img_to_array(face) face = np.expand_dims(face, axis=0) # pass the face ROI through the trained liveness detector # model to determine if the face is "real" or "fake" preds = model.predict(face)[0] j = np.argmax(preds) label = le.classes_[j] # draw the label and bounding box on the frame label = "{}: {:.4f}".format(label, preds[j]) cv2.putText(frame, label, (startX, startY - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2) cv2.rectangle(frame, (startX, startY), (endX, endY), (0, 0, 255), 2)首先过滤掉弱检测结果,然后提取面部图像并对其进行预处理,之后送入到活动检测器模型来确定面部是“真实的”还是“假的/欺骗的”。最后,在原图上绘制标签和添加文本以及矩形框,最后进行展示和清理。 # show the output frame and wait for a key press cv2.imshow("Frame", frame) key = cv2.waitKey(1) &amp; 0xFF # if the q` key was pressed, break from the loop if key == ord(“q”): break# do a bit of cleanupcv2.destroyAllWindows()vs.stop()将活体检测器应用到实时视频上打开终端并执行以下命令:$ python liveness_demo.py –model liveness.model –le le.pickle \ –detector face_detectorUsing TensorFlow backend.[INFO] loading face detector…[INFO] loading liveness detector…[INFO] starting video stream…可以看到,活体检测器成功地区分了真实和伪造的面孔。下面的视频作为一个更长时间的演示:视频地址进一步的工作本文设计的系统还有一些限制和缺陷,主要限制实际上是数据集有限——总共只有311个图像。这项工作的第一个扩展之一是简单地收集额外的训练数据,比如其它人,其它肤色或种族的人。此外,活体检测器只是通过屏幕上的恶搞攻击进行训练,它并没有经过打印出来的图像或照片的训练。因此,建议添加不同类型的图像源。最后,我想提一下,活体检测没有最好的方法,只有最合适的方法。一些好的活体检测器包含多种活体检测方法。总结在本教程中,学习了如何使用OpenCV进行活动检测。使用此活体检测器就可以在自己的人脸识别系统中发现伪造的假脸并进行反面部欺骗。此外,创建活动检测器使用了OpenCV、Deep Learning和Python等领域的知识。整个过程如下:第一步是收集真假数据集。数据来源有:智能手机录制自己的视频(即“真”面);手机录播(即“假”面);对两组视频应用面部检测以形成最终数据集。第二步,获得数据集之后,实现了“LivenessNet”网络,该网络设计的比较浅层,这是为了确保:减少了过拟合小数据集的可能性;该模型本身能够实时运行;总的来说,本文设计的活体检测器能够在验证集上获得99%的准确度。此外,活动检测器也能够应用于实时视频流。本文作者:【方向】阅读原文本文为云栖社区原创内容,未经允许不得转载。 ...

March 18, 2019 · 9 min · jiezi

AI 安全在阿里业务中的实践,你了解吗?

我们知道,AI 技术将在很长一段时间占据互联网技术时代的风口。但是,有代码的地方就有缺陷,提到技术很难不讲安全,那么AI会不会碰到安全问题呢?AI安全试想一下,未来的某个早晨,当你像往常一样打开无人驾驶的汽车车门,报出目的地,然后坐在后座上舒舒服服地浏览推送给你的各种新闻,汽车突然失控,在本该停止的红灯前飞驰而过撞向了正在过马路的行人,那将是怎样一场灾难。人工智能技术给生活带来便利的同时,其自身的安全问题(AI安全)也不容忽视,AI安全问题可以归纳为内外2方面原因:自身缺陷导致的模型出错:例如,模型结构本身存在缺陷、或者训练数据和真实场景数据之间的偏差,都可能导致模型预测错误。外部攻击导致的模型风险:例如,来自外部的对抗样本攻击可诱使算法识别出现误判漏判,输出错误结果。本文,我们会针对第2点的对抗样本技术结合其在阿里巴巴安全领域中的实际应用给大家做展开介绍。对抗样本技术对抗样本由 ChristianSzegedy[1]等人提出,他们发现通过深度神经网络训练得到的模型,在输入与输出之间的映射往往不是线性的。这样就存在一个问题: 在输入数据中通过故意添加肉眼不易察觉的细微扰动,可以生成对抗样本,导致AI模型以高置信度给出一个错误的输出。如下图所示:目前的对抗样本根据是否需要指定攻击的类目可以分为无目标攻击(non-targeted attack)和目标攻击(targeted attack)。前者不指定具体类目,只要让AI识别错误即可。后者不仅需要使AI识别错误,还需要使AI识别到指定的类别。生成对抗样本,最直接的方法是在给定扰动量的范围内修改样本,使得修改后的样本在AI模型上的损失函数最大化(非定向攻击)或最小化(定向攻击),这样就可以把生成对抗样本的问题归纳为空间搜索的优化问题。基于不同的优化算法,学术界提出了很多对抗样本生成算法,有兴趣的朋友可以自行检索,此处不具体展开。对抗样本应用场景对抗样本技术提出后引发了学术界和工业界对于深度学习模型在安全方面的广泛关注,成为目前深度学习领域最火热的研究课题之一,新的对抗攻击方法不断涌现,应用场景从图像分类扩展到目标检测等。阿里安全一直以来致力于用技术解决社会问题。为了保障整个生态圈中7亿多消费者和千万商家的信息安全,AI技术很早就被应用到了阿里安全体系建设中。安全领域一个重要的特点就是存在很强的对抗性,日常防控中,黑灰产会尝试使用各种对抗样本攻击我们部署的AI防控大坝。对此,一方面,阿里安全图灵实验室的算法专家们提出了若干种提升模型安全性能的方法,强化自身堡垒;另一方面,算法专家们也会以战养战,开展针对对抗样本的攻防研究,利用对抗技术去防御攻击者的模型。下面我们结合实际业务,介绍两种对抗样本的应用场景:1.人脸识别人脸识别技术已经在生活的各个场景普遍应用,手机解锁要靠脸、移动支付要靠脸,机场安检要靠脸……一脸走天下的时代逐渐到来。然而,Bose 和 Aarabi[2]发现通过在原始图像中加入人眼不可区分的微量干扰对人脸识别算法进行攻击后,能够使人脸无法被检测算法定位到。如下图所示,左列为原始图像,检测算法可以准确定位,右列为对抗样本,已经成功绕开了人脸检测算法,而在我们肉眼看来两幅图画基本没有差别。更进一步,采用对抗样本攻击人脸识别系统,还可以使算法把人脸识别成指定的错误类别[3]。下图第一列为目标类别,第2和第4列为原始样本,对其加入干扰生成的对抗样本在第3和第5列,它们均被算法错误识别为第一列目标类别。2.对抗验证码如同网络通信的基础安全设施——防火墙,互联网业务安全也有其基础安全设施——图片验证码和短信验证码。互联网业务广泛使用图形验证码用于区分人类和机器的操作行为,使用短信验证码过滤黑灰产批量账号及提供二次校验功能。现在随着深度学习的门槛越来越低,黑灰产会利用深度学习技术构建模型自动识别验证码,突破算法模型设置的人机识别防线。下图的文本验证码基本都可以被AI模型轻松识别。针对文本验证码面临的挑战,阿里安全图灵实验室的算法专家们将原始验证码替换成增加扰动后的对抗验证码。为了增加对抗验证码的识别难度,又不影响正常用户的体验,算法专家们又在图像区域和生成方式上进行了组合扩展,最终生成的对抗样验证码有效抵御了黑灰产的批量破解,成为阿里业务安全的一道铜墙铁壁。采用该组合扩展生成的对抗验证码如下图所示:针对点击式的图文验证与行为辅助验证码,阿里安全图灵实验室的算法专家们首先在验证码中结合了NLP的问答技术,再将全部问答转换成图片,最后利用对抗技术生成对抗问答图片。使用商业的OCR引擎进行对此类对抗问答图片样本进行识别测试,和原始样本的识别率相比,对抗样本的识别率大幅降低,且并没有对用户的体验带来很大的影响,由此可见AI结合安全能为业务带来巨大的价值。本文作者:安全第一阅读原文本文来自云栖社区合作伙伴“ 阿里技术”,如需转载请联系原作者。

March 12, 2019 · 1 min · jiezi

助力中文文字识别突破,美团公开首个真实场景招牌图像数据集

美团作为全球最大的本地生活服务平台,拥有由遍布全国的市场人员所拍摄的众多门脸招牌图片数据。每张图片都是由全国的不同个人,采用不同设备,在不同地点,不同时间和不同环境下所拍摄的不同目标,是难得的可以公正评价算法鲁棒性和识别效果的图片数据,挑战也非常大。近年来业界围绕着文字检测和文字识别提出了许多有效的算法和技术方案。由于之前公开的数据集普遍以英文为主,因此所提出的技术方案对中文特有问题关注不足。表现在以中文为主的实际应用场景中,这些技术方案的结果与应用预期差距较大。以美团掌握的某典型中文图片数据为例,在6000张图的图片数据集上(已去除文字无法辨识的图片),测试了国内最知名的三个AI开放平台,按字段统计识别率分别是94%,91% 和 86%,经过努力我们也只达到 98%。中文OCR在实际应用场景的表现并不乐观。在此次 ICDAR2019上,我们挑选出很能代表中文特点的餐饮商家的门脸招牌图片来组织竞赛,这些招牌上的文字存在中文特有的设计和排版,同时也兼有自然场景文字识别中普遍存在的拍照角度、光照变化等干扰因素。我们希望通过竞赛引起同行们对中文识别的关注,群策群力解决中文识别的实际问题。会议与大赛介绍国际文档分析与识别国际会议 (International Conference on Document Analysis and Recognition,ICDAR)是由国际模式识别学会(IAPR)组织的专业会议之一,专注于文本领域的识别与应用。ICDAR大会每两年举办一次,目前已发展成文字识别领域的旗舰学术会议。为了提高自然场景的文本检测和识别水平,国际文档分析和识别会议(ICDAR)于2003年设立了鲁棒文本阅读竞赛(“Robust Reading Competitions”)。至今已有来自89个国家的3500多支队伍参与。ICDAR 2019将于今年9月20-25日在澳大利亚悉尼举办。 美团今年联合国内外知名科研机构和学者,提出了"中文门脸招牌文字识别"比赛(ICDAR 2019 Robust Reading Challenge on Reading Chinese Text on Signboards)。组织者王栋、张睿、刘曦、周永生,美团白翔、廖明辉、杨明锟,华中科技大学Baoguang Shi, Microsoft (Redmond,USA)Shijian Lu, Nanyang Technological University (Singapore)Dimosthenis Karatzas,Computer Vision Centre,UAB(Spain)C. V. Jawahar,IIIT Hyderabad(India)数据集介绍美团本次公开的数据,由遍布全国的市场人员所拍摄的众多门脸招牌图片组成,共25000张。每张图片是由完全独立的不同个人,采用不同设备,在不同地点,不同时间和不同环境下所拍摄的不同商家。该数据集以中文文字为主,也包含一定数量的英文和数字,英文和数字的占比介于 10% 和 30% 之间。标注内容比较完备,每张图片均标注了单个字符的位置和文本,以及各字符串的位置和文本。是难得的用于研发和评估中文识别技术的数据集。其中,20000张图片用于训练,2000张用于验证,3000张用于测试。比赛内容本次门脸招牌识别,共定义了 4 个任务,分别如下:TASK 1:招牌端到端文字识别TASK 2:招牌文字行定位TASK 3:招牌区域内单字识别TASK 4:招牌区域内字符串识别奖励方式颁发奖状:按照最终成绩进行排名,以从高至低顺序依次选取前三名,颁发奖状。比赛奖金:从高至低顺序选取前三名参赛方为学校及科研院所等非盈利机构。奖金详细如下:重要日期2019年3月1日:报名通道开放2019年3月18日:训练数据集开放2019年4月15日:测试数据集分批开放2019年4月16日:提交通道开放2019年4月30日:提交截止日期2019年5月10日:比赛最终报告提交2019年9月20日:ICDAR 2019 大会召开参赛报名扫描下方二维码,直接进入报名链接报名。报名链接地址: http://rrc.cvc.uab.es/?ch=12报名链接二维码: 参赛答疑与交流参赛答疑邮箱:mtdptech@meituan.com(邮件标题请注明 “ICDAR2019”)加入参赛交流微信群步骤1:微信添加 “MTDPtech02” 为好友(昵称:美美),或扫描下方二维码直接添加:步骤2:回复美美 “ICDAR2019”,则会自动将您加入ICDAR2019-ReCTS技术交流群

March 1, 2019 · 1 min · jiezi

Mars 算法实践——人脸识别

Mars 是一个基于矩阵的统一分布式计算框架,在之前的文章中已经介绍了 Mars 是什么, 以及 Mars 分布式执行 ,而且 Mars 已经在 GitHub 中开源。当你看完 Mars 的介绍可能会问它能做什么,这几乎取决于你想做什么,因为 Mars 作为底层运算库,实现了 numpy 70% 的常用接口。这篇文章将会介绍如何使用 Mars 完成你想做的事情。奇异值分解 (SVD)在处理纷繁的数据时,作为数据处理者,首先想到的就是降维,SVD 就是其中一种比较常见的降维方法,在 numpy.linalg 模块中就有 svd 方法,当我们有20000个100维的数据需要处理,调用 SVD 接口:In [1]: import numpy as npIn [2]: a = np.random.rand(20000, 100)In [3]: %time U, s, V = np.linalg.svd(a)CPU times: user 4min 3s, sys: 10.2 s, total: 4min 13sWall time: 1min 18s可以看到即使 Numpy 使用了 mkl 加速,也需要1分多钟的运行时间,当数据量更大时,单机的内存已经无法处理。Mars 也实现了 SVD ,但是它比 Numpy 有更快的速度,因为利用矩阵分块计算的算法,能够并行计算:In [1]: import mars.tensor as mtIn [2]: a = mt.random.rand(20000, 100, chunk_size=100)In [3]: %time U, s, V = mt.linalg.svd(a).execute()CPU times: user 5.42 s, sys: 1.49 s, total: 6.91 sWall time: 1.87 s可以看到在相同数据量情况下,Mars 有几十倍速度的提升,仅仅需要1秒多钟就可以解决20000数据量的降维问题。想象一下淘宝用户数据做矩阵分解时,分布式的矩阵运算就显现出其价值。主成分分析 (PCA)提到降维,主成分分析也是一种重要的手段。PCA 会选取包含信息量最多的方向对数据进行投影,其投影方向可以从最大化方差或者最小化投影误差两个角度理解。也就是通过低维表征的向量和特征向量矩阵,可以基本重构出所对应的原始高维向量。其最主要的公式如下所示:xi为每个样本的数据,j为新的投影方向,我们的目标就是使得投影方差最大化,从而找到主特征。上面式子中的矩阵C在数学中可以用协方差矩阵表示,当然首先要对输入的样本做中心化调整。我们可以用随机产生的数组看一下 Numpy 是如何实现 PCA 降维操作:import numpy as npa = np.random.randint(0, 256, size=(10000, 100))a_mean = a.mean(axis=1, keepdims=True)a_new = a - a_meancov_a = (a_new.dot(a_new.T)) / (a.shape[1] - 1)#利用SVD求协方差矩阵前20个特征值U, s, V = np.linalg.svd(cov_a)V = V.Tvecs = V[:, :20]#用低纬度的特征向量表示原数据a_transformed = a.dot(vecs)由于随机产生的数据本身就没有太强的特征,所以在100维数据中象征性的取出前20维,一般可以用特征值的比例取总和的前99%之类的数值。再看一下 Mars 是如何实现的:import mars.tensor as mta = mt.random.randint(0, 256, size=(10000, 100))a_mean = a.mean(axis=1, keepdims=True)a_new = a - a_meancov_a = (a_new.dot(a_new.T)) / (a.shape[1] - 1)#利用SVD求协方差矩阵前20个特征值U, s, V = mt.linalg.svd(cov_a)V = V.Tvecs = V[:, :20]#用低纬度的特征向量表示原数据a_transformed = a.dot(vecs).execute()可以看到除了 import 的不同,再者就是对最后需要数据的变量调用 execute 方法,甚至在未来我们做完 eager 模式后, execute 都可以省去,以前用 Numpy 写的算法可以几乎无缝转化成多进程以及分布式的程序,再也不用自己手动去写MapReduce。人脸识别当 Mars 实现了基础算法时,便可以使用到实际的算法场景中。PCA最著名的应用就是人脸特征提取以及人脸识别,单个人脸图片的维度很大,分类器很难处理,早起比较知名的人脸识别 Eigenface 算法就是采用PCA算法。本文以一个简单的人脸识别程序作为例子,看看 Mars 是如何实现该算法的。本文的人脸数据库用的是ORL face database,有40个不同的人共400张人脸图片,每张图片为 92112 像素的灰度图片。这里选取每组图片的第一张人脸图片作为测试图片,其余九张图片作为训练集。首先利用 python 的 OpenCV 的库将所有图片读取成一个大矩阵,也就是 36010304大小的矩阵,每一行是每个人脸的灰度值,一共有360张训练样本。利用 PCA 训练数据,data_mat 就是输入的矩阵,k 是需要保留的维度。import mars.tensor as mtfrom mars.session import new_sessionsession = new_session()def cov(x): x_new = x - x.mean(axis=1, keepdims=True) return x_new.dot(x_new.T) / (x_new.shape[1] - 1)def pca_compress(data_mat, k): data_mean = mt.mean(data_mat, axis=0, keepdims=True) data_new = data_mat - data_mean cov_data = cov(data_new) U, s, V = mt.linalg.svd(cov_data) V = V.T vecs = V[:, :k] data_transformed = vecs.T.dot(data_new) return session.run(data_transformed, data_mean, vecs)由于后续做预测识别,所以除了转化成低维度的数据,还需要返回平均值以及低维度空间向量。可以看到中间过程平均脸的样子,前几年比较火的各地的平均脸就可以通过这种方式获取,当然这里的维度以及样本比较少,大概只能看出个人脸的样子。其实 data_transformed 中保存的特征脸按照像素排列之后也能看出特征脸的形状。图中有15个特征脸,足以用来做一个人脸分类器。另外在函数 PCA 中用了 session.run 这个函数,这是由于三个需要返回的结果并不是相互独立的,目前的延迟执行模式下提交三次运算会增加运算量,同一次提交则不会,当然立即执行模式以及运算过的部分图的剪枝工作我们也在进行中。当训练完成之后,就可以利用降维后的数据做人脸识别了。将之前非训练样本的图片输入,转化成降维后的维度表示,在这里我们就用简单的欧式距离判断与之前训练样本中每个人脸数据的差距,距离最小的就是识别出的人脸,当然也可以设置某个阈值,最小值超过阈值的判断为识别失败。最终在这个数据集下跑出来的准确率为 92.5%,意味着一个简单的人脸识别算法搭建完成。# 计算欧氏距离def compare(vec1, vec2): distance = mt.dot(vec1, vec2) / (mt.linalg.norm(vec1) * mt.linalg.norm(vec2)) return distance.execute()未来上文展示了如何利用 Mars 一步一步地完成人脸识别小算法的过程,可以看到 Mars 类 Numpy 的接口对算法开发人员十分友好,算法规模超出单机能力时,不再需要关注如果扩展到分布式环境,Mars 帮你处理背后所有的并行逻辑。当然,Mars 还有很多可以改进的地方,比如在 PCA 中对协方差矩阵的分解,可以用特征值、特征向量计算,计算量会远小于 SVD 方法,不过目前线性代数模块还没有实现计算特征向量的方法,这些特性我们会一步步完善,包括 SciPy 里各种上层算法接口的实现。大家有需求的可以在 GitHub 上提 issue 或者帮助我们共建 Mars。Mars 作为一个刚刚开源的项目,十分欢迎提出其他任何想法与建议,我们需要大家的加入,让 Mars 越来越好。本文作者:继盛阅读原文本文为云栖社区原创内容,未经允许不得转载。 ...

January 9, 2019 · 2 min · jiezi

2018年度机器学习50大热门网文

摘要: 本文总结了2018年期间机器学习博客top50篇,在这个寒冬中给大家带来一点干粮。新的一年新气象,总结过去一年,展望新的一年。站在巨人的肩膀上前行,肯定会事半功倍。因此,本文从2018年1月至12月期间挑选出近22,000篇机器学习文章,并进行比较,以挑选出能够提升2019年数据科学技能的前50名文章。从概率上讲,这是一个极具竞争力的列表,概率仅为50 / 22,000(0.23%),且需要经过仔细挑选并与过去一年发布的机器学习文章进行对比。Mybridge AI通过考虑受欢迎程度、参与度和新近度以及其他人为因素来评估这些文章的质量。本教程将50篇文章划分为16个相关组:寒冬已至,请花些大量时间阅读过去一年中可能错过的顶级机器学习教程。如果想查看去年最好的机器学习系列文章,请点击这里。深度视频No. 1Deepfakes与家庭乐趣,如何让自己妻子参加今夜秀——由Sven Charleer提供;No. 2深度视频肖像:一种新颖的方法,只使用输入视频即可实现肖像视频的照片般逼真的重新动画——由Christian Theobalt提供;人脸识别No. 3如何使用Python中的深度学习实现iPhone X的FaceID功能——Nouman Di PaloCourtesy;No. 4使用OpenCV、Python和深度学习进行人脸识别——由Adrian Rosebrock提供;No. 5前沿人脸识别很复杂,这些电子表格让它变得更容易——由 Dave Smith提供;对象检测No. 6在Airbnb上分类列表照片:大规模深度学习模型正在改变我们在平台上思考家庭图像的方式——由Shijing Yao提供;No. 7使用OpenCV进行YOLO对象检测——由Adrian Rosebrock提供;No. 8使用10行代码实现对象检测——由Moses Olafenwa提供;游戏AINo. 9游戏AI的初学者指南——由Kylotan提供;No. 10基于预测奖励的强化学习——由Harri Edwards提供;No. 11Montezuma的复仇之路通过Go-Explore解决,这是一种新的解决困难探索问题的算法——由优步工程师提供;No. 12抢旗:代理如何在复杂的第一人称多人游戏中实现人类级别的表现,甚至可以与人类队友合作——由DeepMind提供;No. 13OpenAI Five:在Dota 2游戏中击败业余人类玩家——由OpenAI提供;象棋No. 14AlphaZero:在国际象棋、将棋和围棋的盛大游戏中崭露头角——由DeepMind提供;No. 15如何使用Python和Keras构建自己的AlphaZero AI——由David Foster提供;No. 16简单解释:人工智能程序如何掌握围棋游戏的古老游戏——由Aman Agarwal提供;医疗No. 17深度学习在医学图像数据集中的不合理用处——由Luke Oakden-Rayner提供;No. 18利用基于DNA的胜者通吃神经网络扩大分子模式识别——由Kevin M. Cherry、Lulu Qian提供;No. 19针对脑核磁共振图像的深度学习方法——由Henrik Marklund提供;运动No. 20每个人都跳舞:一个简单的方法“跟我做”动作迁移——由Caroline Chan等人提供;No. 21走向虚拟替身演员——由Xue Bin peng提供;No. 22学习敏捷:一个真正的机器人手,使用与OpenAI Five相同的学习算法和代码进行训练,已经学习了类似于旋转物体的动作——由OpenAI提供;No. 23在人工代理中使用类似网格的表示进行导航——由Andrea Banino等人提供;Web&AppNo. 24如何使用CoreML、PyTorch和React Native在iOS上发布神经网络——由 Stefano等人提供;No. 25如何训练AI将设计模型转换为HTML和CSS——由Emil Wallner提供;翻译No. 26通过更快的训练和推理将神经机器翻译成更大的数据集——由Michael Auli等人提供;No. 27在翻译中找到:通过深入学习从头开始构建语言翻译——由Samuel Lynn-Evans等人提供;No. 28无监督机器翻译:为更多语言提供快速,准确翻译的新方法。由Facebook Research提供NLPNo. 29有关BERT、ELMo和co(如何NLP破解转移学习)的说明——由Jay Alammar提供No. 30注释迁移学习——由哈佛NLP组提供;No. 31自然语言处理很有趣——由Adam Geitgey提供;神经网络No. 32如何在Python中从头开始构建自己的神经网络——由James Loy提供;No. 33使用简单的NumPy编写一个神经网络——由Piotr Skalski提供;CNNNo. 34可区分的图像参数化:一种功能强大、探索不足的神经网络可视化和艺术工具——由distillpub提供;No. 35特征转换——由distillpub提供;No. 36Keras和卷积神经网络(CNN——由Adrian Rosebrock提供;No. 37可解释性的组成部分——由Distill提供;No. 38Rosetta:通过机器学习理解图像和视频中的文本——由Facebook Research提供;No. 39一个有趣的卷积神经网络失败案例和协同解决方案——由优步提供;RNNNo. 40Google Duplex:用于通过电话完成真实世界任务的AI系统——由Yaniv Leviathan提供;No. 41世界模型:代理人可以在自己的梦中学习吗?——由maru提供;强化学习No. 42经验教训再现深度强化学习论文——由Matthew Rahtz提供;No. 43具有强化学习的灵巧操作:高效、通用和低成本——由Henry Zhu等人提供;No. 44深度强化学习不起作用——由Sorta Insightful提供;TensorFlowNo. 45TensorFlow中的三元组损失和在线挖掘——由Olivier Moindrot提供;No. 46Tensorflow:令人困惑的部件(1)——由Jacob Buckman提供;No. 47Tensorflow-Project-Template:TensorFlow项目模板架构的最佳实践(Github上已有2579颗星)——由Mahmoud Gemy提供;No. 48使用TensorFlow.js在浏览器中进行实时人体姿态估计——由TensorFlow提供;指南No. 49机器学习规则:| ML通用指南|谷歌开发者——由Martin Zinkevich提供;No. 50基于模型的机器学习——由John Winn和Christopher M. Bishop提供以上就是2018年度top50机器学习教程。如果你有更好的文章,请留言。本文作者:【方向】阅读原文本文为云栖社区原创内容,未经允许不得转载。 ...

January 2, 2019 · 1 min · jiezi

理解五个基本概念,让你更像机器学习专家

摘要: 这篇文章主要讲述了机器学习的相关内容,阐述了机器学习的主要意义和形成过程。区别了机器学习与AI、深度学习、神经网络等专业词汇。大多数人可能对机器学习有点恐惧或困惑。 脑子中会有它到底是什么,它有什么发展方向,我现在可以通过它挣钱吗等等这样的问题。这些问题的提出都是有依据的。事实上,你可能没有意识到自己其实多年来一直在训练机器学习模型。你看过苹果手机或者是Facebook上的照片吧? 你知道它如何向你展示一组面孔并要求你识别它们吗?其实,通过标记这些照片,你正在训练面部识别模型去识别新面孔。恭喜你,现在可以说你有训练机器学习模型的经验了!但在此之前,请阅读这些机器学习基础知识,以便你可以准确回答任何后续问题。1)机器学习可以预测如果你只是在图片中标记朋友的面孔,那就不是在用机器学习模型。如果你上传了一张新照片系统马上告诉你每个人是谁,那你就是应用了机器学习模型。机器学习的主要意义在于根据图案模型和经过训练的其他因素来预测事物。它可以预测任何事物,如要基于地理位置和卧室数量预测房价,基于一年中的时间和天气的变化预测航班是否会延误,依据图片中的人物特点进行人像识别等等。2)机器学习需要训练你必须告诉机器学习模型它试图预测的是什么。想想一个孩子是如何学习的,他们第一次看到香蕉,他们不知道它是什么。然后你告诉他们这是一个香蕉。下次他们看到另一个,他们会把它识别为香蕉,机器学习就是以类似的方式工作。你可以尽可能多地展示香蕉的照片,告诉它这是香蕉,然后用未经训练的香蕉图片进行测试。但这是一个过度的简化的方法,因为整个过程遗漏了告诉它什么不是香蕉的部分,除此之外还要给它展示不同种类不同颜色、不同角度的香蕉图片等等。3)达到80%的准确度就可以认为是成功的我们还没有达到通过机器学习平台识别图片中的香蕉达到100%的准确率技术的地步,但也没关系,事实证明,人类去识别也不是100%准确。业界的潜规则是达到80%准确度的模型就是成功的。大家可以思考一下,在你收藏的图片中正确识别800,000张是非常有用的,虽然可能还有错误的200,000张,但这已经节省了80%的时间。毋庸置疑,这是非常有价值的。假如我可以用它使你的生产力提高如此之多,你肯定会付我很多钱。而事实证明我可以用机器学习提高你的生产力。(2018年更新:80%规则改为90%规则。)4)机器学习不同于AI,深度学习或神经网络人们经常随意抛出以上这些术语,听起来像专家,但其中有很大差异。AI-人工智能是指在完成特定任务时与人类一样好(或优于人类)的计算机。它也可以指一个可以根据大量输入做出决策的机器人,与终结者或C3PO不同。它是一个非常广泛的术语,不是很有特指性。ML-机器学习是实现AI的一种方法。就是通过解析数据集对某事做出预测。ML平台可以通过许多不同的方式运行训练集来预测事物。NL-神经网络是实现机器学习模型预测事物的方式之一。神经网络的工作有点像人的大脑,通过大量的训练来调整自己,以了解香蕉应该是什么样子。这个过程创建了非常深的节点层。5)在AI变得有自我意识之前,我们还有很长的路要走我并不担心机器学习接管地球。主要是因为如果你曾构建过一个机器学习模型,就会明白它需要依赖你来告诉它究竟该做什么。即使你给出明确的指示,它通常也会出错。你必须对这些体系非常清晰明确,让它突然变化的可能性降到最低。即使是一个显示带有单词的框的简单网页,也需要你准确地告诉它该框出现的位置,形状,颜色,如何在不同的浏览器上工作,如何在不同的设备上正确显示等等。本文作者:【方向】阅读原文本文为云栖社区原创内容,未经允许不得转载。

November 30, 2018 · 1 min · jiezi

腾讯云技术专家卢萌凯手把手教你Demo一个人脸识别程序!

欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~本文来自腾讯云技术沙龙,本次沙龙主题为Serverless架构开发与SCF部署实践 卢萌凯:毕业于东南大学,曾就职于华为,熟悉云行业解决方案。目前负责腾讯云中间件产品及无服务器云函数的技术架构打造,帮助用户完成方案设计,对云端存储产品的使用难点有独到见解。大家好。我是腾讯云中间件及无服务器云函数架构师。我今天介绍分四部分:第一,对象存储COS简介。第二,比较实用的一部分,SCF与COS结合使用的应用场景。第三,比较有意思,人脸识别Demo。调用AI的接口,用几行代码就把人脸识别的Demo就实现了。最后一部分是最佳实践。其实主要是来看一下在COS使用过程当中有哪些需要注意的地方。我们先来介绍第一部分,就是腾讯云存储平台发展历程。首先我们可以看到在2006年的时候腾讯云发布了第一代分布式存储平台,叫TFS。经过近十年发展到2014年存储量达到500P,也是在这一年随着腾讯云推出,腾讯云存储系统开始对外服务。到现在腾讯云超过EB级存储,现在对内服务腾讯相册,QQ以及外部的58同城和大众点评等。对象存储是什么?这页简单介绍一下对象存储概念,如果用云上的话,就是用云的概念,腾讯云对象存储提供的是面向非结构化数据,支持HTTP和HTTPS协议访问的分布式存储服务,它能容纳海量数据并保证用户对带宽和容量扩充无感知,这里可以理解为基于Serverless架构。同时对象存储也会对云上其他的产品做一些深入的结合,比如和CDN结合,用户传到CDN音视频可以选择CDN进行加速,也可以跟云上音视频转码服务相结合,上传到COS音视频可以做转码服务。支持万象优图服务,可以对图片加水印等方面处理。这里列了一个COS对象存储简易流程,用户可以通过手机APP、网站或者H5页面可以方便简单的访问。COS会和云上其他的应用结合,同时用户也可以选择和COS本地服务相结合。这里给了一个COS应用架构,上面是一个传输服务,可以选择CDN加速。比如用户需要上传到COS延时高的情况下可以选择CDN加速;同时可以选择腾讯云提供的专线服务,可以保证延时。同时可以使用运营商服务。应用接入层可以选择应用服务,像图片智能识别和处理,音视频处理等。同时COS可以和云上一些大数据套件对接。一个简单的场景,用户可以用云上的Kafka直接写入COS,COS和大数据对接来做用户行为的分析。下面是数据接口,这边是COS底层的一些接入方法。最底层是分布式数据存储,我们可以通过API或者通过HTTP REST来访问接口。这里给了一个简单的应用流程,最左边可以看到用WEB服务,或者APP终端,通过运营商网络接入到对象存储,做一些简单的上传和下载动作;同时,腾讯云上的COS可以做CDN分发,或者做格式转换,或者对接到云上的云主机或者私有的客户自己的云服务,做一整条流程的打通。把刚才的应用案例再细化一下的话,这边给出了一个用户在实际使用过程当中的架构图。首先,最左边的用户可以通过调API接口,或者自己调云上封装好的sdk,在自己代码里去读写COS。或者通过控制台很方便的上传和下载一些文件。这边是腾讯云上COS云存储,这里一共给了三种应用:一个是标准存储,一个是低频存储,还有近线存储。低频存储是用于读写数据频率比较低的场景,比如说是网盘的运用。近线存储主要用于归档数据,它可能是一些冷数据,不经常用,可以用近线存储,它也可以提供高可靠的数据保存。同时,它的成本也是非常低的。同时对象存储可以对接云上其他的服务,并针对不同的用户可以设置不同的访问权限。我这里放了一个视频对应用场景做一个总结和发散。我这里写了一个简单的Demo,主要做人脸识别,首先我会创建两个存储桶,这两个存储桶用来上传用户的信息,触发SCF调用,其中一个做用户特征的提取。第二个存储筒上传第二张用户的图像,和第一个比对,查看是否可以查到这个用户信息。SCF里直接调AI的接口,大概有四、五行代码就能实现创建用户的信息,再加一行代码就能比对用户信息。这里用SCF日志展示输出。这个流程图是这样的,首先我在COS Bucket1里上传一张图片,看他是否是一个新用户,不是的话就创建一个特征,如果是,就把这个人像添加到已创建的用户特征。另外一个Bucket叫这个名字,这个也会触发相同的SCF,用于查看用户的特征,如果查到的话这个用户可以获取权限;如果查不到就会返回到无权限。具体的话在控制台上我这边已经写好了这个函数,我们通过查看函数执行日志来查看输出结果。这里我已经创建好一个bucket,这个用来用户上传图像来提取用户特征。我会做一些测试,我已经有一些测试图片了。我现在在网上随意下载一个用户的图像。我们看到这个图片上传成功了,叫范2,我现在到云函数控制台查看一下日志,这边可以看到时间是16点37分。现在是没有权限的,再上传一张图片,在new face提取一下特征,还是刚才那张图片。已经上传成功了。由于刚才是没有她的用户特征,所以这里会创建一个新用户。我在上传另外一张图片,这两张图片是不一样的,16点38分刚刚上传成功。现在再回到控制台这边查看日志,现在看到刚才范这张照片,可以查看到她的特征了。我再给大家看一下代码。我刚才实现的代码里,大部分都是从cos里下载图片的代码和逻辑判断,实际做人像识别的代码是直接调AI接口。这里还会对图片做大小判断,如果太大的话会做一次裁剪,因为太大的话可能上传到cos时会报超时。下面我还列了一些对AI接口的操作,这里有很多的接口都封装到了SDK,直接调用大概也就几行就可以实现,比如人脸检索,特征信息创建,人脸比对两张照片是否是一个人,还有身份证识别,所以使用起来是很方便的。现在回到PPT,这一部分介绍的是COS和SCF结合的应用架构和应用场景。第一页是放的云函数架构平台,这边是BaaS架构。用户可以上传代码和做一些配置在云函数平台,并选择COS触发器,同时也可以选择上传或者删除事件来触发这个云函数。文件上传到云函数后,可以在云函数里做很多操作,比如说我可以做日志备份,跨区域的文件复制,写云数据库,做一些图片处理或者语音识别等。或者我可以用SCF对接IoT平台,把数据推到IoT终端。大部分的云服务都可以和云函数平台做一个结合。这样用的好处是COS这边可以提供高并发的场景。云函数这边也可以支持高并发。用户只用聚焦自身代码的实现,使服务可以快速上线,且当用户的调用量很大的时候,这个架构也能很好的应对,有效的应对波峰和波谷。把才的场景轴象化、简单化后,可以看到左边是COS存储桶,我可以做上传删除等等,右边可以和其他的产品或者服务做结合,像自定义日志分析,和消息队列做事件通知。这里举例用户头像制作,用户上传图片到COS,触发SCF运行,SCF对图片进行处理后发送到客户端,并写入COS,删除原图。假定我这边配置SCF内存128MB,单词执行时间1秒,平均每天被触发运行5万次。COS配置触发SCF运行,用户上传到COS的平均文件大小1MB,每天上传5万次,被SCF处理后,图片大小为100K。这样算出来SCF是这三部分的加和,因为这里免费额度的原因,所以这边资源使用费用是零,相当于是免费在使用Serverless。这边调用次数的费用是0.69元,每天触发调用5万次,一个月的费用不到1块钱。另外一个费用是因为这边有外网出流量,每次上传是多少GB,然后乘以5万次,再乘30天,每GB0.8元,算出来是144元。如果没有往客户端发流量,所有的流量都在平台内部打转的话,这个费用也是没有的,相当用SCF的费用基本上不到两块钱。COS的话这边也是把免费额度扣除掉之后,每次用户上传,存100K的图片,加上读写IO,算出来是一个月14.6。所以这边加起来一个月不到130块钱。这是一个实际应用场景里COS和SCF的价格举例。这里我又列举了一些用户的实际案例,这边因为没有拿到用户的授权,所以没有把用户的名称放出来。这个案例是视频文件转码,这边是用户视频文件上传,调用腾讯云的视频解码服务,再根据不同码率写到COS,COS最后会用CDN,对视频文件做一个加速。这里所有的触发都在云上,你不需要运维,同时这边的服务也是非常的便宜。这个是CDN自动刷新,很多用户会用到COS和CDN,把COS文件做CDN加速,但是这里有一个问题,每次文件更新都需要手动点击刷新,现在就不用了,上传到COS的文件自动触发SCF,SCF调CDN的API接口,实现自动刷新。这个客户案例,是做日志文件分析,客户的点播平台每时每刻都在产生大量的日志,怎样快速低成本的对这些日志进行统计分析,筛选出最受欢迎的视频源,点播峰值时间段等并展示出来成为客户面临的难题。这个案例是一个在线视频教育的案例,老师和学生会有视频课程,它们会从视频课程抓取图像,然后把这些图像上传到COS,然后COS会触发SCF做一次分析,把这个写到消息队列,并通知客户自身的业务模块进行分析,从而来判断老师和学生之间是否有敏感信息产生。这是一个自动灾备的案例,客户是荔枝微课,用户在APP或者电脑端做文件上传,文件上传以后,需要同步到跨区域同跨帐号下的其他Bucket。最后我说一下最佳实践。其实只要能为用户实际创造价值,它就是一个最佳实践。这边我列举了几条,主要是在使用COS和SCF过程中的注意事项。比如COS触发SCF的流程,首先COS会把上传和删除事件写到自己的消息队列,和云函数SCF消息队列做一个对接,云函数消息队列会触发云函数执行每次的事件操作。所以这是异步调用。有同学会问这边是不是实时的,如果正常情况下,没有消息堆积的话是毫秒级。如果某一时刻有大量用户做上传视频或者删除动作的话,可能会产生消息堆积。如果来不及消费,可能在秒级触发SCF运行。COS触发SCF只支持同地域配置。COS支持前后缀过滤触发,以及同一Bucket中多种事件类型触发SCF。为了避免COS的事件生产投递出现错误,COS针对每个Bucket的每个事件限制只能绑定一个可触发的函数。主要为了避免用户出现循环的调用,触发错误。目前单个云函数支持绑定2个COS触发器。最后一个是列举了COS Bucket的消息格式,会把什么样的信息发给SCF。SCF在这个事件里把消息拉出来。比如用户的APPID,用户上传的文件名,以及用户Bucket所在的地域,这边都可以拿到。所以在SCF这边可以拿到用户上传到COS大部分的文件信息。有同学问到,传统开发模式和无服务器模式架构的区别,或者说是用传统开发模式的优势或者两者之间的成本对比。这边可以看到对于传统架构设计,比如买了云主机,架构分层,功能划分,模块通信等等都需要考虑。用无服务器只需要对函数功能进行划分,同时把一些具体的功能通过事件触发的形式去绑定到一起,这边架构上会减少很多工作量。但是,如果说这个逻辑或者服务计算是非常重的话,其实还是用传统开发模式可能会更好一点。另外如果云主机使用效率在 70%以下的话,其实SCF会便宜很多,同时SCF可以省去很多运维和环境搭建的工作。代码开发,传统模式要考虑到容灾,业务逻辑的对接。云函数只需要关心自己的业务代码,把业务代码写好后配置相应的触发器,这边就可以运行了。代码调试,登陆服务器使用熟悉的工具在本地调试。无服务器目前主要依赖日志调试。发布部署,云函数这边可能效率会更高一点,但是差别不是很大。Q&AQ:我在更新我的模型文件的时候,会不会对我其他的文件产生影响?A:像对COS做热更新的时候,在那个时刻会有影响,但是在过程中没有影响。Q:SCF到底是什么?A:简单来说SCF就是一种计算资源。我们有时候会叫它FaaS。FaaS是一个概念,SCF是一款产品。本文PPT附件请点击原文下载。问答Serverless:如何删除一个函数? 相关阅读多个场景中的AI落地实践低于0.01%的极致Crash率是怎么做到的? 【每日课程推荐】新加坡南洋理工大学博士,带你深度学习NLP技术

September 1, 2018 · 1 min · jiezi