李貝貝,朱建生,閻志遠(yuǎn),戴琳琳,解敏森
(1.中國(guó)鐵道科學(xué)研究院 研究生部,北京 100081;2.中國(guó)鐵道科學(xué)研究院集團(tuán)有限公司 電子計(jì)算技術(shù)研究所,北京 100081)
鐵路電子客票已于2020年6月20日在全國(guó)普速鐵路推廣實(shí)施[1],是客運(yùn)提質(zhì)的基礎(chǔ)工程,推動(dòng)客運(yùn)智能發(fā)展的重要載體,以及解決旅客在票務(wù)、進(jìn)站、候車、乘車、出站、換乘全過程信息化服務(wù)的必要手段。在電子客票的推行進(jìn)程中,為便于旅客乘降組織的智能化發(fā)展,鐵路客運(yùn)部門已于2018年通過搭建人臉識(shí)別平臺(tái),支持鐵路實(shí)名制進(jìn)站核驗(yàn)系統(tǒng),解決人證一致性自動(dòng)檢驗(yàn)的問題[2]。但該場(chǎng)景下的人臉識(shí)別技術(shù),屬于1v1模式,而刷臉出站、鐵路車站內(nèi)刷臉查詢[3]等場(chǎng)景,需要研究基于1 v N模式的人像檢索技術(shù)及其應(yīng)用[4]。
2020年,鐵路客票系統(tǒng)團(tuán)隊(duì)首次開展了基于人像檢索技術(shù)的研究,鐵路人像檢索平臺(tái)的建設(shè)主要滿足車站無障礙式刷臉辦理業(yè)務(wù)的需求,并實(shí)現(xiàn)無證件、無二維碼僅通過一張“臉”知行程的功能。鐵路人像檢索平臺(tái)上線之初,通過手動(dòng)配置能夠滿足業(yè)務(wù)的基本需要,但隨著業(yè)務(wù)場(chǎng)景應(yīng)用范圍的不斷擴(kuò)大,業(yè)務(wù)運(yùn)維效率低下、操作流程復(fù)雜等問題日益突出,平臺(tái)的流量調(diào)度模塊逐漸臃腫,需要進(jìn)一步優(yōu)化平臺(tái)的流量調(diào)度機(jī)制。
平臺(tái)主要應(yīng)用于鐵路客運(yùn)場(chǎng)景,對(duì)終端獲取的現(xiàn)場(chǎng)人臉進(jìn)行人像檢索,進(jìn)而識(shí)別旅客身份,關(guān)聯(lián)旅客車票信息,實(shí)現(xiàn)旅客在特定場(chǎng)景下的“無障礙”式出行。平臺(tái)的搭建需關(guān)聯(lián)多個(gè)鐵路內(nèi)的信息系統(tǒng)資源,實(shí)現(xiàn)人像檢索算法的集成與業(yè)務(wù)邏輯的封裝。
人像檢索平臺(tái)的軟件設(shè)計(jì)采用微服務(wù)架構(gòu),基于開源的ServiceComb微服務(wù)框架[5]進(jìn)行構(gòu)建。平臺(tái)的微服務(wù)主要包含以下幾部分。
1.1.1 公共服務(wù)
公共服務(wù)包括公安服務(wù)、圖片服務(wù)、配置服務(wù)等。公安服務(wù)主要通過實(shí)名制信息獲取旅客的證件照;圖片服務(wù)主要實(shí)現(xiàn)人像證件照、現(xiàn)場(chǎng)照等圖片在文件系統(tǒng)中的增、刪、查、改;配置服務(wù)針對(duì)Apollo配置中心中的配置,對(duì)其它微服務(wù)進(jìn)行配置熱更新。
1.1.2 基礎(chǔ)服務(wù)
主要包括初始化、心跳、日志接收等簡(jiǎn)單的基礎(chǔ)業(yè)務(wù)服務(wù)。初始化實(shí)現(xiàn)對(duì)終端設(shè)備業(yè)務(wù)開展前的鑒權(quán)認(rèn)證;心跳負(fù)責(zé)監(jiān)控終端設(shè)備的存活狀態(tài);日志接收實(shí)現(xiàn)了終端業(yè)務(wù)開展時(shí)日志向平臺(tái)的實(shí)時(shí)上報(bào),便于統(tǒng)計(jì)分析與故障運(yùn)維等。
1.1.3 外部對(duì)接
外部對(duì)接包括管控服務(wù)、實(shí)名制消費(fèi)、席位數(shù)據(jù)查詢等。管控服務(wù)對(duì)開展人像檢索業(yè)務(wù)的車站進(jìn)行定義與維護(hù);實(shí)名制消費(fèi)用于接收電子客票推送的旅客實(shí)名制信息,并根據(jù)規(guī)則進(jìn)行人像建桶;席位數(shù)據(jù)查詢實(shí)現(xiàn)根據(jù)實(shí)名制信息查詢電子客票,進(jìn)而獲得旅客車票信息的功能。
1.1.4 業(yè)務(wù)服務(wù)
業(yè)務(wù)服務(wù)包括人像檢索、錯(cuò)誤標(biāo)注、證件類查詢等。人像檢索實(shí)現(xiàn)了在人臉桶中根據(jù)人臉現(xiàn)場(chǎng)照檢索人像底庫,獲取對(duì)應(yīng)旅客標(biāo)識(shí)及車票、候車等信息的功能;錯(cuò)誤標(biāo)注用于現(xiàn)場(chǎng)旅客對(duì)人像檢索結(jié)果確定非本人時(shí),根據(jù)證件進(jìn)行業(yè)務(wù)查詢并響應(yīng),同時(shí)記錄現(xiàn)場(chǎng)人像用于后續(xù)的算法精進(jìn);證件類查詢實(shí)現(xiàn)在人像檢索失敗后,通過識(shí)讀證件實(shí)名制信息,直接向電子客票集群獲取旅客車票信息的功能。
1.1.5 導(dǎo)航服務(wù)
導(dǎo)航服務(wù)根據(jù)車站電報(bào)碼或列車全車次信息,實(shí)現(xiàn)代理地址的路由與導(dǎo)航。為提升人像檢索的檢索效率,減少內(nèi)部資源加載時(shí)磁盤I/O的消耗。人臉桶、人像檢索算法、人像檢索邏輯調(diào)用等均處于同一物理位置,因此對(duì)人臉桶創(chuàng)建與維護(hù)時(shí)的地址路由、人像檢索業(yè)務(wù)開展時(shí)服務(wù)地址尋址等,均通過導(dǎo)航服務(wù)動(dòng)態(tài)代理來實(shí)現(xiàn)。
人像檢索服務(wù)平臺(tái)的開發(fā),使用ServiceComb實(shí)現(xiàn)一整套微服務(wù)的框架。各微服務(wù)之間弱耦合,且內(nèi)部以gRPC協(xié)議互聯(lián),所有微服務(wù)通過Service-Comb注冊(cè)中心統(tǒng)一管理,通過Apollo配置中心統(tǒng)一配置[6],并以Docker容器化方式運(yùn)行[7]。平臺(tái)的技術(shù)架構(gòu),如圖1所示。
圖1 人像檢索平臺(tái)技術(shù)架構(gòu)
(1)接入層:解析多種消息協(xié)議,實(shí)現(xiàn)多服務(wù)的負(fù)載均衡與統(tǒng)一注冊(cè)管理等。
(2)服務(wù)層:通過Apollo配置中心,區(qū)分生產(chǎn)環(huán)境與測(cè)試環(huán)境,同時(shí)內(nèi)部組建微服務(wù)集群,實(shí)現(xiàn)業(yè)務(wù)邏輯。內(nèi)部所有業(yè)務(wù)邏輯集群,均通過導(dǎo)航服務(wù)進(jìn)行分發(fā)。所有集群日志通過ELK進(jìn)行搜集、過濾與存儲(chǔ),基于Kibana實(shí)現(xiàn)分析與展示[6],利用DingTalk進(jìn)行實(shí)時(shí)告警。
(3)資源層:整合人像檢索平臺(tái)外部相關(guān)資源,主要包括鐵路電子客票集群、鐵路公安系統(tǒng)、人臉識(shí)別算法、管控平臺(tái)及站車無線交互平臺(tái)等。
1.3.1 手動(dòng)配置,運(yùn)維難度大
人像檢索平臺(tái)建設(shè)初期,導(dǎo)航服務(wù)作為服務(wù)入口,承擔(dān)著地址路由、流量分發(fā)及請(qǐng)求重定向等功能,其中所有的導(dǎo)航規(guī)則全部在Apollo配置文件中定義,該配置文件要手動(dòng)進(jìn)行增加、刪除等維護(hù)。當(dāng)車站需要開通人像檢索業(yè)務(wù)時(shí),除需在業(yè)務(wù)管控定義中進(jìn)行新增車站信息以外,還需通過Apollo配置中心,手動(dòng)添加該車站相關(guān)的導(dǎo)航信息;當(dāng)車站停用人像檢索業(yè)務(wù)時(shí),又需手動(dòng)刪除配置中該車站的導(dǎo)航規(guī)則。因此,當(dāng)開通人像檢索業(yè)務(wù)的車站較少時(shí),系統(tǒng)可勉強(qiáng)運(yùn)維,但當(dāng)需開通人像檢索業(yè)務(wù)的車站較多時(shí),配置文件會(huì)變得異常臃腫,手動(dòng)運(yùn)維復(fù)雜度顯著提升。
1.3.2 流量負(fù)載不均衡
既有方式未能考慮車站客流量大小不同時(shí),因流量差異而產(chǎn)生的服務(wù)并發(fā)不均衡問題。既有的鐵路人像檢索平臺(tái)服務(wù)資源分配不合理,日均客流量5000人次的車站與日均客流量50000人次的車站,其對(duì)應(yīng)的平臺(tái)資源不應(yīng)相同,不應(yīng)以最高客流量的車站作為其它車站資源劃分的標(biāo)準(zhǔn),以滿足并發(fā)冗余等。因此,平臺(tái)的建設(shè)需要評(píng)估車站客流量的大小,實(shí)現(xiàn)流量的智能調(diào)度與均衡路由,合理分配系統(tǒng)服務(wù)資源。
流量智能調(diào)度的設(shè)計(jì)摒棄既有需要手工完成導(dǎo)航定義的操作方式。當(dāng)車站需要新開通或注銷人像檢索業(yè)務(wù)時(shí),僅需修改車站管控定義,即可在平臺(tái)完成車站的導(dǎo)航規(guī)則更新流程。在保持原有業(yè)務(wù)導(dǎo)航的前提下,人像檢索業(yè)務(wù)中對(duì)車站導(dǎo)航規(guī)則的維護(hù)將更加智能,顯著降低運(yùn)維復(fù)雜度。
業(yè)務(wù)應(yīng)用服務(wù)運(yùn)行于容器Docker中,實(shí)際業(yè)務(wù)處理均可在容器啟動(dòng)時(shí)指定地址與端口,因此平臺(tái)所有業(yè)務(wù)的邏輯處理,都具有資源池的概念。配置改造中,不再指定具體車站的標(biāo)識(shí)與應(yīng)用地址,轉(zhuǎn)為僅根據(jù)業(yè)務(wù)場(chǎng)景指定資源,實(shí)際車站的路由選擇由導(dǎo)航服務(wù)進(jìn)行處理。
例如,平臺(tái)支持站內(nèi)刷臉查詢、刷臉出站等業(yè)務(wù),在配置中,針對(duì)不同的業(yè)務(wù)場(chǎng)景,記錄所有利用的資源,多個(gè)資源以逗號(hào)作為分割,形成場(chǎng)景地址資源池。
刷臉查詢機(jī)、刷臉機(jī)器人等業(yè)務(wù)資源地址配置如下:
刷臉出站業(yè)務(wù)資源地址配置如下:
實(shí)際導(dǎo)航時(shí),先對(duì)業(yè)務(wù)場(chǎng)景進(jìn)行分析,獲取資源池中定義的相應(yīng)資源,此時(shí)獲取的資源暫與車站無關(guān),再結(jié)合車站日均客流量的大小,分析如何均衡且充分的利用相關(guān)資源。
假設(shè)鐵路各類車站中,單車站日客運(yùn)量最大為12萬人,對(duì)不同車站的日客流量進(jìn)行分析[8],確定車站等級(jí),便于進(jìn)行人像檢索業(yè)務(wù)的流量合理調(diào)度,車站日客流量預(yù)估及級(jí)別定義如表1所示。
表1 平臺(tái)車站等級(jí)定義
表1中,當(dāng)日客流量的評(píng)估一般根據(jù)前日客流量放大1.5倍進(jìn)行冗余考慮。車站等級(jí)劃分為7個(gè)級(jí)別,隨著客流量的增加,車站等級(jí)逐漸增高,等級(jí)越高,導(dǎo)航實(shí)現(xiàn)時(shí)業(yè)務(wù)尋址的權(quán)重越大,實(shí)際業(yè)務(wù)訪問的請(qǐng)求越多,該車站每日生成的人臉底庫的個(gè)數(shù)越多。據(jù)此為車站的導(dǎo)航記錄設(shè)計(jì)導(dǎo)航尋址數(shù)據(jù)表,如表2所示。
表2 新增導(dǎo)航記錄表
不同鐵路車站的日客流量不同,在人像檢索的定義中該車站的權(quán)重就不同。如圖2所示,業(yè)務(wù)流量根據(jù)導(dǎo)航規(guī)則進(jìn)行路由時(shí),基于車站電報(bào)碼獲取對(duì)應(yīng)的權(quán)重,并結(jié)合Apollo中的地址池對(duì)資源進(jìn)行分配,將檢索權(quán)重值較小的車站進(jìn)行業(yè)務(wù)合并,自動(dòng)做到服務(wù)資源的合理分配。
圖2 導(dǎo)航服務(wù)路由策略
假設(shè)配置Apollo中的路由地址池未在導(dǎo)航記錄表中用盡,則將未使用的地址直接分配給新開通人像檢索業(yè)務(wù)的車站使用。若路由地址池中的所有導(dǎo)航地址均已在導(dǎo)航記錄表中使用,導(dǎo)航服務(wù)則根據(jù)傳入的車站電報(bào)碼,評(píng)估該車站的權(quán)重等級(jí)。根據(jù)權(quán)重等級(jí),計(jì)算路由地址之間的權(quán)重總和,并取權(quán)重之和最小的地址作為此次導(dǎo)航地址進(jìn)行分配,如果導(dǎo)航地址的權(quán)重之和相同,隨機(jī)選取一個(gè)地址作為路由地址進(jìn)行導(dǎo)航。
假設(shè)Apollo中的業(yè)務(wù)資源地址配置為:
導(dǎo)航服務(wù)會(huì)根據(jù)導(dǎo)航記錄表中的數(shù)據(jù),計(jì)算每個(gè)導(dǎo)航地址下分配的車站碼權(quán)重之和,例如:
IpA:porta下已經(jīng)分配的車站電報(bào)碼列表為[QIP,VAP],權(quán)重級(jí)別分別為2、3,即IpA:porta的權(quán)重總和為5;
IpB:portb下已經(jīng)分配的車站電報(bào)碼列表為[QBP,VJP],權(quán)重級(jí)別分別為4、5,即IpB:portb的權(quán)重總和為9;
Ipc:portc下已經(jīng)分配的車站電報(bào)碼列表為[BXP,IZP,BJP],權(quán)重級(jí)別分別為2、1、6,即Ipc:portc的權(quán)重總和為9。
此時(shí)權(quán)重之和最小為5的地址為IpA:porta,導(dǎo)航服務(wù)會(huì)將其分配給新開通人像檢索業(yè)務(wù)的車站電報(bào)碼,并進(jìn)行業(yè)務(wù)導(dǎo)航。
本文通過對(duì)車站的日客流量進(jìn)行預(yù)測(cè),定義車站等級(jí),進(jìn)而形成權(quán)重,通過權(quán)重均衡路由地址池中資源,并分配給相關(guān)車站,構(gòu)建鐵路人像檢索平臺(tái)智能流量調(diào)度,保障了平臺(tái)的流量分發(fā)與路由地址管理,降低了運(yùn)維復(fù)雜度,顯著提升了平臺(tái)的研發(fā)與運(yùn)維效率。目前,雖已實(shí)現(xiàn)平臺(tái)的流量智能分配,但仍存在一些不足,導(dǎo)航后置的業(yè)務(wù)處理服務(wù)若出現(xiàn)故障,仍需對(duì)調(diào)度信息進(jìn)行手動(dòng)修改,尚未能實(shí)現(xiàn)故障自愈機(jī)制,未來研究需在滿足業(yè)務(wù)智能化發(fā)展的同時(shí),進(jìn)一步提升系統(tǒng)建設(shè)的魯棒性。