diff --git a/common/utils.js b/common/utils.js index 627ddf73..a588fd8e 100644 --- a/common/utils.js +++ b/common/utils.js @@ -484,3 +484,18 @@ export function permuteData(array, dims, axes) { return [permutedData, shape]; } + +export function getDefaultLayout(deviceType) { + const userAgent = navigator.userAgent; + if (userAgent.indexOf('Linux') != -1 || userAgent.indexOf('Android') != -1 || + userAgent.indexOf('CrOS') != -1) { + return 'nhwc'; + } else { + // Windows or Mac platform. + if (deviceType.indexOf('cpu') != -1) { + return 'nhwc'; + } else if (deviceType.indexOf('gpu') != -1) { + return 'nchw'; + } + } +} diff --git a/face_recognition/main.js b/face_recognition/main.js index 0a35aafa..f212aa3c 100644 --- a/face_recognition/main.js +++ b/face_recognition/main.js @@ -51,13 +51,7 @@ $(document).ready(async () => { $('#backendBtns .btn').on('change', async (e) => { if (inputType === 'camera') utils.stopCameraStream(rafReq, stream); - if ($(e.target).attr('id').indexOf('cpu') != -1) { - layout = 'nhwc'; - } else if (($(e.target).attr('id').indexOf('gpu') != -1)) { - layout = 'nchw'; - } else { - throw new Error('Unknown backend'); - } + layout = utils.getDefaultLayout($(e.target).attr('id')); await main(); }); diff --git a/facial_landmark_detection/main.js b/facial_landmark_detection/main.js index 4daf5917..d075015d 100644 --- a/facial_landmark_detection/main.js +++ b/facial_landmark_detection/main.js @@ -47,13 +47,7 @@ $(document).ready(async () => { $('#backendBtns .btn').on('change', async (e) => { if (inputType === 'camera') utils.stopCameraStream(rafReq, stream); - if ($(e.target).attr('id').indexOf('cpu') != -1) { - layout = 'nhwc'; - } else if (($(e.target).attr('id').indexOf('gpu') != -1)) { - layout = 'nchw'; - } else { - throw new Error('Unknown backend'); - } + layout = utils.getDefaultLayout($(e.target).attr('id')); await main(); }); diff --git a/image_classification/main.js b/image_classification/main.js index b92b4a15..7d6ab15c 100644 --- a/image_classification/main.js +++ b/image_classification/main.js @@ -51,13 +51,7 @@ $(document).ready(async () => { $('#backendBtns .btn').on('change', async (e) => { if (inputType === 'camera') utils.stopCameraStream(rafReq, stream); - if ($(e.target).attr('id').indexOf('cpu') != -1) { - layout = 'nhwc'; - } else if (($(e.target).attr('id').indexOf('gpu') != -1)) { - layout = 'nchw'; - } else { - throw new Error('Unknown backend'); - } + layout = utils.getDefaultLayout($(e.target).attr('id')); await main(); }); diff --git a/object_detection/main.js b/object_detection/main.js index 4770ac4a..68007236 100644 --- a/object_detection/main.js +++ b/object_detection/main.js @@ -49,13 +49,7 @@ $(document).ready(async () => { $('#backendBtns .btn').on('change', async (e) => { if (inputType === 'camera') utils.stopCameraStream(rafReq, stream); - if ($(e.target).attr('id').indexOf('cpu') != -1) { - layout = 'nhwc'; - } else if (($(e.target).attr('id').indexOf('gpu') != -1)) { - layout = 'nchw'; - } else { - throw new Error('Unknown backend'); - } + layout = utils.getDefaultLayout($(e.target).attr('id')); await main(); }); diff --git a/semantic_segmentation/main.js b/semantic_segmentation/main.js index 69cb90f2..26bccdf4 100644 --- a/semantic_segmentation/main.js +++ b/semantic_segmentation/main.js @@ -49,13 +49,7 @@ $(window).on('load', () => { $('#backendBtns .btn').on('change', async (e) => { if (inputType === 'camera') utils.stopCameraStream(rafReq, stream); - if ($(e.target).attr('id').indexOf('cpu') != -1) { - layout = 'nhwc'; - } else if (($(e.target).attr('id').indexOf('gpu') != -1)) { - layout = 'nchw'; - } else { - throw new Error('Unknown backend'); - } + layout = utils.getDefaultLayout($(e.target).attr('id')); await main(); });