本發(fā)明涉及移動端目標識別,具體涉及一種適用于移動端的目標識別方法、插件、設(shè)備和存儲介質(zhì)。
背景技術(shù):
1、目前,絕大多數(shù)目標檢測技術(shù)主要集中在電腦端的應(yīng)用上。這一現(xiàn)象的背后原因在于,電腦端設(shè)備相較于移動端設(shè)備擁有更為強大的中央處理器(cpu)以及具備超高計算能力的圖形處理器(gpu)。這種硬件優(yōu)勢使得研究人員和開發(fā)者能夠?qū)⒏嗟木ν度氲绞褂秒娔X端設(shè)備來訓(xùn)練和部署目標檢測算法,以實現(xiàn)對圖像、視頻和音頻等素材中目標的識別和檢測。例如,yolo(you?only?look?once)系列模型在電腦端能夠迅速地識別出素材中的目標,展現(xiàn)出卓越的檢測性能。
2、然而,這種依賴電腦端進行目標檢測的方法存在明顯的局限性。首先,由于目標檢測過程必須依賴電腦端設(shè)備,因此在實際生產(chǎn)環(huán)境中,無法隨時隨地進行目標檢測,這限制了其應(yīng)用范圍。其次,盡管現(xiàn)有的目標檢測算法在電腦端表現(xiàn)優(yōu)異,但其實際應(yīng)用過程中需要通過移動端設(shè)備采集素材,然后將這些素材傳輸?shù)诫娔X端進行分析處理,最后再將分析結(jié)果回傳到移動端設(shè)備。這一過程不僅耗時,而且在實時性方面存在明顯不足,導(dǎo)致用戶體驗大打折扣。因此,盡管電腦端的目標檢測方法在某些方面表現(xiàn)出色,但在實際應(yīng)用中,由于其無法實現(xiàn)快速、實時的目標檢測和識別,因此并不是最優(yōu)的解決方案。
技術(shù)實現(xiàn)思路
1、鑒于上述問題,本發(fā)明實施例一種適用于移動端的目標識別方法、插件、設(shè)備和存儲介質(zhì),解決現(xiàn)有的技術(shù)問題。
2、為解決上述技術(shù)問題,本發(fā)明提供以下技術(shù)方案:
3、第一方面,本發(fā)明提供一種適用于移動端的目標識別方法,所述方法包括:
4、將訓(xùn)練好的目標檢測模型加載至移動端的內(nèi)存中,得到目標基準庫;
5、將移動端相機模塊句柄傳遞至移動端操作系統(tǒng)的相機驅(qū)動層打開相機;
6、對移動端的相機采集的元數(shù)據(jù)進行數(shù)據(jù)預(yù)處理,得到優(yōu)化后的圖像矩陣數(shù)據(jù);
7、利用目標基準庫基于優(yōu)化后的圖像矩陣數(shù)據(jù)分析畫面幀中包含的目標,得到識別結(jié)果;
8、將識別結(jié)果回傳至移動端的上層應(yīng)用并關(guān)閉相機。
9、一實施例中,所述將訓(xùn)練好的目標檢測模型加載至移動端的內(nèi)存中,得到目標基準庫包括:
10、將神經(jīng)網(wǎng)絡(luò)前向推理框架安裝于移動端;
11、讀取訓(xùn)練好的目標檢測模型的二進制文件,得到模型文件;
12、讀取訓(xùn)練好的目標檢測模型的參數(shù)配置,得到參數(shù)文件;
13、調(diào)用loadmodel函數(shù)確定模型文件和參數(shù)文件的訪問方式和存儲路徑;
14、調(diào)用jni函數(shù)將訪問方式和存儲路徑傳遞至應(yīng)用層;
15、神經(jīng)網(wǎng)絡(luò)前向推理框架得到應(yīng)用層傳遞的訪問方式和存儲路徑后調(diào)用load_paeam函數(shù)將參數(shù)文件和模型文件加載至移動端的內(nèi)存中,得到目標基準庫。
16、一實施例中,還包括判斷目標檢測模型是否加載成功的方法:
17、通過assetmanager打開存儲路徑的資源文件,并進行讀取操作;
18、若資源文件成功打開并且讀取沒有發(fā)生錯誤并返回一個非零值,則表示目標檢測模型加載成功;
19、若在打開或讀取資源文件的過程中出現(xiàn)任何錯誤并且返回值為0,則表示目標檢測模型加載失敗。
20、一實施例中,所述將移動端相機模塊句柄傳遞至移動端操作系統(tǒng)的相機驅(qū)動層打開相機包括:
21、將手機相機模塊句柄通過setoutputwindow函數(shù)傳遞給jni層;
22、通過opencamera函數(shù)調(diào)用相機驅(qū)動打開移動端的相機。
23、一實施例中,所述對移動端的相機采集的元數(shù)據(jù)進行數(shù)據(jù)預(yù)處理,得到優(yōu)化后的圖像矩陣數(shù)據(jù)包括:
24、將移動端相機采集的元數(shù)據(jù)配置為nv21格式;
25、創(chuàng)建opencv?mat對象,配置opencv?mat對象的高度設(shè)置為nv21格式元數(shù)據(jù)中圖像高度的1.5倍,配置opencv?mat對象的寬度設(shè)置為nv21格式元數(shù)據(jù)中圖像的寬度,配置8位無符號單通道將nv21格式元數(shù)據(jù)中的分量當作單通道數(shù)據(jù)順序存儲;
26、調(diào)用opencv?mat對象的put函數(shù)將nv21格式元數(shù)據(jù)填充至創(chuàng)建的opencv?mat對象中,得到opencv?mat矩陣數(shù)據(jù);
27、將opencv?mat矩陣數(shù)據(jù)導(dǎo)入opencv中進行幀數(shù)據(jù)預(yù)處理,得到優(yōu)化后的圖像矩陣數(shù)據(jù);所述幀數(shù)據(jù)預(yù)處理包括灰度化處理、旋轉(zhuǎn)處理和銳化處理。
28、一實施例中,所述利用目標基準庫基于優(yōu)化后的圖像矩陣數(shù)據(jù)分析畫面幀中包含的目標,得到識別結(jié)果包括:
29、配置數(shù)據(jù)轉(zhuǎn)化函數(shù)將優(yōu)化后的圖像矩陣數(shù)據(jù)轉(zhuǎn)化為推理圖像數(shù)據(jù)矩陣;
30、將推理圖像數(shù)據(jù)矩陣導(dǎo)入目標基準庫中,利用目標基準庫的卷積層和對應(yīng)的激活函數(shù)提取推理圖像數(shù)據(jù)矩陣中的局部特征,得到特征圖;
31、利用目標基準庫的池化層和對應(yīng)的激活函數(shù)降低特征圖的空間維度,得到池化特征圖;
32、利用目標基準庫的全連接層對池化特征圖進行目標識別后輸入配置有優(yōu)化函數(shù)的輸出層,得到識別結(jié)果。
33、一實施例中,所述將識別結(jié)果回傳至移動端的上層應(yīng)用并關(guān)閉相機包括:
34、對識別結(jié)果進行渲染,得到渲染數(shù)據(jù);
35、調(diào)用移動端的應(yīng)用程序擴展結(jié)果將渲染數(shù)據(jù)上傳至移動端的上層應(yīng)用;
36、渲染數(shù)據(jù)上傳成功后通過closecamera函數(shù)調(diào)用相機驅(qū)動關(guān)閉移動端的相機。
37、第二方面,本發(fā)明提供一種適用于移動端的目標識別插件,所述目標識別插件通過交叉編譯的方式獲得,目標識別插件包括:
38、加載模塊:用于將訓(xùn)練好的目標檢測模型加載至移動端的內(nèi)存中,得到目標基準庫;
39、傳遞模塊:用于將移動端相機模塊句柄傳遞至移動端操作系統(tǒng)的相機驅(qū)動層打開相機;
40、轉(zhuǎn)換模塊:用于對移動端的相機采集的元數(shù)據(jù)進行數(shù)據(jù)預(yù)處理,得到優(yōu)化后的圖像矩陣數(shù)據(jù);
41、分析模塊:用于利用目標基準庫基于優(yōu)化后的圖像矩陣數(shù)據(jù)分析畫面幀中包含的目標,得到識別結(jié)果;
42、回傳模塊:用于將識別結(jié)果回傳至移動端的上層應(yīng)用并關(guān)閉相機。
43、一實施例中,所述加載模塊具體用于:
44、將神經(jīng)網(wǎng)絡(luò)前向推理框架安裝于移動端;
45、讀取訓(xùn)練好的目標檢測模型的二進制文件,得到模型文件;
46、讀取訓(xùn)練好的目標檢測模型的參數(shù)配置,得到參數(shù)文件;
47、調(diào)用loadmodel函數(shù)確定模型文件和參數(shù)文件的訪問方式和存儲路徑;
48、調(diào)用jni函數(shù)將訪問方式和存儲路徑傳遞至應(yīng)用層;
49、神經(jīng)網(wǎng)絡(luò)前向推理框架得到應(yīng)用層傳遞的訪問方式和存儲路徑后調(diào)用load_paeam函數(shù)將參數(shù)文件和模型文件加載至移動端的內(nèi)存中,得到目標基準庫。
50、一實施例中,加載模塊還包括判斷目標檢測模型是否加載成功的方法:
51、通過assetmanager打開存儲路徑的資源文件,并進行讀取操作;
52、若資源文件成功打開并且讀取沒有發(fā)生錯誤并返回一個非零值,則表示目標檢測模型加載成功;
53、若在打開或讀取資源文件的過程中出現(xiàn)任何錯誤并且返回值為0,則表示目標檢測模型加載失敗。
54、一實施例中,所述傳遞模塊具體用于:
55、將手機相機模塊句柄通過setoutputwindow函數(shù)傳遞給jni層;
56、通過opencamera函數(shù)調(diào)用相機驅(qū)動打開移動端的相機。
57、一實施例中,所述轉(zhuǎn)換模塊具體用于:
58、將移動端相機采集的元數(shù)據(jù)配置為nv21格式;
59、創(chuàng)建opencv?mat對象,配置opencv?mat對象的高度設(shè)置為nv21格式元數(shù)據(jù)中圖像高度的1.5倍,配置opencv?mat對象的寬度設(shè)置為nv21格式元數(shù)據(jù)中圖像的寬度,配置8位無符號單通道將nv21格式元數(shù)據(jù)中的分量當作單通道數(shù)據(jù)順序存儲;
60、調(diào)用opencv?mat對象的put函數(shù)將nv21格式元數(shù)據(jù)填充至創(chuàng)建的opencv?mat對象中,得到opencv?mat矩陣數(shù)據(jù);
61、將opencv?mat矩陣數(shù)據(jù)導(dǎo)入opencv中進行幀數(shù)據(jù)預(yù)處理,得到優(yōu)化后的圖像矩陣數(shù)據(jù);所述幀數(shù)據(jù)預(yù)處理包括灰度化處理、旋轉(zhuǎn)處理和銳化處理。
62、一實施例中,所述分析模塊具體用于:
63、配置數(shù)據(jù)轉(zhuǎn)化函數(shù)將優(yōu)化后的圖像矩陣數(shù)據(jù)轉(zhuǎn)化為推理圖像數(shù)據(jù)矩陣;
64、將推理圖像數(shù)據(jù)矩陣導(dǎo)入目標基準庫中,利用目標基準庫的卷積層和對應(yīng)的激活函數(shù)提取推理圖像數(shù)據(jù)矩陣中的局部特征,得到特征圖;
65、利用目標基準庫的池化層和對應(yīng)的激活函數(shù)降低特征圖的空間維度,得到池化特征圖;
66、利用目標基準庫的全連接層對池化特征圖進行目標識別后輸入配置有優(yōu)化函數(shù)的輸出層,得到識別結(jié)果。
67、一實施例中,所述回傳模塊具體用于:
68、對識別結(jié)果進行渲染,得到渲染數(shù)據(jù);
69、調(diào)用移動端的應(yīng)用程序擴展結(jié)果將渲染數(shù)據(jù)上傳至移動端的上層應(yīng)用;
70、渲染數(shù)據(jù)上傳成功后通過closecamera函數(shù)調(diào)用相機驅(qū)動關(guān)閉移動端的相機。
71、第三方面,本發(fā)明提供一種電子設(shè)備,包括:
72、處理器、存儲器、與網(wǎng)關(guān)通信的接口;
73、存儲器用于存儲程序和數(shù)據(jù),所述處理器調(diào)用存儲器存儲的程序,以執(zhí)行第一方面任一項提供的一種適用于移動端的目標識別方法。
74、第四方面,本發(fā)明提供一種計算機可讀存儲介質(zhì),所述計算機可讀存儲介質(zhì)包括程序,所述程序在被處理器執(zhí)行時用于執(zhí)行第一方面任一項提供的一種適用于移動端的目標識別方法。
75、從上述描述可知,本發(fā)明實施例提供一種適用于移動端的目標識別方法、插件、設(shè)備和存儲介質(zhì),成功解決了移動端無法直接應(yīng)用目標識別方法的難題,使得目標識別過程無需再依賴于電腦端設(shè)備。這一改進使得在實際生產(chǎn)環(huán)境中,用戶可以隨時隨地進行目標識別,從而極大地拓寬了目標識別方法的應(yīng)用范圍。同時也彌補了以往在實時性方面的不足,顯著提升了用戶體驗。實現(xiàn)了目標識別方法能夠適配并高效運行于移動端設(shè)備,徹底擺脫了對電腦的依賴,即便在無電腦的環(huán)境下,用戶也能進行實時、精確的目標識別操作。