本發明涉及模式識別技術、智能監控技術等領域,具體的說,是基于Inception V3的多數據集聯合訓練的行人外觀屬性識別方法。
背景技術:
近年來,視頻監控系統已經被廣泛應用于安防領域。安防人員通過合理的攝像頭布局,實現對目標監控場景的全覆蓋,通過全天候對目標區域的監控,能夠有效控制犯罪活動,來保證公眾的人身安全。計算機技術的飛速發展,大大促進了視頻監控系統智能化,提高了獲取視頻信息的效率。人體相關信息是監控場景下應該重點關注的信息。通過對監控場景下人流流量的統計分析,可以對公共安全技術情況進行合理的預測,從而有效防止意外事故的發生。隨著計算機視覺技術的進一步發展,人們迫切希望對檢測到的人體提取更多有用的信息,例如性別特征、年齡特征、外觀特征等,這些人體相關的特征具有廣泛的應用。在安防領域,利用性別特征、年齡特征、外觀特征等可以快速鎖定特定人群,定位目標位置,從而可以進一步進行實現目標檢索或者行人重識別等功能。
當前對人體外觀屬性的識別主要分為兩大領域,分別是基于人臉圖像的屬性識別和基于全身圖像的屬性識別。
人臉識別最典型的特征臉算法,是通過使用K-L變換進行人臉識別。在將年齡估計作為分類模式的研究中,Dehshibi等人提取人臉圖像的紋理特征和面部形狀特征,基于人工神經網絡進行訓練,從而實現對人臉圖像進行年齡段的分類。Gao等人把年齡段分為嬰兒、小孩、成年、老年,然后通過Gabor濾波器提取人臉圖像特征,結合SVM分類器進行年齡屬性識別。Takimoto等人使用BP神經網絡,他們使用三層的BP神經網絡進行訓練和分類,除了提取形狀和紋理特征外,Takimoto等人還加入了顏色特征,進一步提高了性別分類的準確性。
使用面部圖像進行人體外觀屬性的識別已經具有極高的識別精度,然而在監控場景下,清晰人臉的圖像很難獲取。因此,基于面部圖像的屬性識別算法并不適用于真實的監控場景下。近年來,已經有許多科研人員開始關注使用視頻監控中的全身圖像進行人體外觀屬性的識別,并且取得了重大的進展。
傳統的基于人體的屬性識別的研究主要基于預先設計(手工設計)的特征提取器,提取特征向量例如HOG、BIF等,這種方法的局限在于,手工設計特征的過程比較復雜,并且特征的表達能力不足,造成準確率低下。
隨著深度學習的不斷發展,研究人員開始嘗試使用卷積神經網絡的方法提取深度特征作為表征人體外觀屬性的特征,并且取得了突破性的進展。公開號為CN107862300A的專利公開了“一種基于卷積神經網絡的監控場景下行人屬性識別方法”,但所使用的卷積神經網絡比較簡單,難以應對行人外觀屬性識別這類復雜的識別任務,另外由于公開的行人外觀數據集都比較小,難以在單個數據集上充分訓練行人外觀屬性識別卷積神經網絡。
技術實現要素:
本發明的目的在于提供基于Inception V3的多數據集聯合訓練的行人外觀屬性識別方法,解決現有基于深度學習的行人外觀屬性識別方法在監控場景下易受光照、遮擋、目標姿態變化和圖像清晰度等因素影響,泛化能力較差的問題,能夠實現目標監控場景下的行人屬性準確識別,并且只需要極少的目標場景數據即可實現。
本發明通過下述技術方案實現:基于Inception V3的多數據集聯合訓練的行人外觀屬性識別方法,包括以下步驟:
1)獲取含有行人的監控視頻片段,對行人圖像進行預處理;
2)構建新的Inception V3卷積神經網絡模型;
3)改進logistic loss損失函數;
4)輸入多個公開數據集數據,進行訓練,得到行人外觀屬性識別模型;
5)利用所得行人外觀屬性識別模型進行實際場景下的識別。
進一步的為更好地實現本發明,特別采用下述設置方式:所述步驟1)包括以下具體步驟:
1.1)將截取的視頻幀按照規定的圖片命名方式(例如:111.jpg,數字代表是第幾張圖像)進行命名,保存到指定位置;
1.2)對所有的圖片文件進行外觀屬性標注,形成數據集;每一張行人圖片上的行人屬性都是二進制屬性,如果擁有這項屬性,則對應的這項標簽值為1;如果沒有,則標簽值為0,例如圖片上行人戴眼鏡,則對應戴眼鏡這項標簽值為1;
1.3)將數據集分成兩部分,分別為訓練集、驗證集,訓練集用于訓練模型,驗證集用于測試模型效果,不參與訓練,其中,訓練集占總圖片數量的70~90%,測試集占總圖片數量的10~30%;優選的訓練集占總圖片數量的80%,測試集占總圖片數量的20%。
進一步的為更好地實現本發明,特別采用下述設置方式:所述新的Inception V3卷積神經網絡模型包括5個卷積層、11個block結構及4個并列的全連接層;所述卷積層和block結構用于自動提取行人屬性特征;全連接層用于組合屬性特征,獲取對應屬性分數。
進一步的為更好地實現本發明,特別采用下述設置方式:所述步驟3)具體為:將每個全連接層后皆加一個loss函數,最后計算所有loss之和,來進行多數據集聯合訓練。
進一步的為更好地實現本發明,特別采用下述設置方式:所述loss函數為:
其中N表示訓練時每次送入的圖片數量,C為行人對應的外觀屬性數量,每個行人圖片表示為xn,對應經過網絡計算的輸出為Vn,對應的標簽向量為yn,每個標簽向量對應的屬性值為yn,i,i∈[1,2,...,C],如果yn,i=1表明這個訓練樣本xn有這個屬性,如果yn,i=0表明這個訓練樣本xn沒有這個屬性;Sn,i表示這個樣本xn的第i個屬性的得分高低,Sn,i∈[0,1],yn,i是真實屬性標簽,表示行人樣本xn有沒有第i個屬性。
進一步的為更好地實現本發明,特別采用下述設置方式:所述步驟4)包括以下具體步驟:
4.1)訓練之前,準備大于6G顯存的GPU和linux系統環境,搭建pytorch環境;
4.2)設置模型訓練的優化方式,優選的采用動量梯度下降法進行模型訓練的優化,此方法相較于傳統的梯度學習法,有著更快的下降速度和自適應學習速率,不用手動矯正學習率;
4.3)設置模型訓練的圖片預處理方式,合適的圖片預處理方式能夠擴大數據集的大小,使得模型的泛化能力更強;
4.4)設置模型的基礎學習率、動量權重以及最大迭代次數,在最大迭代次數下,不斷迭代學習,直到損失函數值不再下降,模型收斂,保存模型參數;
4.5)完成訓練,得到行人外觀屬性識別模型。
進一步的為更好地實現本發明,特別采用下述設置方式:所述步驟4.3)包括以下具體步驟:
4.3.1)改變圖片的亮度、對比度和飽和度;
4.3.2)經過步驟4.3.1)后,將圖片進行隨機的水平翻轉;
4.3.3)經步驟4.3.2)后,將圖片最短邊縮放到150像素,長邊按照1:3的比例縮放到450像素,這樣圖片中的行人不會失真;
4.3.4)經步驟4.3.3)后,縮放的圖片不進行裁剪,直接送入網絡進行訓練,這樣會保證行人的任何部位不會被裁剪掉,從而導致模型預測更加準確。
進一步的為更好地實現本發明,特別采用下述設置方式:所述步驟4)在進行訓練時,將模型在多個公開數據集上進行訓練。
進一步的為更好地實現本發明,特別采用下述設置方式:在所述步驟1)之前還包括選擇公開數據集,所述公開數據集采用PEdesTrian Attribute(PETA)數據集或/和a Richly Annotated Pedestrian(RAP)數據集或/和a new large-scale pedestrian attribute(PA100K)數據集。
本發明所公開的行人外觀屬性識別方法包括:挑選大型公開數據集;獲取含有行人的監控視頻片段,對行人圖像進行預處理;構建Inception V3卷積神經網絡模型并改進Inception V3模型和loss函數,構建適合多數據集聯合訓練新的Inception V3模型;輸入多個公開數據集數據,進行訓練,最后利用所得模型進行識別。
具體步驟分為:
(1)選擇公開數據集,選用PEdesTrian Attribute(PETA)數據集和/或a Richly Annotated Pedestrian(RAP)數據集和/或a new large-scale pedestrian attribute(PA100K)數據集,其中PETA數據集包含19000張圖片,61個二分類行人屬性;RAP數據集包含41585張圖片,包含72個行人屬性;PA100K包含100000張圖片,包含26個行人屬性;
在步驟(1)中,選取的公開數據集需要數據量比較大、行人外觀屬性貼近我們目標數據集的公開數據集,否則無法提升我們模型在目標數據集的效果。
(2)獲取含有行人的監控視頻,并截取視頻幀,構建目標場景下的行人外觀屬性數據集;
在步驟(2)中,獲取的行人的監控視頻需要提取出視頻幀,并統一命名,隨后對圖片進行行人外觀屬性標注。
(3)選擇深度卷積神經網絡模型,使用經過改進的Inception V3卷積神經網絡模型作為實驗模型;
(4)改進logistic loss損失函數,使之能夠進行多屬性分類和多數據集聯合訓練;
改進的logistic loss損失函數,使之從只能進行單屬性分類到能夠進行多屬性分類,并進一步改進,來滿足多數據集聯合訓練。
(5)將行人外觀屬性的公開數據集和目標數據集分割成訓練數據集和測試數據集,將訓練數據集輸入到改進的Inception V3卷積神經模型中進行訓練,得到行人外觀屬性識別模型。
在步驟(5)中,訓練過程具體如下:
訓練過程分為模型訓練和模型驗證兩個部分。
模型訓練分為讀取數據和訓練兩部分。讀取數據是改進的Inception v3模型通過改進的logistic loss損失函數從本地磁盤讀入預處理后的訓練數據集(輸入模型進行訓練的圖片需要進行數據預處理,需要把圖片進行長寬比和大小調整、鏡像翻轉、添加噪聲等預處理,再進行訓練)。訓練則是改進的Inception V3模型利用訓練數據來調整參數,降低改進的logistic loss函數值,并將改進的Inception V3模型同時在多個數據集上進行訓練,在每個數據集上訓練一個周期,讓模型參數適應多個數據集,這樣1)能夠擴充數據集的大小,使得模型不僅僅利用目標數據集的數據,而且還利用了幾個公開數據集的數據;2)能夠使得模型的泛化能力更好,不會在單一數據集上過擬合,從而導致模型的實際效果下降。
每訓練一定周期后,需要進行一次模型驗證,即將預處理后的驗證數據集從磁盤讀入內存,改進的Inception V3模型利用已經學習到的參數進行驗證數據集的預測,最終統計正確率來進行模型參數的評估。
直到模型參數在模型驗證時獲得最高正確率,即認為完成訓練,此時保存模型的結構和模型參數到磁盤。
(6)利用得到的行人外觀屬性識別模型進行實際場景下的識別。
本發明與現有技術相比,具有以下優點及有益效果:
(1)本發明從兩個方面來設計行人外觀屬性識別算法:一方面,利用行人外觀屬性的相關性,例如白色頭發的行人更有可能是老年人,來優化行人外觀屬性識別的正確率。另一方面,結合多個公開數據集,進行聯合訓練,既解決目標場景下數據不足的問題;又可以獲得更適應實際場景下的行人外觀屬性神經網絡。
(2)本發明考慮到實際情況,常見的數據預處理操作會將圖片比例改變到1:1和裁剪訓練數據,這樣會造成行人外觀屬性的丟失,導致模型預測錯誤,本發明將訓練圖片長寬比改變比例到3:1,使得圖片更加符合普通行人的外觀,不至于圖片失真,并且不進行圖片裁剪。
(3)本發明改進logistics loss函數,使之能夠適應多屬性分類和多數據集聯合訓練,使得模型能夠預測多種行人外觀屬性,滿足實際需求,并且由于使用了多個公開數據集的訓練數據,使得模型只需要極少的目標場景下的訓練數據,就可以實現在目標場景下的準確識別,極大的提升了模型的效果和泛化能力。
(4)本發明采用多數據集聯合訓練方法,來獲得適用于實際場景下的行人外觀屬性識別網絡。
附圖說明
圖1為本發明的總體流程圖。
圖2為多個監控攝像頭下模式識別效果圖。
圖3為block結構示意圖。
其中,在圖2中,圖片右邊文字為行人外觀屬性識別結果。
具體實施方式
下面結合實施例對本發明作進一步地詳細說明,但本發明的實施方式不限于此。
為使本發明實施方式的目的、技術方案和優點更加清楚,下面將結合本發明實施方式中的附圖,對本發明實施方式中的技術方案進行清楚、完整地描述,顯然,所描述的實施方式是本發明一部分實施方式,而不是全部的實施方式。基于本發明中的實施方式,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施方式,都屬于本發明保護的范圍。因此,以下對在附圖中提供的本發明的實施方式的詳細描述并非旨在限制要求保護的本發明的范圍,而是僅僅表示本發明的選定實施方式。基于本發明中的實施方式,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施方式,都屬于本發明保護的范圍。
實施例1:
本發明設計出基于Inception V3的多數據集聯合訓練的行人外觀屬性識別方法,解決現有基于深度學習的行人外觀屬性識別方法在監控場景下易受光照、遮擋、目標姿態變化和圖像清晰度等因素影響,泛化能力較差的問題,能夠實現目標監控場景下的行人屬性準確識別,并且只需要極少的目標場景數據即可實現,特別采用下述設置方式:包括以下步驟:
1)獲取含有行人的監控視頻片段,對行人圖像進行預處理;
2)構建新的Inception V3卷積神經網絡模型;
3)改進logistic loss損失函數;
4)輸入多個公開數據集數據,進行訓練,得到行人外觀屬性識別模型;
5)利用所得行人外觀屬性識別模型進行實際場景下的識別。
實施例2:
本實施例是在上述實施例的基礎上進一步優化,進一步的為更好地實現本發明,特別采用下述設置方式:所述步驟1)包括以下具體步驟:
1.1)將截取的視頻幀按照規定的圖片命名方式(例如:111.jpg,數字代表是第幾張圖像)進行命名,保存到指定位置;
1.2)對所有的圖片文件進行外觀屬性標注,形成數據集;每一張行人圖片上的行人屬性都是二進制屬性,如果擁有這項屬性,則對應的這項標簽值為1;如果沒有,則標簽值為0,例如圖片上行人戴眼鏡,則對應戴眼鏡這項標簽值為1;
1.3)將數據集分成兩部分,分別為訓練集、驗證集,訓練集用于訓練模型,驗證集用于測試模型效果,不參與訓練,其中,訓練集占總圖片數量的70~90%,測試集占總圖片數量的10~30%;優選的訓練集占總圖片數量的80%,測試集占總圖片數量的20%。
實施例3:
本實施例是在上述任一實施例的基礎上進一步優化,進一步的為更好地實現本發明,特別采用下述設置方式:所述新的Inception V3卷積神經網絡模型包括5個卷積層、11個block結構及4個并列的全連接層;所述卷積層和block結構用于自動提取行人屬性特征;全連接層用于組合屬性特征,獲取對應屬性分數。
實施例4:
本實施例是在上述任一實施例的基礎上進一步優化,進一步的為更好地實現本發明,特別采用下述設置方式:所述步驟3)具體為:將每個全連接層后皆加一個loss函數,最后計算所有loss之和,來進行多數據集聯合訓練。
實施例5:
本實施例是在上述任一實施例的基礎上進一步優化,進一步的為更好地實現本發明,特別采用下述設置方式:所述loss函數為:
其中N表示訓練時每次送入的圖片數量,C為行人對應的外觀屬性數量,每個行人圖片表示為xn,對應經過網絡計算的輸出為Vn,對應的標簽向量為yn,每個標簽向量對應的屬性值為yn,i,i∈[1,2,...,C],如果yn,i=1表明這個訓練樣本xn有這個屬性,如果yn,i=0表明這個訓練樣本xn沒有這個屬性;Sn,i表示這個樣本xn的第i個屬性的得分高低,Sn,i∈[0,1],yn,i是真實屬性標簽,表示行人樣本xn有沒有第i個屬性。
實施例6:
本實施例是在上述任一實施例的基礎上進一步優化,進一步的為更好地實現本發明,特別采用下述設置方式:所述步驟4)包括以下具體步驟:
4.1)訓練之前,準備大于6G顯存的GPU和linux系統環境,搭建pytorch環境;
4.2)設置模型訓練的優化方式,優選的采用動量梯度下降法進行模型訓練的優化,此方法相較于傳統的梯度學習法,有著更快的下降速度和自適應學習速率,不用手動矯正學習率;
4.3)設置模型訓練的圖片預處理方式,合適的圖片預處理方式能夠擴大數據集的大小,使得模型的泛化能力更強;
4.4)設置模型的基礎學習率、動量權重以及最大迭代次數,在最大迭代次數下,不斷迭代學習,直到損失函數值不再下降,模型收斂,保存模型參數;
4.5)完成訓練,得到行人外觀屬性識別模型。
實施例7:
本實施例是在上述任一實施例的基礎上進一步優化,進一步的為更好地實現本發明,特別采用下述設置方式:所述步驟4.3)包括以下具體步驟:
4.3.1)改變圖片的亮度、對比度和飽和度;
4.3.2)經過步驟4.3.1)后,將圖片進行隨機的水平翻轉;
4.3.3)經步驟4.3.2)后,將圖片最短邊縮放到150像素,長邊按照1:3的比例縮放到450像素,這樣圖片中的行人不會失真;
4.3.4)經步驟4.3.3)后,縮放的圖片不進行裁剪,直接送入網絡進行訓練,這樣會保證行人的任何部位不會被裁剪掉,從而導致模型預測更加準確。
實施例8:
本實施例是在上述任一實施例的基礎上進一步優化,進一步的為更好地實現本發明,特別采用下述設置方式:所述步驟4)在進行訓練時,將模型在多個公開數據集上進行訓練。
實施例9:
本實施例是在上述任一實施例的基礎上進一步優化,進一步的為更好地實現本發明,特別采用下述設置方式:在所述步驟1)之前還包括選擇公開數據集,所述公開數據集采用PEdesTrian Attribute(PETA)數據集或/和a Richly Annotated Pedestrian(RAP)數據集或/和a new large-scale pedestrian attribute(PA100K)數據集。
實施例10:
本實施例是在上述任一實施例的基礎上進一步優化,基于Inception V3的多數據集聯合訓練的行人外觀屬性識別方法,本實例是在Ubuntu 14.04系統下完成的,并搭建了Python2.7的實驗環境,使用的深度學習庫為Pytorch 0.4,使用的顯卡為GTX 1080Ti 11G顯存顯卡和32G內存。該實例所提供的基于Inception V3的多數據集聯合訓練的行人外觀屬性識別方法,包括以下步驟:
包括:
(1)挑選和目標場景下需要的行人外觀屬性相似的公開數據集,要求公開數據集的數據量較大,因此基于目標場景,挑選PEdesTrian Attribute(PETA)數據集、a Richly Annotated Pedestrian(RAP)數據集、a new large-scale pedestrian attribute(PA100K)數據集;
(2)獲取含有行人的監控視頻,并截取視頻幀,構建目標場景下的行人外觀屬性數據集,包括以下子步驟:
(2-1)將截取的視頻幀按照規定的圖片命名方式進行命名,保存到指定位置;
(2-2)對所有的圖片文件進行外觀屬性標注:每一張行人圖片上的行人屬性都是二進制屬性,如果擁有這項屬性,則對應的這項標簽值為1;如果沒有,則標簽值為0,例如圖片上行人戴眼鏡,則對應戴眼鏡這項標簽值為1;
(2-3)將數據集分成兩部分,分別為訓練集、驗證集,訓練集用于訓練模型,驗證集用于測試模型效果,不參與訓練,其中,訓練集占總圖片數量的80%,測試集占總圖片數量的20%。
(3)選擇深度卷積神經網絡模型,使用Inception V3卷積神經網絡模型作為實驗模型,在該步驟中的現有的Inception V3模型結構復雜,包括5個卷積層、11個block結構以及1個全連接層,而本發明為在此基礎上,添加了3個并列的全連接層,形成新的Inception V3卷積神經網絡模型,用于在多個數據集上進行聯合訓練,卷積層和block結構用于自動提取行人屬性特征,全連接層用于組合屬性特征,獲取對應屬性分數,block結構如圖3所示;
(4)改進logistic損失函數,使之能夠進行多屬性分類和多數據集聯合訓練,具體的每個全連接層后都加一個loss函數,最后計算所有loss之和,來進行多數據集聯合訓練。其中的loss函數為:
其中N表示訓練時每次送入的圖片數量,C為行人對應的外觀屬性數量,每個行人圖片表示為xn,對應經過網絡計算的輸出為Vn,對應的標簽向量為yn,每個標簽向量對應的屬性值為yn,i,i∈[1,2,...,C],如果yn,i=1表明這個訓練樣本xn有這個屬性,如果yn,i=0表明這個訓練樣本xn沒有這個屬性;Sn,i表示這個樣本xn的第i個屬性的得分高低,Sn,i∈[0,1],yn,i是真實屬性標簽,表示行人樣本xn有沒有第i個屬性。
(5)將行人外觀屬性的公開數據集和目標數據集分割成訓練數據集和測試數據集,將訓練數據集輸入到InceptionV3卷積神經模型中進行訓練,得到行人外觀屬性識別模型;具體包括以下子步驟:
(5-1)訓練之前,準備大于6G顯存的GPU和linux系統環境,搭建pytorch環境;
(5-2)設置模型訓練的優化方式,優選選擇動量梯度下降法,此方法相較于傳統的梯度學習法,有著更快的下降速度和自適應學習速率,不用手動矯正學習率;
(5-3)設置模型訓練的圖片預處理方式,合適的圖片預處理方式能夠擴大數據集的大小,使得模型的泛化能力更強,其中,圖片預處理流程為首先改變圖片的亮度、對比度和飽和度,再將圖片進行隨機的水平翻轉,隨后將圖片最短邊縮放到150像素,長邊按照1:3的比例縮放到450像素,這樣圖片中的行人不會失真,最后縮放的圖片不進行裁剪,直接送入網絡進行訓練,這樣會保證行人的任何部位不會被裁剪掉,從而導致模型預測更加準確;
(5-4)設置模型的基礎學習率、動量權重以及最大迭代次數,在最大迭代次數下,不斷迭代學習,直到損失函數值不再下降,模型收斂,保存模型參數;
(5-5)完成訓練,得到行人外觀屬性識別模型。
以上所述,僅是本發明的較佳實施例,并非對本發明做任何形式上的限制,凡是依據本發明的技術實質對以上實施例所作的任何簡單修改、等同變化,均落入本發明的保護范圍之內。