|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
CC3200AI实验教程 ——疯壳·开发板系列 AI人脸注册认证与识别 * q u1 U2 J/ {& d* [, j& r
$ ^+ d l' r3 L0 `5 c5 j
R& @% v+ e8 f1 i! E, f e
& H* k2 I2 _4 Y: h; g
/ p! Y/ ?) d* F9 w- i$ b7 j2 { 使用IAR打开AI_OCR文件夹里面的工程,打开common.h头文件,连接的路由器名称及密码如图1.0.1所示,如需修改成需要注意路由器名称长度和密码的长度以及加密类型都要修改。
) M/ `+ v+ f& ]. N \7 p/ [( d$ _, j# w- p) {1 H
2 A$ @! I, K- y ~, W/ y; y, G# z+ i
图1.0.1 路由器相关信息; Y" U* Y8 L' }/ e& |
图15 v, P! x* n4 d. v/ A
在AI人脸识别系统中需要有上层服务器,CC3200通过TCP与上层的服务器建立连接关系,通过这一链路来实现数据包的传递,从而实现人脸识别的功能。在mian.c文件中通过两个全局变量来定义服务器的IP及端口,如图1.0.2所示为连接服务器的IP及端口,用户可在此更改切换连接到自己的服务器。
) _ ]* }7 b8 o
" o! B. s3 ]0 r2 w4 P
: y( p( n% _! j1 k( G! j, k% t 图1.0.2 服务器的IP及端口
% D2 i9 r1 g; p/ l8 [6 X 图2) B; |! c- Q; I; p8 L+ l3 v
IP地址用16进制来表示,例如:“192”对应16进制的“0xc0”、“168”对应16进制的“0xa8”、“05”对应16进制的“0x05”、“05”对应16进制的“0x05”,合起来就是0xc0a80505(192.168.5.5)。
2 S) Y* P9 n, L" F 在UartTask任务中为了方便调试与二次开发,AI人脸识别系统使用串口指令的方式来开启相关标志位从而实现对应的功能,如表1.0.1所示为AI人脸识别系统的串口指令表。
- l# Q2 a+ A# k
% }5 s2 q2 f; Y 表1.0.1 AI人脸识别系统串口指令表( a# k8 X* W' C6 i
) s2 v4 C9 E9 h; c8 o. ~+ |) m
4 H! R( E9 A4 K, V# C& U 表1
1 l: e. @$ y. k/ y0 ]1 }' ~+ ^0 e 为了方便调试,最好提前把这些指令添加到串口调试助手中,使用时直接点击发送即可。如图1.0.3所示为把指令添加到SSCOM串口调试助手后的界面图。& |( ~5 F; D! G& Q0 F+ N" @; v
" p4 [8 z3 l; g$ e# B* a' B
! N% f- z$ k2 J5 e8 D3 ` 图1.0.3 添加指令后的SSCOM串口调试助手2 W8 s$ K, h7 E. M8 T1 W% [) ^, f
图3. T n3 E7 K: e! r
UartTask任务主要是实现接收串口指令,对接收到的指令匹配并置位相关标志位。
) t2 Y- |3 V! ? h. T% } WlanModeChangeTask任务主要是为了实现CC3200网络连接部分,如图1.0.4所示为该任务代码。) S7 ?% E5 T( x8 k' M2 q% B1 T/ d
W+ y$ d) o1 W! e' W) B) c; F
& P1 h1 U, |% O: k 图1.0.4 WlanModeChangeTask任务
- e/ k' Z6 k) d0 S- u 图4
" g2 z) ~8 k$ b2 f4 A 当接收到串口发来的模式改变指令“fk+set+mode+1#”时会使得模式改变开关stationModeChangeFlag置1,通过ChangeToStationMode()函数,CC3200被配置为STA模式。; G5 r2 n) o) ?4 T$ [
当接收到串口发来的联网指令“fk+connectWlan#”时会使得连接网络开关connectToWlanFlag置1,通过ConnectToWlan()函数,CC3200连入指定的路由器。
( v7 B4 F) ]! z3 E% T 当接收到串口发来的连接服务器指令“fk+connectServ#”时会使得连接服务器开关connectToServeRFlag置1,通过ConnectToServer(),CC3200与指定IP的端口建立连接。/ g% Z1 j$ m" c" m+ m; w; v; h
SendDataTask任务主要是实现检测到相关指令的标志位被置位后发送相关的数据包到服务器端,SendDataTask任务的核心部分,如图1.0.5所示。
$ \0 W7 |0 p6 f( H# F& r3 n
# G) [# ^3 h+ m9 a4 g7 Y% v3 b
' D1 {& s% m6 A4 ]( l4 }: ^ ]
图1.0.5 SendDataTask任务
3 R& f: T' W$ U7 R" ]9 q3 m 图5; P/ |$ i8 v6 |& b W
具体的数据包内容可参考《加解密与数据协议》小节。ReceiveDataTask任务主要是对接收到的服务器回传数据进行处理,如图1.0.6所示为该任务的代码。每当服务器接收到CC3200发来的数据包时,会返回一个响应数据包,CC3200通过发送数据包时置位的标志位,来判断接收到的为哪一个包的响应数据包,并对响应数据进行处理。具体可参考《加解密与数据协议》小节。
4 S, D% _" d, O' f3 F% u( E
& x2 n/ j% L% D
m% C( {* `6 P A [ 图1.0.7 ReceiveDataTask任务2 a. v6 i% A6 w3 N5 p C, P
图6; @" Q) l9 u3 F
编译代码下载Bin文件到CC3200上(具体可参考GPIO小节),下载成功之后将拨码开关再拨回去,由于用到串口UART1调试的接收,需要把USB转TTL电平的CH340的供电端以及收发端接上,把CH340G_VCC拨到ON,接收端RXD拨到ON如图1.0.8所示。# W0 m4 I2 A A
6 ^1 z! m8 ~* ^) {: X- ~
' Z% H) _* K3 j$ d, n
图1.0.8 下载完成的后的拨码开关示意图
" A: H0 G. V l% X, r9 G- U* [ 图7
' `* p( z# x- g; P" |0 w 由于板子拨码处的TXD(GPIO_11)也已被摄像头使用,所以在程序中改为了GPIO_31,故需要把P17短路帽接上,插上USB线。最后板子上的拨码及接线状态如图1.0.9所示。# L& n+ @! j9 w# h3 [1 D/ B* Y9 E
+ S4 M: k) w" e+ ?, t* R/ `
/ k/ C4 B2 b& K7 U, f8 U' r
图1.0.9 最终接线状态
& A3 N# r. v3 U 图8
2 d4 H1 l+ E+ Y @: u 打开串口调试助手,选择相应的串口号(根据自己电脑进行选择),波特率设置为115200,打开,按下板子复位键。会收到摄像头初始化的信息,如图1.1.0所示。
5 [0 E$ @. ]' r0 i& l3 D! f( N2 N; q# k( g- f5 Z
! F3 f" i5 B2 D \
图1.1.0 摄像头初始化信息
. y' z, p. ] _, [. C- k 图9
: x4 l2 |! a' R, O 点击sta,将CC3200配置为Station模式,收到串口回传,如图1.1.1所示。
' u5 {, {& w# D. H( x# ^# o' L/ K' C; P* n! S6 i- Z
4 h+ A% ^: z; H' d0 [
图1.1.1 配置CC3200为Station模式+ ?4 F# M/ s& ~% T0 @( k
图10) Q/ P) ^6 ?' |: w6 W/ j
点击wifi,CC3200接入程序中指定的路由器,收到串口回传,如图1.1.2所示。* P; n' z" X; Y4 O
7 a3 b* y) U8 l$ W. d$ V. a( A: T
+ z. s4 l, n( ~3 G9 t& U
图1.1.2 CC3200接入路由器
0 ?0 ^; S6 z/ h4 _ 图11; K1 U6 s' p' I4 y
点击服务器,CC3200与程序中定义好的服务器IP和端口建立TCP连接,收到串口回传,如图1.1.3所示。
: T( q' P/ h' {1 R2 W! R) D* [8 h! p* t- E3 v9 _4 \
9 e/ C- X+ t, a* {6 Z/ e
图1.1.3 CC3200与服务器建立TCP连接
: P! T3 }4 E' u. X$ l 图12/ @& u7 ?) f6 f9 A, N0 D( `! U; i
若设备已经注册过,Skey已经写在了程序里,可以直接登录;若未注册则发送注册包,点击“登录”。收到串口回传,如图1.1.4所示。
: z/ s. E; _3 \/ H. _. T/ |1 I# |8 f
8 @7 g v" h y0 W* o
图1.1.4 AI设备注册* R h& x6 `3 y" M' d; P: w
图13. L7 g& p) P$ l1 [) k$ q0 k, o
登录成功后,设备将会在空闲的时候不断地向服务器发送心跳包,当Skey过期的时候也会自己更新Skey。1 N( L4 v% i9 t3 { S7 [! F
点击人脸注册,收到串口回传,会得到一个属于这个人脸的UID,如图1.1.5所示。
1 D, m4 y6 m: r7 p4 F; e5 i1 _: W$ u' c) n/ \( I' J
& H% L$ p1 q8 ] s. o- U0 [- v+ K
图1.1.5 人脸注册包$ i5 R" @- t' D' B g, K. H) x
图146 x# q {: `1 z: E
接下来是按顺序发送正脸到结束人脸注册,按顺序点击正脸且用摄像头对着你的脸,如果没有识别到有脸,(下面的包也是一样)会发送失败,待返回图片发送成功回应时,再采集下一张脸,依次点击,完成7张脸部采集后点击结束人脸注册,完成人脸录入注册。如图1.1.6所示,发送一组人脸进行人脸注册。: x4 y; Z7 ^+ W; K4 @
O7 h, ?0 z. ~1 y* S4 [( ~ ?' Z
6 h2 x3 T4 h. L9 u, q K 图1.1.6 发送一组人脸进行注册, |$ J% u8 e3 N! u% e& @
图15
( v+ |9 M3 ]9 C 点击人脸识别,会在已录入的人脸库中,寻找与当前正在识别的脸最匹配的user_top_num张脸,user_top_num已经在程序里写为了1,即在库中寻找一张脸与正在识别的脸相似度最高的脸,串口会返回相似度以及找到的脸的UID,相似脸的人脸类型即正脸到眨眼(0x00~0x06)和userinfo(人脸信息),如图1.1.7所示。5 y: u) y5 V. B: ^2 @
9 z, r7 J# @; U. u. _
5 ~0 n) D ?3 Z* r m
图1.1.7 人脸识别信息
6 ` k, l1 \- o- N% O9 j 图16& P% h6 Z2 A m1 f
点击人脸认证,则会比较人脸与特定的UID人脸进行比对,返回相似度。这里的UID已经记录为之前注册的人脸。串口返回如图1.1.8所示。
& l. |6 h- R5 S# i S
8 d3 {3 |5 c9 C# H! p
4 {4 Q5 X' W% J4 ~ 图1.1.8 人脸认证信息5 F0 I7 P* {4 Y9 w- s( P" x
图17
# T+ L, }. W! z/ |7 q1 R
& D" w- Y! K% ^ I1 z' Z8 t
' e% ~: c) t; ]' x- X$ {0 H- [% |' T) ^6 t7 I; n6 |' S
9 A: Z/ {5 b& y2 {- B
. i, P) ^9 ]" A- ^1 t
, Y1 f: [ A' I' O8 k3 G- a9 N+ p
文件下载请点击:
【7】AI人脸注册认证与识别.pdf
(1.92 MB, 下载次数: 0)
! T" P5 j& H3 k6 j# k4 R
; p' A: S( V5 G8 t2 [6 i( L/ ~& S$ I5 N, D6 l
|
|