機器學習在啟動耗時測試中的應用及模型調優(一)
啟動耗時自動化方案在關鍵幀識別時,常規的影像對比準確率很低。本文詳細介紹了採用scikit-learn圖片分類演算法在啟動耗時應用下的模型調優過程。在之後的續篇中將採用TensorFlow CNN、遷移學習等演算法,給出對比識別效果
1、常規思路與困境
App啟動、關鍵頁面載入耗時是一個常規的效能指標,也是競品對比的關鍵性指標。在耗時測試中,如何自動化識別關鍵圖片至為關鍵。由於視訊App啟動過程廣告、首頁運營內容是分分鐘變化的。在識別關鍵圖片時,傳統的基於灰度直方圖+閾值的自動化對比方法行不通。
圖片1.png
關鍵點:如何識別關鍵幀的自動化
Ø人工識別:耗時,費人力
Aphone610版本 3家競品、14個場景,每個場景10次,2分鐘1次 ,約14h ==2人天
Ø影像對比:灰度直方圖+閾值(不可行)
1)整圖對比:視訊啟動過程中的廣告、首頁海報是變化的
2)部分對比:app完整啟動後第一屏不完全展示的地方,每次不一定在同一處
Ø埋點上報:結果準確性一直被質疑(不可行)
1)adb shell am start -W packageName/packageName.MainActivity獲取
2)app埋點上報:程式碼里加埋點,首頁載入完成後資料上報
2、為什麼機器學習
啟動速度關鍵幀圖片識別,其實就是機器學習中常見的圖片分類問題。當前圖片分類演算法和開源的程式碼庫非常成熟,應用也屢見不鮮。之前在網上有瀏覽到一篇文章提到用機器學習實現耗時自動化的關鍵幀識別,眼前一亮,在此給出實現和調優過程。
3、實施方案
整體思路:
如下圖所示,採用錄屏軟體+自動化指令碼,完成啟動過程錄屏之後將視訊拆成一系列圖片幀。通過訓練好的機器學習模型,識別出每一張圖片所對應的啟動過程,計算啟動第一張圖片到啟動穩定後的總幀數,即可得出最終的啟動時間。
圖片2.png
樣本與分類label設計
圖片3.png
特徵選擇
常見的影像特徵處理方法有:
1)原始畫素特徵扁平化
2)提取顏色直方圖(使用cv2.normalize從HSV色域中提取一個3D顏色直方圖並做平滑處理)
在本方案中,最開始首先選擇方法(1)。即錄屏視訊解析度為480p*720p,拆幀後壓縮8倍,每個畫素點3個資料表示,最終一張圖片用16200 維列表表示——16200個特徵,後續會對比3D顏色直方圖作為特徵進行對比。
第一批樣本集
圖片4.png
演算法選擇
在演算法選擇的過程中,依據“不要在演算法選擇上花費太多時間,先讓你的模型run 起來” 以及 sklearn 官網演算法選擇引導,因為樣本數1000+<100k,選擇 SVM+線性核 入手。
圖片5.png
4、模型調優實戰
1)調優步驟
在機器學習中,如果遇到較大誤差時,常見的模型調優方法不外乎:
增加樣本 -----避免overfitting
選用更少的特徵-----避免overfitting
獲取更多的特徵-----避免underfitting
調整模型,或者正則引數-----均可
當然在實現過程中,我們需要首先找出問題所在,不能盲目的增加樣本或者減少引數。一般來說:
快速實現演算法
plot learning curve
分析 error—sample 特徵,選定要採取的手段
2)繪製學習曲線
模型:LinearSVC(C=1.0),sklearn中提供了learning_curve ()函式不用自己實現
1)總樣本1225,10%、25%、50%、75%、100% 5輪,train:valid = 3:1
2)計算平均方差隨樣本數變化的曲線
從下圖中看出,當前fit的模型是存在過擬合的,所以接下來要做的事情就是增加樣本、調參、減少特徵等方式來處理。
圖片6.png
3)防止過擬合
第一步:調整LinearSVC 引數(如C 、class_weight)——確認C=10最合適
圖片7.png
圖片8.png
圖片9.png
第二步:增加樣本(優先增加數量少的分類樣本、test_set準確率低的分類樣本) 1610個樣本時誤差最低
圖片10.png
為了更好的分析問題,可以通過classification_report來得出各個分類的具體精確率情況
from sklearn.metrics import classification_report
圖片11.png
第三步:減少特徵
1)減少特徵的過程中,嘗試通過RFEVC獲取最優特徵數,優化結果並不明顯
圖片12.png
a.特徵增加的步長是人為選擇的,太大了可能會漏掉關鍵特徵,太小了計算量太大
b.step一致的,最優特徵數 每次可能不一樣
c.提升並不大
圖片13.png
2)加大影像壓縮: 從原來的8倍->12倍->16倍
a.從學習曲線上看過擬合依然存在,整體的test_error還是減小了的
b.偏差嚴重的label=start 這一分類,壓縮倍速越高精確度越低
圖片14.png
圖片15.png
3)PCA
主要成分分析PCA:特徵置換,原特徵對映到新特徵,從而實現降維。降維的目的主要是減少計算量,但是有熱心同志建議試試,便試試。事實證明實際上證明“利用PCA來避免過擬合”是個bad case。
圖片16.png
4)提取顏色直方圖並做平滑處理後,作為影像特徵之後,對比發現precison和recall低了10個百分點~~
圖片17.png
第四步:調整結果分類
在前面有分析過,start這個分類識別準確率很低。 分析對比圖片,start與desk區別僅僅在於app icon是灰顯的。經評估desk和start分類合成一類,在實際耗時測試中影響並不大,但能提高不少test set的準確率
圖片18.png
圖片19.png
8分類變成7分類之後的學習曲線已經趨於收斂,且過擬合情況好很多了
圖片20.png
分類準確率提升如下表所示:
圖片21.png
4)調優前後對比
圖片22.png
5、總結
圖片23.png
6、後續 - 模型探討
SVM 線性核LinearSVC,在圖片分類問題中並非唯一選擇,也不是最佳選擇。後面將嘗試不同的影像特徵提取,與CNN和遷移學習演算法在本問題的應用情況進行對比
1、使用 TensorFlow 構建 CNN
2、使用Inception v3進行影像分類
3、嘗試新的影像特徵提取方式
公眾號推薦:
原文連結:http://wetest.qq.com/lab/view/392.html
相關文章
- 機器學習在實時性欺詐檢測中的應用案例機器學習
- 擴散模型在機器學習中的應用及其挑戰模型機器學習
- 機器學習模型在雲音樂指標異動預測的應用實踐機器學習模型指標
- 格物致知—機器學習應用效能調優機器學習
- 車輛動力學模型在模擬測試中的應用實踐模型
- Appium 在 IOS 真機測試時啟動應用後經常卡死APPiOS
- 機器學習在電商應用中的三個境界:爆款模型、轉化率模型及個性化模型機器學習模型
- 機器學習在金融比賽中的應用機器學習
- 機器學習在SAP Cloud for Customer中的應用機器學習Cloud
- 在物聯網中應用機器學習機器學習
- python 裝飾器在介面自動化測試中的應用Python
- python裝飾器在介面自動化測試中的應用Python
- 機器學習在客戶管理場景中的應用機器學習
- 機器學習在交通標誌檢測與精細分類中的應用機器學習
- Apache Hudi在Hopworks機器學習的應用Apache機器學習
- 技術前沿:AI大模型在自動化測試中的應用例項AI大模型
- 自動化測試在國際軟體測試中的應用
- 機器如何「猜你喜歡」?深度學習模型在1688的應用實踐深度學習模型
- 史丹佛大學-機器學習的動機與應用機器學習
- 感測器在自動駕駛中的應用自動駕駛
- 機器學習將在遊戲開發中的6種應用機器學習遊戲開發
- BurpSuite在非Web應用測試中的應用UIWeb
- 深度學習模型在序列標註任務中的應用深度學習模型
- 機器學習 | 深入SVM原理及模型推導(一)機器學習模型
- JDBC 在效能測試中的應用JDBC
- 機器學習導圖系列(5):機器學習模型及神經網路模型機器學習模型神經網路
- vivo前端智慧化實踐:機器學習在自動網頁佈局中的應用前端機器學習網頁
- 異構記憶體及其在機器學習系統的應用與優化記憶體機器學習優化
- 機器學習在高德起點抓路中的應用實踐機器學習
- 一文讀懂機器學習中的模型偏差機器學習模型
- 基於口罩識別模型,探索機器學習自動化的技術應用模型機器學習
- 《用Python動手學機器學習》中的網址Python機器學習
- 在 Python 中儲存和載入機器學習模型Python機器學習模型
- 單元測試在Unity中的應用Unity
- 機器學習實戰 | 性別預測模型的構建與優化機器學習模型優化
- 採用自動化測試的情形及自動化測試的優缺點
- 奇異值分解在機器人學中的應用機器人
- 效能測試調優應該注意哪些要點,一般效能測試調優的步驟-Alltesting|澤眾雲測試