From ae4099b9e6b98caf0ccc17c133dad28f2760f503 Mon Sep 17 00:00:00 2001 From: Anastasia M Date: Fri, 26 Mar 2021 14:04:39 +0300 Subject: [PATCH] Merge pull request #854 from LupusSanctus:am/slice_steps * Added Steps support in DNN Slice layer * Added minor code corrections --- .../data/input_slice_opset_11_steps_2d.npy | Bin 0 -> 272 bytes .../data/input_slice_opset_11_steps_3d.npy | Bin 0 -> 560 bytes .../data/input_slice_opset_11_steps_4d.npy | Bin 0 -> 560 bytes .../data/input_slice_opset_11_steps_5d.npy | Bin 0 -> 992 bytes .../data/output_slice_opset_11_steps_2d.npy | Bin 0 -> 144 bytes .../data/output_slice_opset_11_steps_3d.npy | Bin 0 -> 200 bytes .../data/output_slice_opset_11_steps_4d.npy | Bin 0 -> 344 bytes .../data/output_slice_opset_11_steps_5d.npy | Bin 0 -> 272 bytes testdata/dnn/onnx/generate_onnx_models.py | 47 +++++++++++++++++- .../onnx/models/slice_opset_11_steps_2d.onnx | Bin 0 -> 608 bytes .../onnx/models/slice_opset_11_steps_3d.onnx | Bin 0 -> 887 bytes .../onnx/models/slice_opset_11_steps_4d.onnx | Bin 0 -> 634 bytes .../onnx/models/slice_opset_11_steps_5d.onnx | Bin 0 -> 621 bytes 13 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 testdata/dnn/onnx/data/input_slice_opset_11_steps_2d.npy create mode 100644 testdata/dnn/onnx/data/input_slice_opset_11_steps_3d.npy create mode 100644 testdata/dnn/onnx/data/input_slice_opset_11_steps_4d.npy create mode 100644 testdata/dnn/onnx/data/input_slice_opset_11_steps_5d.npy create mode 100644 testdata/dnn/onnx/data/output_slice_opset_11_steps_2d.npy create mode 100644 testdata/dnn/onnx/data/output_slice_opset_11_steps_3d.npy create mode 100644 testdata/dnn/onnx/data/output_slice_opset_11_steps_4d.npy create mode 100644 testdata/dnn/onnx/data/output_slice_opset_11_steps_5d.npy create mode 100644 testdata/dnn/onnx/models/slice_opset_11_steps_2d.onnx create mode 100644 testdata/dnn/onnx/models/slice_opset_11_steps_3d.onnx create mode 100644 testdata/dnn/onnx/models/slice_opset_11_steps_4d.onnx create mode 100644 testdata/dnn/onnx/models/slice_opset_11_steps_5d.onnx diff --git a/testdata/dnn/onnx/data/input_slice_opset_11_steps_2d.npy b/testdata/dnn/onnx/data/input_slice_opset_11_steps_2d.npy new file mode 100644 index 0000000000000000000000000000000000000000..ded66f863c0817e0b3143fdc84fa0dd9abea994e GIT binary patch literal 272 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+l>qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I$dItpf*ItsN4WCN~N=?VM08Yb_*=H0L_R`uRKQP)WOW_3gR+%pUJ9gJr` zV8OW5?#q^i`~Mqkw%dJpu3dTlSKGeDo%>C;w&e;tB5qMq? literal 0 HcmV?d00001 diff --git a/testdata/dnn/onnx/data/input_slice_opset_11_steps_3d.npy b/testdata/dnn/onnx/data/input_slice_opset_11_steps_3d.npy new file mode 100644 index 0000000000000000000000000000000000000000..9b31f475da4e2046d0b2debd1e54d60d1c5e7874 GIT binary patch literal 560 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+l>qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I%oItpe$q^YA&t3V#$x~gQfFW`{w{@aEH_Nukrwlb&Yc9QeBI}C?f<^* z!V~sS_Fc4(;ad0p$f|XFV|4fLZF{6|e{FWye$|tiRzIa3_D{cUYxjmp-u_;^vi+Lp z)%)^dgdGfTf7m}^o%h}=jX&(?&G)j`e7=oQ?_kC>MyRY%pto_=V^85egyxsTx&sY0msdM`_#_Y3g zZq?fVdxf<9)JInPU#TSRzfyf|pA4tp{?n%g?BzFE*h${KYb$BvxPP%;m0faR$o@YH zTlP2GT(D2hFtFR^dTzg7)z^LVP6_QRELpUV{kD*OZbiNQUrla%qm+fVX-{J8cdeMe N$9Ze5{d`IH{QxK2?`!}7 literal 0 HcmV?d00001 diff --git a/testdata/dnn/onnx/data/input_slice_opset_11_steps_4d.npy b/testdata/dnn/onnx/data/input_slice_opset_11_steps_4d.npy new file mode 100644 index 0000000000000000000000000000000000000000..0dc840e0eb5cd4d5cc3732e13e886b3a88a66b29 GIT binary patch literal 560 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+l>qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I$-Its=*3T8m0siRPeV($HvUq`{!);{teqt*xfafus_|UX)l*CYrl4*w0(sT z&wjgSQ|IKHUCL`GWmk3v29io&WATXtiX2c4vvbo6i#a2c=s3XRQ&i zzvDaE?*C?vz29E9?{|%OwRhXe_4`caPug!ZbFtgoe#p+iT4diFD`k5()(QI}Em!S# z&lcQwd@sj-?LVyhySroTSp|~!f7lsjFF0wk{i^JT``4=N-G6oGgZ)4L%(h+2-?d*U zc89%b{iD6IYlZE9TI=qslyBav_`1b@nreo9Z`tR4yf5SSSDTC2ot^O6{_Dfzc2cg2 zdp&f0_y5`ccVE23&V9d6irTaNn7rTaoX|dzEcbo)tk>^dSii}>@SKGGGxP8J-j!JF z@7%|G;2DSheij23`#rq;_Ukuz*)Ns0-B%cDy`QIX>y) literal 0 HcmV?d00001 diff --git a/testdata/dnn/onnx/data/input_slice_opset_11_steps_5d.npy b/testdata/dnn/onnx/data/input_slice_opset_11_steps_5d.npy new file mode 100644 index 0000000000000000000000000000000000000000..0c9a2681861f1876ba317a5bab9e45add0c0b6ef GIT binary patch literal 992 zcmb7&{ZrF*9Kb=q#~2TVU3y&;IEQ1YFi3)ZKksjHGp3-7YXx)&3nx=1g8@@{%EJ(n zM-y=zV=!bwYBv)u9>3rB}EOkJTfEz5}3I*J^ zmfR%Z7IObDtIK+eSmBjM{3DPH8P$5+QT_&|tCQG^!bSE;t_1A52n_n%1#~(qDev)z z4?n0!>-;mqkvC#uk{JhIxkccU8W`R+MYgL>;q&)gS&Jc=x#>MY1_U(_YFv+LXM5Pd zISalVz6`V6o6t|y3Rz7@2{p6=GV`}uR6a6Hon0h#_iIVyoIh+S$*1|Y7tD%nXG!Js zIy&{74gB2=?2&s{v3<>-VB(u_B5AEfq;$2UT{f`mj0#4O>k5U^Q52W0hPuB7q1~k% zgeRNeBY#hjT<*d%{4i+CG2^O=WY{P#p*B1f!;8ctm=bINw}>%js&^&5UR6yEY5yTv zgDF5OhRKky53b2{aHTDP?)dEhDSBuk*7zp&@T>s526OF=$C~I-j`PIhH*q9%CDiKxrbwSa@Byck~v>W*YF^WF!Pe)Wc^Q4@>CW zED08H@F&?Jrugr7`VU+4ASI^^JIC+A&6xrA-H{s5Gu_P9X$2lTpN)3ca-y3Hgs{;$ zczDAXWw$F~FLw1kGWWudNuKnZl17NDa;HDBHLSi-RgH56=$+lE_X zrL3283#+I%K~>NtkjB`k(dY%%xwM3>nR!a$3(UkNWei&r)}lwpYw#R8s3_kM2>JaY zelc~vpL5|WG=BLiG(s)Dl;=%V1TgG_UmIZanPOs#svrkjJ@Dr}(`=Fc0vrG6Yy9Th zMJj&cQw%k3L`Up6+7^_IENBC?+fR}@{T9@ZU5CnDW^!=RO|+0~APEJ%#Q1S1H51i_ zrzb;j{?7ZP_Pb}Iu#qW{THnTTmtGvczMbiIAjGU(1I1zrtjcC6)BV7Dosfc-iWco2 OJPKh>uKlqxKjvQ+QpP+0 literal 0 HcmV?d00001 diff --git a/testdata/dnn/onnx/data/output_slice_opset_11_steps_2d.npy b/testdata/dnn/onnx/data/output_slice_opset_11_steps_2d.npy new file mode 100644 index 0000000000000000000000000000000000000000..f7ff62cc5cc6eb279d2d2862097e05d039f0ddb6 GIT binary patch literal 144 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+l>qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= oXCxM+0{I$7ItoUbItsN4WCO0;GYj`wFfO$#&;M%M_o>ew08yJGga7~l literal 0 HcmV?d00001 diff --git a/testdata/dnn/onnx/data/output_slice_opset_11_steps_3d.npy b/testdata/dnn/onnx/data/output_slice_opset_11_steps_3d.npy new file mode 100644 index 0000000000000000000000000000000000000000..379a9964c4c5ed41f7821aeedcb03b0267d453a6 GIT binary patch literal 200 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+l>qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I$7Its=>q^YA&t3V#$x~gQf@3vuq{d|9&{Zq=G>?>V=$i7ci!d|6n|9%~* xCw2#WFYG_V;A8)>dG9{$O!@t=d8dT-vELT52LKH*J(U0e literal 0 HcmV?d00001 diff --git a/testdata/dnn/onnx/data/output_slice_opset_11_steps_4d.npy b/testdata/dnn/onnx/data/output_slice_opset_11_steps_4d.npy new file mode 100644 index 0000000000000000000000000000000000000000..37375e6829c97664d301dc15459320609b34b985 GIT binary patch literal 344 zcmbR27wQ`j$;eQ~P_3SlTAW;@Zl$1ZlV+l>qoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I$-Its>MWTvU3P^&-&;M$UT(*88JhkdzV*Z!Vfi~aAN_SkbM^x72$U$C=h zKV>&*fxcaZOM<=p-%0zVjyBnAH%i-A2=VNzj=+ex`9?)A|1-T!C%-+l2CJNFfyldykg{(axO t5{vzv`*;sLqoAIaUsO_*m=~X4l#&V(cT3DEP6dh= zXCxM+0{I$-ItoTQ3P93KN5NQAN1;}MRKV4-t8U*nZ3TO`Zu$MIjeqUCHp6=Vj2Wlx zqQhtI=S!Ts|A@$SyW`%s?0$!^?7J*<(av2-<-WW_BJdl-aq4ww*Bi1O8evXZ{PhS cR=^>s@5eqJFV_8D4*dHCm3!?9*ml?f07o-rJOBUy literal 0 HcmV?d00001 diff --git a/testdata/dnn/onnx/generate_onnx_models.py b/testdata/dnn/onnx/generate_onnx_models.py index 83777c983..b09ca5fb5 100644 --- a/testdata/dnn/onnx/generate_onnx_models.py +++ b/testdata/dnn/onnx/generate_onnx_models.py @@ -378,10 +378,14 @@ def forward(self, x): class Slice(nn.Module): - def __init__(self): + def __init__(self, custom_slice=None): + self.custom_slice=custom_slice super(Slice, self).__init__() def forward(self, x): + if self.custom_slice: + return x[self.custom_slice] + return x[..., 1:-1, 0:3] input = Variable(torch.randn(1, 2, 4, 4)) @@ -389,6 +393,47 @@ def forward(self, x): save_data_and_model("slice", input, model) save_data_and_model("slice_opset_11", input, model, version=11) +input_2 = Variable(torch.randn(6, 6)) +custom_slice_list = [ + slice(1, 3, 1), + slice(0, 3, 2) +] +model_2 = Slice(custom_slice=custom_slice_list) +save_data_and_model("slice_opset_11_steps_2d", input_2, model_2, version=11) +postprocess_model("models/slice_opset_11_steps_2d.onnx", [['height', 'width']]) + +input_3 = Variable(torch.randn(3, 6, 6)) +custom_slice_list_3 = [ + slice(None, None, 2), + slice(None, None, 2), + slice(None, None, 2) +] +model_3 = Slice(custom_slice=custom_slice_list_3) +save_data_and_model("slice_opset_11_steps_3d", input_3, model_3, version=11) +postprocess_model("models/slice_opset_11_steps_3d.onnx", [[3, 'height', 'width']]) + +input_4 = Variable(torch.randn(1, 3, 6, 6)) +custom_slice_list_4 = [ + slice(0, 5, None), + slice(None, None, None), + slice(1, None, 2), + slice(None, None, None) +] +model_4 = Slice(custom_slice=custom_slice_list_4) +save_data_and_model("slice_opset_11_steps_4d", input_4, model_4, version=11) +postprocess_model("models/slice_opset_11_steps_4d.onnx", [["batch_size", 3, 'height', 'width']]) + +input_5 = Variable(torch.randn(1, 2, 3, 6, 6)) +custom_slice_list_5 = [ + slice(None, None, None), + slice(None, None, None), + slice(0, None, 3), + slice(None, None, None), + slice(None, None, 2) +] +model_5 = Slice(custom_slice=custom_slice_list_5) +save_data_and_model("slice_opset_11_steps_5d", input_5, model_5, version=11) + class Eltwise(nn.Module): def __init__(self): diff --git a/testdata/dnn/onnx/models/slice_opset_11_steps_2d.onnx b/testdata/dnn/onnx/models/slice_opset_11_steps_2d.onnx new file mode 100644 index 0000000000000000000000000000000000000000..efbf5122f1838f6eb07d62d228ee560e82bc6803 GIT binary patch literal 608 zcma*l%SyvQ6b4|=)HK7dlyDS^S-6P1LM8W0m%4N7&P}N`m`G_#9WQ+wU&psH4J}N& z7#tWli}Rh~{EY0gz1pZ|J+IteaGOnjPmwSMF7BJ`}y8zhf{=@jKR^#$} v)vVRibsHOBVJL|&Ah}_u7e5>FN?*?h;N-n@GA5^4=5QkqiNuakeppXNW&P1?ZF z!;*o4Wtr#Qo!NKUm^m2PyEjS-qbJy|HBkOAXjw|2e@j14jG5K!_1igbX1;$hjr`egJttfK=~F zG3j5ukR}UI^%e{$IMf6!7*cSk4O%dw;7}u6qV8O0pfl7dbw*k&7Hn$=+53UJ-S?Qi z)M{3KuA7Z|XkEn5@r(gKL5q!$@o`nw&y_-l+aL9lsvb|ZV9YtXy68w3SzVznzOmfN EKYO9gMgRZ+ literal 0 HcmV?d00001 diff --git a/testdata/dnn/onnx/models/slice_opset_11_steps_4d.onnx b/testdata/dnn/onnx/models/slice_opset_11_steps_4d.onnx new file mode 100644 index 0000000000000000000000000000000000000000..e714b1fa81141eb88d46ad896c9f98019004def3 GIT binary patch literal 634 zcma*ly-ve05C?EBC5d$)6rB)5#1zCpQBjiSlMyynHkK$25ecfAsx_Yrufn_WAmD~n zIu;90H{9><^U1;@d-*22Rn@qo;3B>J+Qpb4aPhiZtYx{7h3|=NJ$BK2F6U46_&|VT z--w;zd_vDc#)AK|DPy6AnSXDK7@KMsFyk5=@?inw^#5V< z*vd)$y6jf+PVLO6b37A3r?^izD`nLb>-N1yLyS<6)zs}nBhe=FrM;KU>=;!t9pRxO Rj%tFwano!F>&kHUegIiDip~H4 literal 0 HcmV?d00001 diff --git a/testdata/dnn/onnx/models/slice_opset_11_steps_5d.onnx b/testdata/dnn/onnx/models/slice_opset_11_steps_5d.onnx new file mode 100644 index 0000000000000000000000000000000000000000..62ccae5f377eacda538da9f95c39a6864fa161e4 GIT binary patch literal 621 zcmaLV&1wQM5CC8&t8SP=S%Qa>i)DKgESvq`9_y{w-g*%$3$=(VHZASRSMjNQ9h?0T z29X2?<}lxonS>98yZzJEZuub{^_V>!`wP)Y4n6Svg9CAq?AwUQbA_RpH3rM8?;KzPl6 un0~JGwEW#xJN-5`YZDUhIEWE44knlh$HcIX_j@#ru2j^Ob%pcHyqkaLEQvn= literal 0 HcmV?d00001