李 雪,艾麗蓉,周曉京,張 凱
(1. 西北工業(yè)大學 計算機學院,陜西 西安 710072;2. 西安電子科技大學 計算機學院,陜西 西安 710071)
嬰幼兒視力檢查對嬰幼兒眼部疾病的早期發(fā)現(xiàn)和預防有著重要的作用,是提升兒童盲防治水平的關(guān)鍵.嬰幼兒具有較低的認知能力、語言和肢體表達能力,他們的注意力不能長時間地集中,醫(yī)生在進行常規(guī)視力檢查時配合度很低.因此嬰幼兒視力檢查在臨床檢查中是一個難點問題.這種情況不僅僅存在于嬰幼兒視力檢查中,甚至對一些智障兒童也是如此,他們往往對上下左右的提示很不敏感.
Teller視力卡在1985年由文獻[1]設(shè)計完成,是使用強制優(yōu)先注視法,通過醫(yī)生觀察嬰幼兒對不同等級條柵的反應來評估嬰幼兒視力水平.這種方法易于臨床操作,并且視力測評結(jié)果有很高的準確性和可靠性,在國內(nèi)外的臨床中被廣泛使用.醫(yī)生評估小兒視力時對小兒的注視有很多不確定結(jié)果,并受到主觀的影響,所以Teller視力卡檢查過程需要被記錄下來,以便于多個醫(yī)生參與評估討論.
Teller視力卡檢查同步視頻系統(tǒng)[2]是一個記錄嬰幼兒視力檢查過程的系統(tǒng).該系統(tǒng)在被檢查者的前后放置了兩個攝像頭,實現(xiàn)了嬰幼兒畫面和醫(yī)生放置視力卡的畫面同步拍攝.在一個相對密閉的檢查環(huán)境里,醫(yī)生每次放置一個Teller視力卡,觀察被檢查者的注視情況,包括眼球運動、注視方向等.視力檢查同步視頻記錄了放置不同視力卡時嬰幼兒的注視反應,用來準確地評估小兒的視力.醫(yī)生可以使用檢查視頻進行視力評估和教學練習.根據(jù)不同被檢查者的配合程度,熟練操作的醫(yī)生測每個小兒的視力需要 30~ 40 min,醫(yī)生評估每個患兒的視力水平要耗費更多的時間,同時無法避免走神或經(jīng)驗不足造成檢查結(jié)果的主觀誤差.
當數(shù)字格式的醫(yī)療記錄基本完善后,醫(yī)療成像的成本將降低,計算機成為臨床診斷和治療中不可缺少的輔助手段[3].文獻[4]研究了基于卷積神經(jīng)網(wǎng)絡的糖尿病視網(wǎng)膜病變篩查,提出了具有4個卷積層的卷積神經(jīng)網(wǎng)絡,根據(jù)是否存在糖尿病視網(wǎng)膜病變的異常對圖像進行分類.文獻[5]對眼科圖像自動診斷圖像分類方法進行了對比分析,比較了眼部圖像的復雜性,對比了診斷眼科疾病的多種圖像分類算法的效果.文獻[6]選擇了 52 690 個正常黃斑圖像和 48 312 個黃斑變性圖像,訓練深層神經(jīng)網(wǎng)絡將圖像分類為正?;螯S斑變性,分類結(jié)果峰值靈敏度和特異度分別為92.64%和93.69%.文獻[7]提出了一種ConvNet架構(gòu),共同執(zhí)行檢測和跟蹤,以簡單有效的方式解決問題.由于視頻檢測需要大量醫(yī)生的先驗經(jīng)驗,每種視頻的判斷規(guī)則不同,所以不能找到一個合適的現(xiàn)有視頻分類算法解決這個問題.筆者在識別視頻中重點目標的基礎(chǔ)上,完全模擬醫(yī)生經(jīng)驗,分別設(shè)計了不同類別的判斷方法對小兒視力實現(xiàn)自動評估,取得了較好的結(jié)果.
將幼兒視力評測過程分為對象定位階段和等級評估階段.通過檢測視頻的每一幀,定位每一幀中Teller視力卡、卡上的條柵、小孩的頭部、小孩的眼睛和每個眼睛的眼珠,完全模擬醫(yī)生經(jīng)驗,分析小兒注視行為,評估小孩的視力等級.圖1是幼兒視力自動評價流程圖.
圖1 幼兒視力自動評價流程圖
在對象定位階段,建立目標識別模型,識別并定位Teller視力卡和條柵、小孩的頭部、眼睛及眼珠.在等級評估階段,對每種視力等級的視頻都模擬醫(yī)生經(jīng)驗,針對不同視力等級的視頻特征使用了不同的評估方法,按照尋找單雙眼檢測分界幀、是否配合、視力優(yōu)于0.21、視力介于0.08到0.21之間、視力介于0.05到0.01之間的順序依次判斷.
為了分析不同視力卡下幼兒的注視反應,首先識別定位視頻每幀的感興趣區(qū)域,包括每幀中視力卡、頻率最大條柵和一般條柵、被檢查者的頭部、眼睛和眼珠.由于小孩的眼睛和眼珠很小,很難直接定位,于是先定位并分割出小孩的頭部圖像,再在將頭部圖像放大3倍的基礎(chǔ)上識別眼睛.同樣地,對眼睛做相同的處理,識別定位出眼珠的位置.
使用Faster R-CNN[8]建立模型定位識別所有目標.Faster R-CNN把區(qū)域建議網(wǎng)絡和Fast R-CNN[9]結(jié)合在一起,將區(qū)域建議網(wǎng)絡產(chǎn)生的候選集直接連接到感興趣區(qū)域的池化層.Faster R-CNN實現(xiàn)了將特征提取、候選區(qū)域選擇、分類和邊框回歸整合在一個網(wǎng)絡中,形成了端到端的目標檢測網(wǎng)絡.圖2是Faster R-CNN的網(wǎng)絡結(jié)構(gòu)圖.
圖2 Faster R-CNN網(wǎng)絡結(jié)構(gòu)圖
Faster R-CNN主要分為4個部分:
(1) 卷積層.將圖像輸入到卷積層,提取圖像的特征圖,共享于后續(xù)的區(qū)域建議網(wǎng)絡和全連接層.
(2) 區(qū)域建議網(wǎng)絡.區(qū)域建議網(wǎng)絡用全卷積神經(jīng)網(wǎng)絡產(chǎn)生候選區(qū)域,采用滑動窗口機制.該網(wǎng)絡使用 3×3 的卷積核對特征圖進行卷積運算,獲得特征向量.使用錨盒機制,對每個滑動窗口的中心點位置預測出不同長寬比的k個(一般k=9) 錨盒.為每個錨盒分配一個二進制標簽,將與真實框的交集和并集之比最高或大于0.7的錨盒標為正標簽,低于0.3的錨盒標為負標簽,訓練區(qū)域建議網(wǎng)絡,在所有錨盒中選擇建議區(qū)域.
(3) 感興趣區(qū)域池化層.每個感興趣區(qū)域?qū)⒃谶@一層被統(tǒng)一成固定大小的特征圖.
(4) 分類與邊框回歸.特征圖分別連接兩個全連接層,這兩個全連接層分別用于優(yōu)化分類和邊界回歸.
為了能準確地評估視頻中小孩的雙眼視力,首先確定出雙眼檢測和單眼檢測的分界點,隨后將視力評估結(jié)果分為不配合、視力盲、視力優(yōu)于0.21、視力介于0.21與0.08之間和視力介于0.01與0.08之間.具體的評估方法如下.
(1) 定位雙眼檢測和單眼檢測邊界.在視頻中雙眼檢測和單眼檢測是無縫連接的.在雙眼檢測結(jié)束后,大人使用遮擋物覆蓋小孩的一只眼睛,檢查單眼視力,所以通過檢查視頻中每一幀的眼睛的個數(shù)來判斷雙眼檢查的結(jié)束位置.筆者采用滑動窗口的方法尋找單雙眼檢測邊界,滑動窗口的大小為35幀,每次向前滑動一幀,直到滑動窗口中識別到雙眼的幀數(shù)在80%以上,則滑動窗口的最后一幀為單雙眼檢測的邊界幀.
(2) 判斷不配合視頻.通過觀察不配合視頻,發(fā)現(xiàn)不配合的主要原因有哭鬧、頭部出鏡、閉眼、注視不集中等.因此,不配合視頻分3種情況進行判斷: 第1種,統(tǒng)計視頻中識別到小兒頭部、雙眼、眼珠的幀數(shù),計算其占整個視頻的比例.若這個比例小于閾值,則該視頻為不配合.第2種,統(tǒng)計視頻中小孩不看條柵的幀數(shù)占識別到條柵的幀數(shù)的比例.如果大于閾值,則為不配合.第3種情況是在視頻中小孩因固定性內(nèi)斜視造成全程對眼,統(tǒng)計視頻中小兒雙眼眼珠方向不一致的幀,計算其占的比例.若大于閾值,則結(jié)果為不配合.
(3) 視力為盲.對兩類視頻評估結(jié)果判斷為視力盲: 看不到最寬條柵的視力卡和只能看到最寬條柵視力卡.對于識別到最寬條柵的視力板的幀,判斷小孩的眼珠方向.如果沒有注視到條柵,則該視頻的結(jié)果為視力盲;如果有看到條柵方向,則判斷被檢查者是否看到較細的條柵;如果沒有看到,則視力結(jié)果為盲.
(4) 視力優(yōu)于0.21.由于大于0.21的視力卡的條柵在視頻中只有視力卡而沒有條柵,在評估視頻結(jié)果優(yōu)于0.21時,從視頻結(jié)尾向前選擇 1/a的幀,計算識別到視力卡而沒有識別到條柵的幀所占的比例.若大于閾值,則評估結(jié)果為視力優(yōu)于0.21;若沒有找到視力卡,則增加選擇幀的比例.
(5) 視力介于0.21與0.08之間和視力介于0.08與0.01之間的判斷.使用AlexNet網(wǎng)絡[10]對被檢查者能看到的最后一幀中放置的視力卡的條柵進行分類.將條柵分為大于等于0.08和小于0.08兩類,從而得出該視頻的評估結(jié)果.
圖3是AlexNet網(wǎng)絡結(jié)構(gòu)圖.AlexNet網(wǎng)絡的總體架構(gòu)為5個卷積層、3個全連接層,最后輸入到一個softmax層.前7層用于從原始圖像中提取多維和高級特征,最后的softmax層用于分類.
圖3 AlexNet網(wǎng)絡結(jié)構(gòu)圖
卷積層具有兩個重要優(yōu)點:局部感知和權(quán)重共享.每個卷積核是一個局部特征提取器,用來識別原始圖像像素間的關(guān)系,從而提取有效且合適的高級特征以增強模型的泛化能力.此外,權(quán)重共享可以大量減少訓練參數(shù)的數(shù)量.AlexNet網(wǎng)絡采用重疊最大池化層,旨在通過減少特征圖的數(shù)據(jù)維度來實現(xiàn)空間不變性并增強抗噪聲能力.采用的函數(shù)為非飽和的線性整流(Rectified Linear Units,ReLU)函數(shù).ReLU函數(shù)的收斂明顯快于飽和函數(shù),如S形和雙曲正切.另外,激活函數(shù)可以防止過擬合,提高精度.增加樣本數(shù)量也是一個防止過擬合的有效方法.AlexNet采用兩種數(shù)據(jù)增加方法,即變換圖像和水平反射.隨機提取訓練數(shù)據(jù)集 224× 224個原始圖像的補丁并進行水平翻轉(zhuǎn),使數(shù)據(jù)量擴大了 2 048 倍.為了進一步解決過擬合問題,失落被采納.具體來說,在訓練期間,隱性層的一半神經(jīng)元被隨機地選擇參與;而在測試期間,所有神經(jīng)元的輸出被計算并乘以0.5的因子.通過這種技術(shù),可以顯著地減少不同神經(jīng)元的共同適應,并且可以提高整個網(wǎng)絡的性能.文中的訓練集為{(x(1),y(1)),…,(x(n),y(n))},輸入的特征x(i)∈Rn,標簽y(i)∈ {1,…,P}.在網(wǎng)絡中使用softmax分類器,所以一個小批次訓練的總損失函數(shù)L(w)定義為
(1)
文中的實驗視頻數(shù)據(jù)是使用中山大學眼科中心的Teller視力卡檢查同步視頻系統(tǒng)獲得的檢查視頻,視頻畫面如圖4所示.為了確保獲得具有代表性和準確的視頻數(shù)據(jù),由一位有豐富操作經(jīng)驗的醫(yī)生錄制視力檢查視頻,由3個醫(yī)生討論并確認該視頻的視力評估結(jié)果.經(jīng)過討論,排除了醫(yī)生無法給出確定結(jié)論的視頻.最終的數(shù)據(jù)集包括588個視頻,其中視力盲的視頻有56個,視力介于0.01、0.05之間的視頻有80個,視力在0.08~0.21的視頻有200個,視力大于0.21的視頻有70個,不配合的視頻有182個.筆者選擇了88個數(shù)據(jù)用于調(diào)整參數(shù),500個視頻用于測試.
圖4 視力檢查同步視頻畫面
文中的相關(guān)實驗使用圖形處理器在4塊NVIDIA TitanX 12GB的顯卡進行訓練和測試,實驗在Linux 14.04系統(tǒng)上進行.Faster R-CNN模型和AxleNet模型使用深度學習框架(caffe[11]框架)進行訓練和測試.Faster R-CNN網(wǎng)絡分4個模型進行訓練: 第1個模型的類別為視力卡、條柵、最大條柵;第2個模型類別為小孩頭部;第3個模型類別為小兒眼睛;第4個模型類別為小兒眼珠.4個模型訓練的學習率為0.001,迭代次數(shù)為 8 000.AlexNet模型訓練的學習率為0.01,迭代次數(shù)為 4 000.整個系統(tǒng)使用python語言實現(xiàn).
本方法中共有13個參數(shù).在調(diào)整參數(shù)的過程中,首先給每個參數(shù)一個經(jīng)驗值,固定所有經(jīng)驗值,依次調(diào)整每個參數(shù),最終選擇準確率最高的參數(shù)值.對于每個參數(shù)的調(diào)整,從88個視頻中選擇50個視頻來進行實驗.
為了增加目標檢測模型的可靠性和泛化能力,將數(shù)據(jù)隨機分為k份,使用k折交叉驗證方法來測試.Faster R-CNN提供了平均精確度(Average Precision,AP)來評價實驗結(jié)果,得到了很好的效果.
對象定位的平均精確度如表1所示.
表1 對象檢測平均精確度
目標檢測網(wǎng)絡識別到的條柵輸入到AlexNet網(wǎng)絡中分類.實驗結(jié)果表明,該網(wǎng)絡能很好地分類視力卡.實驗同樣采用k折交叉驗證方法進行驗證和測試,驗證的平均精確度為 0.98± 0.066,測試的平均精確度為 0.99± 0.041.在進行了大量實驗后將參數(shù)調(diào)整到最優(yōu),視頻分類方法的準確率達到了70%.
筆者在分析此類視頻的基礎(chǔ)上,運用目標定位首先識別重點目標,使用神經(jīng)網(wǎng)絡分類不同等級的視力卡,再分析不同視頻的特點,運用不同的方法對視頻進行判斷,最后能較好地完成視頻分類任務.
目前,小兒視力自動評估系統(tǒng)已經(jīng)在中山眼科中心投入使用,負責兒童視力檢查的醫(yī)生檢查后會使用該系統(tǒng)進行復查以確認結(jié)果.該系統(tǒng)運行近1年以來效果良好.
筆者提出了一個基于機器學習的小兒視力自動評估框架,用于對小兒視力檢查視頻進行自動評估.首先,使用Faster R-CNN網(wǎng)絡來檢測視頻每幀中的重點對象,采用AlexNet網(wǎng)絡分類視力卡.在獲得每幀對象數(shù)據(jù)的基礎(chǔ)上,重點分析了每一類視頻的特點,并結(jié)合醫(yī)生的經(jīng)驗知識,針對不同類別設(shè)計了評估方法.筆者進行了大量實驗來調(diào)整數(shù)據(jù)以改善實驗結(jié)果.最終,本方法滿足了嬰幼兒視力檢查結(jié)果評估困難的迫切需求,達到了客觀評價小兒視力的目的.筆者提出的方法可以糾正醫(yī)生容易犯的主觀錯誤,為檢查小兒視力節(jié)省了大量時間,最終為實現(xiàn)全自動小兒視力檢查做了準備工作.