From c3207b9f0657abd957bec7aed5e19fb3527cb1bd Mon Sep 17 00:00:00 2001 From: Abduragim Shtanchaev Date: Wed, 27 Dec 2023 19:04:39 +0300 Subject: [PATCH 1/4] changed weights of yolov7 --- testdata/dnn/download_models.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/testdata/dnn/download_models.py b/testdata/dnn/download_models.py index c6c0338a6..332d93b02 100755 --- a/testdata/dnn/download_models.py +++ b/testdata/dnn/download_models.py @@ -988,13 +988,12 @@ def is_archive(self): sha='2b181b55d1d7af718eaca6cabdeb741217b64c73', filename='wechat_2021-01/sr.caffemodel'), Model( - name='yolov7_not_simplified', + name='yolov7', url=[ - 'https://docs.google.com/uc?export=download&id=1ljSh81ydO5ylsnDoV_mt3zj5RX_cgLu8', - 'https://dl.opencv.org/models/yolov7/yolov7_not_simplified.onnx' + 'https://dl.opencv.org/models/yolov7/yolov7.onnx' ], - sha='fcd0fa401c83bf2b29e18239a9c2c989c9b8669d', - filename='onnx/models/yolov7_not_simplified.onnx'), + sha='9f5199c266418462771a26a7b8ea25a90412ce2e', + filename='onnx/models/yolov7.onnx'), Model( name='yolox_s_inf_decoder', url=[ From ce4ba29d9da7fa136fc0d638ca22e8262f28d87b Mon Sep 17 00:00:00 2001 From: fengyuentau Date: Wed, 3 Jan 2024 14:57:33 +0800 Subject: [PATCH 2/4] add model and test data --- .../onnx/data/input_layer_norm_no_fusion.npy | Bin 0 -> 1152 bytes .../onnx/data/output_layer_norm_no_fusion.npy | Bin 0 -> 1152 bytes .../generate_onnx_models_with_onnxscript.py | 33 ++++++++++++++++-- .../dnn/onnx/models/layer_norm_no_fusion.onnx | Bin 0 -> 1039 bytes 4 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 testdata/dnn/onnx/data/input_layer_norm_no_fusion.npy create mode 100644 testdata/dnn/onnx/data/output_layer_norm_no_fusion.npy create mode 100644 testdata/dnn/onnx/models/layer_norm_no_fusion.onnx diff --git a/testdata/dnn/onnx/data/input_layer_norm_no_fusion.npy b/testdata/dnn/onnx/data/input_layer_norm_no_fusion.npy new file mode 100644 index 0000000000000000000000000000000000000000..1e38e79471ce6404d6e89799df96698c6c0eb817 GIT binary patch literal 1152 zcmbV={ZrF*0LOjUFvM8{l@kM(1p^&=AkX`L-fs~Tp-Dyz0|6T_LJ=67?GhhI#>0t} zpaMRek)nxSB6u8vcn3aY=ERir5|t3}R6KmRP%l%j>|f}0uU}rTZ87@AOAy6`>lBMLmkyT7wTPb=>$An_<0co3;o{It_>Cu+L_L6+o zSLx^wIgB%xBiS4Jr|7-%J_GE|=)RW68#Qunjk$_zmQu_PSjbJ~Ll`VlQu%PFl;rNg zm}BoU?Xf%8?9Ai2&9j-MY{kLTeRx*m&sPmr5!y79!ws`onzIz)av6Rr*b80A39S4} zNkheLC>_?b@6}~-VNj3Q*`Ao@ucqnfMnrW!LUVLJhR@GH@`M2qEcfQM0tE(jQ7HfA zB=%@x>DYTtY_Y`?zn&F*v4)C~$B-%V>HWJK4f6yIHkEL>Sb;r0&qZTx4T{wxqUq8; zM7mwYndLTd<3m5%Cn!0izZBIYat@?*3T>VXm)*_gSJUc{d2=S^&m9nA2&SX&b`(`> z(c(FURjvD_m4R_AytPxCTI|bpD8rFJiLXDg(z9&?CKR~v?Fv`A6*$wDn~tP=7Jm2e z4n)IebWzS_ebf$2)GuMz7&~5WF>vvvNnFupU}uyc7aR_yJ$@ALo?6Y#w?1I$*dA0% z(>PJPN0Mdk!i>>AR1|N={2&i*Exn23ZR25W-GPuHB~1~oeCgoASs`kQCtmCyxP?hY zMmqbQM59k1T=nT}PmQ6Ie*jNKbcvv}EEZo6qN%xnf4?;qg(8LJ>0Ve;W=-40_@#~jqB z%4w@i5qIo5$lGhAb8|kTO=ra8D~&i=oz0DL0W4cFMpPg0M&Q)x4FAc6zPl{=!8@0I z8h2`^J94Sam61bX3_o6reS>x^>W_!v5RiU4k8?j2%yNGTLtiGwY76n|XtubS^#@w& zYEc>C&&JGC822C;PO~mZz9%+`qr<*@8hsz($&Q>?Zsd)U^@LjrHgx#Vue$_MnnRMC z=X^%@)WM)Xi;>+^Skn>5r?U6xn6aGAigH}k>6qXOs2^CU{bvrH8j{doVrI%zE%(a` zu{tLaUG*~7hILDhmNOtVP4xCPSh(ynC@pbSN?)OaQ=H@5jnOVkOX&gL?f*F7Q z0xTWxu;qvrFJdRbHt+&{&MoljG;!H*1heW%-^4GN+H+W}OHwfO`^mJ1TbZ=I3f;S{ Q7|Q4pIW;BHzGvC|7YFsax&QzG literal 0 HcmV?d00001 diff --git a/testdata/dnn/onnx/data/output_layer_norm_no_fusion.npy b/testdata/dnn/onnx/data/output_layer_norm_no_fusion.npy new file mode 100644 index 0000000000000000000000000000000000000000..f47a86caf95a8f93f2ca27c7c8aa7022b965fad1 GIT binary patch literal 1152 zcmbW!`BT(&90u?;p#$-tNI5Kaz;O|G6by;$`*~<#hzJoG!-bdu5|Ard7Ai(u+C&by zq`-|(7D`kEBmxA1{eHkWgfVGZZpLG!wK#>uSVTtK{)OK2{PMhhd*)r}`^f>nz;&E2 zIVrsGh{U5}o->!{8fnktb9s^R;v{j{@sN0Nc*KA185Wlqq4UJ3Fj0iATifxu_I$3R zF1z?#3HN`T!TiMnPD$IuE8B1`URH8q=f^M0;#wxDWP=i;z@O0%6P8>N1 zqr;W(6MJLLDiorneJFT$j@9%J6Lm_lqRJ*0oqNYflDwR9h7Y)mkBBka*g&FY-oX21 z>)TyVx`H1RNBi|h$)3qv+}>vc(ZD$K_Jli{Ql#+udXP2ix`M?89*V=}*r_}hnl))e zm(R!vr_h4=)H@AHmlM#ceMlekI;m~`xNBD83!ix zM!oBIV!K<&)K2#jNj0Z^Oxws_*Sx(7I#)}^G%D0ImBTnS8?wM+%+2+K&Mja?7>mIDfynQf zf%jJeobFZ-p&%cs#$M{|Jc>1oE||RbBP%bJ)1M9%AUP$M@qMck9+wi}=)VoC56y|q zW-q)n)RHXgV3e>IvG&V7qPh4Erbd4T*Rc$WE*0@HSWoAzk|CI)WI^vdLi~u4%_-@mR6o>K!@sY#n{LM%fHZ!kt_%FlwPLoX`9+r zcfWx{_6k|P5kwwr%|o4O0m8MHNUZD*ar!+qBpLMBsl zpq84FUo$>~+fo}_=ib74sh%;y>3T?Qe`ve#rxCic1w^$&Nt~Jn;rOu>k3I5{-_Q)r z?Ot$h&9?=9w-Y5{&4e4~MNaH2fG|24Q$E%tSE7dSUOa|%ru#a4_il#SL<`gccjk2D z0C=17khx+A4^18ZFp+_~YKYV-DY1T;fuVJtg!50cONU<>4#vcwQs#{!r5-%@7a`ZK z9~zSy5;vVr1Pgk|G)X|;7k)5Lio&dTBitIeu9Ni=+~3hmO#V_LE58}@5x3BAqz`VA iV}zrwz=q{yEZiJI=&C!6;;k|9p@P&qHIZb=Bm4`aEei+$ literal 0 HcmV?d00001 diff --git a/testdata/dnn/onnx/generate_onnx_models_with_onnxscript.py b/testdata/dnn/onnx/generate_onnx_models_with_onnxscript.py index dc5942247..c908b7cf0 100644 --- a/testdata/dnn/onnx/generate_onnx_models_with_onnxscript.py +++ b/testdata/dnn/onnx/generate_onnx_models_with_onnxscript.py @@ -3,6 +3,8 @@ import onnx import onnxscript as ost from onnxscript import opset19 as op # opset19 is the lastest by 202309 +from onnxscript import opset11 +from onnxscript import opset13 np.random.seed(0) @@ -69,8 +71,6 @@ def greater_input_dtype_int64(x: ost.FLOAT[27, 9]) ->ost.BOOL[27, 9]: return y make_model_and_data(greater_input_dtype_int64, np.random.randint(0, 100, size=[27, 9], dtype=np.int64), force_saving_input_as_dtype_float32=True, force_saving_output_as_dtype_float32=True) -from onnxscript import opset11 - @ost.script() def two_resizes_with_shared_subgraphs(x: ost.FLOAT["batch", 1, "height", "width"], y: ost.FLOAT[1, 1, 3, 2], z: ost.FLOAT[1, 1, 2, 1]) ->ost.FLOAT["batch", 1, "height", "width"]: shape_src_1 = opset11.Shape(x) @@ -310,3 +310,32 @@ def einsum_const_inputs(input_0: ost.FLOAT[3, 2, 2, 4]) -> ost.FLOAT[3, 2, 2, 2] return op.Einsum(input_0, input_1, equation="bhwc, hkc -> bhwk") make_model_and_data(einsum_const_inputs, input_0_data) + +''' This subgraph looks the same as LayerNorm expanded, but it has + axes=1 in ReduceMean which does not meet the requirement of LayerNorm: + - axes[-1] = -1 or the axis of last dimension + - adjacent axes, e.g. [1, 2, 3] or [-3, -2, -1] +''' + +n = 1 +c = 4 +h = w = 8 +mul_weight = np.random.rand(c, 1, 1).astype(np.float32) +add_weight = np.random.rand(c, 1, 1).astype(np.float32) + +@ost.script() +def layer_norm_no_fusion(x: ost.FLOAT[n, c, h, w]) -> ost.FLOAT[n, c, h, w]: + reduce_mean = opset13.ReduceMean(x, axes=[1], keepdims=1) + sub = opset13.Sub(x, reduce_mean) + + pow = opset13.Pow(sub, opset13.Constant(value=onnx.helper.make_tensor("", onnx.TensorProto.FLOAT, [], np.array([2], dtype=np.float32)))) + reduce_mean_1 = opset13.ReduceMean(pow, axes=[1], keepdims=1) + add = opset13.Add(reduce_mean_1, opset13.Constant(value=onnx.helper.make_tensor("", onnx.TensorProto.FLOAT, [], np.array([9.999999974752427e-7], dtype=np.float32)))) + sqrt = opset13.Sqrt(add) + + div = opset13.Div(sub, sqrt) + mul = opset13.Mul(opset13.Constant(value=onnx.helper.make_tensor("", onnx.TensorProto.FLOAT, [c, 1, 1], mul_weight)), div) + add = opset13.Add(mul, opset13.Constant(value=onnx.helper.make_tensor("", onnx.TensorProto.FLOAT, [c, 1, 1], add_weight))) + + return add +make_model_and_data(layer_norm_no_fusion, np.random.rand(n, c, h, w).astype(np.float32)) diff --git a/testdata/dnn/onnx/models/layer_norm_no_fusion.onnx b/testdata/dnn/onnx/models/layer_norm_no_fusion.onnx new file mode 100644 index 0000000000000000000000000000000000000000..2e080b8b56d6bf2e3c1306d1c93b34ae7741eec6 GIT binary patch literal 1039 zcmb7?&2G~`5XZe)hpxtrYOShJC6ppd1r!MpyDcdds?*Q|5-I|Eq8H1-MoNh75XVV5 zR9q0x(GxGgnfKtxmA7Cfn>2AnRB_lSo{!)B=R>R Date: Tue, 9 Jan 2024 12:57:44 +0300 Subject: [PATCH 3/4] added download link for yolo-nas model --- testdata/dnn/download_models.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/testdata/dnn/download_models.py b/testdata/dnn/download_models.py index 332d93b02..8ce896792 100755 --- a/testdata/dnn/download_models.py +++ b/testdata/dnn/download_models.py @@ -1012,6 +1012,13 @@ def is_archive(self): url='https://dl.opencv.org/models/yolov8/yolov8n.onnx', sha='136807b88d0b02bc226bdeb9741141d857752e10', filename='onnx/models/yolov8n.onnx'), + + Model( + name='yolo_nas_s', + url='https://dl.opencv.org/models/yolo-nas/yolo_nas_s.onnx', + sha='089942fbdf8591875a7a6ff10ac50fb6864e7aa4', + filename='onnx/models/yolo_nas_s.onnx'), + Model( name='NanoTrackV1 (ONNX, backbone)', url='https://raw.githubusercontent.com/zihaomu/opencv_extra_data_backup/main/NanoTrack/models/nanotrack_backbone_sim.onnx', From f41fae3b4cf98e205ea9f4cc655c52dfd3d40768 Mon Sep 17 00:00:00 2001 From: jimmylaw21 <95002380+jimmylaw21@users.noreply.github.com> Date: Fri, 12 Jan 2024 21:37:56 +0800 Subject: [PATCH 4/4] Merge pull request #1131 from jimmylaw21:dnn-onnx-add-group-norm-layer * put-gput group norm tests into conformance opencv_extra Attention: The data provided here differ from the original data found in onnx/onnx/backend/test/data/node. In response to the issue outlined in [ONNX Issue #5466](https://github.com/onnx/onnx/issues/5466), I have generated new input and output datasets for the OpenCV test data. It's important to note that the tensor shape of the scale and bias are based on the C (channels) parameter. * change onnx model * Synchronize with onnx issue 5808 --- .../test_group_normalization_epsilon/model.onnx | Bin 0 -> 237 bytes .../test_data_set_0/input_0.pb | 1 + .../test_data_set_0/input_1.pb | 1 + .../test_data_set_0/input_2.pb | 1 + .../test_data_set_0/output_0.pb | Bin 0 -> 208 bytes .../test_group_normalization_example/model.onnx | Bin 0 -> 218 bytes .../test_data_set_0/input_0.pb | 1 + .../test_data_set_0/input_1.pb | 1 + .../test_data_set_0/input_2.pb | 1 + .../test_data_set_0/output_0.pb | 2 ++ 10 files changed, 8 insertions(+) create mode 100644 testdata/dnn/onnx/conformance/node/test_group_normalization_epsilon/model.onnx create mode 100644 testdata/dnn/onnx/conformance/node/test_group_normalization_epsilon/test_data_set_0/input_0.pb create mode 100644 testdata/dnn/onnx/conformance/node/test_group_normalization_epsilon/test_data_set_0/input_1.pb create mode 100644 testdata/dnn/onnx/conformance/node/test_group_normalization_epsilon/test_data_set_0/input_2.pb create mode 100644 testdata/dnn/onnx/conformance/node/test_group_normalization_epsilon/test_data_set_0/output_0.pb create mode 100644 testdata/dnn/onnx/conformance/node/test_group_normalization_example/model.onnx create mode 100644 testdata/dnn/onnx/conformance/node/test_group_normalization_example/test_data_set_0/input_0.pb create mode 100644 testdata/dnn/onnx/conformance/node/test_group_normalization_example/test_data_set_0/input_1.pb create mode 100644 testdata/dnn/onnx/conformance/node/test_group_normalization_example/test_data_set_0/input_2.pb create mode 100644 testdata/dnn/onnx/conformance/node/test_group_normalization_example/test_data_set_0/output_0.pb diff --git a/testdata/dnn/onnx/conformance/node/test_group_normalization_epsilon/model.onnx b/testdata/dnn/onnx/conformance/node/test_group_normalization_epsilon/model.onnx new file mode 100644 index 0000000000000000000000000000000000000000..8e101324c7dca28ad3d05eb069d391866b9f3daa GIT binary patch literal 237 zcmd zd>*p?c&O$mX`qEdVq78|j6wojOdQNW%mTzrARHwOb&3!d7Y9%QNP;Cw2z?j@$ ?.z8s?bhdӽ9>(>%?^B?0= B>]ת>=?RiJ>Z/d#S'?K]?=C@(Hm;= ?2??>>Ec! >*z??Oƾmǚ6&õgڿ?xFKྙ[ G? \ No newline at end of file diff --git a/testdata/dnn/onnx/conformance/node/test_group_normalization_epsilon/test_data_set_0/input_1.pb b/testdata/dnn/onnx/conformance/node/test_group_normalization_epsilon/test_data_set_0/input_1.pb new file mode 100644 index 000000000..7282ad4ad --- /dev/null +++ b/testdata/dnn/onnx/conformance/node/test_group_normalization_epsilon/test_data_set_0/input_1.pb @@ -0,0 +1 @@ +BscaleJ4οYL=e> \ No newline at end of file diff --git a/testdata/dnn/onnx/conformance/node/test_group_normalization_epsilon/test_data_set_0/input_2.pb b/testdata/dnn/onnx/conformance/node/test_group_normalization_epsilon/test_data_set_0/input_2.pb new file mode 100644 index 000000000..92aff8b7e --- /dev/null +++ b/testdata/dnn/onnx/conformance/node/test_group_normalization_epsilon/test_data_set_0/input_2.pb @@ -0,0 +1 @@ +BbiasJ kQN> \ No newline at end of file diff --git a/testdata/dnn/onnx/conformance/node/test_group_normalization_epsilon/test_data_set_0/output_0.pb b/testdata/dnn/onnx/conformance/node/test_group_normalization_epsilon/test_data_set_0/output_0.pb new file mode 100644 index 0000000000000000000000000000000000000000..ffa434be769811f1abdff628173a557ffcd07ac7 GIT binary patch literal 208 zcmV;>05AUt0|*2N0tf;S0YU+JO27foN%Ft^NPj-n&?vu>6Dh#sF0sGrl}o>u-k85u zTz9`lG4Q|OE7Cp?Ro*_R K(`*mnlvxTnqxD085)M A7XSbN literal 0 HcmV?d00001 diff --git a/testdata/dnn/onnx/conformance/node/test_group_normalization_example/test_data_set_0/input_0.pb b/testdata/dnn/onnx/conformance/node/test_group_normalization_example/test_data_set_0/input_0.pb new file mode 100644 index 000000000..fe9ab9da0 --- /dev/null +++ b/testdata/dnn/onnx/conformance/node/test_group_normalization_example/test_data_set_0/input_0.pb @@ -0,0 +1 @@ +BxJx?h>z?j@$ ?.z8s?bhdӽ9>(>%?^B?0= B>]ת>=?RiJ>Z/d#S'?K]?=C@(Hm;= ?2??>>Ec! >*z??Oƾmǚ6&õgڿ?xFKྙ[ G? \ No newline at end of file diff --git a/testdata/dnn/onnx/conformance/node/test_group_normalization_example/test_data_set_0/input_1.pb b/testdata/dnn/onnx/conformance/node/test_group_normalization_example/test_data_set_0/input_1.pb new file mode 100644 index 000000000..7282ad4ad --- /dev/null +++ b/testdata/dnn/onnx/conformance/node/test_group_normalization_example/test_data_set_0/input_1.pb @@ -0,0 +1 @@ +BscaleJ4οYL=e> \ No newline at end of file diff --git a/testdata/dnn/onnx/conformance/node/test_group_normalization_example/test_data_set_0/input_2.pb b/testdata/dnn/onnx/conformance/node/test_group_normalization_example/test_data_set_0/input_2.pb new file mode 100644 index 000000000..92aff8b7e --- /dev/null +++ b/testdata/dnn/onnx/conformance/node/test_group_normalization_example/test_data_set_0/input_2.pb @@ -0,0 +1 @@ +BbiasJ kQN> \ No newline at end of file diff --git a/testdata/dnn/onnx/conformance/node/test_group_normalization_example/test_data_set_0/output_0.pb b/testdata/dnn/onnx/conformance/node/test_group_normalization_example/test_data_set_0/output_0.pb new file mode 100644 index 000000000..a5bebd8a4 --- /dev/null +++ b/testdata/dnn/onnx/conformance/node/test_group_normalization_example/test_data_set_0/output_0.pb @@ -0,0 +1,2 @@ +ByJ!,>>()NKew?4U*=?:2?>z>@>D.!оu>J>8b?> ?G?86B?>|>+?@ YA\}Uz> +7?ڇo?Q<#>W>&>TV? \ No newline at end of file