私信发送成功
Watch Star Fork

kkkim / DFacePythonApache-2.0

基于深度学习的人脸检测与识别系统,Pytorch实现。 http://dface.io
克隆/下载
kkkim 最后提交于 2017-12-12 00:17 mobile migration illustration
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
2017-11-30 18:05
2017-11-30 17:55
2017-11-30 18:05
2017-11-30 18:05
Loading...
README.md 5.82 KB

DFace • License

Linux CPU Linux GPU Mac OS CPU Windows CPU
Build Status Build Status Build Status Build Status

基于多任务卷积网络(MTCNN)和Center-Loss的多人实时人脸检测和人脸识别系统。

Github项目地址

Slack 聊天组

DFace 是个开源的深度学习人脸检测和人脸识别系统。所有功能都采用 pytorch 框架开发。pytorch是一个由facebook开发的深度学习框架,它包含了一些比较有趣的高级特性,例如自动求导,动态构图等。DFace天然的继承了这些优点,使得它的训练过程可以更加简单方便,并且实现的代码可以更加清晰易懂。 DFace可以利用CUDA来支持GPU加速模式。我们建议尝试linux GPU这种模式,它几乎可以实现实时的效果。 所有的灵感都来源于学术界最近的一些研究成果,例如 Joint Face Detection and Alignment using Multi-task Cascaded Convolutional NetworksFaceNet: A Unified Embedding for Face Recognition and Clustering

MTCNN 结构  

mtcnn

** 如果你对DFace感兴趣并且想参与到这个项目中, 以下TODO是一些需要实现的功能,我定期会更新,它会实时展示一些需要开发的清单。提交你的fork request,我会用issues来跟踪和反馈所有的问题。也可以加DFace的官方Q群 681403076 也可以加本人微信 jinkuaikuai005 **

TODO(需要开发的功能)

  • 基于center loss 或者triplet loss原理开发人脸对比功能,模型采用ResNet inception v2. 该功能能够比较两张人脸图片的相似性。具体可以参考 PaperFaceNet
  • 反欺诈功能,根据光线,质地等人脸特性来防止照片攻击,视频攻击,回放攻击等。具体可参考LBP算法和SVM训练模型。
  • 3D人脸反欺诈。
  • mobile移植,根据ONNX标准把pytorch训练好的模型迁移到caffe2,一些numpy算法改用c++实现。
  • Tensor RT移植,高并发。
  • Docker支持,gpu版

安装

DFace主要有两大模块,人脸检测和人脸识别。我会提供所有模型训练和运行的.s检测a?=kumn tree-item-所有模型eA;

t-ad'> <有的问issueass='e也可以-3'>以的灵感 WIDER FACE程可以com/ht一天然的继i>&mmlab.ie.cuhk.edu.hk/6189" ws/CelebAnel, ">CelebA程可以更WIDER FACE仅3'> �键000位䕰ass所enter loss rg/abs/1503.03832">Paper <"highlfile"stpre>-3'hon它epre); _ } /gen_P<_train_ } .pyclass='two widhref-- } s<_on pdface--tlass='two wido">{dface--your } s{dface--your } s}dface--=kumn trepre>A;�rg/abs/1503.03832">Paper和 <"highlfile"stpre>-3'hon它epre); _ } /v> eme="mp<_,32">.py=kumn trepre>A;�rg/abs/1503.03832">Paper和 <"highlfile"stpre>-3'hon它etrain_one_train_p_one.py=kumn trepre>A;�rg/abs/1503.03832">Paper和 <"highlfile"stpre>-3'hon它epre); _ } /gen_R<_train_ } .pyclass='two widhref-- } s<_on pdface--tlass='two wido">{dface--your } s{dface--your } s}dface--tlass='two widhref--pede222f="#dface--tlass='two wido">{dface--yout Px006b35e4ef="# trained beforelass='two wido">}dface--=kumn trepre>A;�rg/abs/1503.03832">Paper和 <"highlfile"stpre>-3'hon它epre); _ } /v> eme="mr<_,32">.py=kumn trepre>A;�rg/abs/1503.03832">Paper和 <"highlfile"stpre>-3'hon它etrain_one_train_r_one.py=kumn trepre>A;�rg/abs/1503.03832">Paper和 <"highlfile"stpre>-3'hon它epre); _ } /gen_O<_train_ } .pyclass='two widhref-- } s<_on pdface--tlass='two wido">{dface--your } s{dface--your } s}dface--tlass='two widhref--pede222f="#dface--tlass='two wido">{dface--yout Px006b35e4ef="# trained beforelass='two wido">}dface--tlass='two widhref--rede222f="#dface--tlass='two wido">{dface--yout Rx006b35e4ef="# trained beforelass='two wido">}dface--=kumn trepre>A;�rg/abs/1503.03832">Paper和 <"highlfile"stpre>-3'hon它epre); _ } /gen_land_48.py=kumn trepre>A;�rg/abs/1503.03832">Paper和 <"highlfile"stpre>-3'hon它epre); _ } /v> eme="mo<_,32">.py=kumn trepre>A;�rg/abs/1503.03832">Paper和 <"highlfile"stpre>-3'hon它etrain_one_train_o_one.py=kumn trepre>A;者triplet lossass试> t-ad'> <"highlfile"stpre>-3'honv class='ui t=kumn trepre>A;�或者triplet losst-posettask-li_d
t-ad'> ttps://arxiv.op>@体 class"https://gi大模t-poster pr跟踪和反##加ss试ef="ht t-ad'> task-li_d
t-ad'> <
  • ter pr
  • ttp5://arxiv.op>/,它会实时展示一些需要开发的清单。提交你的forperqr/89/16用s来跟踪和有模型eA;
      t-ad'> &#ver-3'> DFace • $('#path-br"ass='")ecent-arra-.first() scoped','-recent-$.scoped $"dfao'>
       捐赠 div class='file_contentproject-download-panel'); $bt,; b35al,; roo>,; tip, , /smaD nputs$('#ge,itemD nputs=== 0) { roo>url'))交, • $=== 0) { claem; #ive'); nput overviewy=== 0) { a[ class claerd.on('..siblwnload-panel'); { roo>.ante }).call(thproollTotype( cla).offtem() topgment tr, 500btnCopy.popup('show')ent'> talfalse); 0) { ="posrl'))(ive'); nput ); ); 0) { b35alsrl'))(ive'); nput b35al ); 0) { $(ainertem').on('clic nput overviewy ); 0) { tiptem' $(ainerntent: 'tip-l/span> ); 0) { $(ainerntent: ' nput.="为ype'), 360); }); $('#bt'> $btnCopy.po $bt .() { ;;_i < _() ;;_i++d='tree-conten'ui ial32">[_i];0) { ; tal[cript> &#x, 'lass='two widss=yelle wiit-link"labec6b3ney">¥', -or-'b3ney, 'le_time_a &#xnopadding s }padding s up({ ['lass='two wid nput dth=">/,它会', -or-' npuorvree-concti, '"'two widss=th" nawiit-link"的f', '用', -or-' npuorv>&#x, 'x000_time't-projec nnopadding s ="po)();
      d='tree-content-holdopadding s}padding s'#get+= 1opadding sistaltrueopadding s $bt'); remo#bt'> talfalse); ding s , fu'#get* lassl32">.() { < $btnCopy.popunten $bt ' pathAutoRendery; $input = nten $bt ' remo#bbb}padding st remo}=== ng sTot, top=== Copy.poputop hildre).proollTot remo#b32">Tot 32">.offtem() topopadding si fu32">Tot >=utop &&b32">Tot
      atton cla e>Li-new="ut 'ui input'e>L1aa95a.com/html/imaf="# out" naw_logwidth="新标签打开 _ago'> L1aa95a.com/html/ima claw_logwidth="重命名 _ago'> L1aa95a.com/html/imatrasht_logwidth="删除 b5fe5 row treefo'> tal ba Re>Exp(/\/+/ } nload-pao
      remo, fu!it-autRe>.v cl(iv> <) &&b! <) &&biv> <) nCopy.popu$).o basi="#de but).iv> iv> ')); dinge $input = $hex='fi'addCml/i('waryp ("ree-item-fi含导ﭗ符(onvo且> yp ( } if("true" "false" || "false" "false" bnCopy.pot-holdopaddi } nload-pao n Li-new="ut') nCopy.popu.lis:dpa ,).call(thtt:;'_blank paddingt remo$matt.tent: ' ='new_fype'), 360); }); ev nmn $('#b#bt'new_(''); ; nm() lename' nnopaddingt remo$matt.tent: ' delet_fype'), 360); }); ev nmn $('#b#bt' Fena(''); ; nm() ntalfalse retur l')docusubmype'), 360); }); ev nmn'); { if (iasTputC n n ype'), 360); }); ev nmn'); { if (iasTputC n
      ]").iv> )Copy.popu_t src_
  • ]").iv> _t src_
    ]").iv> ))Copy.popuoverwriut mfalse reopy.po (..image.py" ]").focus reeeeeeealss=("存在相fi%A3%ee-ite,请修-fil重试")Copy.popuent-holdopadding s}padding s$.ajax nCopy.popupu n
    >取消