Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Ansible for k8s

Ansible for k8s

原创
作者头像
王磊-字节跳动
修改于 2020-01-05 09:31:15
修改于 2020-01-05 09:31:15
5.5K1
举报
文章被收录于专栏:01ZOO01ZOO

用 ansible 来创建 k8s,这类项目已经很多了,在 github 上面随意可以搜到很多,而这篇文章主要介绍的是如果用 ansible 来做日常的 k8s 运维和开发部署。

本文中的例子可以在 https://github.com/u2takey/ansible-k8s 找到

helm 和 kustomize 的问题

从我第一次使用 helm 就觉得这个东西的设计实在古怪:

  • 一个包(配置)管理工具依赖服务端(tiller)
  • 做的事情很简单,设计却过于复杂(看看 helm 有多少命令和参数就知道了)
  • template 可读性很差,表达能力却很弱(受制于go-template的表达能力)
  • 99% 的用户不会安装 tiller, 只是拿来做 template 渲染工具,但是就算作为一个简单的渲染工具,helm也不好用
  • 其他缺陷:参考

后来出现了 kustomize,kustomize的设计并不依赖服务端,而是想做好本地渲染,然而几次使用之后发现,kustomize 显然还是失败了

  • kustomize 的设计有点像 ansible了,然而表达能力还是很差,设计却过于复杂
  • 作为了一个 yaml 工具,kustomize 带了太多k8s属性,比如 kustomize 了解什么是 images,什么是 configmap,这个设计显然不够灵活
  • 如果 kustomize (很有希望的)像ansible好好学习,能做好一个专用领域的 ansible 工具,易用性能肯定能好很多

求助于 ansible

关于运维和部署,ansible已经积累了太多经验,虽然本质上 ansible 最初的设计还是针对 "hosts", 并不是针对集群,ansible的 k8s module 质量也参差不齐,但是尽管如此,使用时候你会发现,ansible 在运维 k8s 的能力上还是很强。

用 ansible 部署 k8s 集群

这部分不是本文的重点,ansible 部署 k8s 是比较常见的 k8s 部署方式,这里给几个 star 比较高的项目,不再细述。

用 ansible 运维 k8s 服务

ansible 主要可以使用 k8s 模块来管理 k8s 资源

比如创建一个 namespace,可以使用下面的写法

代码语言:txt
AI代码解释
复制
- name: Create a k8s namespace
  k8s:
    name: testing
    api_version: v1
    kind: Namespace
    state: present

创建 service 的写法

代码语言:txt
AI代码解释
复制
- name: Create a Service object from an inline definition
  k8s:
    state: present
    definition:
      apiVersion: v1
      kind: Service
      metadata:
        name: web
        namespace: testing
        labels:
          app: galaxy
          service: web
      spec:
        selector:
          app: galaxy
          service: web
        ports:
        - protocol: TCP
          targetPort: 8000
          name: port-8000-tcp
          port: 8000

上面的这种 inline 的写法实际上可读性比较差,更推荐使用 src(读取文件) 或者 definition + lookup + template 语句的办法来创建资源,ansible 的 template 使用 jinja2 来渲染,表达能力很强。

代码语言:txt
AI代码解释
复制
- name: Create a Deployment by reading the definition from a local file
  k8s:
    state: present
    src: /testing/deployment.yml

- name: Read definition file from the Ansible controller file system after Jinja templating
  k8s:
    state: present
    definition: "{{ lookup('template', '/testing/deployment.yml.j2') }}"

一个完整的例子

下面我们看一个完整的例子,这个例子里面我们有两个集群,分别叫 4lr4c3wx8keawqnz, 并且我们在本地的 admin.conf 里面加入了这两个 context, 所以我们不用在 ansible config里面添加相关密钥信息。

  • 使用 ansible-galaxy 初始化 role
代码语言:txt
AI代码解释
复制
➜ ansible-galaxy role init nginx

➜ ll nginx
.rw-r--r-- 1.3k leiwang  4 Jan 15:11 README.md
drwxr-xr-x    - leiwang  4 Jan 15:11 defaults
drwxr-xr-x    - leiwang  4 Jan 15:11 files
drwxr-xr-x    - leiwang  4 Jan 15:11 handlers
drwxr-xr-x    - leiwang  4 Jan 15:11 meta
drwxr-xr-x    - leiwang  4 Jan 15:11 tasks
drwxr-xr-x    - leiwang  4 Jan 15:13 templates
drwxr-xr-x    - leiwang  4 Jan 15:11 tests
drwxr-xr-x    - leiwang  4 Jan 15:11 vars
  • 修改 host 和 ansible.cfg, 指向两个集群.
代码语言:txt
AI代码解释
复制
# ansible.cfg
[defaults]
inventory = hosts.ini
host_key_checking = False

pipelining = True
gathering = smart
fact_caching = jsonfile
fact_caching_timeout = 86400
fact_caching_connection = /tmp/ansible_fact_cache
forks = 20

# host
[test]
4lr4c3wx context=4lr4c3wx 
8keawqnz context=8keawqnz 

[test:vars]
ansible_connection=local 
ansible_python_interpreter=~/miniconda3/bin/python
  • 修改 task/main.yml, 这里我们编写两个任务,一是操作 namespace, 二是创建 nginx deployment 和 service,支持 namespace 和 state 参数,支持 state也就是说 支持创建或者删除,对 namespace的操作加上 ignore_errors, 因为创建或者删除 namespace 时可能会报错,我们希望忽略这种错误。
代码语言:txt
AI代码解释
复制
---
- debug: var=context
- name: set namespace {{ namespace }} to {{ state }}
  k8s:
    context: "{{ context }}"
    api_version: v1
    kind: Namespace
    name: "{{ namespace }}"
    state: "{{ state }}"
  ignore_errors: true
- name: set nginx deployment to {{ state }}
  k8s:
    context: "{{ context }}"
    state: "{{ state }}"
    definition: "{{ lookup('template', 'nginx.yml.j2') | from_yaml_all | list  }}"
    namespace: "{{ namespace }}"
  • nginx.yml.j2 里nginx deployment和service,实际上这两个 object 分开会更好,这里放在一起只是为了演示,如果放在一起应该用 from_yaml_all + list filter来处理
代码语言:txt
AI代码解释
复制
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: nginx
  namespace: {{ namespace }}
  labels:
    version: v2
spec:
 # 略
---
apiVersion: v1
kind: Service
metadata:
  name: nginx
  namespace: {{ namespace }}
spec:
  # 略
  • playbook include 刚刚编写的 nginx role
代码语言:txt
AI代码解释
复制
---
- name: example k8s playbook
  hosts: test
  vars:
    namespace: default
  roles:
  - nginx
  • 运行 playbook
代码语言:txt
AI代码解释
复制
➜ ansible-playbook main.yml

PLAY [example k8s playbook] *********************************************************************************************************************************************************

TASK [Gathering Facts] **************************************************************************************************************************************************************
ok: [test_cluster_2]
ok: [test_cluster_1]

TASK [nginx : debug] ****************************************************************************************************************************************************************
ok: [test_cluster_1] => {
    "context": "4lr4c3wx"
}
ok: [test_cluster_2] => {
    "context": "8keawqnz"
}

TASK [nginx : set namespace default to present] *************************************************************************************************************************************
ok: [test_cluster_1]
ok: [test_cluster_2]

TASK [nginx : set nginx deployment to present] **************************************************************************************************************************************
changed: [test_cluster_1]
changed: [test_cluster_2]

PLAY RECAP **************************************************************************************************************************************************************************
test_cluster_1             : ok=4    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
test_cluster_2             : ok=4    changed=1    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0
  • 使用 kubectl 验证效果,发现两个集群的 nginx deployment和service都已经创建出来了
  • clean up: 使用 state=absent 清理刚刚创建的资源
代码语言:txt
AI代码解释
复制
➜ ansible-playbook main.yml -e "state=absent"

用 ansible 来开发 operator

  • ansible 不仅仅可以做简单的运维,甚至可以帮助开发 operator. operator或者controller的主要逻辑是 使某种 API Object 成为他预期的状态,ansible 的逻辑也是如此,虽然没有直接用golang 开发的operator 灵活,但是使用 ansible 开发,不用编写一行代码,开发部署效率还是很高的。
  • 使用 ansible 开发 operator 依赖 operator-sdk
  • operator-sdk 和 kubebuilder 的对比在这里,其中和这篇文章有关的区别是 operator-sdk 支持ansible。

一个完整的例子

这个完整的例子里面,我们创建一个 crd Nginx, 这个Nginx 对应了一个 Nginx deployment和 一个service

  • 安装 operator-sdk,过程略➜ operator-sdk new nginx-operator \ --api-version=nginx.operator.t.io/v1 \ --kind=Nginx \ --type=ansible INFO[0000] Creating new Ansible operator 'nginx-operator'. INFO[0000] Created deploy/service_account.yaml INFO[0000] Created deploy/role.yaml INFO[0000] Created deploy/role_binding.yaml INFO[0000] Created deploy/crds/nginx.operator.t.io_nginxes_crd.yaml INFO[0000] Created deploy/crds/nginx.operator.t.io_v1_nginx_cr.yaml INFO[0000] Created build/Dockerfile INFO[0000] Created roles/nginx/README.md INFO[0000] Created roles/nginx/meta/main.yml INFO[0000] Created roles/nginx/files/.placeholder INFO[0000] Created roles/nginx/templates/.placeholder INFO[0000] Created roles/nginx/vars/main.yml INFO[0000] Created molecule/test-local/playbook.yml INFO[0000] Created roles/nginx/defaults/main.yml INFO[0000] Created roles/nginx/tasks/main.yml INFO[0000] Created molecule/default/molecule.yml INFO[0000] Created build/test-framework/Dockerfile INFO[0000] Created molecule/test-cluster/molecule.yml INFO[0000] Created molecule/default/prepare.yml INFO[0000] Created molecule/default/playbook.yml INFO[0000] Created build/test-framework/ansible-test.sh INFO[0000] Created molecule/default/asserts.yml INFO[0000] Created molecule/test-cluster/playbook.yml INFO[0000] Created roles/nginx/handlers/main.yml INFO[0000] Created watches.yaml INFO[0000] Created deploy/operator.yaml INFO[0000] Created .travis.yml INFO[0000] Created molecule/test-local/molecule.yml INFO[0000] Created molecule/test-local/prepare.yml INFO[0000] Project creation complete.
  • 使用operator-sdk, 初始化 operator,可以看到创建出了很多资源
  • 定义 crd,这里我们的 crd 只支持三个参数 cpu, memory, replicas, 下面是这个 crd object的例子
代码语言:txt
AI代码解释
复制
apiVersion: nginx.operator.t.io/v1
kind: Nginx
metadata:
  name: example-nginx
spec:
  # Add fields here
  replicas: 3
  cpu: 100m
  memory: 100M
  • 修改 tasks/main.yml,类似上一节,使用k8s module创建资源
代码语言:txt
AI代码解释
复制
---
- name: nginx deployment 
  k8s:
    definition: "{{ lookup('template', 'nginx-deployment.yml.j2')  }}"
    namespace: "{{ meta.namespace }}"
- name: nginx service 
  k8s:
    definition: "{{ lookup('template', 'nginx-service.yml.j2')  }}"
    namespace: "{{ meta.namespace }}"
  • 先测试, 这里我们没有使用 ansible的测试工具,而是做了一个简单的 test playbook, 以测试 role的编写是否有问题
代码语言:txt
AI代码解释
复制
# test.yml
---
- hosts: localhost
  vars:
    meta:
      name: test-nginx
      namespace: default
  roles:
    - nginx
  
# do test  
ansible-playbook test.yml
  • 测试正常,修改 deploy 中的 placeholder, buid and push
代码语言:txt
AI代码解释
复制
➜ sed -i 's|{{ REPLACE_IMAGE }}|ccr.ccs.tencentyun.com/mla-library/tool:test|g' deploy/operator.yaml
➜ sed -i 's|{{ pull_policy\|default('\''Always'\'') }}|Always|g' deploy/operator.yaml
➜ operator-sdk build ccr.ccs.tencentyun.com/mla-library/tool:test
➜ docker push ccr.ccs.tencentyun.com/mla-library/tool:test
  • 把 crd 创建出来,部署 operator 以及相关的 role account 等kubectl create -f deploy/crds/ kubectl create -f deploy/➜ kubectl get pod NAME READY STATUS RESTARTS AGE example-nginx-78cf7659d4-9txlz 0/1 ContainerCreating 0 17s example-nginx-78cf7659d4-qzwsm 1/1 Running 0 17s example-nginx-78cf7659d4-td78l 0/1 ContainerCreating 0 17s ➜ kubectl get service NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE example-nginx LoadBalancer 10.7.255.124 119.28.109.137
  • 观察 Nginx 的创建情况(我们刚刚已经把 exampleNginx一并创建了),可以发现 deployment 和 service都符合预期
  • 修改 example-nginx,副本数量改成1, cpu,memory也做修改,观察效果,可以发现 deployment 也很快得到了对应的修改。➜ kubectl edit nginx example-nginx spec: cpu: 50m memory: 50M replicas: 1 ➜ kubectl get pod NAME READY STATUS RESTARTS AGE example-nginx-69647b9c6-8kgdm 1/1 Running 0 52s ➜ kubectl describe deploy example-nginx Name: example-nginx Namespace: default ....略 Pod Template: Labels: app=example-nginx Containers: example-nginx: Image: nginx Port: <none> Host Port: <none> Limits: cpu: 50m memory: 50M Requests: cpu: 50m memory: 50M

参考

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
1 条评论
热度
最新
谢谢作者的分享!这里也分享一个关于ansible一键部署、全面介绍的知识文档:https://support.websoft9.com/docs/ansible/zh/如果仍有疑惑,需要人工支持,专业高效,这个值得一试https://market.cloud.tencent.com/products/28292
谢谢作者的分享!这里也分享一个关于ansible一键部署、全面介绍的知识文档:https://support.websoft9.com/docs/ansible/zh/如果仍有疑惑,需要人工支持,专业高效,这个值得一试https://market.cloud.tencent.com/products/28292
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
iPhoneX携人脸识别改变行业,美图美妆用人脸识别改变女人
苹果新品发布会,也是一年一度的段子手吐槽大会,iPhoneX发布后网上所流传的段子,几乎都与FaceID有关,这说明这个新功能最受大众关注。从官方演示和外媒评测来看,FaceID比指纹识别更加安全、便
罗超频道
2018/04/25
1.8K0
iPhoneX携人脸识别改变行业,美图美妆用人脸识别改变女人
带口罩也能解锁iPhone!中国网友用一张白纸骗过Face ID,外国网友直接把脸印在口罩上
受新冠疫情影响,出门要带口罩、在办公场所也要带口罩,随之而来的一个问题是:我的iPhone不认识我了,面部识别解锁手机挂了,天天输入密码解锁真的很麻烦……
新智元
2020/03/04
5610
苹果「口罩版Face ID」年前出街,新冠时代iPhone用户终于能戴口罩刷脸了
苹果在iOS 15.4的更新中,引入了戴口罩也能使用Face ID的功能。按照各种用户体验图,系统提示中将会说「iPhone可以识别眼部周围区域的特征」但不戴口罩更精确。
新智元
2022/02/24
7320
苹果「口罩版Face ID」年前出街,新冠时代iPhone用户终于能戴口罩刷脸了
戴口罩解锁iPhone是怎么实现的?安全吗?
今天iOS 15.4正式面向大众开放更新啦,大家最期待的戴口罩解锁可以说是这次更新最大的一个亮点了。再也不用戴着口罩频繁的输入密码了,更不用为了解锁iPhone去购买一个Apple Watch。
Java阿呆
2022/04/15
1.3K0
戴口罩解锁iPhone是怎么实现的?安全吗?
支持口罩解锁!苹果测试新一代面容ID,眼镜起雾也不怕
为了测试新的Face ID阵列,苹果开发了一款适用于iPhone 12的手机壳,上方有一排传感器阵列。
新智元
2021/09/17
9730
iOS推送:要支持戴口罩解锁了!以为是黑科技,原来是骗我买iWatch...
疫情期间,大家都养成了出门戴口罩的习惯。戴口罩可以有效隔离病菌,但是对于一些需要Face ID 面部识别的app来说,每次需要把口罩拉上拉下的,也蛮不方便。就像iphone每次解锁就需要拉下口罩。
程序猿DD
2021/02/05
6920
iOS推送:要支持戴口罩解锁了!以为是黑科技,原来是骗我买iWatch...
苹果FaceID被一副眼镜破解,腾讯:漏洞出在活体检测
生物识别技术在验证过程中出现的漏洞可能会让不法分子破解各种人脸识别应用,包括苹果的 Face ID。
机器之心
2019/08/13
1.3K0
苹果FaceID被一副眼镜破解,腾讯:漏洞出在活体检测
疫情期间戴口罩仍可识别的Sensory Biometric面部识别解决技术
Sensory TrulySecure人声和面部生物识别技术(face and voice biometrics)为用户带来极大的便利性,同时为用户在COVID-19新常态期间带来新价值 - 用户带口罩仍可正常识别,而且可以识别咳嗽和打喷嚏(cough and sneezes)。
用户6026865
2020/06/12
7110
疫情期间戴口罩仍可识别的Sensory Biometric面部识别解决技术
面部识别失效?在口罩上打印半张脸,“暴力”续命手机解锁
事实上,从去年十二月开始,新型冠状病毒事件导致的一个重要产业缺口就是口罩,此前文摘菌也对口罩的来源和去处进行了报道,口罩成为当下最为热门物件已是不争事实。
大数据文摘
2020/03/05
7360
面部识别失效?在口罩上打印半张脸,“暴力”续命手机解锁
用 iPhoneX 的 FaceID 刷脸解锁真的靠谱吗?
原作者 Quincy Larson 编译 Mika 本文为 CDA 数据分析师原创作品,转载需授权 在上周的苹果秋季新品发布会中,苹果推出了全新的脸部识别技术FaceID。这是否标志着"刷脸"时代的到来呢?面部识别技术真的安全吗? 在最新的苹果发布会中,苹果隆重推出全新一代iPhone手机,十周年纪念版iPhone X,以及iPhone 8、iPhone 8 Plus。当中还推出了全新的脸部识别技术FaceID。也就是通过面部识别来解锁手机。你所要做的就是看看你的手机,然后它就会识别你并进行解锁。
CDA数据分析师
2018/02/26
9910
用 iPhoneX 的 FaceID 刷脸解锁真的靠谱吗?
关注腾讯安全,免费下载技术干货白皮书,领取福利大奖!
腾讯安全作为互联网安全领先品牌, 依托20年多业务安全运营及黑灰产对抗经验,凭借行业顶尖安全专家、最完备安全大数据及AI技术积累,为企业从“情报-攻防-管理-规划”四维构建安全战略,并提供紧贴业务需要的安全最佳实践,守护政府及企业的数据、系统、业务安全,为产业数字化升级保驾护航。
腾讯安全
2020/07/24
8730
关注腾讯安全,免费下载技术干货白皮书,领取福利大奖!
黑客角逐:刷脸解锁,你的iPhone X并不安全
大数据文摘作品 编译:林海、Shan LIU、笪洁琼、亭八 11月3日,苹果公司发布了IPHONE X,并首次推出了刷脸解锁技术。与此同时,也引发了世界范围内的黑客角逐,意图率先破解该公司具有未来感的最新技术。 仅仅一周,在世界另一端的黑客就声称,他们已经成功复制了人脸,从而可以轻松解锁任何人的IPHONE X,甚至于他们采用的技术可能会比安全研究人员所研究的方法更为简捷。 “我们仅用150美元就制作出了破解iPhoneX面部识别的面具” 上周五,越南网络安全公司Bkav发布的博客文章和视频显示,他们使用3
大数据文摘
2018/05/24
7340
AI口罩“督查官”诞生记
在英国脱欧后,谷歌计划让英国用户的账号脱离欧盟的隐私监管政策,改用美国司法标准。尽管这样的修改让数千万英国用户的个人信息置于较少保护之下,但这些信息更容易被英国执法部门获得。
AI科技大本营
2020/02/26
5450
以后可以「刷牙」支付了?DeepTeeth牙齿生物识别系统识别率高达100%!
不是说抽烟喝酒多了牙齿变黄这类的变化。而是说,相较于其他类型的面部整容或重建手术,对牙齿进行的手术干预频率会更高。
新智元
2021/08/25
5200
最高76%破解成功率!GAN已经能造出“万能指纹”,你的手机还安全吗?
如果有一种特殊的指纹,可以和绝大多数人的指纹对上号,大概率破解身边的几乎所有的指纹锁,会发生什么?
量子位
2018/12/14
1K0
最高76%破解成功率!GAN已经能造出“万能指纹”,你的手机还安全吗?
疫情加速百度人脸识别变革:戴口罩也能准确识别,iPhone可以抄作业了
好消息是,AI工程师们逢山开路遇水搭桥,现在——戴口罩人脸识别——这座桥,已经搭好了,而且已经开放了。
用户1386409
2020/03/24
9240
疫情加速百度人脸识别变革:戴口罩也能准确识别,iPhone可以抄作业了
我们破解了几乎所有旗舰手机的人脸识别,iPhone幸免于难
今年 11 月,来自纽约大学的研究人员提出了一种可以生成「万能指纹」的神经网络模型 MasterPrints,攻击手机指纹解锁的成功率最高可达 78%。而最近,福布斯的记者们决定使用 3D 打印技术攻击手机的人脸识别功能,在一通测试之后,他们发现石膏「人脸」竟可以破解四种流行旗舰手机的 AI 人脸识别解锁功能,而 iPhone X 不为所动。
机器之心
2018/12/28
3.5K0
我们破解了几乎所有旗舰手机的人脸识别,iPhone幸免于难
iPhone X VS三星Note8,谁在用户体验效果上更胜一筹?
安全风险测评,Note8夺冠。 2017年年底终至,今年各大智能手机厂商的年度旗舰机也均已发布。当然,和往年一样,在众多旗舰机中,智能机领头者,苹果与三星的年度旗舰机最受用户关注。 然而,上市已过去数月,iPhone X和三星Note8的用户的体验究竟如何?究竟是iPhone X面部识别更优,还是三重识别的Note8体验感更强?安全度、拍照等方面,谁的能力更强?智能助手方面,Siri和Bixby谁更智能? Face ID VS三重识别 谁的体验效果更智能、更安全? 众所周知,iPhone X最大的亮点就是其
镁客网
2018/05/30
5430
AI一分钟 | 来狠的!中国监管部门清退比特币挖矿企业,从电力供给开刀;新一代iPhone X升级Face ID,更接近真全面屏
一分钟AI 人民日报:比特币价格存在泡沫,已是一个无需讨论的问题。比特币日渐成为游走于灰色地带的特殊“等价物” 外媒曝光新一代iPhone X:升级Face ID面容识别的能力,进一步提高屏占比,接近“真全面屏”。 英特尔称其他公司芯片也存在问题,正与AMD、ARM合作 日产研发能够读取人类大脑信息的汽车,通过大脑和自动驾驶系统的信息传输,推断出提升自动驾驶的舒适度和灵敏度 物联网门禁营造智慧社区,小兔开门获500万元Pre-A轮融资,主要是用于产品研发。 绿米完成过亿元B轮融资,凯辉基金领投,将建立智
AI科技大本营
2018/04/27
7480
AI一分钟 | 来狠的!中国监管部门清退比特币挖矿企业,从电力供给开刀;新一代iPhone X升级Face ID,更接近真全面屏
吃瓜笔记 | 旷视研究院:被遮挡人脸区域检测的技术细节(PPT+视频)
主讲人:袁野 | 旷视研究院研究员 屈鑫 编辑整理 量子位 出品 | 公众号 QbitAI 12月27日晚,量子位·吃瓜社联合Face++论文解读系列第四期开讲,本期中旷视(Megvii)研究院解读了近期发表的Face Attention Network论文。 本篇论文所提出的Face Attention Network,是基于分层注意力机制的人脸图像区域检测器,能够在不影响速度的情况下显著提高被遮挡的人脸检测问题的召回率。 本期主讲人为旷视研究院研究员袁野,同时也是论文共同一作,wider face l
量子位
2018/03/22
1.3K0
吃瓜笔记 | 旷视研究院:被遮挡人脸区域检测的技术细节(PPT+视频)
推荐阅读
iPhoneX携人脸识别改变行业,美图美妆用人脸识别改变女人
1.8K0
带口罩也能解锁iPhone!中国网友用一张白纸骗过Face ID,外国网友直接把脸印在口罩上
5610
苹果「口罩版Face ID」年前出街,新冠时代iPhone用户终于能戴口罩刷脸了
7320
戴口罩解锁iPhone是怎么实现的?安全吗?
1.3K0
支持口罩解锁!苹果测试新一代面容ID,眼镜起雾也不怕
9730
iOS推送:要支持戴口罩解锁了!以为是黑科技,原来是骗我买iWatch...
6920
苹果FaceID被一副眼镜破解,腾讯:漏洞出在活体检测
1.3K0
疫情期间戴口罩仍可识别的Sensory Biometric面部识别解决技术
7110
面部识别失效?在口罩上打印半张脸,“暴力”续命手机解锁
7360
用 iPhoneX 的 FaceID 刷脸解锁真的靠谱吗?
9910
关注腾讯安全,免费下载技术干货白皮书,领取福利大奖!
8730
黑客角逐:刷脸解锁,你的iPhone X并不安全
7340
AI口罩“督查官”诞生记
5450
以后可以「刷牙」支付了?DeepTeeth牙齿生物识别系统识别率高达100%!
5200
最高76%破解成功率!GAN已经能造出“万能指纹”,你的手机还安全吗?
1K0
疫情加速百度人脸识别变革:戴口罩也能准确识别,iPhone可以抄作业了
9240
我们破解了几乎所有旗舰手机的人脸识别,iPhone幸免于难
3.5K0
iPhone X VS三星Note8,谁在用户体验效果上更胜一筹?
5430
AI一分钟 | 来狠的!中国监管部门清退比特币挖矿企业,从电力供给开刀;新一代iPhone X升级Face ID,更接近真全面屏
7480
吃瓜笔记 | 旷视研究院:被遮挡人脸区域检测的技术细节(PPT+视频)
1.3K0
相关推荐
iPhoneX携人脸识别改变行业,美图美妆用人脸识别改变女人
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档