| 14336 | *****************************************************************************/ |
| 14337 | |
| 14338 | static struct ggml_tensor * sam3_find_state_tensor(const sam3_state & state, |
| 14339 | const std::string & tensor_name) { |
| 14340 | struct ggml_tensor* t = nullptr; |
| 14341 | |
| 14342 | if (tensor_name == "vit_output") { |
| 14343 | t = state.vit_output; |
| 14344 | } else if (tensor_name == "neck_det_0") { |
| 14345 | t = state.neck_det[0]; |
| 14346 | } else if (tensor_name == "neck_det_1") { |
| 14347 | t = state.neck_det[1]; |
| 14348 | } else if (tensor_name == "neck_det_2") { |
| 14349 | t = state.neck_det[2]; |
| 14350 | } else if (tensor_name == "neck_det_3") { |
| 14351 | t = state.neck_det[3]; |
| 14352 | } else if (tensor_name == "neck_trk_0") { |
| 14353 | t = state.neck_trk[0]; |
| 14354 | } else if (tensor_name == "neck_trk_1") { |
| 14355 | t = state.neck_trk[1]; |
| 14356 | } else if (tensor_name == "neck_trk_2") { |
| 14357 | t = state.neck_trk[2]; |
| 14358 | } else if (tensor_name == "neck_trk_3") { |
| 14359 | t = state.neck_trk[3]; |
| 14360 | } else if (tensor_name == "neck_det_pe_0") { |
| 14361 | t = state.neck_det_pe[0]; |
| 14362 | } else if (tensor_name == "neck_det_pe_1") { |
| 14363 | t = state.neck_det_pe[1]; |
| 14364 | } else if (tensor_name == "neck_det_pe_2") { |
| 14365 | t = state.neck_det_pe[2]; |
| 14366 | } else if (tensor_name == "neck_det_pe_3") { |
| 14367 | t = state.neck_det_pe[3]; |
| 14368 | } else { |
| 14369 | // Search by ggml name in the context |
| 14370 | if (state.ctx) { |
| 14371 | t = ggml_get_tensor(state.ctx, tensor_name.c_str()); |
| 14372 | } |
| 14373 | // Also search PE context |
| 14374 | if (!t && state.pe_ctx) { |
| 14375 | t = ggml_get_tensor(state.pe_ctx, tensor_name.c_str()); |
| 14376 | } |
| 14377 | } |
| 14378 | |
| 14379 | return t; |
| 14380 | } |
| 14381 | |
| 14382 | static bool sam3_fill_tensor_info(struct ggml_tensor * t, sam3_tensor_info & info) { |
| 14383 | if (!t) { |
no outgoing calls
no test coverage detected