趙 柯, 卿粼波, 熊淑華, 劉 蘋, 王亞男
(1 四川大學 電子信息學院, 成都 610065; 2 四川大學 商學院, 成都 610064)
情緒是心理學研究的重要課題,在心理學研究中,愉悅度又叫做效價,指的是高興或悲傷的程度,范圍是從極端悲傷到極端高興;喚醒度又叫做激活度,指的是身體激活程度,范圍是從極端困倦(如睡眠)到極端激動(如高度緊張);情緒自報告是指個人情緒狀態的測評報告。 利用圖片愉悅度和喚醒度反射志愿者情緒的研究方法常常被應用于情緒測試環節[1]。 一套完整的情緒圖庫可以輔助心理學研究人員更好地從事基礎心理學和應用心理學問題的評估工作[2]。
不同場景所需要的情緒圖庫不盡相同。 上野大輔等學者[3]研究了國際情感圖片系統(IAPS)的均值差異和情緒評分在日本老年人和年輕人中的差異。 Xu 等學者[4]評估了部分國際情感圖片系統(IAPS)中圖片的情感,最終僅保留了10 個子因素的59 張圖片,達到了良好的模型擬合效果、且具備令人滿意的可靠性。 Eliana 等學者[5]避免使用IAPS 中過于刺激的圖片,創建了兒童情感圖片系統(NAPS),并取得了較好效果。
建立情緒圖庫時,需要相關心理學專家對圖庫中的圖片標定愉悅度和喚醒度的分值標簽,但所標定的愉悅度和喚醒度指標在一定程度上卻缺乏客觀性。 因此需要大量志愿者情緒自報告數據與圖片愉悅度和喚醒度分值加以對比,才能正確反映出圖庫所標定分值的可靠性與合理性。 構建出完整的情緒圖庫驗證系統是必要的。
構建情緒圖庫驗證系統時,傳統線下驗證方式會消耗大量時間及資源。 為獲取大樣本容量且真實有效的評價數據,有必要設計出高性能可實時監控的在線情緒圖庫驗證系統[6],該系統具備在線評圖、數據監測、數據分析功能,可以幫助相關工作人員完成圖庫構建并提高工作效率。
一套標準化情緒圖片系統的建立具有重要的使用價值,可以方便研究人員選擇更合適的情緒材料[7]。 但情緒圖庫搭建后,圖庫的有效性、準確性會隨著應用場景的轉換而發生改變。 圖庫中標定的圖片愉悅度、喚醒度等指標也并不能反映所有人的真實情況。 因此,需要志愿者對情緒圖庫進行測試后才能得到標準且客觀的情緒圖庫。
在傳統方式下,情緒圖庫搭建的測試環節需要邀請大量志愿者參與線下的研究實驗,該方式效率低下,會消耗大量人力、物力資源,且有可能影響被試者的情緒狀態。 因此,有必要采用線上分布式多數據庫布局方式,構建出一套完整、高效、可實時監測的應用管理系統。 該系統允許不同場景下的志愿者在線上參與圖片測評工作,便于志愿者操作的同時,減輕相關研究人員的操作難度。
情緒圖庫驗證系統需要采用數據驅動技術進行構建。 數據驅動源自計算機領域,其核心是在程序設計時以數據庫中的數據作為導向[7]。 數據驅動技術能夠很好滿足情緒圖庫驗證系統的構建需求。而當前心理學研究中,傳統心理學方法很少與數據驅動相結合,尤其在大量被試者參與測試場景下,傳統線下測試模式將很難兼顧用戶體驗、管理員管理難度、數據維護成本三個因素間的平衡關系。
因此,采用線上的分布式架構的數據驅動系統一直是國內外該領域的研究熱點,將系統模塊和數據源模塊分散可以有效地降低主服務器壓力,提高系統吞吐量[8-9]。 在諸多方面都取得了令人滿意的研究成果[10],采用分布式架構及多數據庫設計服務系統正逐漸成為系統設計主流方式[11]。
本文采用B/S 架構模式和SpringBoot 框架,在高并發場景下實現負載均衡和分布式部署,構建了高并發場景下的圖片評價及管理系統。 并加入身份控制和權限管理技術,兼顧用戶體驗的同時簡化管理員操作難度,降低單一系統開銷。
根據以上需求,由于C/S 架構模式需要下載客戶端軟件,會增加用戶操作復雜度,影響志愿者使用體驗。 因此本系統選擇采用B/S 架構模式進行設計,結合Web 頁面及微信小程序作為載體,核心技術采用SpringBoot 框架搭載Mybatis-Plus 提供的多數據源技術及Nginx 負載均衡技術[12],有利于快速高效的系統開發及維護,減少開發周期、降低開發成本,滿足多數據庫分布式服務的需求。
系統總體架構設計中,用戶可以通過瀏覽器或微信小程序訪問應用服務器,應用服務器通過負載均衡分別向本地服務器和云服務器發出用戶請求,隨后本地服務器調用相關數據庫或者圖片服務器完成用戶請求。 系統總體架構如圖1 所示。

圖1 系統總體架構Fig. 1 Architecture of the system
系統邏輯架構設計中,本系統采用傳統的B/S三層架構。 其中,表示層管理與用戶對接情況,用于用戶請求接收、用戶頁面展示等。 業務邏輯層處理相關業務邏輯,包括用戶注冊、圖片評分、數據監測等研發代碼邏輯的實現。 持久層操作數據庫與系統的對接,用于各項數據的接收入庫。 系統邏輯架構設計如圖2 所示。

圖2 系統邏輯架構Fig. 2 Logical architecture of the system
兼顧系統應當具有可用、安全、數據可控等特點,本驗證系統主要設計了三大功能模塊,包括:數據監測模塊、圖片評分及用戶情緒自報告模塊、用戶權限管理模塊。 系統模塊設計組成如圖3 所示。

圖3 系統模塊組成Fig. 3 The modules of the system
在互聯網環境中,擁有用戶登錄、注冊等功能幾乎成為應用系統的必要前提[13]。 在本系統構建時,考慮到系統會涉及到相關研究人員、管理員、志愿者等多種角色參與,不同角色對于系統的需求也不盡相同,因此需要設計用戶及權限管理模塊用于用戶注冊登錄、權限管理及資格審核,以滿足不同身份用戶對于系統的不同需求。
圖片評分及自報告模塊則是系統的核心功能部分,在志愿者進入圖片測試前,將自身情緒狀態等數據通過報告單的形式存儲到數據庫中[14],隨后允許該志愿者進行圖片選擇,即依次將不同種類的現有圖片展示給志愿者,要求志愿者選擇最符合當前心境圖片作為其情緒反射,進行5 組圖片選擇后,再次測試情緒狀態等數據并形成報告單。 最終系統將測前報告單所反映的分值與志愿者所選擇圖片對應情緒圖庫中的分值進行對比,若某圖片的愉悅度、喚醒度分值與大部分志愿者測評結果一致,則認為圖庫中該圖片分值有效。 若最終比對后大量圖片有效,則判定圖庫無效。
數據監測模塊用于輔助實驗的順利進行,例如在實驗過程中有志愿者面臨賬號丟失、實驗被迫中斷等問題,系統提供了完整的解決方案。 該模塊也協助管理員對志愿者每日任務完成度、志愿者評分數據合理性進行監督檢查,以協助志愿者高效完成本次實驗。
2.1.1 分布式方案
考慮系統并發量問題,本系統采用分布式部署方案,通過云服務器方案和內網穿透方案相結合的方法及將應用服務器、ftp 服務器、數據庫分離的手段實現高并發條件下的訪問的需求。
在系統訪問量較大時,由于阿里云服務器性能穩定且安全可靠,但是所提供帶寬有限,適合作為主服務器供用戶數據寫入使用;而多臺本地服務器搭配內網穿透技術在公網上訪問時具有較大的帶寬,可以將其作為從服務器使用。
另外,對于功能應用方面,可以在所有從服務器上開啟ftp 服務,以供用戶查找及獲取圖片,主服務器則主要用于數據的寫入。 如此,不同服務器單獨建立、協作運行的方式,不但有利于系統的更新維護,同時降低了系統整體壓力。
2.1.2 數據收集方案
系統使用Nginx 反向代理,將用戶讀取請求分配到多個已部署的從服務器上,寫入請求則直接寫入主服務器上。 核查時可以采用Mybatis-plus 框架的多數據源技術,將不同服務器數據庫中的數據分別讀取出來。 當管理員進行查詢時,可以直接訪問主數據庫情況,系統會自動匯總所有數據情況并按需求返回。
2.1.3 部署方案
Docker 容器可以有效地解決在不同系統、多臺服務器上部署跨平臺項目帶來的不兼容與環境配置問題,利用其容器特性可以降低系統開銷的同時兼容多臺服務器同時運行。
本系統將Java 環境文件、Redis 數據庫文件、MySQL 數據庫文件、項目前后端壓縮包文件等相關文件通過Docker 配置打包后形成鏡像文件,隨后利用系統命令安裝Docker 容器,該系統即可以一鍵運行在多個服務器平臺上。 Docker 部署流程如圖4 所示。

圖4 Docker 部署流程圖Fig. 4 Flowchart of Docker deployment
在Docker 容器中部署時,由于從服務器內容相同,可以統一打包、集體部署,一定程度上減少了服務器分別部署及環境配置帶來的不便。
系統Docker 容器部署方案如圖5 所示。

圖5 Docker 部署方案Fig. 5 Docker deployment scheme
2.1.4 數據庫設計
系統利用MySQL 數據庫設計5 個主要信息表,即:用戶、圖片、用戶情緒、圖片選擇結果、用戶角色及權限。
其中,根據數據庫設計規則,將用戶id、用戶角色id、用戶評分圖片id信息分別作為各表的主鍵與其他表相關聯, 可以避免數據庫間的傳遞依賴,并有效地減少數據庫中數據的冗余情況。 提高系統可維護性,也利于后期統計和數據處理。
數據庫設計的實體關系(ER)圖如圖6 所示。

圖6 數據庫ER 圖Fig. 6 ER diagram of the database
系統擁有一系列安全手段對各業務接口進行安全管理,以便于用戶使用及系統安全維護。 采用SpringSecurity 安全框架結合JWT 安全令牌完成整體的安全設計。 在用戶注冊后,登錄環節即可生成用戶獨有的安全令牌,用戶訪問任何系統界面都須攜帶該令牌,若令牌過期、令牌造假或身份不符,系統將拒絕該用戶的訪問。 運用該項技術在一定程度上提高系統可靠性的同時可以降低系統整體開銷。
系統安全管理設計流程如圖7 所示。

圖7 安全驗證流程設計Fig. 7 Security verification process
2.2.1 用戶注冊
用戶在身份注冊時默認為普通用戶身份,當有需要時,可開放選擇管理員注冊權限來注冊管理員身份,當不同身份用戶登錄系統后,系統展示界面不同,以便于用戶對應使用不同功能。
2.2.2 權限管理
由于在高并發多用戶訪問情況下,使用session保存用戶信息會增大系統開銷,有可能導致系統崩潰,而cookie 存在系統安全風險,因此本系統選用JWT 技術管理用戶登錄信息。
JWT 是在用戶登錄時,將用戶的ID、用戶名、電話、權限信息及登錄時間等關鍵信息以Json 形式通過base64 加密形成密鑰,再將密鑰通過自定義鹽的MD5 算法散列形成簽名,拼接密鑰、簽名以形成完整的JWT。
用戶登錄系統時,系統采用SpringSecurity 安全框架驗證JWT 技術為用戶生成安全令牌,僅持有安全令牌的用戶才能正常訪問系統的重要頁面,起到維護系統安全的目的。
用戶登錄系統時,會首先進行正負性情緒測試(PANAS)、愉悅度、喚醒度測試,以獲取當前用戶的情緒狀態保存到數據庫中。 隨后用戶在情緒圖庫中選出最符合自己當前情緒的圖片進行保存,5 組圖片結束后,用戶再次進行PANAS、愉悅度、喚醒度測試,在大樣本情況下系統通過比對用戶前后PANAS、愉悅度、喚醒度測試數據即可驗證用戶所選擇圖片是否對用戶心情狀態產生影響。
每個用戶在結束PANAS、愉悅度、喚醒度測試后,系統自動計算并保存其測試所得分數,用戶測前分數與測后分數的差值即為圖片對用戶情緒的影響程度。
而圖庫中的圖片也對應一個分數和一個情緒標簽,若對于70%用戶情緒狀態的影響與圖片標簽相符,則認為圖片有效,否則認為圖片無效。 最終系統會去除無效圖片,形成完整圖庫。
(1)注冊登錄。 普通用戶注冊并登錄系統后,能成功生成JWT 令牌。 保存JWT 的部分請求頭信息見表1。 表1 中,Authorization 對應的是JWT。

表1 部分請求頭信息Tab. 1 Partial request header information
(2)用戶情緒自報告。 在用戶登錄后,需要進行情緒自報告,即PANAS、愉悅度、喚醒度測試。 愉悅度、喚醒度測試用于直接反映志愿者當前情緒狀態,而PANAS 測試需要志愿者根據近期心情狀態進行20 項正負性情緒測試。 測試后,系統會根據測試出的正性題目和負性題目估算出符合志愿者近期情緒的分值。 正性題目越多,用戶情緒越積極,反之越消極。 PANAS 測試可以避免用戶當前情緒受到外部環境干擾產生的誤差。 愉悅度測試界面如圖8 所示。 PANAS 測試模塊如圖9 所示。

圖8 愉悅度測試界面Fig. 8 The interface of pleasure test

圖9 PANAS 情緒測試界面Fig. 9 The interface of PANAS emotion testing
(3)圖片測試。 用戶情緒測試后,進入圖片選擇模塊,可以從3 張512?512 像素大小、同種類、且分別被標定了積極、中性、消極情緒標簽的圖片中,選出最符合自己當前情緒狀態的圖片。 圖片選擇后,系統會自動記錄該用戶選擇的選項并跳轉下一種類圖片繼續進行實驗。 所有種類圖片選擇完成后,系統會自動匹配用戶的愉悅度、喚醒度分值和其所選擇圖片的愉悅度、喚醒度分值,若分值接近,則系統將該圖片標定為合格,否則標定為不合格。 最終,系統會統計合格圖片的數量以得出圖庫的合格率。 圖片選擇界面如圖10 所示。

圖10 圖片選擇界面Fig. 10 The interface of picture selection
(4)數據監測。 管理員登錄系統后,可以對用戶數據進行監測,并正常進行用戶密碼找回、當日未完成用戶查詢、當日已完成用戶查詢、當前注冊情況百分比查詢等功能操作。 數據監測模塊如圖11 所示。

圖11 數據監測模塊Fig. 11 Data monitoring module
(5)用戶管理。 管理員登錄系統后,可以查詢用戶基本信息。 對于普通身份用戶,管理員可以對其基本信息進行修改、刪除等操作。
考慮到系統需要達到在高并發場景中,短時間內將接受大量用戶訪問的目標,系統在正式上線前需進行壓力測試,這既是維護系統穩定的重要環節,同時也是衡量系統性能的重要指標[15]。
由于系統達到最高并發量時,需要容納2000人同時訪問,系統測試采用apache-jmeter 模擬線程測試方案,模擬出2000 名用戶在2 min 內進入實驗環境,與真實情況相匹配。 測試結果顯示,系統吞吐量穩定在正常水平,且異常率為0%,沒有出現丟包情況,證明正常環境下系統可以容納至少2000 個用戶進入實驗。 測試指標及結果見表2。

表2 Jmeter 測試情況Tab. 2 Jmeter test status
為適應不同用戶的需求,系統需要在各種系統環境完成部署,以及在各種實驗平臺順利運行,測試采用WinXP、Win10、Linux 系統進行部署測試,采用Edge、Chrome、Firefox、360 等瀏覽器和微信小程序平臺進行訪問測試。 實驗證明在各平臺上系統均運行良好。
該驗證系統開發完成后應用于多模態職工情緒動態感知及管理體系研究中,原始構建圖庫的圖片量為4250 張,分為人物、植物、動物、物體、場景五個大類。
該圖庫經系統進行了2000 人次大規模測試后,篩選出志愿者情緒和專家標簽匹配人數與志愿者總人數比值大于70%的圖片,認為該圖片為有效圖片,否則就認為該圖片并不客觀,從庫中刪除。
最終得到的圖庫數量為3401 張,其中涵蓋各類別如圖12 所示。

圖12 圖片類別情況Fig. 12 Picture categories
本系統完成了情緒圖庫驗證實驗,為后續情緒圖庫搭建提供了有效支持。
在目前存在的情緒圖庫中,高并發、可拓展的圖庫驗證系統較為少見。 本文結合目前需求構建出了一套完整可行的情緒圖庫驗證系統。 系統采用簡單易用的B/S 架構,在傳統設計基礎上加入分布式部署方案,設計出完整的用戶權限管理系統和實時監測系統、且通過壓力測試驗證,符合現有需求。
本系統的設計簡化了傳統情緒圖庫測試的實驗步驟,降低了實驗開銷。 為心理學研究人員及相關領域工作者提高了情緒圖庫驗證的實用性和可行性,并且為志愿者提供了一個更大、更便利的測試平臺,保證了志愿者高效完成測試。