1 # 2 # Copyright (C) 2019 The Android Open Source Project 3 # 4 # Licensed under the Apache License, Version 2.0 (the "License"); 5 # you may not use this file except in compliance with the License. 6 # You may obtain a copy of the License at 7 # 8 # http://www.apache.org/licenses/LICENSE-2.0 9 # 10 # Unless required by applicable law or agreed to in writing, software 11 # distributed under the License is distributed on an "AS IS" BASIS, 12 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 # See the License for the specific language governing permissions and 14 # limitations under the License. 15 # 16 17 layout = BoolScalar("layout", False) # NHWC 18 19 # TEST 1: GENERATE_PROPOSALS_1 20 model = Model() 21 i1 = Input("scores", "TENSOR_FLOAT32", "{1, 2, 2, 2}") # scores 22 i2 = Input("bboxDeltas", "TENSOR_FLOAT32", "{1, 2, 2, 8}") # bounding box deltas 23 i3 = Input("anchors", "TENSOR_FLOAT32", "{2, 4}") # anchors 24 i4 = Input("imageInfo", "TENSOR_FLOAT32", "{1, 2}") # image info 25 o1 = Output("scoresOut", "TENSOR_FLOAT32", "{4}") # scores out 26 o2 = Output("roiOut", "TENSOR_FLOAT32", "{4, 4}") # roi out 27 o3 = Output("batchSplit", "TENSOR_INT32", "{4}") # batch split out 28 model = model.Operation("GENERATE_PROPOSALS", 29 i1, i2, i3, i4, 4.0, 4.0, -1, -1, 0.30, 1.0, layout).To(o1, o2, o3) 30 31 quant8 = DataTypeConverter().Identify({ 32 i1: ("TENSOR_QUANT8_ASYMM", 0.01, 100), 33 i2: ("TENSOR_QUANT8_ASYMM", 0.05, 128), 34 i3: ("TENSOR_QUANT16_SYMM", 0.125, 0), 35 i4: ("TENSOR_QUANT16_ASYMM", 0.125, 0), 36 o1: ("TENSOR_QUANT8_ASYMM", 0.01, 100), 37 o2: ("TENSOR_QUANT16_ASYMM", 0.125, 0) 38 }) 39 40 input0 = { 41 i1: [ # scores 42 0.8, 0.9, 0.85, 0.85, 43 0.75, 0.8, 0.9, 0.95 44 ], 45 i2: [ # bounding box deltas 46 0.5, 0.1, 0.1, 0.1, 0.5, 0.1, 0.5, 0.1, 47 -0.25, 0.1, -0.1, -0.1, -0.25, 0.1, 0.2, 0.1, 48 0.4, -0.1, -0.2, 0.2, 0.4, -0.1, -0.2, 0.2, 49 -0.2, -0.2, 0.2, 0.2, -0.2, -0.2, 0.2, 0.2 50 ], 51 i3: [0, 1, 4, 3, 1, 0, 3, 4], # anchors 52 i4: [32, 32], # image info 53 } 54 55 output0 = { 56 o1: [0.95, 0.9, 0.85, 0.8], # scores out 57 o2: [ # roi out 58 4.3785973, 2.7571943 , 6.8214025, 7.642805, 59 1.3512788, 0.18965816, 4.648721 , 4.610342, 60 3.1903253, 1.2951627 , 6.8096747, 3.1048374, 61 1.9812691, 3.1571944 , 3.6187308, 8.042806 62 ], 63 o3: [0, 0, 0, 0] 64 } 65 66 Example((input0, output0)).AddNchw(i1, i2, layout).AddVariations("relaxed", quant8, "float16") 67 68 # TEST 2: GENERATE_PROPOSALS_2 69 model = Model() 70 i1 = Input("scores", "TENSOR_FLOAT32", "{2, 4, 4, 4}") # scores 71 i2 = Input("bboxDeltas", "TENSOR_FLOAT32", "{2, 4, 4, 16}") # bounding box deltas 72 i3 = Input("anchors", "TENSOR_FLOAT32", "{4, 4}") # anchors 73 i4 = Input("imageInfo", "TENSOR_FLOAT32", "{2, 2}") # image info 74 o1 = Output("scoresOut", "TENSOR_FLOAT32", "{30}") # scores out 75 o2 = Output("roiOut", "TENSOR_FLOAT32", "{30, 4}") # roi out 76 o3 = Output("batchSplit", "TENSOR_INT32", "{30}") # batch split out 77 model = model.Operation("GENERATE_PROPOSALS", 78 i1, i2, i3, i4, 10.0, 10.0, 32, 16, 0.20, 1.0, layout).To(o1, o2, o3) 79 80 quant8 = DataTypeConverter().Identify({ 81 i1: ("TENSOR_QUANT8_ASYMM", 0.005, 0), 82 i2: ("TENSOR_QUANT8_ASYMM", 0.1, 128), 83 i3: ("TENSOR_QUANT16_SYMM", 0.125, 0), 84 i4: ("TENSOR_QUANT16_ASYMM", 0.125, 0), 85 o1: ("TENSOR_QUANT8_ASYMM", 0.005, 0), 86 o2: ("TENSOR_QUANT16_ASYMM", 0.125, 0) 87 }) 88 89 input0 = { 90 i1: [ # scores 91 0.885, 0.21 , 0.78 , 0.57 , 92 0.795, 0.66 , 0.915, 0.615, 93 0.27 , 0.69 , 0.645, 0.945, 94 0.465, 0.345, 0.855, 0.555, 95 0.48 , 0.6 , 0.735, 0.63 , 96 0.495, 0.03 , 0.12 , 0.225, 97 0.24 , 0.285, 0.51 , 0.315, 98 0.435, 0.255, 0.585, 0.06 , 99 0.9 , 0.75 , 0.18 , 0.45 , 100 0.36 , 0.09 , 0.405, 0.15 , 101 0. , 0.195, 0.075, 0.81 , 102 0.87 , 0.93 , 0.39 , 0.165, 103 0.825, 0.525, 0.765, 0.105, 104 0.54 , 0.705, 0.675, 0.3 , 105 0.42 , 0.045, 0.33 , 0.015, 106 0.84 , 0.135, 0.72 , 0.375, 107 0.495, 0.315, 0.195, 0.24 , 108 0.21 , 0.54 , 0.78 , 0.72 , 109 0.045, 0.93 , 0.27 , 0.735, 110 0.135, 0.09 , 0.81 , 0.705, 111 0.39 , 0.885, 0.42 , 0.945, 112 0.9 , 0.225, 0.75 , 0.3 , 113 0.375, 0.63 , 0.825, 0.675, 114 0.015, 0.48 , 0.645, 0.615, 115 0.33 , 0.465, 0.66 , 0.6 , 116 0.075, 0.84 , 0.285, 0.57 , 117 0.585, 0.165, 0.06 , 0.36 , 118 0.795, 0.855, 0.105, 0.45 , 119 0. , 0.87 , 0.525, 0.255, 120 0.69 , 0.555, 0.15 , 0.345, 121 0.03 , 0.915, 0.405, 0.435, 122 0.765, 0.12 , 0.51 , 0.18 123 ], 124 i2: [ # bounding box deltas 125 -1.9, 0.4, 1.4, 0.5, -1.5, -0.2, 0.3, 1.2, 0. , -0.6, 0.4, -1.3, 0.8, 0.9, -0.2, 0.8, 126 -0.2, 0. , 0.4, 0.1, -0.2, -1.6, -0.6, -0.1, -1. , 0.6, 0.5, -0.2, -1.7, -1.4, 0.5, -0.1, 127 -1.5, 1.3, -0.7, -0.9, 0.9, 0.2, -0.2, 0. , -0.7, 0.3, -0.4, -0.3, -0.5, -0.3, 1. , -0.7, 128 1.2, -0.3, 0. , 0.3, -0.7, 1. , -0.2, -0.6, -1.3, 0. , 0.3, 0.1, 0.4, 0.2, 2.4, 0. , 129 0.1, 0. , 0.7, -0.9, 0.1, -0.4, 0.3, -0.3, -0.7, 0.1, 0.7, 0. , -0.3, 1.6, 0. , 1.1, 130 0.4, -0.7, -0.9, 0. , 0. , 0.4, -0.6, 0.4, -1.9, -1.2, 0. , -0.3, 0.2, 0. , 0.1, 0.8, 131 0. , 0.9, -1.7, 0.3, 0.7, -0.7, 0.7, 1.2, -0.4, -0.1, -0.6, 0.6, -0.4, -0.2, 0.3, -0.5, 132 0. , 1. , -0.1, -0.3, -0.8, 0.1, -1.2, -2.4, 0.1, 1.4, 0.4, 0.1, -1.1, 0.4, -0.4, -0.2, 133 0.1, 0. , 0.7, 0.1, -1.3, 0.1, -0.4, -0.2, 0.2, 0.1, -0.8, 0. , -1.4, 2. , -0.6, -0.5, 134 0. , 1. , -1.4, -1.1, 0.6, -0.7, 0.4, 1.1, -1.1, 1.6, -0.3, 0. , -0.7, 0.3, -1.3, 0. , 135 0. , 0. , -0.3, 0. , -1.1, -1.5, 0.9, -1.4, -0.7, 0.1, -1.4, 0.9, 0.1, 0.2, -0.1, -1.7, 136 0.2, -0.3, -0.9, 1.1, 0.1, 1. , 1. , -0.9, 0.7, 0. , -0.3, 0.2, -0.8, -0.5, 0.6, -1.2, 137 1. , 0.6, 0. , -1.6, 0.1, -1.2, 0.7, 0.8, 0.5, -0.2, -0.8, -1.3, -0.3, 0. , 0. , 0.3, 138 -0.6, -0.3, 1.3, 0.1, 2.2, 1.2, -1.1, 0.1, 1.2, 1.2, 1.3, -0.9, 0.1, -0.5, 0.1, -0.7, 139 -1.3, 1.3, 0.1, 2. , 0. , 0.2, 0.6, 0. , -0.1, -0.4, -0.5, 0.1, -0.6, -0.3, 0.2, -0.4, 140 -0.4, -0.7, -1.8, 0.4, -0.7, 0.4, 1.4, -0.3, 0.8, 0. , 0.4, -0.1, -1. , 0.2, 0.5, -0.6, 141 -1.1, 0.2, 1.6, -0.2, -0.4, -0.9, 0. , 0.3, 0. , 0.3, -0.3, 0.3, 0.3, 1.9, 0.3, -0.5, 142 -0.8, -1.3, -0.8, 0.2, 0.2, -0.4, -0.3, 0.6, 0.2, -0.2, 1.2, 0. , 0. , -0.3, 0.3, -1.5, 143 -1. , -0.3, -0.7, -0.3, -0.4, -1. , -0.6, -0.7, -0.2, 0.6, -0.3, 0.5, -0.2, 0.3, -0.5, -1.7, 144 0. , -0.7, -0.1, -1.5, -0.9, 0.6, 0.3, -0.1, 0.2, 0.5, 0.6, -0.8, -0.3, 0.6, 0.9, -0.3, 145 0.1, -1.7, -1.5, 0. , -0.1, -0.3, 0.7, -0.3, -0.4, 0. , -0.4, -0.3, 0.1, 1.1, 1.8, -0.9, 146 0.6, 0.5, 0.2, -0.7, 0.2, 0.1, 1.2, 2.2, 0.3, 0.6, 0.4, 0.1, 0.2, 0. , -1.1, -0.2, 147 -0.7, 0. , -1.2, 0.6, -0.6, -0.2, -0.4, 0. , 0.7, -1.2, 0.8, 0. , -0.3, 0.2, 0.6, -1. , 148 -0.1, -0.1, 0. , -0.4, -0.2, 0.4, -1.4, 0.3, 0.1, 1.3, -0.2, -0.7, 0.6, 0.7, 0.6, 0.1, 149 -0.4, 0.1, -0.2, -0.8, 0. , -1.3, 1.2, 1.4, 1.1, 0.5, 0.3, 0. , 0.1, -0.4, 0.5, -0.1, 150 -0.5, 0.3, -0.7, 0.9, -0.1, -0.4, 0.2, -0.8, 1. , 1. , 0.1, 0.1, -0.2, 0. , -0.4, -0.3, 151 -0.8, 0.7, -0.9, -0.3, -0.3, -2.8, 1. , 1.4, 0. , -2.6, 1.1, -1.1, 0.5, 0.1, -0.4, -1.5, 152 0. , 0.3, -0.3, -0.2, 0.7, -0.8, -0.1, 0.5, 0.7, 1.4, -1.2, -1. , -0.6, 0.2, 1.1, -0.9, 153 0.7, -0.4, 0. , 0. , -0.2, -0.2, 0.1, 0. , 0. , -0.7, -0.7, -1.4, -0.9, -0.5, -0.6, 0.4, 154 0.3, 0. , 0.9, -0.2, 0.7, 1.2, 0.5, 0.8, -0.5, 1. , 0.2, -0.5, 1.3, -0.5, 0.3, 1.2, 155 -0.3, -0.1, 1.3, 0.2, 0.6, -1.4, -0.1, -0.2, -0.4, -0.9, 1.2, -0.9, -0.2, -1.2, -1. , -0.2, 156 -1.6, 2.1, -0.6, -0.2, -0.3, 0.5, 0.9, -0.4, 0. , -0.1, 0.1, -0.6, -1. , -0.7, 0.2, -0.2 157 ], 158 i3: [ # anchors 159 0, 6, 16, 10, 160 6, 0, 10, 16, 161 3, 5, 13, 11, 162 5, 3, 11, 13 163 ], 164 i4: [64, 64, 32, 32], # image info 165 } 166 167 output0 = { 168 o1: [ # scores out 169 0.945, 0.93 , 0.915, 0.9 , 0.87 , 0.84 , 0.81, 0.795, 0.78, 0.765, 0.75, 0.735, 170 0.72 , 0.705, 0.69 , 0.675, 0.945, 0.915, 0.9 , 0.885, 0.87, 0.84 , 0.81, 0.78, 171 0.735, 0.72 , 0.63 , 0.6 , 0.585, 0.54 172 ], 173 o2: [ # roi out 174 16.845154 , 2.5170734, 33.154846 , 7.4829264, 175 32.96344 , 40.747444 , 43.836563 , 47.252556 , 176 0. , 9.143808 , 16.243607 , 14.056192 , 177 0. , 25.789658 , 25.710022 , 30.210342 , 178 37.947445 , 20.791668 , 44.452557 , 32.80833 , 179 30.277609 , 32.21635 , 32.92239 , 38.18365 , 180 25.885489 , 29.086582 , 31.314512 , 30.913418 , 181 2.8654022, 5.789658 , 26.734598 , 10.210342 , 182 0.5408764, 3.5824041, 15.459124 , 5.217595 , 183 10.753355 , 35.982403 , 15.246645 , 37.617596 , 184 1.4593601, 23.050154 , 4.1406403, 36.149845 , 185 0. , 15.6 , 11.068764 , 21.6 , 186 38.54088 , 35.28549 , 53.45912 , 40.71451 , 187 26.134256 , 48.358635 , 27.465742 , 64. , 188 29.96254 , 3.1999998, 33.23746 , 19.2 , 189 11.653517 , 43.980293 , 48.34648 , 46.41971 , 190 0. , 26.967152 , 26.748941 , 31.032848 , 191 28.590324 , 9.050154 , 32. , 22.149847 , 192 17.828777 , 19.00683 , 32. , 20.99317 , 193 3.5724945, 7.273454 , 11.627505 , 19.126545 , 194 4.989658 , 26.8 , 9.410341 , 32. , 195 15.157195 , 18.00537 , 20.042807 , 25.194632 , 196 30.889404 , 9.652013 , 32. , 12.347987 , 197 3.399414 , 3.8000002, 32. , 9.8 , 198 24.980408 , 10.086582 , 28.61959 , 11.913418 , 199 13.950423 , 3.884349 , 22.049576 , 6.115651 , 200 24.259361 , 6.8 , 26.94064 , 22.8 , 201 3.6538367, 19.475813 , 13.546164 , 28.524187 , 202 11.947443 , 29.318363 , 18.452557 , 32. , 203 17.318363 , 0. , 20.281635 , 16.17695 204 ], 205 o3: [ 206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 208 ] 209 } 210 211 Example((input0, output0)).AddNchw(i1, i2, layout).AddVariations("relaxed", quant8, "float16") 212