1 // clang-format off 2 // Generated file (from: heatmap_max_keypoint.mod.py). Do not edit 3 void CreateModel_nhwc(Model *model) { 4 OperandType type0(Type::BOOL, {}); 5 OperandType type1(Type::TENSOR_FLOAT32, {6, 4, 4, 1}); 6 OperandType type2(Type::TENSOR_FLOAT32, {6, 4}); 7 OperandType type3(Type::TENSOR_FLOAT32, {6, 1}); 8 OperandType type4(Type::TENSOR_FLOAT32, {6, 1, 2}); 9 // Phase 1, operands 10 auto heatmap = model->addOperand(&type1); 11 auto boxes = model->addOperand(&type2); 12 auto layout = model->addOperand(&type0); 13 auto score = model->addOperand(&type3); 14 auto keypoint = model->addOperand(&type4); 15 // Phase 2, operations 16 static bool8 layout_init[] = {false}; 17 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 18 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap, boxes, layout}, {score, keypoint}); 19 // Phase 3, inputs and outputs 20 model->identifyInputsAndOutputs( 21 {heatmap, boxes}, 22 {score, keypoint}); 23 assert(model->isValid()); 24 } 25 26 inline bool is_ignored_nhwc(int i) { 27 static std::set<int> ignore = {}; 28 return ignore.find(i) != ignore.end(); 29 } 30 31 void CreateModel_nhwc_relaxed(Model *model) { 32 OperandType type0(Type::BOOL, {}); 33 OperandType type1(Type::TENSOR_FLOAT32, {6, 4, 4, 1}); 34 OperandType type2(Type::TENSOR_FLOAT32, {6, 4}); 35 OperandType type3(Type::TENSOR_FLOAT32, {6, 1}); 36 OperandType type4(Type::TENSOR_FLOAT32, {6, 1, 2}); 37 // Phase 1, operands 38 auto heatmap = model->addOperand(&type1); 39 auto boxes = model->addOperand(&type2); 40 auto layout = model->addOperand(&type0); 41 auto score = model->addOperand(&type3); 42 auto keypoint = model->addOperand(&type4); 43 // Phase 2, operations 44 static bool8 layout_init[] = {false}; 45 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 46 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap, boxes, layout}, {score, keypoint}); 47 // Phase 3, inputs and outputs 48 model->identifyInputsAndOutputs( 49 {heatmap, boxes}, 50 {score, keypoint}); 51 // Phase 4: set relaxed execution 52 model->relaxComputationFloat32toFloat16(true); 53 assert(model->isValid()); 54 } 55 56 inline bool is_ignored_nhwc_relaxed(int i) { 57 static std::set<int> ignore = {}; 58 return ignore.find(i) != ignore.end(); 59 } 60 61 void CreateModel_nhwc_float16(Model *model) { 62 OperandType type0(Type::BOOL, {}); 63 OperandType type12(Type::TENSOR_FLOAT16, {6, 4}); 64 OperandType type13(Type::TENSOR_FLOAT16, {6, 4, 4, 1}); 65 OperandType type14(Type::TENSOR_FLOAT16, {6, 1, 2}); 66 OperandType type15(Type::TENSOR_FLOAT16, {6, 1}); 67 // Phase 1, operands 68 auto heatmap = model->addOperand(&type13); 69 auto boxes = model->addOperand(&type12); 70 auto layout = model->addOperand(&type0); 71 auto score = model->addOperand(&type15); 72 auto keypoint = model->addOperand(&type14); 73 // Phase 2, operations 74 static bool8 layout_init[] = {false}; 75 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 76 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap, boxes, layout}, {score, keypoint}); 77 // Phase 3, inputs and outputs 78 model->identifyInputsAndOutputs( 79 {heatmap, boxes}, 80 {score, keypoint}); 81 assert(model->isValid()); 82 } 83 84 inline bool is_ignored_nhwc_float16(int i) { 85 static std::set<int> ignore = {}; 86 return ignore.find(i) != ignore.end(); 87 } 88 89 void CreateModel_nchw(Model *model) { 90 OperandType type0(Type::BOOL, {}); 91 OperandType type16(Type::TENSOR_FLOAT32, {6, 1, 4, 4}); 92 OperandType type2(Type::TENSOR_FLOAT32, {6, 4}); 93 OperandType type3(Type::TENSOR_FLOAT32, {6, 1}); 94 OperandType type4(Type::TENSOR_FLOAT32, {6, 1, 2}); 95 // Phase 1, operands 96 auto heatmap = model->addOperand(&type16); 97 auto boxes = model->addOperand(&type2); 98 auto layout = model->addOperand(&type0); 99 auto score = model->addOperand(&type3); 100 auto keypoint = model->addOperand(&type4); 101 // Phase 2, operations 102 static bool8 layout_init[] = {true}; 103 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 104 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap, boxes, layout}, {score, keypoint}); 105 // Phase 3, inputs and outputs 106 model->identifyInputsAndOutputs( 107 {heatmap, boxes}, 108 {score, keypoint}); 109 assert(model->isValid()); 110 } 111 112 inline bool is_ignored_nchw(int i) { 113 static std::set<int> ignore = {}; 114 return ignore.find(i) != ignore.end(); 115 } 116 117 void CreateModel_nchw_relaxed(Model *model) { 118 OperandType type0(Type::BOOL, {}); 119 OperandType type16(Type::TENSOR_FLOAT32, {6, 1, 4, 4}); 120 OperandType type2(Type::TENSOR_FLOAT32, {6, 4}); 121 OperandType type3(Type::TENSOR_FLOAT32, {6, 1}); 122 OperandType type4(Type::TENSOR_FLOAT32, {6, 1, 2}); 123 // Phase 1, operands 124 auto heatmap = model->addOperand(&type16); 125 auto boxes = model->addOperand(&type2); 126 auto layout = model->addOperand(&type0); 127 auto score = model->addOperand(&type3); 128 auto keypoint = model->addOperand(&type4); 129 // Phase 2, operations 130 static bool8 layout_init[] = {true}; 131 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 132 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap, boxes, layout}, {score, keypoint}); 133 // Phase 3, inputs and outputs 134 model->identifyInputsAndOutputs( 135 {heatmap, boxes}, 136 {score, keypoint}); 137 // Phase 4: set relaxed execution 138 model->relaxComputationFloat32toFloat16(true); 139 assert(model->isValid()); 140 } 141 142 inline bool is_ignored_nchw_relaxed(int i) { 143 static std::set<int> ignore = {}; 144 return ignore.find(i) != ignore.end(); 145 } 146 147 void CreateModel_nchw_float16(Model *model) { 148 OperandType type0(Type::BOOL, {}); 149 OperandType type12(Type::TENSOR_FLOAT16, {6, 4}); 150 OperandType type14(Type::TENSOR_FLOAT16, {6, 1, 2}); 151 OperandType type15(Type::TENSOR_FLOAT16, {6, 1}); 152 OperandType type17(Type::TENSOR_FLOAT16, {6, 1, 4, 4}); 153 // Phase 1, operands 154 auto heatmap = model->addOperand(&type17); 155 auto boxes = model->addOperand(&type12); 156 auto layout = model->addOperand(&type0); 157 auto score = model->addOperand(&type15); 158 auto keypoint = model->addOperand(&type14); 159 // Phase 2, operations 160 static bool8 layout_init[] = {true}; 161 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 162 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap, boxes, layout}, {score, keypoint}); 163 // Phase 3, inputs and outputs 164 model->identifyInputsAndOutputs( 165 {heatmap, boxes}, 166 {score, keypoint}); 167 assert(model->isValid()); 168 } 169 170 inline bool is_ignored_nchw_float16(int i) { 171 static std::set<int> ignore = {}; 172 return ignore.find(i) != ignore.end(); 173 } 174 175 void CreateModel_dynamic_output_shape_nhwc(Model *model) { 176 OperandType type0(Type::BOOL, {}); 177 OperandType type1(Type::TENSOR_FLOAT32, {6, 4, 4, 1}); 178 OperandType type18(Type::TENSOR_FLOAT32, {0, 0}); 179 OperandType type19(Type::TENSOR_FLOAT32, {0, 0, 0}); 180 OperandType type2(Type::TENSOR_FLOAT32, {6, 4}); 181 // Phase 1, operands 182 auto heatmap = model->addOperand(&type1); 183 auto boxes = model->addOperand(&type2); 184 auto layout = model->addOperand(&type0); 185 auto score = model->addOperand(&type18); 186 auto keypoint = model->addOperand(&type19); 187 // Phase 2, operations 188 static bool8 layout_init[] = {false}; 189 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 190 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap, boxes, layout}, {score, keypoint}); 191 // Phase 3, inputs and outputs 192 model->identifyInputsAndOutputs( 193 {heatmap, boxes}, 194 {score, keypoint}); 195 assert(model->isValid()); 196 } 197 198 inline bool is_ignored_dynamic_output_shape_nhwc(int i) { 199 static std::set<int> ignore = {}; 200 return ignore.find(i) != ignore.end(); 201 } 202 203 void CreateModel_dynamic_output_shape_nhwc_relaxed(Model *model) { 204 OperandType type0(Type::BOOL, {}); 205 OperandType type1(Type::TENSOR_FLOAT32, {6, 4, 4, 1}); 206 OperandType type18(Type::TENSOR_FLOAT32, {0, 0}); 207 OperandType type19(Type::TENSOR_FLOAT32, {0, 0, 0}); 208 OperandType type2(Type::TENSOR_FLOAT32, {6, 4}); 209 // Phase 1, operands 210 auto heatmap = model->addOperand(&type1); 211 auto boxes = model->addOperand(&type2); 212 auto layout = model->addOperand(&type0); 213 auto score = model->addOperand(&type18); 214 auto keypoint = model->addOperand(&type19); 215 // Phase 2, operations 216 static bool8 layout_init[] = {false}; 217 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 218 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap, boxes, layout}, {score, keypoint}); 219 // Phase 3, inputs and outputs 220 model->identifyInputsAndOutputs( 221 {heatmap, boxes}, 222 {score, keypoint}); 223 // Phase 4: set relaxed execution 224 model->relaxComputationFloat32toFloat16(true); 225 assert(model->isValid()); 226 } 227 228 inline bool is_ignored_dynamic_output_shape_nhwc_relaxed(int i) { 229 static std::set<int> ignore = {}; 230 return ignore.find(i) != ignore.end(); 231 } 232 233 void CreateModel_dynamic_output_shape_nhwc_float16(Model *model) { 234 OperandType type0(Type::BOOL, {}); 235 OperandType type12(Type::TENSOR_FLOAT16, {6, 4}); 236 OperandType type13(Type::TENSOR_FLOAT16, {6, 4, 4, 1}); 237 OperandType type20(Type::TENSOR_FLOAT16, {0, 0}); 238 OperandType type21(Type::TENSOR_FLOAT16, {0, 0, 0}); 239 // Phase 1, operands 240 auto heatmap = model->addOperand(&type13); 241 auto boxes = model->addOperand(&type12); 242 auto layout = model->addOperand(&type0); 243 auto score = model->addOperand(&type20); 244 auto keypoint = model->addOperand(&type21); 245 // Phase 2, operations 246 static bool8 layout_init[] = {false}; 247 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 248 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap, boxes, layout}, {score, keypoint}); 249 // Phase 3, inputs and outputs 250 model->identifyInputsAndOutputs( 251 {heatmap, boxes}, 252 {score, keypoint}); 253 assert(model->isValid()); 254 } 255 256 inline bool is_ignored_dynamic_output_shape_nhwc_float16(int i) { 257 static std::set<int> ignore = {}; 258 return ignore.find(i) != ignore.end(); 259 } 260 261 void CreateModel_dynamic_output_shape_nchw(Model *model) { 262 OperandType type0(Type::BOOL, {}); 263 OperandType type16(Type::TENSOR_FLOAT32, {6, 1, 4, 4}); 264 OperandType type18(Type::TENSOR_FLOAT32, {0, 0}); 265 OperandType type19(Type::TENSOR_FLOAT32, {0, 0, 0}); 266 OperandType type2(Type::TENSOR_FLOAT32, {6, 4}); 267 // Phase 1, operands 268 auto heatmap = model->addOperand(&type16); 269 auto boxes = model->addOperand(&type2); 270 auto layout = model->addOperand(&type0); 271 auto score = model->addOperand(&type18); 272 auto keypoint = model->addOperand(&type19); 273 // Phase 2, operations 274 static bool8 layout_init[] = {true}; 275 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 276 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap, boxes, layout}, {score, keypoint}); 277 // Phase 3, inputs and outputs 278 model->identifyInputsAndOutputs( 279 {heatmap, boxes}, 280 {score, keypoint}); 281 assert(model->isValid()); 282 } 283 284 inline bool is_ignored_dynamic_output_shape_nchw(int i) { 285 static std::set<int> ignore = {}; 286 return ignore.find(i) != ignore.end(); 287 } 288 289 void CreateModel_dynamic_output_shape_nchw_relaxed(Model *model) { 290 OperandType type0(Type::BOOL, {}); 291 OperandType type16(Type::TENSOR_FLOAT32, {6, 1, 4, 4}); 292 OperandType type18(Type::TENSOR_FLOAT32, {0, 0}); 293 OperandType type19(Type::TENSOR_FLOAT32, {0, 0, 0}); 294 OperandType type2(Type::TENSOR_FLOAT32, {6, 4}); 295 // Phase 1, operands 296 auto heatmap = model->addOperand(&type16); 297 auto boxes = model->addOperand(&type2); 298 auto layout = model->addOperand(&type0); 299 auto score = model->addOperand(&type18); 300 auto keypoint = model->addOperand(&type19); 301 // Phase 2, operations 302 static bool8 layout_init[] = {true}; 303 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 304 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap, boxes, layout}, {score, keypoint}); 305 // Phase 3, inputs and outputs 306 model->identifyInputsAndOutputs( 307 {heatmap, boxes}, 308 {score, keypoint}); 309 // Phase 4: set relaxed execution 310 model->relaxComputationFloat32toFloat16(true); 311 assert(model->isValid()); 312 } 313 314 inline bool is_ignored_dynamic_output_shape_nchw_relaxed(int i) { 315 static std::set<int> ignore = {}; 316 return ignore.find(i) != ignore.end(); 317 } 318 319 void CreateModel_dynamic_output_shape_nchw_float16(Model *model) { 320 OperandType type0(Type::BOOL, {}); 321 OperandType type12(Type::TENSOR_FLOAT16, {6, 4}); 322 OperandType type17(Type::TENSOR_FLOAT16, {6, 1, 4, 4}); 323 OperandType type20(Type::TENSOR_FLOAT16, {0, 0}); 324 OperandType type21(Type::TENSOR_FLOAT16, {0, 0, 0}); 325 // Phase 1, operands 326 auto heatmap = model->addOperand(&type17); 327 auto boxes = model->addOperand(&type12); 328 auto layout = model->addOperand(&type0); 329 auto score = model->addOperand(&type20); 330 auto keypoint = model->addOperand(&type21); 331 // Phase 2, operations 332 static bool8 layout_init[] = {true}; 333 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 334 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap, boxes, layout}, {score, keypoint}); 335 // Phase 3, inputs and outputs 336 model->identifyInputsAndOutputs( 337 {heatmap, boxes}, 338 {score, keypoint}); 339 assert(model->isValid()); 340 } 341 342 inline bool is_ignored_dynamic_output_shape_nchw_float16(int i) { 343 static std::set<int> ignore = {}; 344 return ignore.find(i) != ignore.end(); 345 } 346 347 void CreateModel_nhwc_2(Model *model) { 348 OperandType type0(Type::BOOL, {}); 349 OperandType type5(Type::TENSOR_FLOAT32, {2, 4, 4, 4}); 350 OperandType type6(Type::TENSOR_FLOAT32, {2, 4}); 351 OperandType type7(Type::TENSOR_FLOAT32, {2, 4, 2}); 352 // Phase 1, operands 353 auto heatmap1 = model->addOperand(&type5); 354 auto boxes1 = model->addOperand(&type6); 355 auto layout = model->addOperand(&type0); 356 auto score1 = model->addOperand(&type6); 357 auto keypoint1 = model->addOperand(&type7); 358 // Phase 2, operations 359 static bool8 layout_init[] = {false}; 360 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 361 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap1, boxes1, layout}, {score1, keypoint1}); 362 // Phase 3, inputs and outputs 363 model->identifyInputsAndOutputs( 364 {heatmap1, boxes1}, 365 {score1, keypoint1}); 366 assert(model->isValid()); 367 } 368 369 inline bool is_ignored_nhwc_2(int i) { 370 static std::set<int> ignore = {}; 371 return ignore.find(i) != ignore.end(); 372 } 373 374 void CreateModel_nhwc_relaxed_2(Model *model) { 375 OperandType type0(Type::BOOL, {}); 376 OperandType type5(Type::TENSOR_FLOAT32, {2, 4, 4, 4}); 377 OperandType type6(Type::TENSOR_FLOAT32, {2, 4}); 378 OperandType type7(Type::TENSOR_FLOAT32, {2, 4, 2}); 379 // Phase 1, operands 380 auto heatmap1 = model->addOperand(&type5); 381 auto boxes1 = model->addOperand(&type6); 382 auto layout = model->addOperand(&type0); 383 auto score1 = model->addOperand(&type6); 384 auto keypoint1 = model->addOperand(&type7); 385 // Phase 2, operations 386 static bool8 layout_init[] = {false}; 387 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 388 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap1, boxes1, layout}, {score1, keypoint1}); 389 // Phase 3, inputs and outputs 390 model->identifyInputsAndOutputs( 391 {heatmap1, boxes1}, 392 {score1, keypoint1}); 393 // Phase 4: set relaxed execution 394 model->relaxComputationFloat32toFloat16(true); 395 assert(model->isValid()); 396 } 397 398 inline bool is_ignored_nhwc_relaxed_2(int i) { 399 static std::set<int> ignore = {}; 400 return ignore.find(i) != ignore.end(); 401 } 402 403 void CreateModel_nhwc_float16_2(Model *model) { 404 OperandType type0(Type::BOOL, {}); 405 OperandType type22(Type::TENSOR_FLOAT16, {2, 4}); 406 OperandType type23(Type::TENSOR_FLOAT16, {2, 4, 4, 4}); 407 OperandType type24(Type::TENSOR_FLOAT16, {2, 4, 2}); 408 // Phase 1, operands 409 auto heatmap1 = model->addOperand(&type23); 410 auto boxes1 = model->addOperand(&type22); 411 auto layout = model->addOperand(&type0); 412 auto score1 = model->addOperand(&type22); 413 auto keypoint1 = model->addOperand(&type24); 414 // Phase 2, operations 415 static bool8 layout_init[] = {false}; 416 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 417 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap1, boxes1, layout}, {score1, keypoint1}); 418 // Phase 3, inputs and outputs 419 model->identifyInputsAndOutputs( 420 {heatmap1, boxes1}, 421 {score1, keypoint1}); 422 assert(model->isValid()); 423 } 424 425 inline bool is_ignored_nhwc_float16_2(int i) { 426 static std::set<int> ignore = {}; 427 return ignore.find(i) != ignore.end(); 428 } 429 430 void CreateModel_nhwc_quant8(Model *model) { 431 OperandType type0(Type::BOOL, {}); 432 OperandType type25(Type::TENSOR_QUANT16_ASYMM, {2, 4}, 0.125f, 0); 433 OperandType type26(Type::TENSOR_QUANT8_ASYMM, {2, 4, 4, 4}, 0.01f, 128); 434 OperandType type27(Type::TENSOR_QUANT16_ASYMM, {2, 4, 2}, 0.125f, 0); 435 OperandType type28(Type::TENSOR_QUANT8_ASYMM, {2, 4}, 0.01f, 0); 436 // Phase 1, operands 437 auto heatmap1 = model->addOperand(&type26); 438 auto boxes1 = model->addOperand(&type25); 439 auto layout = model->addOperand(&type0); 440 auto score1 = model->addOperand(&type28); 441 auto keypoint1 = model->addOperand(&type27); 442 // Phase 2, operations 443 static bool8 layout_init[] = {false}; 444 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 445 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap1, boxes1, layout}, {score1, keypoint1}); 446 // Phase 3, inputs and outputs 447 model->identifyInputsAndOutputs( 448 {heatmap1, boxes1}, 449 {score1, keypoint1}); 450 assert(model->isValid()); 451 } 452 453 inline bool is_ignored_nhwc_quant8(int i) { 454 static std::set<int> ignore = {}; 455 return ignore.find(i) != ignore.end(); 456 } 457 458 void CreateModel_nchw_2(Model *model) { 459 OperandType type0(Type::BOOL, {}); 460 OperandType type5(Type::TENSOR_FLOAT32, {2, 4, 4, 4}); 461 OperandType type6(Type::TENSOR_FLOAT32, {2, 4}); 462 OperandType type7(Type::TENSOR_FLOAT32, {2, 4, 2}); 463 // Phase 1, operands 464 auto heatmap1 = model->addOperand(&type5); 465 auto boxes1 = model->addOperand(&type6); 466 auto layout = model->addOperand(&type0); 467 auto score1 = model->addOperand(&type6); 468 auto keypoint1 = model->addOperand(&type7); 469 // Phase 2, operations 470 static bool8 layout_init[] = {true}; 471 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 472 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap1, boxes1, layout}, {score1, keypoint1}); 473 // Phase 3, inputs and outputs 474 model->identifyInputsAndOutputs( 475 {heatmap1, boxes1}, 476 {score1, keypoint1}); 477 assert(model->isValid()); 478 } 479 480 inline bool is_ignored_nchw_2(int i) { 481 static std::set<int> ignore = {}; 482 return ignore.find(i) != ignore.end(); 483 } 484 485 void CreateModel_nchw_relaxed_2(Model *model) { 486 OperandType type0(Type::BOOL, {}); 487 OperandType type5(Type::TENSOR_FLOAT32, {2, 4, 4, 4}); 488 OperandType type6(Type::TENSOR_FLOAT32, {2, 4}); 489 OperandType type7(Type::TENSOR_FLOAT32, {2, 4, 2}); 490 // Phase 1, operands 491 auto heatmap1 = model->addOperand(&type5); 492 auto boxes1 = model->addOperand(&type6); 493 auto layout = model->addOperand(&type0); 494 auto score1 = model->addOperand(&type6); 495 auto keypoint1 = model->addOperand(&type7); 496 // Phase 2, operations 497 static bool8 layout_init[] = {true}; 498 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 499 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap1, boxes1, layout}, {score1, keypoint1}); 500 // Phase 3, inputs and outputs 501 model->identifyInputsAndOutputs( 502 {heatmap1, boxes1}, 503 {score1, keypoint1}); 504 // Phase 4: set relaxed execution 505 model->relaxComputationFloat32toFloat16(true); 506 assert(model->isValid()); 507 } 508 509 inline bool is_ignored_nchw_relaxed_2(int i) { 510 static std::set<int> ignore = {}; 511 return ignore.find(i) != ignore.end(); 512 } 513 514 void CreateModel_nchw_float16_2(Model *model) { 515 OperandType type0(Type::BOOL, {}); 516 OperandType type22(Type::TENSOR_FLOAT16, {2, 4}); 517 OperandType type23(Type::TENSOR_FLOAT16, {2, 4, 4, 4}); 518 OperandType type24(Type::TENSOR_FLOAT16, {2, 4, 2}); 519 // Phase 1, operands 520 auto heatmap1 = model->addOperand(&type23); 521 auto boxes1 = model->addOperand(&type22); 522 auto layout = model->addOperand(&type0); 523 auto score1 = model->addOperand(&type22); 524 auto keypoint1 = model->addOperand(&type24); 525 // Phase 2, operations 526 static bool8 layout_init[] = {true}; 527 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 528 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap1, boxes1, layout}, {score1, keypoint1}); 529 // Phase 3, inputs and outputs 530 model->identifyInputsAndOutputs( 531 {heatmap1, boxes1}, 532 {score1, keypoint1}); 533 assert(model->isValid()); 534 } 535 536 inline bool is_ignored_nchw_float16_2(int i) { 537 static std::set<int> ignore = {}; 538 return ignore.find(i) != ignore.end(); 539 } 540 541 void CreateModel_nchw_quant8(Model *model) { 542 OperandType type0(Type::BOOL, {}); 543 OperandType type25(Type::TENSOR_QUANT16_ASYMM, {2, 4}, 0.125f, 0); 544 OperandType type26(Type::TENSOR_QUANT8_ASYMM, {2, 4, 4, 4}, 0.01f, 128); 545 OperandType type27(Type::TENSOR_QUANT16_ASYMM, {2, 4, 2}, 0.125f, 0); 546 OperandType type28(Type::TENSOR_QUANT8_ASYMM, {2, 4}, 0.01f, 0); 547 // Phase 1, operands 548 auto heatmap1 = model->addOperand(&type26); 549 auto boxes1 = model->addOperand(&type25); 550 auto layout = model->addOperand(&type0); 551 auto score1 = model->addOperand(&type28); 552 auto keypoint1 = model->addOperand(&type27); 553 // Phase 2, operations 554 static bool8 layout_init[] = {true}; 555 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 556 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap1, boxes1, layout}, {score1, keypoint1}); 557 // Phase 3, inputs and outputs 558 model->identifyInputsAndOutputs( 559 {heatmap1, boxes1}, 560 {score1, keypoint1}); 561 assert(model->isValid()); 562 } 563 564 inline bool is_ignored_nchw_quant8(int i) { 565 static std::set<int> ignore = {}; 566 return ignore.find(i) != ignore.end(); 567 } 568 569 void CreateModel_dynamic_output_shape_nhwc_2(Model *model) { 570 OperandType type0(Type::BOOL, {}); 571 OperandType type18(Type::TENSOR_FLOAT32, {0, 0}); 572 OperandType type19(Type::TENSOR_FLOAT32, {0, 0, 0}); 573 OperandType type5(Type::TENSOR_FLOAT32, {2, 4, 4, 4}); 574 OperandType type6(Type::TENSOR_FLOAT32, {2, 4}); 575 // Phase 1, operands 576 auto heatmap1 = model->addOperand(&type5); 577 auto boxes1 = model->addOperand(&type6); 578 auto layout = model->addOperand(&type0); 579 auto score1 = model->addOperand(&type18); 580 auto keypoint1 = model->addOperand(&type19); 581 // Phase 2, operations 582 static bool8 layout_init[] = {false}; 583 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 584 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap1, boxes1, layout}, {score1, keypoint1}); 585 // Phase 3, inputs and outputs 586 model->identifyInputsAndOutputs( 587 {heatmap1, boxes1}, 588 {score1, keypoint1}); 589 assert(model->isValid()); 590 } 591 592 inline bool is_ignored_dynamic_output_shape_nhwc_2(int i) { 593 static std::set<int> ignore = {}; 594 return ignore.find(i) != ignore.end(); 595 } 596 597 void CreateModel_dynamic_output_shape_nhwc_relaxed_2(Model *model) { 598 OperandType type0(Type::BOOL, {}); 599 OperandType type18(Type::TENSOR_FLOAT32, {0, 0}); 600 OperandType type19(Type::TENSOR_FLOAT32, {0, 0, 0}); 601 OperandType type5(Type::TENSOR_FLOAT32, {2, 4, 4, 4}); 602 OperandType type6(Type::TENSOR_FLOAT32, {2, 4}); 603 // Phase 1, operands 604 auto heatmap1 = model->addOperand(&type5); 605 auto boxes1 = model->addOperand(&type6); 606 auto layout = model->addOperand(&type0); 607 auto score1 = model->addOperand(&type18); 608 auto keypoint1 = model->addOperand(&type19); 609 // Phase 2, operations 610 static bool8 layout_init[] = {false}; 611 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 612 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap1, boxes1, layout}, {score1, keypoint1}); 613 // Phase 3, inputs and outputs 614 model->identifyInputsAndOutputs( 615 {heatmap1, boxes1}, 616 {score1, keypoint1}); 617 // Phase 4: set relaxed execution 618 model->relaxComputationFloat32toFloat16(true); 619 assert(model->isValid()); 620 } 621 622 inline bool is_ignored_dynamic_output_shape_nhwc_relaxed_2(int i) { 623 static std::set<int> ignore = {}; 624 return ignore.find(i) != ignore.end(); 625 } 626 627 void CreateModel_dynamic_output_shape_nhwc_float16_2(Model *model) { 628 OperandType type0(Type::BOOL, {}); 629 OperandType type20(Type::TENSOR_FLOAT16, {0, 0}); 630 OperandType type21(Type::TENSOR_FLOAT16, {0, 0, 0}); 631 OperandType type22(Type::TENSOR_FLOAT16, {2, 4}); 632 OperandType type23(Type::TENSOR_FLOAT16, {2, 4, 4, 4}); 633 // Phase 1, operands 634 auto heatmap1 = model->addOperand(&type23); 635 auto boxes1 = model->addOperand(&type22); 636 auto layout = model->addOperand(&type0); 637 auto score1 = model->addOperand(&type20); 638 auto keypoint1 = model->addOperand(&type21); 639 // Phase 2, operations 640 static bool8 layout_init[] = {false}; 641 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 642 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap1, boxes1, layout}, {score1, keypoint1}); 643 // Phase 3, inputs and outputs 644 model->identifyInputsAndOutputs( 645 {heatmap1, boxes1}, 646 {score1, keypoint1}); 647 assert(model->isValid()); 648 } 649 650 inline bool is_ignored_dynamic_output_shape_nhwc_float16_2(int i) { 651 static std::set<int> ignore = {}; 652 return ignore.find(i) != ignore.end(); 653 } 654 655 void CreateModel_dynamic_output_shape_nhwc_quant8(Model *model) { 656 OperandType type0(Type::BOOL, {}); 657 OperandType type25(Type::TENSOR_QUANT16_ASYMM, {2, 4}, 0.125f, 0); 658 OperandType type26(Type::TENSOR_QUANT8_ASYMM, {2, 4, 4, 4}, 0.01f, 128); 659 OperandType type29(Type::TENSOR_QUANT8_ASYMM, {0, 0}, 0.01f, 0); 660 OperandType type30(Type::TENSOR_QUANT16_ASYMM, {0, 0, 0}, 0.125f, 0); 661 // Phase 1, operands 662 auto heatmap1 = model->addOperand(&type26); 663 auto boxes1 = model->addOperand(&type25); 664 auto layout = model->addOperand(&type0); 665 auto score1 = model->addOperand(&type29); 666 auto keypoint1 = model->addOperand(&type30); 667 // Phase 2, operations 668 static bool8 layout_init[] = {false}; 669 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 670 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap1, boxes1, layout}, {score1, keypoint1}); 671 // Phase 3, inputs and outputs 672 model->identifyInputsAndOutputs( 673 {heatmap1, boxes1}, 674 {score1, keypoint1}); 675 assert(model->isValid()); 676 } 677 678 inline bool is_ignored_dynamic_output_shape_nhwc_quant8(int i) { 679 static std::set<int> ignore = {}; 680 return ignore.find(i) != ignore.end(); 681 } 682 683 void CreateModel_dynamic_output_shape_nchw_2(Model *model) { 684 OperandType type0(Type::BOOL, {}); 685 OperandType type18(Type::TENSOR_FLOAT32, {0, 0}); 686 OperandType type19(Type::TENSOR_FLOAT32, {0, 0, 0}); 687 OperandType type5(Type::TENSOR_FLOAT32, {2, 4, 4, 4}); 688 OperandType type6(Type::TENSOR_FLOAT32, {2, 4}); 689 // Phase 1, operands 690 auto heatmap1 = model->addOperand(&type5); 691 auto boxes1 = model->addOperand(&type6); 692 auto layout = model->addOperand(&type0); 693 auto score1 = model->addOperand(&type18); 694 auto keypoint1 = model->addOperand(&type19); 695 // Phase 2, operations 696 static bool8 layout_init[] = {true}; 697 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 698 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap1, boxes1, layout}, {score1, keypoint1}); 699 // Phase 3, inputs and outputs 700 model->identifyInputsAndOutputs( 701 {heatmap1, boxes1}, 702 {score1, keypoint1}); 703 assert(model->isValid()); 704 } 705 706 inline bool is_ignored_dynamic_output_shape_nchw_2(int i) { 707 static std::set<int> ignore = {}; 708 return ignore.find(i) != ignore.end(); 709 } 710 711 void CreateModel_dynamic_output_shape_nchw_relaxed_2(Model *model) { 712 OperandType type0(Type::BOOL, {}); 713 OperandType type18(Type::TENSOR_FLOAT32, {0, 0}); 714 OperandType type19(Type::TENSOR_FLOAT32, {0, 0, 0}); 715 OperandType type5(Type::TENSOR_FLOAT32, {2, 4, 4, 4}); 716 OperandType type6(Type::TENSOR_FLOAT32, {2, 4}); 717 // Phase 1, operands 718 auto heatmap1 = model->addOperand(&type5); 719 auto boxes1 = model->addOperand(&type6); 720 auto layout = model->addOperand(&type0); 721 auto score1 = model->addOperand(&type18); 722 auto keypoint1 = model->addOperand(&type19); 723 // Phase 2, operations 724 static bool8 layout_init[] = {true}; 725 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 726 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap1, boxes1, layout}, {score1, keypoint1}); 727 // Phase 3, inputs and outputs 728 model->identifyInputsAndOutputs( 729 {heatmap1, boxes1}, 730 {score1, keypoint1}); 731 // Phase 4: set relaxed execution 732 model->relaxComputationFloat32toFloat16(true); 733 assert(model->isValid()); 734 } 735 736 inline bool is_ignored_dynamic_output_shape_nchw_relaxed_2(int i) { 737 static std::set<int> ignore = {}; 738 return ignore.find(i) != ignore.end(); 739 } 740 741 void CreateModel_dynamic_output_shape_nchw_float16_2(Model *model) { 742 OperandType type0(Type::BOOL, {}); 743 OperandType type20(Type::TENSOR_FLOAT16, {0, 0}); 744 OperandType type21(Type::TENSOR_FLOAT16, {0, 0, 0}); 745 OperandType type22(Type::TENSOR_FLOAT16, {2, 4}); 746 OperandType type23(Type::TENSOR_FLOAT16, {2, 4, 4, 4}); 747 // Phase 1, operands 748 auto heatmap1 = model->addOperand(&type23); 749 auto boxes1 = model->addOperand(&type22); 750 auto layout = model->addOperand(&type0); 751 auto score1 = model->addOperand(&type20); 752 auto keypoint1 = model->addOperand(&type21); 753 // Phase 2, operations 754 static bool8 layout_init[] = {true}; 755 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 756 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap1, boxes1, layout}, {score1, keypoint1}); 757 // Phase 3, inputs and outputs 758 model->identifyInputsAndOutputs( 759 {heatmap1, boxes1}, 760 {score1, keypoint1}); 761 assert(model->isValid()); 762 } 763 764 inline bool is_ignored_dynamic_output_shape_nchw_float16_2(int i) { 765 static std::set<int> ignore = {}; 766 return ignore.find(i) != ignore.end(); 767 } 768 769 void CreateModel_dynamic_output_shape_nchw_quant8(Model *model) { 770 OperandType type0(Type::BOOL, {}); 771 OperandType type25(Type::TENSOR_QUANT16_ASYMM, {2, 4}, 0.125f, 0); 772 OperandType type26(Type::TENSOR_QUANT8_ASYMM, {2, 4, 4, 4}, 0.01f, 128); 773 OperandType type29(Type::TENSOR_QUANT8_ASYMM, {0, 0}, 0.01f, 0); 774 OperandType type30(Type::TENSOR_QUANT16_ASYMM, {0, 0, 0}, 0.125f, 0); 775 // Phase 1, operands 776 auto heatmap1 = model->addOperand(&type26); 777 auto boxes1 = model->addOperand(&type25); 778 auto layout = model->addOperand(&type0); 779 auto score1 = model->addOperand(&type29); 780 auto keypoint1 = model->addOperand(&type30); 781 // Phase 2, operations 782 static bool8 layout_init[] = {true}; 783 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 784 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap1, boxes1, layout}, {score1, keypoint1}); 785 // Phase 3, inputs and outputs 786 model->identifyInputsAndOutputs( 787 {heatmap1, boxes1}, 788 {score1, keypoint1}); 789 assert(model->isValid()); 790 } 791 792 inline bool is_ignored_dynamic_output_shape_nchw_quant8(int i) { 793 static std::set<int> ignore = {}; 794 return ignore.find(i) != ignore.end(); 795 } 796 797 void CreateModel_nhwc_quant8_2(Model *model) { 798 OperandType type0(Type::BOOL, {}); 799 OperandType type31(Type::TENSOR_QUANT16_ASYMM, {5, 4}, 0.125f, 0); 800 OperandType type32(Type::TENSOR_QUANT8_ASYMM, {5, 4, 4, 1}, 0.5f, 128); 801 OperandType type33(Type::TENSOR_QUANT16_ASYMM, {5, 1, 2}, 0.125f, 0); 802 OperandType type34(Type::TENSOR_QUANT8_ASYMM, {5, 1}, 0.1f, 10); 803 // Phase 1, operands 804 auto heatmap2 = model->addOperand(&type32); 805 auto boxes2 = model->addOperand(&type31); 806 auto layout = model->addOperand(&type0); 807 auto score2 = model->addOperand(&type34); 808 auto keypoint2 = model->addOperand(&type33); 809 // Phase 2, operations 810 static bool8 layout_init[] = {false}; 811 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 812 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap2, boxes2, layout}, {score2, keypoint2}); 813 // Phase 3, inputs and outputs 814 model->identifyInputsAndOutputs( 815 {heatmap2, boxes2}, 816 {score2, keypoint2}); 817 assert(model->isValid()); 818 } 819 820 inline bool is_ignored_nhwc_quant8_2(int i) { 821 static std::set<int> ignore = {}; 822 return ignore.find(i) != ignore.end(); 823 } 824 825 void CreateModel_nchw_quant8_2(Model *model) { 826 OperandType type0(Type::BOOL, {}); 827 OperandType type31(Type::TENSOR_QUANT16_ASYMM, {5, 4}, 0.125f, 0); 828 OperandType type33(Type::TENSOR_QUANT16_ASYMM, {5, 1, 2}, 0.125f, 0); 829 OperandType type34(Type::TENSOR_QUANT8_ASYMM, {5, 1}, 0.1f, 10); 830 OperandType type36(Type::TENSOR_QUANT8_ASYMM, {5, 1, 4, 4}, 0.5f, 128); 831 // Phase 1, operands 832 auto heatmap2 = model->addOperand(&type36); 833 auto boxes2 = model->addOperand(&type31); 834 auto layout = model->addOperand(&type0); 835 auto score2 = model->addOperand(&type34); 836 auto keypoint2 = model->addOperand(&type33); 837 // Phase 2, operations 838 static bool8 layout_init[] = {true}; 839 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 840 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap2, boxes2, layout}, {score2, keypoint2}); 841 // Phase 3, inputs and outputs 842 model->identifyInputsAndOutputs( 843 {heatmap2, boxes2}, 844 {score2, keypoint2}); 845 assert(model->isValid()); 846 } 847 848 inline bool is_ignored_nchw_quant8_2(int i) { 849 static std::set<int> ignore = {}; 850 return ignore.find(i) != ignore.end(); 851 } 852 853 void CreateModel_dynamic_output_shape_nhwc_quant8_2(Model *model) { 854 OperandType type0(Type::BOOL, {}); 855 OperandType type30(Type::TENSOR_QUANT16_ASYMM, {0, 0, 0}, 0.125f, 0); 856 OperandType type31(Type::TENSOR_QUANT16_ASYMM, {5, 4}, 0.125f, 0); 857 OperandType type32(Type::TENSOR_QUANT8_ASYMM, {5, 4, 4, 1}, 0.5f, 128); 858 OperandType type37(Type::TENSOR_QUANT8_ASYMM, {0, 0}, 0.1f, 10); 859 // Phase 1, operands 860 auto heatmap2 = model->addOperand(&type32); 861 auto boxes2 = model->addOperand(&type31); 862 auto layout = model->addOperand(&type0); 863 auto score2 = model->addOperand(&type37); 864 auto keypoint2 = model->addOperand(&type30); 865 // Phase 2, operations 866 static bool8 layout_init[] = {false}; 867 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 868 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap2, boxes2, layout}, {score2, keypoint2}); 869 // Phase 3, inputs and outputs 870 model->identifyInputsAndOutputs( 871 {heatmap2, boxes2}, 872 {score2, keypoint2}); 873 assert(model->isValid()); 874 } 875 876 inline bool is_ignored_dynamic_output_shape_nhwc_quant8_2(int i) { 877 static std::set<int> ignore = {}; 878 return ignore.find(i) != ignore.end(); 879 } 880 881 void CreateModel_dynamic_output_shape_nchw_quant8_2(Model *model) { 882 OperandType type0(Type::BOOL, {}); 883 OperandType type30(Type::TENSOR_QUANT16_ASYMM, {0, 0, 0}, 0.125f, 0); 884 OperandType type31(Type::TENSOR_QUANT16_ASYMM, {5, 4}, 0.125f, 0); 885 OperandType type36(Type::TENSOR_QUANT8_ASYMM, {5, 1, 4, 4}, 0.5f, 128); 886 OperandType type37(Type::TENSOR_QUANT8_ASYMM, {0, 0}, 0.1f, 10); 887 // Phase 1, operands 888 auto heatmap2 = model->addOperand(&type36); 889 auto boxes2 = model->addOperand(&type31); 890 auto layout = model->addOperand(&type0); 891 auto score2 = model->addOperand(&type37); 892 auto keypoint2 = model->addOperand(&type30); 893 // Phase 2, operations 894 static bool8 layout_init[] = {true}; 895 model->setOperandValue(layout, layout_init, sizeof(bool8) * 1); 896 model->addOperation(ANEURALNETWORKS_HEATMAP_MAX_KEYPOINT, {heatmap2, boxes2, layout}, {score2, keypoint2}); 897 // Phase 3, inputs and outputs 898 model->identifyInputsAndOutputs( 899 {heatmap2, boxes2}, 900 {score2, keypoint2}); 901 assert(model->isValid()); 902 } 903 904 inline bool is_ignored_dynamic_output_shape_nchw_quant8_2(int i) { 905 static std::set<int> ignore = {}; 906 return ignore.find(i) != ignore.end(); 907 } 908 909