原文由williamfzc發(fā)表于TesterHome社區(qū)洲炊,點(diǎn)擊[原文鏈接]直達(dá)原帖與作者在線交流感局。
項(xiàng)目地址:https://github.com/williamfzc/stagesepx
官方文檔:https://williamfzc.github.io/stagesepx/#/
使用指引:https://github.com/williamfzc/work_with_stagesepx
前言
之前我陸陸續(xù)續(xù)分享了一些圖像識別在測試領(lǐng)域內(nèi)的應(yīng)用實(shí)踐,功能測試與性能測試都有涉及暂衡。前段時間寫了 讓所有人都能用圖像識別做 UI 自動化 與 基于圖像識別的 UI 自動化解決方案 之后 询微,隨著他逐漸穩(wěn)定下來,在功能測試的這一塊的個人目標(biāo)終于基本算是完成了狂巢。
在性能測試方向撑毛,近期也有不少同學(xué)一直很關(guān)注這項(xiàng)技術(shù)在性能測試上的應(yīng)用。這是之前陸陸續(xù)續(xù)做的兩個版本:
盡管后來的版本已經(jīng)基本可用(后來隨著迭代隧膘,效率變得太低了代态,又變得不太可用了),但總感覺疹吃,這不是一個最理想的版本蹦疑。
經(jīng)過這段時間,我終于做好了一個更加符合我預(yù)期的方案: stagesep-x萨驶。
為什么又開新坑
與之前的版本相比歉摧,它原理完全不同,使用場景也不完全一致腔呜。所以我選擇另外開一個項(xiàng)目而不是繼續(xù)迭代叁温。
stagesepx 能做什么
在軟件工程領(lǐng)域,視頻是一種較為通用的UI(現(xiàn)象)描述方法核畴。它能夠記錄下用戶到底做了哪些操作膝但,以及界面發(fā)生了什么事情。例如谤草,下面的例子描述了從桌面打開chrome進(jìn)入amazon主頁的過程:stagesepx能夠自動偵測并提取視頻中的穩(wěn)定或不穩(wěn)定的階段(例子中跟束,stagesepx認(rèn)為視頻中包含三個穩(wěn)定的階段,分別是點(diǎn)擊前丑孩、點(diǎn)擊時與頁面加載完成后):
例如,從圖中可以看出:
- 視頻開始直到 0.76s 時維持在階段0
- 在 0.76s 時從階段0切換到階段1
- 在 0.92s 時從階段1切換到階段0温学,隨后進(jìn)入變化狀態(tài)(當(dāng)stagesepx無法將幀分為某特定類別略贮、或幀不在待分析范圍內(nèi)時,會被標(biāo)記為 -1,一般會在頁面發(fā)生變化的過程中出現(xiàn))
- 在 1.16s 時到達(dá)階段2
- ...
以此類推逃延,我們能夠?qū)σ曨l的每個階段進(jìn)行非常細(xì)致的評估览妖。通過觀察視頻也可以發(fā)現(xiàn),識別效果與實(shí)際完全一致真友。
在運(yùn)行過程中黄痪,stagesepx強(qiáng)大的快照功能能夠讓你很輕松地知道每個階段到底發(fā)生了什么:而所有的一切只需要一個視頻,無需前置模板盔然、無需提前學(xué)習(xí)桅打。
應(yīng)用舉例
所有stagesepx需要的只是一個視頻,而且它本質(zhì)上只跟視頻有關(guān)聯(lián)愈案,并沒有任何特定的使用場景挺尾!所以,你可以盡情發(fā)揮你的想象力站绪,用它幫助你實(shí)現(xiàn)更多的功能遭铺。
APP
- 前面提到的應(yīng)用啟動速度計算
- 那么同理,頁面切換速度等方面都可以應(yīng)用
- 除了性能恢准,你可以使用切割器對視頻切割后魂挂,用諸如findit等圖像識別方案對功能性進(jìn)行校驗(yàn)
- 除了應(yīng)用,游戲這種無法用傳統(tǒng)測試方法的場景更是它的主場
- ...
除了APP馁筐?
- 除了移動端涂召,當(dāng)然PC、網(wǎng)頁也可以同理計算出結(jié)果
-
甚至任何視頻敏沉?
Do whatever you want:)
使用
安裝
Python >= 3.6
pip install stagesepx
例子
還想要更多功能果正?
當(dāng)然,stagesepx不僅如此盟迟。但在開始下面的閱讀之前秋泳,你需要了解 切割器(cutter)與 分類器(classifier)。stagesepx主要由這兩個概念組成攒菠。
切割器
顧名思義迫皱,切割器的功能是將一個視頻按照一定的規(guī)律切割成多個部分。他負(fù)責(zé)視頻階段劃分與采樣辖众,作為數(shù)據(jù)采集者為其他工具(例如AI模型)提供自動化的數(shù)據(jù)支持卓起。它應(yīng)該提供友好的接口或其他形式為外部(包括分類器)提供支持。例如赵辕,pick_and_save
方法完全是為了能夠使數(shù)據(jù)直接被 keras 利用而設(shè)計的既绩。
分類器
針對上面的例子,分類器應(yīng)運(yùn)而生频丘。它主要是加載(在AI分類器上可能是學(xué)習(xí))一些分類好的圖片办成,并據(jù)此對幀(圖片)進(jìn)行分類。
例如搂漠,當(dāng)加載上述例子中穩(wěn)定階段對應(yīng)的幀后迂卢,分類器即可將視頻進(jìn)行幀級別的分類,得到每個階段的準(zhǔn)確耗時桐汤。
分類器的定位是對視頻進(jìn)行幀級別而克、高準(zhǔn)確度的圖片分類,并能夠利用采樣結(jié)果怔毛。它應(yīng)該有不同的存在形態(tài)(例如機(jī)器學(xué)習(xí)模型)员萍、以達(dá)到不同的分類效果。例如馆截,你可以在前幾次視頻中用采樣得到的數(shù)據(jù)訓(xùn)練你的AI模型充活,當(dāng)它收斂之后在你未來的分析中你就可以直接利用訓(xùn)練好的模型進(jìn)行分類,而不需要前置的采樣過程了蜡娶。stagesep2本質(zhì)上是一個分類器混卵。
不同形態(tài)的分類器
stagesepx提供了兩種不同類型的分類器,用于處理切割后的結(jié)果:
- 傳統(tǒng)的 SSIM 分類器無需訓(xùn)練且較為輕量化窖张,多用于階段較少幕随、較為簡單的視頻;
- SVM + HoG分類器在階段復(fù)雜的視頻上表現(xiàn)較好宿接,你可以用不同的視頻對它進(jìn)行訓(xùn)練逐步提高它的識別效果赘淮,使其足夠被用于生產(chǎn)環(huán)境;
目前基于CNN的分類器已經(jīng)初步完成睦霎,在穩(wěn)定后會加入 :)但目前來看梢卸,前兩個分類器在較短視頻上的應(yīng)用已經(jīng)足夠了(可能需要調(diào)優(yōu),但原理上是夠用的)副女。
事實(shí)上蛤高,stagesepx在設(shè)計上更加鼓勵開發(fā)者根據(jù)自己的實(shí)際需要設(shè)計并使用自己的分類器,以達(dá)到最好的效果。
豐富的圖表
想得到耗時戴陡?stagesepx已經(jīng)幫你計算好了:...
優(yōu)異的性能表現(xiàn)
在效率方面塞绿,吸取了 stagesep2 的教訓(xùn)(他真的很慢,而這一點(diǎn)讓他很難被用于生產(chǎn)環(huán)境)恤批,在項(xiàng)目規(guī)劃期我們就將性能的優(yōu)先級提高异吻。對于該視頻而言,可以從日志中看到喜庞,它的耗時在驚人的300毫秒左右(windows7 i7-6700 3.4GHz 16G):
2019-07-17 10:52:03.429 | INFO | stagesepx.cutter:cut:200 - start cutting: test.mp4
...
2019-07-17 10:52:03.792 | INFO | stagesepx.cutter:cut:203 - cut finished: test.mp4
除了常規(guī)的基于圖像本身的優(yōu)化手段诀浪,stagesepx主要利用采樣機(jī)制進(jìn)行性能優(yōu)化,它指把時間域或空間域的連續(xù)量轉(zhuǎn)化成離散量的過程延都。由于分類器的精確度要求較高笋妥,該機(jī)制更多被用于切割器部分,用于加速切割過程窄潭。它在計算量方面優(yōu)化幅度是非炒盒可觀的,以5幀的步長為例嫉你,它相比優(yōu)化前節(jié)省了80%的計算量月帝。
當(dāng)然,采樣相比連續(xù)計算會存在一定的誤差幽污,如果你的視頻變化較為激烈或者你希望有較高的準(zhǔn)確度嚷辅,你也可以關(guān)閉采樣功能。
更強(qiáng)的穩(wěn)定性
stagesep2存在的另一個問題是距误,對視頻本身的要求較高簸搞,抗干擾能力不強(qiáng)。這主要是它本身使用的模塊(template matching准潭、OCR等)導(dǎo)致的趁俊,旋轉(zhuǎn)、分辨率刑然、光照都會對識別效果造成影響寺擂;由于它強(qiáng)依賴預(yù)先準(zhǔn)備好的模板圖片,如果模板圖片的錄制環(huán)境與視頻有所差異泼掠,很容易導(dǎo)致誤判的發(fā)生怔软。
而SSIM本身的抗干擾能力相對較強(qiáng)。如果使用默認(rèn)的SSIM分類器择镇,所有的數(shù)據(jù)(訓(xùn)練集與測試集)都來源于同一個視頻挡逼,保證了環(huán)境的一致性,規(guī)避了不同環(huán)境(例如旋轉(zhuǎn)腻豌、光照家坎、分辨率等)帶來的影響叹谁,大幅度降低了誤判的發(fā)生。
Bug Report
可想而知的乘盖,要考慮到所有的場景是非常困難的,在項(xiàng)目前期很難做到憔涉。
有什么建議或者遇到問題可以通過issue反饋給我 :)
項(xiàng)目地址
https://github.com/williamfzc/stagesepx
原文由williamfzc發(fā)表于TesterHome社區(qū)订框,點(diǎn)擊[原文鏈接]直達(dá)原帖與作者在線交流。
今日份的知識已攝入兜叨!想要學(xué)習(xí)更多干貨知識穿扳、結(jié)識質(zhì)量行業(yè)大牛和業(yè)界精英?
第十屆中國互聯(lián)網(wǎng)測試開發(fā)大會·深圳国旷,了解下 >>