标签: 人脸识别

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

    Department of Computer Science
    COMPX203 Computer Systems
    Exercise 2 – C and WRAMP Programming
    Due Date: 13 April 2022
    Objectives
    This 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 interacting
    between the two using the system stack.
    It is highly recommended that you read this entire specification before beginning to write any code.
    Assessment
    This 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].srec
    For example, the third question in this exercise would be called ex2_q3.srec
    Questions

    1. Passing Parameters using the Stack
      Create a new WRAMP assembly file called ex2_q1.s, and in that file create a subroutine called
      print. You don’t need to declare a main label in this file, because we’ll link against
      another file later on that contains the main subroutine of the program.
      print is a function that takes a single integer parameter and prints it on the first serial port,
      then returns. The caller will read the switches and call print with the integer as argument.
      Your code should only print the value received by the caller on the first serial port. The
      maximum decimal value represented by the switches is 65535 (when all switches are on or
      ‘up’). Since the Basys board has only four SSDs, we will send the value of the switches to the
      first serial port instead. This will allow showing the full decimal number represented by the
      switches (four SSDs will show only up to 9999 decimal) on the serial port. The value printed
      should be padded to the left with 0s if it is shorter than five characters. For example, if the
      number given is 1234, your code should print “01234”.
      For testing, you should be able to change the switches positions and type go to see the decimal
      value of the switches on the screen (you need to enter go whenever you change the
      switches to see the new value on the screen, as the main object file reads the switches and
      calls print only once, then returns). Hint: a five digit decimal number cannot be sent to the
      serial port as is, you have to send each digit separately.
      To form a complete program, your ex2_q1.s file needs to be assembled and linked with two
      other object files: one containing the main subroutine, and the other containing the
      collection of library functions listed at the end of this document. The library file (lib_ex2.o)
      and main_q1.o can be found at /home/compx203/ex2/.
      Figure 1: Layout of the program for question 1. Grey boxes are the files we provide.
      Assemble and link your code using the commands:
      wasm ex2_q1.s
      wlink -o ex2_q1.srec
      ex2_q1.o
      /home/compx203/ex2/main_q1.o
      /home/compx203/ex2/lib_ex2.o
      (wlink’s arguments should be on a single line, separated by spaces)
      Once you’ve created your S-Record, load and run your program. If it works correctly, you
      should see a decimal number appearing in either the “Serial Port 1” form if you’re using
      wsim, or in the “remote” window if you’re using a physical Basys board.
      QUESTION 1 MUST BE WRITTEN IN WRAMP ASSEMBLY – DO NOT USE C
      To ensure your program works correctly, be sure to follow the conventions described in the
      WRAMP manual (Chapter 2: Stack Guide) and lecture notes. Failing to do so will result in
      grade deduction(s), even if the program is working as required.
    2. A Counter Implementation using C
      C is a high-level language that offers many advantages over assembly code, enabling the use of
      familiar programming structures like for-loops, functions (“methods”), and if-statements.
      Start by creating a C file called ex2_q2.c, which will contain a single function called count. This
      function takes two integer parameters, called start and end. It should look something
      like:
      /**
    3. Counts from “start” to “end” (inclusive),
    4. showing progress on the seven segment displays.
      **/
      void count(int start, int end) {…}
      When called, this function begins counting from the value start, and continues until it
      reaches the value end (both inclusive). As it counts, each number is shown on the seven
      segment displays as a four-digit base-10 number. If start is larger than end, it counts
      down; otherwise, it counts up.
      To ensure that start and end are sensible values, check that they are both within the
      range 0 <= n < 10000. If either number falls outside this range, you should return without
      doing any counting. If start and end are equal, you can choose to either return without
      doing any counting, or set the SSDs to the value provided as though counting from start
      to the same number.
      For example, if we call count(6, 12), the function should output 06, 07, 08, 09, 10, 11,
    5. to the seven segment displays, with a short delay between each number.
      Hints:
      ● For the compiler to know how to call the library functions, you need to put the line

      include “/home/compx203/ex2/lib_ex2.h”

      at the top of your C file, hard against the left margin. Don’t copy/paste, because
      PDFs often contain non-ASCII characters that the compiler doesn’t understand.
      ● See function descriptions at the end of the assignment.
      ● All variables need to be declared at the top of a block, e.g., the top of a function.
      ● Unlike in the previous lab exercise, the writessd() function in the lib_ex2.o
      library formats the value as a base-10 (decimal) number.
      ● Calling the delay() function after each call to writessd() will slow down the
      counting so that it is visible.
      ● You don’t have to worry about the stack for this question, because the compiler will
      take care of it for you. Just call the necessary functions like you would in C# or Java.
      ● The WRAMP compiler is wcc. To compile your code, use the command:
      wcc -S ex2_q2.c
      The “-S” tells the compiler to generate an assembly file as its output, which will be
      called ex2_q2.s in this case. Open up this file with a text editor, and see how it
      corresponds to your original C code.
      Figure 2: Layout of the program for question 2. Grey boxes are files we provide.
      Next, complete the compile/assemble/link process according to the layout shown in Figure

    6. The main subroutine is implemented in the file /home/compx203/ex2/main_q2.o. This
      main subroutine reads the value of the switches as two 8-bit numbers; the leftmost eight
      bits are passed to your C function as the parameter start, and the rightmost eight bits are
      passed as the parameter end.
      When you type go, your program should count from the 8-bit number on the leftmost
      switches, to the number on the rightmost switches, in base 10. For example, if the leftmost
      switches were all up, and the rightmost switches were all down, your program should count
      from 255 to 0. You’ll notice the leftmost seven-segment display will always be 0 – this is fine!
      You can type go as many times as you like without resetting the board, which makes it easy
      to try other switch combinations.
    7. Manually Calling count() from Assembly Code
      Replicate the functionality of the program in Question 2, but with the values of the switches
      reversed: that is, the rightmost eight bits are now passed to your C function as start, while
      the leftmost eight bits are now passed as end. For example, if the leftmost switches were all
      down, and the rightmost switches were all up, your program should now count from 255
      to 0.
      To do this, create a new WRAMP assembly file called ex2_q3.s, and in that file create the main
      subroutine for the program. When assembled, this will serve as a drop-in replacement for
      the main_q2.o file provided and used in question 2. Do not modify any existing code;
      instead, just link against the unmodified ex2_2.o file as shown in Figure 3.
      This means that the code in your ex2_q3.s file will need to call readswitches and count by
      following all the relevant subroutine conventions.
      Hints:
      ● Make sure that you can run your program (i.e. by typing go) multiple times without
      resetting the board. This requires halting your program either by returning from
      main, or using the syscall instruction.
      ● The subroutine main is like any other: if you want to return from it after calling any
      other subroutines, you first have to save $ra.
      QUESTION 3 MUST BE WRITTEN IN WRAMP ASSEMBLY, NOT C!
      Figure 3: Layout of the program for Question 3. Grey boxes are files we provide, while light orange boxes are the files
      you created for Question 2.
      Tips
      This lab exercise is often seen as one of the most difficult in the course. Do yourself a favour and
      start early, make use of the supervised lab sessions, and ask for help sooner rather than later if you
      get stuck.
      That being said, the programs are not huge. If you find yourself writing lots of code, stop and think
      about the problem again. Draw diagrams. Explore the debugging features of wsim, especially the
      “Memory (RAM)” form that shows the stack and $sp. Ask questions.
      For reference, model solutions are (for each question):
    8. 39 lines, only 14 of which are assembly instructions that don’t just back up registers onto the
      stack
    9. 30 lines, including 14 that are either whitespace or a single curly bracket
    10. 19 lines, only 13 of which are assembly instructions
      If you’re writing significantly more than this, chances are that you’re doing something wrong.
      Submission
      You are required to submit all source files that you have written; you do not need to submit any files
      that we have provided, nor any files that have been generated by a tool, e.g., wcc, wasm or wlink.
      Each file must follow the naming convention indicated below.
      For this exercise, the required files are:
      ● ex2_q1.s (Question 1)
      ● ex2_q2.c (Question 2)
      ● ex2_q3.s (Question 3)
      These files must be compressed into a single “tar gz” archive called firstName_lastName.tgz
      (replace firstName_lastName with your own name) before being submitted to Moodle. You can
      create this archive from the terminal, using the command:
      tar -cvzf firstName_lastName.tgz ex2_q1.s ex2_q2.c ex2_q3.s
      Be especially careful about file extensions with this one – we’re not interested in your ex2_q2.s file,
      because we can easily generate that from your ex2_q2.c file (which we are very interested in).
      Please be aware that a grade penalty applies if you do not submit your code in the correct format,
      including using the correct file names and file extensions. If you are unsure if what you’ve done is
      correct, please ask and we’ll help you out.
      Library Functions (/home/compx203/ex2/lib_ex2.o)
      void putc(int c)
      Parameters: c The ASCII-encoded character to transmit
      Returns: none
      Transmits a single ASCII character through the first serial port. This character will appear in remote if using the
      physical REX boards, or the Serial Port 1 form if using the simulator. If the serial port is not ready to transmit,
      this function will block.
      int getc()
      Parameters: none
      Returns: The ASCII-encoded character that was read from the serial port
      Reads a single ASCII character from the first serial port. This is a character that was sent via remote if using the
      physical REX boards, or via the Serial Port 1 form if using the simulator. This function will block until a character
      is received.
      void putstr(const char *s)
      Parameters: *s A pointer to the string to be written to the serial port
      Returns: none
      Transmits a null-terminated ASCII string through the first serial port. This string will appear in remote if using
      the physical REX boards, or in the Serial Port 1 form if using the simulator.
      int readswitches()
      Parameters: none
      Returns: The value represented by the switches
      Reads the current value represented by the switches into register. The lowest 16 bits (i.e. bits 0 to 15) will have
      the value of the corresponding switch (on or off), while the remaining bits (15 to 31) will be set to zero. The up
      (or ‘on’) position is represented as a binary ‘1’.
      void writessd(int n)
      Parameters: n The number to write to the seven-segment displays. 0 <= n < 10000.
      Returns: none
      Writes a number to the seven-segment displays, formatted as a four-digit decimal number.
      void delay()
      Parameters: none
      Returns: none
      Delays execution for approximately 135 ms.
  • 关于人脸识别: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又称井字棋,通常是在3×3的棋盘上,单方轮流落子,先将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

  • 关于人脸识别:中国企业出海墨西哥红利客观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余家企业客户。

  • 关于人脸识别:惊储户近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日,中国信息通信研究院云计算与大数据研究所倡导发动成立“可信人脸利用守护打算”。顶象等多家公司入选第二批“可信人脸利用守护打算”成员单位,将与各界通力合作,积极探索人脸利用治理与倒退的可信指引,助力人脸识别利用平安倒退,共建可信的人脸利用生态。

    技术与监管双重发力,多重保障人脸识别利用平安。

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

    手机银行是银行高效便捷的业务办理渠道。《2021中国数字金融调查报告》显示,2021年,集体手机银行用户达到20.5亿户,渗透率达85%,已成为银行业最重要的线上流量入口。

    某区域银行的手机银行将业务嵌入到不同的生存场景中,让用户在生存场景中产生金融需要。疫情期间,在保障客户日常金融需要的同时,该区域银行手机银行提供了多种疫情相干金融、生存类服务,晋升用户应用频次和用户粘性。在大幅晋升用户便捷体验的同时,该手机银行却也遭逢到一起用户人脸信息被冒用骗取贷款的事件。

    也就是不法分子收集、保留、盗取失常的人脸人像数据和敏感个人信息,而后仿冒被盗用申请贷款,骗取银行资金。

    相似事件不是个案,近两年来屡次产生。2020年10月,四川警方查处一个上百人的欺骗团伙。该团伙购买大量人脸视频,借助“僵尸企业”“空壳公司”,为6000多人人包装公积金信息,而后向多家银行申请公积金贷款,最终带来10亿多元的坏账。

    2021年,广州互联网法院通报了一起因为“刷脸”引发的借款纠纷。客户王兰(化名)在遗失了身份证后,却被人冒用身份通过银行的“人脸识别”贷款,导致王兰因逾期原告上了法庭。经司法笔迹鉴定,认为案涉客户签名并非王兰自己签订,手机号码亦未曾注销在王兰名下。最终,法院驳回银行全副诉讼请求。

    人脸被冒用贷款的危险剖析

    人脸识别作为一种生物辨认技术,被宽泛使用于金融畛域,次要作用是实现在线身份认证,广泛应用在自助终端、柜台以及挪动端多个渠道上,已成为登录、确认、申请、批改等业务环节中重要的验证技术。

    有媒体报道,大量社群和境外网站进行真人人脸识别视频的贩卖。“价高质优”的验证视频百元一套,动静软件将人脸照片制作成“动静视频”只有几元,以实现各类线上业务人脸识别的验证。此外,清华大学钻研人员已经在15分钟解锁了19个生疏智能手机。

    被冒用贷款的问题呈现,次要源于人脸利用存在人脸信息被冒用、人脸信息遭盗用、人脸识别利用遭劫持篡改等若干危险。

    仿冒登录。戴上眼镜、帽子、面具等假装伎俩,或者能够制作人皮高仿模型、将2D人脸照片3D建模、利用AI技术将动态照片变成动静照片等多种技术均,混同算法判断,骗过有效性不高的人脸识别算法和活体监测算法。

    盗取冒用。通过各类公开或非法手段,收集、保留、盗取失常的人脸数据,而后通过各种形式进行非法冒用。

    劫持篡改。近程入侵篡改人脸识别系统验证流程、信息、数据等,将后盾或前端的真数据替换为假数据,以实现虚伪人脸信息的通过。

    三方面加强手机银行的安全性

    在人脸识别的公共服务上,须要在多方面增强防护,晋升整体平安能力。

    第一,晋升人脸识别零碎的精准度。基于空间域的检测、图像取证的检测、生物频率、GAN伪影检测、基于生物信号的检测、视声不统一以及视觉上不天然等检测等措施,通过模型和算法进步真伪判断。

    第二,保障人脸识别零碎的安全性。防备API接口被篡改劫持,保障输入成果、生成网络成果的实在;保障发现设施和零碎端口、通信的异样;及时预警,避免灌入虚伪人像、混同虚实人像、库内人像信息被篡改;保障人脸数据存储以及传输的完整性、机密性等。

    第三,晋升人脸识别辨认的风控能力。人脸识别是一种技术核验,但不能作为惟一的伎俩。须要采纳身份证、手机号码、银行卡、操作行为、设施、环境等综合伎俩进行核验,甚至须要人工电话核实。通过平面的风控体系,加强人脸识别从源头到利用的全链条预警、拦挡、防护能力,晋升人脸识别利用的安全性。

    顶象业务平安感知进攻平台基于威逼探针、流计算、机器学习等先进技术,集设施危险剖析、运行攻打辨认、异样行为检测、预警、防护处理为一体,可能实时发现摄像头遭劫持、设施伪造等歹意行为,无效防备人脸识别利用的各类危险。

    通过网银、手机银行、微信银行、网贷App等非柜面渠道的惟一标识,顶象业务平安感知进攻平台可能及时发现设施指纹异样、模拟器检测、多开检测、注入、Hook检测等异样,无效分辨失常用户及黑灰产的设施特色,加强手机银行的危险感知能力。同时对手机银行做实时监测,进一步保障手机银行安全性,良好满足《挪动金融客户端应用软件平安治理标准》治理要求。

    顶象业务平安感知进攻平台领有如下特点:

    威逼可视化:针对环境危险、运行攻打,能够将辨认的危险标签展现在控制台,并反对按工夫查问危险趋势、危险对应的设施型号散布、零碎版本散布等维度数据。

    威逼可追溯:黑灰产的每一步攻打数据,命中的进攻策略及处理,都能够在基于需要定制和回放,让所有行为有迹可查。

    设施关联剖析:基于历史数据、关联剖析生成的设施画像,全面呈现出以后设施的所有历史申请,蕴含呈现过的危险标签、罕用地址、关联IP等状况。

    多账户治理:满足多业务数据隔离需要,反对一级、二级等多级机构配置或下发不同策略。

  • 关于人脸识别: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:训练和推理流程示意图

    1、训练模块

    依据数据采集模块失去表情数据,并通过数据改正和加强后训练失去 AI 表情模型,具体分为以下几个局部:

    • 数据采集:针对业务需要,咱们开发了一套可用于捕获人脸和动作的数据采集软件,用于获取表情和欧拉角以及 3D 特色点地位数据。
    • 数据改正:对采集的图片顺次进行人脸检测,面部特色点对齐,通过仿射变换失去改正后的图片;
    • 数据加强:针对落地场景,设计了定制化的数据加强流程,丰盛了训练数据的模式;
    • 模型训练:基于多任务学习和迁徙学习的思维,咱们尝试了多种轻量级的网络结构和训练策略,设计不同的工作分支如特色点定位和头部姿势预计以及面部表情检测,利用工作之间的相关性辅助指标工作学习。

    对模型进行训练,模型分为三个分支,损失函数组成如下:

    其中 为总的损失函数,示意表情工作损失函数,示意 3D 特色点定位损失函数,示意头部姿势预计损失函数,和示意损失加权系数。其中损失函数采纳咱们依据训练过程设计的自适应加权回归损失,能够达到强调重点部位表情和弱化无关表情的成果,使整个模型更贴近业务的需要。

    2、推理模块

    推理模块依据输出数据进行推理,具体分为以下几个局部:

    数据输出和改正:用户应用时解析输出视频流,对图片中的人脸进行检测、跟踪以及面部特色点定位,而后计算出人脸地位与规范人脸之间的仿射矩阵,从而通过仿射变换失去改正后的图像;
    模型推理:对训练好的 AI 模型,进行剪枝和量化,在FP16半精度下,在挪动端进行推理减速部署,最初将改正后的图像送入模型,推理失去表情向量和欧拉角向量;
    表情驱动和渲染:将表情向量和欧拉角向量送入驱动渲染模块解析,实时驱动虚构人物形象。

    四、“准确而天然”的成果难点攻克

    本技术旨在解决互动智能畛域挪动端虚构人物表情实时驱动问题,在研发过程中须要解决以下问题:

    • 挪动端推理的实时性
    • 面部表情和头部姿势的稳定性
    • 不同用户在不同应用场景的鲁棒性
    • 各个表情的协调性

    这四个维度层层递进,而如何做到同时兼顾,是贯通整个我的项目周期的重难点。

    首先,受限于挪动端的计算资源,不同设施的用户要失常体验,必须要做到各种机型上的低提早,因而落地须要做到极致的轻量化,这对模型设计和部署有较高要求。

    其次,理论体验过程中,用户的应用形式、用户场景光照、用户镜头脏污或遮挡都会影响模型的体现,如何在这些因素的综合作用下,让模型又快又稳的输入面部表情和头部姿势,是 ZegoAvatar 走向商业化不可回避的难题。

    最初,思考到不同的表情之间既有独立性又相互影响,如何让虚构形象的表情更加拟人化,让用户的应用更有沉迷感,既是一个有挑战性的技术难题,也是一个有价值的业务问题。

    针对以上难题,咱们设计了以下技术计划:

    1、推理的实时性

    一方面设计模型时遵循轻量化的准则,比方应用深度可拆散卷积(Depthwise separable convolution)以及更少的卷积层数和通道数,能够缩小模型的参数量,从而升高推理的计算开销。

    这里补充一下个别的卷积和深度可拆散卷积的示意图,并对计算量优化进行简略剖析:

     图8

    深度可拆散卷积将个别的卷积过程分为了depthwise convolution(逐深度卷积)和 pointwise convolution(逐点卷积),略就义精度的状况下,计算量大幅降落,速度更快,模型更小。

    对于个别卷积,如果用示意卷积核的尺寸,示意输出feature map的尺寸,示意输出通道数,示意输入通道数,那么在且有的状况下,总的计算量为:。

    对于深度可拆散卷积,逐深度卷积和逐点卷积的计算量别离为\( D_k\cdot D_k\cdot M \cdot N \cdot D_F \cdot D_F \)

    depthwise convolution的计算量为\( D_F \cdot D_F \cdot D_k \cdot D_k \cdot M \)

    pointwise convolution的计算量为\( D_F \cdot D_F \cdot M \cdot N \)

    因而深度可拆散卷积和个别卷积的计算量比拟关系为:

    \( \frac{D_F \cdot D_F \cdot D_k \cdot D_k \cdot M + D_F \cdot D_F \cdot M \cdot N}{D_k\cdot D_k\cdot M \cdot N \cdot D_F \cdot D_F}=\frac{1}{N} + \frac{1}{D_k^{2}} \)

    由此可见,深度可拆散卷积能够显著缩小个别卷积的计算量。

    另一方面落地时,咱们基于挪动端推理引擎进行模型转换和部署,次要分为算子转换和推理优化两个局部。

    a.算子转换:次要通过算子交融、算子代替、模型压缩、布局调整等形式对模型中的图进行根本的优化操作;

    b.优化推理:次要进行算子级的优化包含:卷积和反卷积中利用 Winograd 算法、在矩阵乘法中利用 Strassen 算法、低精度计算、手写汇编、多线程优化、内存复用等。

    此外咱们通过分析模型在不同网络层的的计算量散布,对模型存在计算瓶颈的卷积层进一步剪枝,在 FP16 半浮点数精度下,进行模型转换,在保障模型体现的同时,显著的升高了推理开销,并缩小了模型的尺寸。

    2、模型精确性和鲁棒性

    首先是数据采集阶段,基于 ZEGO 本身业务,自主开发了一套数据采集软件,并通过脚本对每一批数据进行可视化查看,确保原始数据的正确性。

    在模型训练阶段,尝试了多种模型构造和训练策略,包含不同的输出模式和分支组成。最初采纳 3D 面部特色点分支和面部表情分支与头部欧拉角分支联合的形式,利用多任务学习思维和迁徙学习的训练技巧,通过特色点信息辅助表情和欧拉角输入,失去准确的模型体现。

    在最初落地时,因为用户和场景的不同,咱们遇到了模型泛化性(Generalization)问题,这也是简直所有计算机视觉工作落地时都会遇到的问题。

    图9:泛化性、欠拟合(underfitting)、过拟合(overfitting)示意图

    泛化性指模型经过训练后,利用到新数据并做出精确预测的能力。一个模型在训练数据上如果被训练得太好往往会导致过拟合,以至泛化性升高。

    针对此问题,一方面从网络结构和训练策略登程,减少必要的组件,比方肯定强度的 DropOut,损失函数正则项,设计EarlyStopping 机制,另一方面咱们针对呈现的场景问题,比方“眼镜反光”,“阴阳脸”,“镜头含糊脏污”等,进行多轮测试后去追溯和定位问题,而后设计了针对性的数据加强计划,通过齐备性的融化试验(ablation experiment),确定了最优的流程和相应超参数,在训练过程中引入相应的数据模式,极大的晋升了模型的精确性和鲁棒性,从而解决了这一难题。

    3、表情的协调性

    如何让虚构形象不同的表情之间天然的联动,这是整个团队合作解决的问题。

    一方面算法在网络BackBone的设计考量上,咱们引入了 MobileViT 模块,因为只管 CNN 网络在视觉工作上具备参数少成果好以及空间感知的劣势,然而这种空间感知是部分的,全局感知能够通过注意力机制和 transformer 实现, 然而一般的 transformer 无奈部署在挪动端,MobileViT 能够将 ViT 与 MobileNetV2 的联合起来, 兼顾全局信息和轻量化的需要,让模型的推理成果又快又准。

    另一方面,开发和设计同学继续的解决虚构形象的各种材质渲染难题,最初才有了当初 ZegoAvatar 粗劣而天然的随动成果。

    五、总结

    ZegoAvatar 面部表情随动是 ZEGO 基于已有业务,通过 AI 联合元宇宙赛道的一次胜利的尝试和冲破。咱们从数据采集计划到模型架构设计再到训练策略整个算法闭环,以及虚构形象和相干组件的开发实现了齐全的自研,在理论的落地成果上,咱们做到了行业领先水平。

    对于落地遇到的各种问题,咱们从问题实质登程,设计针对性的计划进行解决,整个我的项目用较少的数据,获得了很好的成果。基于 ZegoAvatar,不同业务切入点的新的算法开发也在进行中,后续会有更多新的我的项目孵化,Zego科技也将进一步在互动智能畛域一直实现技术革新与冲破,在元宇宙浪潮中扬帆起航!

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

    人脸识别技术是基于人面部特色数据进行身份辨认的一项生物特色辨认技术。随着大数据、人工智能、云计算、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

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

    4月23日,由国务院国资委新闻核心主办的小新书院读书会流动在北京机械工业出版社顺利举办。国务院国资委新闻核心主任杨景百、机械工业信息研究院院长、机械工业出版社社长李奇、中国企业联合会党委委员、常务副理事长于吉以及等泛滥央企负责人及专家学者汇聚一堂,以“翻新的力量”为主题,分享央企翻新与改革成绩。
     
    在圆桌访谈过程中,天翼云科技有限公司副总经理广小明针对“企业如何综合使用翻新伎俩打造世界一流企业”的议题作了精彩分享。 
    广小明提出,现阶段,科技翻新的首要任务是围绕自主可控开展。对科技公司来说,技术创新是破除产业倒退窘境的突破口。天翼云作为一家科技翻新公司,致力于打造创新型企业,构建云网交融底座及数字化平台,开发自主可控的全栈云平台,继续推动数字化转型的过程。其次,技术创新的生命力体现在为社会一直发明价值的过程中,承当产业倒退的“倍增器”,同样作为翻新主体的企业在推动技术实际落地的同时,实现企业的社会价值。

    据理解,作为国内当先的云服务商,天翼云始终以科技力量服务人民,一直施展价值作用,推动社会经济倒退。2020年疫情肆虐之际,天翼云凭借翻新技术的力量打响并打赢了“武汉市卫健委官网上云”“火神山、雷神山医院外围IT零碎上云”“方舱医院的AI阅片”三场“科技战疫”。在保障政抗疫信息及时、通明公布的同时,还建成我国第一座“云上医院”,通过“5G+云+AI”技术开发智能AI阅片零碎,大大缓解了医务人员的诊疗压力。
     
    科技是国家强盛之基,翻新是民族提高之魂。企业不仅是市场的主体,也是科技翻新的主体,数字化时代,企业须要联合5G带来的“新速度”、大数据带来的“新视角”、物联网带来的“新模式”、强化翻新平台带来的“新共享”等,以翻新技术推动数智交融,打造科技翻新洼地,独特建设“数字中国”。

  • 关于人脸识别:融云通信周边能力上新啦一键-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 减速节点,放慢直播流散发服务,无效升高时延、升高卡顿比,晋升直播品质。

    稳固推流
    针对弱网环境进行上行减速优化,无效缩小推流卡顿和音画不同步等问题;反对 RTMP 推流及多种形式转推直播流。

    实时转码
    反对全格局转封装、转分辨率、H.264/H.265 编码,各种场景灵便配置。

    极致播放
    反对多端播放器、秒开优化、直播低提早、智能缓存等,让播放更快、更晦涩。

    平安管控
    反对多种鉴权形式,反对全网 HTTPS 平安协定,提供企业级防护,爱护资源不被盗链。

    性能优化
    反对疏忽 URL 带问号后的参数,进步文件缓存命中率,晋升散发效率。

    融云 CDN 服务利用场景


    秀场直播


    游戏直播


    教学直播


    会议直播

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

    在社交互动中,面部表情在非语言交换中起着至关重要的作用。 心理学家保罗·埃克曼提出,全世界的人都有七种情绪表达方式:高兴、悲伤、诧异、恐怖、愤恨、讨厌和藐视。 建设更好的人机交互,例如通过图像检测人类情绪,可能是一项艰巨的工作。

    面部表情对于社交互动很重要,并且在非语言人机交互方面施展着重要作用。本篇文章的指标是创立一个模型,该模型能够应用网络摄像头等一般设施辨认和分类一个人以后的情绪。

    数据集

    应用的数据集是从 Kaggle 的 2013 年面部情感辨认挑战赛中收集的,连贯在文章最初。

    数据由人脸的 48×48 像素灰度图像组成。并且曾经通过了主动对齐,也就是说在每张图像中占据大致相同的空间,并且基本上都是居中的。

    咱们的工作是依据面部表情中显示的情绪将每张脸分为七类之一(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。应用大小 48×48 的图像,所有这些像素值都用作咱们模型的输出。在训练数据上拟合随机森林后,预测测试数据的类别,准确率为 45.62%。

    咱们将它们两个作为基线模型,比照应用卷积神经网络的性能。

    卷积神经网络

    在深度学习中,卷积神经网络(CNN 或 ConvNet)是最罕用于剖析视觉图像的一类人工神经网络。

    CNN 次要用于剖析视觉图像。基本上,CNN 应用卷积的数学概念,该概念显示了一个函数在另一个函数上进行卷积时如何扭转另一个函数的形态。CNN是一个由每一层神经元组成的多层网络。当一个图像被输出到一个层时,它会通过卷积操作将后果输入给其余层。第一个卷积层通常提取基本特征,例如程度或对角边缘,随着咱们在层中进一步向下挪动,这些特色变得更加简单,咱们也能够辨认人脸。池化层缩小了卷积特色的空间大小,以缩小计算量。激活层负责增加激活函数。激活函数有助于决定在每一层上激活哪些神经元。最罕用的激活函数之一是 ReLu,因为它不会同时激活所有神经元。

    这里应用模型实现由 26 层组成,包含 2 个全连贯层和卷积、池化、ReLu、BN、Dropout 和激活层。

    咱们应用 GridSearchCV,搜寻优化器和学习率的最佳组合,看看哪个给了咱们最好的准确性。在应用 SGD(随机梯度降落)作为优化器时,学习率为 0.01、0.001 和 0.0001,准确率别离为 48%、45.5% 和 49%。而后对于 Adam优化器,在雷同的学习率下,取得了大概 55.05%、57.60% 和 61.34% 的准确率。最初得出的最佳优化器和学习率是 Adam 和 0.001。这里应用的 epoch 数是 20。这是具备上述参数的损失图和精度图。

    当咱们将Adam优化器和学习率0.0001的CNN模型与SVM和Random Forest这两个基线进行比拟时,其准确率别离为45.62%和46%,准确率为61.34%。

    通过上图比照看到,咱们只应用了简略的CNN就可能将准确率晋升15%,这阐明CNN相比传统的机器学习模型劣势还是很大的。

    然而准确率61%还偏低,咱们还有许多的工作能够做,如果你对这个表情辨认的数据集感兴趣,请看在kaggle上查看更加高效的解决方案

    作者:Devansh Shukla