Skip to content

Commit 98e99bd

Browse files
authored
Add selfie-segmentation test case (#36)
1 parent f977f08 commit 98e99bd

File tree

2 files changed

+58
-0
lines changed

2 files changed

+58
-0
lines changed

generate-config.js

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ const ORIGINAL_CONFIG = {
6868
"handwritten-digits-classification": "/lenet/",
6969
"image-classification": "/image_classification/?numRuns=50",
7070
"object-detection": "/object_detection/",
71+
"selfie-segmentation": "/selfie_segmentation/",
7172
"semantic-segmentation": "/semantic_segmentation/",
7273
"noise-suppression-nsnet2": "/nsnet2/",
7374
"noise-suppression-rnnoise": "/rnnoise/",
@@ -137,6 +138,11 @@ const ORIGINAL_CONFIG = {
137138
fp16: ["ssdMobileNetV1"]
138139
}
139140
},
141+
"selfie-segmentation": {
142+
cpu: { fp16: ["general"], fp32: ["general"] },
143+
gpu: { fp16: ["general"], fp32: ["general"] },
144+
npu: { fp16: ["general"], fp32: ["general"] }
145+
},
140146
"semantic-segmentation": {
141147
cpu: { fp32: ["deepLabV3MobileNetV2"] },
142148
gpu: { fp32: ["deepLabV3MobileNetV2"] }
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
const _ = require("lodash");
2+
3+
const util = require("../../utils/util");
4+
const pageElement = require("../../page-elements/samples");
5+
6+
module.exports = async function ({ config, backend, dataType, model }) {
7+
const args = [];
8+
if (backend && dataType && model) {
9+
args.push([backend, dataType, model]);
10+
} else {
11+
for (const [backend, dataTypes] of Object.entries(config.samples["selfie-segmentation"])) {
12+
for (const [dataType, models] of Object.entries(dataTypes)) {
13+
for (const model of models) {
14+
args.push([backend, dataType, model]);
15+
}
16+
}
17+
}
18+
}
19+
const results = {};
20+
for (const [backend, dataType, model] of args) {
21+
const browser = await util.launchBrowser(config);
22+
const page = (await browser.pages())[0];
23+
page.setDefaultTimeout(config.timeout);
24+
try {
25+
await page.goto(config.samplesBasicUrl + config.samplesUrl["selfie-segmentation"], { waitUntil: "networkidle0" });
26+
await Promise.race([
27+
(async function () {
28+
await page.waitForSelector(`::-p-xpath(${pageElement.backendText})`);
29+
await util.clickElementIfEnabled(page, `#${backend}`);
30+
await util.clickElementIfEnabled(page, pageElement[dataType]);
31+
await util.clickElementIfEnabled(page, `#${model}`);
32+
await page.waitForSelector(pageElement.computeTime, { visible: true });
33+
})(),
34+
util.throwErrorOnElement(page, pageElement.alertWarning)
35+
]);
36+
let result = {
37+
buildTime: await page.$eval(pageElement.buildTime, (el) => el.textContent),
38+
inferenceTime: await page.$eval(pageElement.computeTime, (el) => el.textContent)
39+
};
40+
result = _.mapValues(result, util.formatTimeResult);
41+
console.log(result);
42+
_.set(results, [backend, dataType, model], result);
43+
} catch (error) {
44+
console.warn(error.message);
45+
_.set(results, [backend, dataType, model, "error"], error.message.substring(0, config.errorMsgMaxLength));
46+
} finally {
47+
await util.saveScreenshot(page, `selfie-segmentation_${backend}_${dataType}_${model}`);
48+
await browser.close();
49+
}
50+
}
51+
return { "selfie-segmentation": results };
52+
};

0 commit comments

Comments
 (0)