機器學習在啟動耗時測試中的應用及模型調優(一)

IT技術精選文摘發表於2018-07-05
作者:熊玉輝, 騰訊OMG質量管理部 高階工程師
商業轉載請聯絡騰訊WeTest獲得授權,非商業轉載請註明出處。
原文連結:機器學習在啟動耗時測試中的應用及模型調優(一)wetest.qq.com/lab/view/39…



WeTest 導讀

啟動耗時自動化方案在關鍵幀識別時,常規的影象對比準確率很低。本文詳細介紹了採用scikit-learn圖片分類演算法在啟動耗時應用下的模型調優過程。在之後的續篇中將採用TensorFlow CNN、遷移學習等演算法,給出對比識別效果


1、常規思路與困境


App啟動、關鍵頁面載入耗時是一個常規的效能指標,也是競品對比的關鍵性指標。在耗時測試中,如何自動化識別關鍵圖片至為關鍵。由於視訊App啟動過程廣告、首頁運營內容是分分鐘變化的。在識別關鍵圖片時,傳統的基於灰度直方圖+閾值的自動化對比方法行不通。

機器學習在啟動耗時測試中的應用及模型調優(一)

關鍵點:如何識別關鍵幀的自動化

Ø人工識別:耗時,費人力

Aphone610版本 3家競品、14個場景,每個場景10次,2分鐘1次 ,約14h ==2人天


Ø影象對比:灰度直方圖+閾值(不可行)

1)整圖對比:視訊啟動過程中的廣告、首頁海報是變化的

2)部分對比:app完整啟動後第一屏不完全展示的地方,每次不一定在同一處


Ø埋點上報:結果準確性一直被質疑(不可行)

1)adb shell am start -W [packageName]/[packageName.MainActivity]獲取

2)app埋點上報:程式碼里加埋點,首頁載入完成後資料上報


2、為什麼機器學習


啟動速度關鍵幀圖片識別,其實就是機器學習中常見的圖片分類問題。當前圖片分類演算法和開源的程式碼庫非常成熟,應用也屢見不鮮。之前在網上有瀏覽到一篇文章提到用機器學習實現耗時自動化的關鍵幀識別,眼前一亮,在此給出實現和調優過程。


3、實施方案


整體思路:

如下圖所示,採用錄屏軟體+自動化指令碼,完成啟動過程錄屏之後將視訊拆成一系列圖片幀。通過訓練好的機器學習模型,識別出每一張圖片所對應的啟動過程,計算啟動第一張圖片到啟動穩定後的總幀數,即可得出最終的啟動時間。

機器學習在啟動耗時測試中的應用及模型調優(一)


樣本與分類label設計


機器學習在啟動耗時測試中的應用及模型調優(一)


特徵選擇

常見的影象特徵處理方法有:

1)原始畫素特徵扁平化

2)提取顏色直方圖(使用cv2.normalize從HSV色域中提取一個3D顏色直方圖並做平滑處理)


在本方案中,最開始首先選擇方法(1)。即錄屏視訊解析度為480p*720p,拆幀後壓縮8倍,每個畫素點3個資料表示,最終一張圖片用16200 維列表表示——16200個特徵,後續會對比3D顏色直方圖作為特徵進行對比。


第一批樣本集

機器學習在啟動耗時測試中的應用及模型調優(一)


演算法選擇

在演算法選擇的過程中,依據“不要在演算法選擇上花費太多時間,先讓你的模型run 起來” 以及 sklearn 官網演算法選擇引導,因為樣本數1000+<100k,選擇 SVM+線性核 入手。

機器學習在啟動耗時測試中的應用及模型調優(一)


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的模型是存在過擬合的,所以接下來要做的事情就是增加樣本、調參、減少特徵等方式來處理。

機器學習在啟動耗時測試中的應用及模型調優(一)


3)防止過擬合

第一步:調整LinearSVC 引數(如C 、class_weight)——確認C=10最合適

機器學習在啟動耗時測試中的應用及模型調優(一)

機器學習在啟動耗時測試中的應用及模型調優(一)


機器學習在啟動耗時測試中的應用及模型調優(一)


第二步:增加樣本(優先增加數量少的分類樣本、test_set準確率低的分類樣本) 1610個樣本時誤差最低

機器學習在啟動耗時測試中的應用及模型調優(一)

為了更好的分析問題,可以通過classification_report來得出各個分類的具體精確率情況

from sklearn.metrics import classification_report

機器學習在啟動耗時測試中的應用及模型調優(一)


第三步:減少特徵

1)減少特徵的過程中,嘗試通過RFEVC獲取最優特徵數,優化結果並不明顯

機器學習在啟動耗時測試中的應用及模型調優(一)

a.特徵增加的步長是人為選擇的,太大了可能會漏掉關鍵特徵,太小了計算量太大

b.step一致的,最優特徵數 每次可能不一樣

c.提升並不大

機器學習在啟動耗時測試中的應用及模型調優(一)


2)加大影象壓縮: 從原來的8倍->12倍->16倍

a.從學習曲線上看過擬合依然存在,整體的test_error還是減小了的

b.偏差嚴重的label=start 這一分類,壓縮倍速越高精確度越低

機器學習在啟動耗時測試中的應用及模型調優(一)

機器學習在啟動耗時測試中的應用及模型調優(一)


3)PCA

主要成分分析PCA:特徵置換,原特徵對映到新特徵,從而實現降維。降維的目的主要是減少計算量,但是有熱心同志建議試試,便試試。事實證明實際上證明“利用PCA來避免過擬合”是個bad case。

機器學習在啟動耗時測試中的應用及模型調優(一)


4)提取顏色直方圖並做平滑處理後,作為影象特徵之後,對比發現precison和recall低了10個百分點~~

機器學習在啟動耗時測試中的應用及模型調優(一)


第四步:調整結果分類

在前面有分析過,start這個分類識別準確率很低。 分析對比圖片,start與desk區別僅僅在於app icon是灰顯的。經評估desk和start分類合成一類,在實際耗時測試中影響並不大,但能提高不少test set的準確率

機器學習在啟動耗時測試中的應用及模型調優(一)

機器學習在啟動耗時測試中的應用及模型調優(一)


8分類變成7分類之後的學習曲線已經趨於收斂,且過擬合情況好很多了

機器學習在啟動耗時測試中的應用及模型調優(一)


分類準確率提升如下表所示:

機器學習在啟動耗時測試中的應用及模型調優(一)


4)調優前後對比

機器學習在啟動耗時測試中的應用及模型調優(一)


5、總結

機器學習在啟動耗時測試中的應用及模型調優(一)


6、後續 - 模型探討


SVM 線性核LinearSVC,在圖片分類問題中並非唯一選擇,也不是最佳選擇。後面將嘗試不同的影象特徵提取,與CNN和遷移學習演算法在本問題的應用情況進行對比


1、使用 TensorFlow 構建 CNN

2、使用Inception v3進行影象分類

3、嘗試新的影象特徵提取方式



騰訊WeTest是騰訊官方出品的一站式質量開放平臺。致力於品質標準建設、產品質量提升,歷經千款騰訊產品磨礪。平臺包含相容測試、雲真機、效能測試、安全防護、企鵝風訊等優秀工具,覆蓋產品在研發、運營各階段的測試需求。金牌專家團隊,10餘年品質管理經驗,5大維度,41項指標,360度保障產品質量。


目前,我們為WeTest平臺的認證使用者提供免費使用機會,詳情點選http://wetest.qq.com/

如果使用當中有任何疑問,歡迎聯絡騰訊WeTest企業QQ:800024531

騰訊WeTest有獎徵文活動進行中,歡迎投稿!瞭解詳情:
機器學習在啟動耗時測試中的應用及模型調優(一)wetest.qq.com/lab/view/37…


相關文章