This repository was archived by the owner on Apr 18, 2023. It is now read-only.

Description
Add new super-resolution model from openvino.
Here is the corresponding information of the model :
| Model |
OpenVINO Plugin |
Inference Time (ms) |
| single-image-super-resolution-1032 |
clDNN(UHD630) |
249 |
| single-image-super-resolution-1032 |
MKL-DNN(i7-10710U) |
1352 |
| single-image-super-resolution-1033 |
clDNN(UHD630) |
247 |
| single-image-super-resolution-1033 |
MKL-DNN(i7-10710U) |
1224 |
I tried to run these two models in polyfill, but I encountered the following problems during the model compilation stage:
Error: Tensor 7:2 is not found
at OpenVINOModelImporter._getTensorId (OpenVINOModelImporter.js:215)
at OpenVINOModelImporter._addOpsAndParams (OpenVINOModelImporter.js:388)
at OpenVINOModelImporter.createCompiledModel (OpenVINOModelImporter.js:49)
at async BaseRunner.compileModel (BaseRunner.js:255)
at async SuperResolutionExample._compileModel (BaseExample.js:394)
at async SuperResolutionExample.main (BaseExample.js:509)
The reason is that the Tensor corresponding to the input cannot be found in the .bin file when analysing the eltwise operation . This problem can be reproduced in this repo.
I only made small changes to OpenVINOModelImporter.js and the problem seems to be in the weight file or when OpenVINOModelImporter.js calling the _addTensorOperands function the corresponding Tensor was not resolved . Currently I can't locate the problem.
I encountered this error in eltwise operation in both models,corresponding to the operation of name = "39" and the operation of name = "37" respectively.
Activity
NALLEIN commentedon May 21, 2020
I fixed the problem that relu with multiple outputs may caused the following ops can't find corresponding input tensor. Relu needs to be executed seperately and there are continuous relu in this model.



Besides , there are 6D tensors in this model I can not find a clear format description for 6D tensor.
And I can just run the model in polyfill but cann't get right result due to these tensors.
Do you have any suggestions on dealing with 6D tensor permute, and data reorder ?
NALLEIN commentedon May 21, 2020
@huningxin Do you have any suggestions in this problem?
ibelem commentedon May 28, 2020
@huningxin Any suggestions?
huningxin commentedon May 28, 2020
Generally WebNN uses channel-last layout, OpenVINO uses channel-first layout. Could you please share what are the shapes (convolution, reshape, permute) when you run it with webml-polyfill?
NALLEIN commentedon May 28, 2020
Yes, the tensor is shown in this figure. The model reshapes the channel dimension to 3 dimensions and then 3 separate channel dimensions was permuted.

huningxin commentedon May 28, 2020
Is this figure just for openvino model? I suppose WebNN uses NHWC layout, e.g. so the shape of Convolution should be
[1, 360, 640, 72], is it?NALLEIN commentedon May 28, 2020
huningxin commentedon May 28, 2020
Did you try to permute
[1, 360, 720, 8, 3, 3]to[1, 360, 3, 640, 3, 8], then reshape to[1, 1080, 1920, 8]?NALLEIN commentedon May 28, 2020
Yes,I tried to permute
[1, 360, 720, 8, 3, 3]to[1, 360, 3, 640, 3, 8], or[1, 3, 360, 3, 640, 8]then reshape to[1, 1080, 1920, 8].NALLEIN commentedon Jun 16, 2020
I replace rehspape->permute->reshape with depthToSpace op:
This can bypass the processing of 6D tensor but still can not get the correct result,
reasons may be:
depthToSpace op cannot handle two const operations
The model requires some pre-processing of mean and variance