From 7fd93ce091e07456d9a83a8af8e2a341eb9472f3 Mon Sep 17 00:00:00 2001 From: xiongraorao Date: Sat, 18 Aug 2018 14:56:20 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E9=A1=B9=E7=9B=AE=E4=BB=8B?= =?UTF-8?q?=E7=BB=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- interview/README.md | 2 + interview/img/hash-table.jpg | Bin 0 -> 29267 bytes interview/img/index-table.jpg | Bin 0 -> 30216 bytes interview/img/times-table.jpg | Bin 0 -> 34040 bytes interview/resume.md | 116 ++++++++++++++++++++++++++++++++++ 5 files changed, 118 insertions(+) create mode 100644 interview/img/hash-table.jpg create mode 100644 interview/img/index-table.jpg create mode 100644 interview/img/times-table.jpg create mode 100644 interview/resume.md diff --git a/interview/README.md b/interview/README.md index fa122bf6..f1d3aa47 100644 --- a/interview/README.md +++ b/interview/README.md @@ -2,6 +2,8 @@ 目标职位: java 工程师、大数据开发方向 +[项目介绍](resume.md) + ## 1. 招聘信息 招聘信息的来源主要是学校的群和牛客网。 diff --git a/interview/img/hash-table.jpg b/interview/img/hash-table.jpg new file mode 100644 index 0000000000000000000000000000000000000000..2e86cb4e1029469f11b645f17790e547e8d79c38 GIT binary patch literal 29267 zcmdSBbwE^47chM3hNYxy>6Gs7?iP?nL6k;N8l=0CMmnSwL}{cul#oV1IusG`y^HyK z>U-ZmKZcz>HD_kdojG%6?!Ei{-S;H`qAaf@55U2}0p?%=zRv+N04g#v3NjKZ3JMAu z8Y(&_0Tw0(1||s}J`Mo|DHSCJDLFYc9S0*dl#Q00oJoM0jgyO)mzRoBNKBAhl!J$t z8>R#f4Gj$w1CtmFi?`|dG5jl`=KG5o|nSWg7sSw%k~(t%;C7O}kxAO<60dtLG!*3BcxOxtsO zNt}MZEIdTTNnbVZEB}cirIY*~S5GHSUiDitOy}yZ=UZ9GkBmm`qLKXwr|lA@vUy2X zr4rw}k*tl{#oWoBpV;r%A3SkB9XoCj*R05C6+eF?h4|X!6EmkzQ9*eA*!k=<2p%bi8a3XTn^tmVfBc) zk%ex%_v8IJp71)V#c&G_LLR}rohV!7wW@LK8=vT^Y#nzhfH zyX=kC8OM@@TN_gM{ODd-;HhX~XyNFs>47xkFt-mERU@SX`NQtVn{`iOTu3TEyL?pW zqLs@O-?T8|^9)DJ`yyo56&qVPUFvI9G?JD*6#H^^i(Y%`qt}(un=2|TDw0Jt(IL@+ z1<#SDrl?*H#}JUZmA+l zr5VerAL_ndeFt1vjJ<8|KJ!qpek?Owe`R;c3vGlhM!g&VmbFp;ru&|fZmWGx6CvSw z=RCuQ_7A6m7j;di7xkl$qg8jwKk+_3?^V+`2(OIQx>eEXCZPQAV8m{uAzPd>^K@-0 zrW`jCH#XU3?BmzZw63m(QAX*DB3p~q@qRMKQn$k|vbP6{`p4-jsSiEmQu&^#>Bkx1 zyxemiXDC->J(NgXFiO%GnT}7si!#9NFjYy*T_5=JwNiOSe7doevE*}(EaPz=RzrEKXv)7lx==?C*fgVrchJEah<(#mn=${Zii<6URLxCz=aO*+%Ww-M!+y~gB z-Qw$qdZ#HRiLKbl8&P|oK35F!K7EApXmS;M*okCTXu=q}2GBH<6$P$g9v++=vwSlX zE-<7ud`dzB+NjM+!go=pFL$qxFr02W(qO#NI-)D0$CTyNT7NL!aOnNW zhf^;LlTRN*oStCKZ#{QN<*b5K5jS$A5Dw6oa8A7uPsO49^j4j!GA}w$30h{{vM<3p z{A%@J;JD(6ZMMzctD9P_qpQdB4m=)TR!NsXPU+k5>4mLHrQN3I* zAmb*WhSW>4y1cca_c_yDxvq~TFIl0i1++7txYyU0Y)dY~3xkV(4Zb%w?L0TKMQ09O zOTT^Sn=DM9sfo9Xtg_ZRatM6G$aK2g^tpU(a(Fc~LyW

P|Lhzps)=u`5Gs$}MOP zx0Au(GDE%oxxq(nJ3n{URvC_D{=xlmB?^)BS3=)D6tl5hoE{GrtQ-V+3g32UG3hPd zVySw<9$6UT(rbXp2hL0(GhwImdzeqZC9o8h4<8>JYlL>*tXxhnPJdK2H12RBhWlsiW&nKVP0I$_qUSiPQ;6yG>k* z_;)gIwTu?-p;m^~@o14;xh2zED}5Srk2NizH3@%F?fKeF^aB}3Yl^FE)Gqm|0t*6BLTdX@fW-~McI z^vG@5u9dJrIOlc6(wAwYMSE_xL-z#X3p4wN3Tdayb+e@#Ew7I1Mk2)0ColJNkUifd zII(g&e6^_+zDUf7MPcU4e=**)cCdevHCLLf^SXtyB*9=dYN+CJUnhld_{~EDRP%-5 zjL%K3=*#HKk(OH)Cbfi}ggUER8vET3x88m#;;Goa9$msXFND4xU(ObRgKNK;EaUQq z-`uqGm;J65F|V>-qNpLxC!6G%)K_q|&z-VY;)C$Ht2`>W_QN5;7cB2e zFn$N9Ob@T2bG&{RewiMb68Cfg4Ly!zB#&qP7H^Cw);0Hvb@z!x3q;eKY`v<#19??v zV+Wse5--sZ;ERgz)pa`(IZ+7O$r#Da@QTU%Y%wda#8^dUpOnLIo{TkIVtMw&hN`;A ztDD4)sUU5lX1l4tHU>At&8iVnm1m&9l~JsN@Y#)U36?p(fo|V#J5RkSATe zM)@1Do@AcR0EyO4>3I->5rZd2a@61-Qs!+GmaDw)9v|20Jui5iL(>QpTYEpB;yT2;8p38|d68diV;4Q_;_+Mov9F zTu9G)pH8;j{KBkqinriq`_YWP`&5=jcdsSV7t#~exvl-&ryi zV3TJR;^Tfz7WTLhzQ>7#gLU;2yn{AOP7PJ)mfAa`Xjz*xKX+&ko=Y9!I&n#SAs@DJ zxRoGgDw&QO`MWsX7Nw!w30^A{58K|*W${-*g9{4nb9yVO5mKMhnWI*!Ra|k6q?#oc zbtN5A5?;%t+e0?SW!B4YmN-Gpsaui1460GEFL0hgf z9onyn8Qe)ei=`n(8`S_CK87ZkUGmywy*%N31>f>9jA-E(;y$`?F-V89OL7y)3)RbV zx5M*95#EGUH=%`<#3dEnso?#2-94rr7BO>GC7ZG|>$#O}X(_6_P^^kKg*MB%MQlO( zM9YH>P^)lFpfBa1_-aCE(M}P|gdMCPF-Gb1rQC1qiPG9UD07W7Lo)96syh5CC~JwY zcU|I#8hCt`pBi9zF%8%KYwci3f?k!>i06c6EG>Eu%MLXoR9|%){Kk_C?L~g0+ILS1 zS9S$voW4G?`J~o8r}fe4>n#{G>*q82%h!3mDmfFepR2h0u-MKkrA!k)Wl81cL9uWB z#(BPIzL%(L=5v=+`Fe5VPfTfe(S1E6l4r1qp*20ZHq9ZTJ?xyiu8?Gqq=pi6mxY({ z;iAmCg#W89-SI7C+M&`DdvJym-M#!GliHjbUY}#yzHz@`Y4`tjw!y4U@F8PxD!rUX z-?n0iKiDJq-P4j1a9)$SGyx6X(m zrY80_1BVMcTQd#NQpU946S<3Cu#~U9U1f7TukD~vb=s0m$|2R(F)d>xlKmYAn1(8Rh z_wZ}f@YWCp8H0sMkBS|mh_g~c_@ugZ& ztO-ubQap;%RUFR1%d_}@J=%8_6T@`EyJzP_$~EnDMY zq58P5_5<7g*(}moV+xY6@xaC*E$zd>Z0wZ$Ue`+&yGi!`+cd@P$o8Jh zL~)fJws52nAy9t@IG7DHl`5$gAjW-={@LjdI4Wdyt~>r0_rv0}{TBUKN*2`rN4oJBrlS*D^cVU! zOJ7iUHN@(7;uG}#gZv8=RP~pRe^IIDUk;}aUx8$ZUQHN7+4vJOXK4fF3V-uZ5j?@2 z5-TpaQ-ViCMEP?(3I~siM}r9A(n7%Ju|OiAhH^`3b4qGnZ;3VKQj+E#Ulq6Ps zi^u3l=5XX-oOAT7jxmp4ZsVi^ki+|ynOy{EYwVFG?AYGfLPqQF!E zCRh%B<~QnGGlqs81g=46XL8;t4ZikEN{66xP@(IPlb=Gy(p4;sWEax3@lv7yB*{7Y z%rZROE0s=SUe0n&3$YXO_tH3C;F?T%rKjZ(R*73L9ngl# zE|+CCkiVlk(&p}P>mRK|AMLpvrmg+ZUV*%%q{N{@S23nJnGk&!JtCqukUMHAkUJ1l z+7w+`)-mbXvuCb8{nC5d7TP46-534J_a54r=mi#RYJ_XfC}xyuJ}1&8RNjI1Q(4;~ z+L8Fgr_ky$GuKCt$*K@wlzvuI|D32Y$nD5JB1^+~zp z$V4R;%V>4}N%nY3*kmB7jI6zK+&C$#b{FrHxcTQ<1M7ZrM_ocT=vhrVFG$xzz?{Wn zU47m)#r^ubqv8P8J?-S{`k$TSuV_OhGfI^Sa>459QDtd9tGjMyeq@s`ed=~wrorSO zOG0{M@vOuToEJQ}06ZKV5;773;?ENV01g)(0TGXe3qn9GrIkm>&7*CBgns~)ly;`& z3}`>Ro*!Tt3An~nmaES*g%X*IJ9xKH}d}Xtz{JP^rvjFS;tg)tBCwtNT zbH#4=^+6$*7obq`Z=najh1`A$%_OH@K5h7T__T8Mu)w{=m&Z%wg;b8~a}W}7%TdLNiwtU+-VxD>bvGDp^= z$#JA{QBArLY11ycXx`Fn2FIf#6%ar|OF;CQ$!l@G#@7#TYMdq>Xtc{rCMb~&CdePr z#fvG?#kZU=F69KYgr6}kX=wYRfnTK?8toEDBNMB)9A*N)eB>goW!hjw79F-tCVsN! zO&le?!C=W?r2on+(thkfuWBx}xTkUEInvfutr1(^wo*E+S3;ka7ha#GcY+Fi^al7@ zQ=t#vR-sSmIi^n-$o6=w$=>j({n2sS`>=wvOyc*0zE=2T@tc;mG_LqTWbZC|_yuUk z&>L&HY~aVj+r#cFB+K&)KWp-~#;rwtcU@J35g)#moCdeidAQYmrIL(Loj`krJl$i4 ze0%!nCWgG`xNRpj*-4gc>q+p7e=Q@tr0JtwIwC|05e*_`)xg(1&~OtT?c#>LgdVU|NWXV!xAW#AGvNhQH!K6rQ}WGn z;UBUDe8~IZrPp;A8dtd=#(%-z@XZ@08OB$Z?c?vwqFQBr+17S{TqmAiZ$79hkX#X7 zG#0`w6Fy$65@i8(bAY$4&8u!szBzs8&Ef<-4gB~L?>WIc)z}-JNeHsps<9Ui3G5Dc zv$_4#QwFC*X!t3hqYm_PX}M>X$$C>)U4K;zDHMuCbw;^h(dOADfV(?m71lVV<38l# z?Kf1yZ4AA=tV2CqnIEFBaZ#lq`69oYctn{7*`-#WMZ3za)k_IiKA%n}?fsUq5(ju2 z#PY#i>7AmZlZ?4ep#;aPqz}lEktPbdV@~%I@4&;&781j>I%`v_*L9QN;=g7(@4IB4vY)q(zYJZ;iTJOXLl>%xQ`Y`T70p@k%74n9 z3PMhzp8FL#<8(_9{tWg>H^(fwaDz7<3vLG>@^29OJ#!~c}2Wukh^ z8~lGY+Ep;j^|FVNZSs+j<+ zUCXz@5!x6}&5$G~kj~35QJ%|3rVW3+Z<~N4kOQly)TbhpsW7+Ew_t;l-?jY*> zNBCxjKzBW6pI!;qDqOh8?j*~nr9Dg((_9%m;XMa$sXnd_UeE9DR@W}!?H}R&92Rru zMn>85tJzG!_CBN>ccl?-*WNO{TjMW9a&YTk-L}mAk{u!#IBMfip|ffthaQmZal)wO z+c<4gaT)jQYlK`QyI@-czH??tGIltMtYQA=Tb~k0IItX9`nGj$j$vgMPQRpQ^xrZx z{XBqDEn2IpY)KZKrOf4KuUf9|@*QBIz{3u!V?@~(Ll1P|mC2Hqp8S#)YOwiKqj>M7 zNR;-hREOSO{cvkZ6Y9as%%`Ybo0XH2o|oSk57qCrC5Euf`xSNwKi$qlcR_qd&vVJB zE;8`4gWvu`Y3P$p&i1ULCg;HF6Iwd6A`>j(#ZPP+CCUC zARpzbO0ARVd!yH4A5{dklvD4s^osQVKuS)fvvev>SpTN|6bPX~*F~=Vw*oqlCUFM=Be68d-aKG|f9C|rN+rWFC;Sop zQLYFzkf8Kl;%MF}t79LJrVc|zoQU07WeU zs_*0Am(c3=6L7o|j3*n`3KX>)jcBig7})ff9dsN5sH}A<+jRJupK`;Kqw*WvSETru z*T-&ee57KgxS)30$7NYgZ$$kWC85$FVQefBcA4pljR|M{UH!A9Z71&t3d_qYFrr;N zuGO`TiVkan4I@+@6f+|5~W5!)@+xy9_z08eZuFE@!ZXWYo1foyiS*5b}RVFt(R&RM&5 zv$pG(D#>9vykl1N;l>R!KAOGlS_;^IgMuB7%V9E_&gUC)EvISF*17wztRK8}SF$Od z_->X@-3T1Ql%K~-^R;K}!x?ZnS#uqj$5%0DnKtuh8B&QUgzP`{Q62V3SPrD=`u#LUo1-DY(l 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 literal 0 HcmV?d00001 diff --git a/interview/img/index-table.jpg b/interview/img/index-table.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6a8c38256989a529ac5f8b1c7777354901c5dc97 GIT binary patch literal 30216 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 KUTgGY^nU=QQRVgk literal 0 HcmV?d00001 diff --git a/interview/img/times-table.jpg b/interview/img/times-table.jpg new file mode 100644 index 0000000000000000000000000000000000000000..83a0ba66ef657fa4139ed9b2dd4c2402340ea497 GIT binary patch literal 34040 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 + +- [个人简历项目介绍](#个人简历项目介绍) +- [大规模人脸检索和人证合一系统](#大规模人脸检索和人证合一系统) + - [项目简介](#项目简介) + - [应用背景](#应用背景) + - [技术关键](#技术关键) + - [大数据框架](#大数据框架) + - [存储实现](#存储实现) + - [计算逻辑](#计算逻辑) + - [索引方法](#索引方法) + - [CPU索引](#cpu索引) + - [GPU索引](#gpu索引) +- [融合深度学习技术的智能云应用平台](#融合深度学习技术的智能云应用平台) + - [项目简介](#项目简介-1) + - [项目背景](#项目背景) + + + +# 个人简历项目介绍 + +# 大规模人脸检索和人证合一系统 + +## 项目简介 + +实现一个基于深度神经网络的大规模人脸识别和检索的系统,统计在规定时间内,经过所有摄像头的人脸的次数。 + +## 应用背景 + +本项目的大规模人脸识别系统是基于某海关鉴定“水客”的应用场景来设计。在实际的应用场景中,每天通过海关的人员大约有40万人,每个游客进入摄像头的人脸图像大约提取10张,要求计算该游客在过去15天内一共出现的次数。根据统计的次数来判断游客是否为“水客”。 + +## 技术关键 + +按照应用背景的要求,15天内大约有6000万张图片,面对如此庞大的数据集,需要采用分布式处理的方案来计算。 + +### 大数据框架 + +采用Storm分布式实时处理的框架来对每个摄像头的视频帧进行预处理,通过**人脸检测**、**特征提取**、**特征比对**等步骤来实现大规模人脸检索的功能。 + +HDFS实现分布式文件存储,HBase来实现分布式列存储,Storm实现实时流计算并接入人脸识别算法,Kafka实现分布式消息转发 + +### 存储实现 + +需要存储的数据有人脸图像的非结构化数据,中间产生的人脸特征、哈希特征等结构化的数据,将非结构化的数据存储在HDFS上,通过URL获取,结构化数据存储在HBase表里面,分别有3张表,HashTable,TimesTable,IndexTable + +**HashTable**: 建立hash特征和人脸实值特征、人脸图片URL和时间戳,人脸ID字段的联系。行健为hash特征 + +![](img/hash-table.jpg) + +**注意:一个feature 可能对应多个hash** + +count:表示hash对应的feature的个数 +feature: 人脸实值特征(512) + +**TimesTable**: 记录每天出现的次数和每次出现对应的时间戳和人脸图片对应的URL。行键为游客的ID和当天日期的结合。 + +![](img/times-table.jpg) + +count: 表示游客被识别成功的次数,每识别一次,count字段就加1,然后新增(stamp和url)两个字段。 + +times: 表示该游客出现的次数,**和count不同,times在游客连续10秒内出现只计算一次,count则是识别一次就加一次** + +这里的游客的ID是通过检索得到的,后面有检索算法 + +**IndexTable**: 记录15天内,每天插入到索引的哈希值,主要用于更新索引和数据恢复。行健为当天的日期。 + +![](img/index-table.jpg) + +count: 记录当天插入索引的hash的个数,hash为当天的哈希索引值。如果需要增加新的索引,count字段加一,后面添加新的列。 + +hash: 当天抓取的人的hash值 + +### 计算逻辑 + +每天抓到的人脸都会存储到IndexTable中,用于初始化索引。对于抓取到的人脸去以前的特征库里面检索特征(中间需要用到HashTable来对人脸进行精细计算),然后统计次数,存入到TimesTable中。 + +## 索引方法 + +### CPU索引 + +首先,将待查的特征变成Hash,利用C++ 的 popcnt 指令优化,计算待查Hash和特征库里面的Hash的汉明距离(异或),然后利用桶排序思想,得到汉明距离最低的几个hash值,然后返回粗略索引结果,得到粗略结果后,查询 HashTable 里面的实值特征,然后利用余弦计算距离,得到最近的余弦值,即最终的查询结果。 + +Topk 排序问题,因为汉明距离的值有大小范围,所以采用桶排序的思想。 + +考虑到角度原因,所以采用余弦值来代替。 + +性能:100万,9ms + +### GPU索引 + +性能:6000万,平均512ms, 100万,3ms + +GPU索引利用了归并排序和双调排序的思想。 + +首先将所有的汉明距离按K划分,K个相邻的数据为一组,将所有⌈N/K⌉组的汉明距离排序为组内有序; + +找出数组下标[0,K)和[K,2K)中汉明距离中最小的K个数据,并将它移动到[0,K)的位置,找出数组下标[2K,3K)和[3K,4K)中汉明距离中最小的K个数据,并将它移动到[2K,3K)的位置,依此类推。经过这一步之后,以2K个数据为分组,可以找出每组中的前K个数据; + +重复前面两步,分别排序[0,K)、[2K,3K)、[4K,5K)…,然后将[0,K)和[2K,3K)这2K个数组为一组,找出前K个最小的汉明距离,并将它移动到[0,K),依此类推,所有数据的前K个汉明距离即存储在[0,K)位置上。 + +# 融合深度学习技术的智能云应用平台 + +## 项目简介 + +结合深度学习技术,开发融合了人脸识别,人脸布控,活体检测,智能门禁等多种应用的分布式智能云应用平台。 + +## 项目背景 + +利用深度学习算法,实现摄像头视频流的实时人脸检测,人脸布控,活体检测,智能门禁的多种应用的平台级产品。 + +人脸布控:先将人脸黑名单库存放到系统中,提取人脸的特征,拿到待查询的人脸,跟特征库进行比对,超过某个阈值则示警。 + +智能门禁:其实差不多,也是拿人脸进行匹配,通过了就开门。 + +Docker和kubernetes 部署: 遇到的挑战,集群间的通信、分布式文件系统的选择(GlusterFS、ceph Fs、NFS)、docker 的问题。 +