| 1652 | } |
| 1653 | |
| 1654 | static void sam2_print_hparams(const sam3_hparams& hp) { |
| 1655 | fprintf(stderr, " model_type = SAM2%s\n", hp.is_sam2_1 ? ".1" : ".0"); |
| 1656 | fprintf(stderr, " img_size = %d\n", hp.img_size); |
| 1657 | fprintf(stderr, " hiera_embed_dim = %d\n", hp.hiera_embed_dim); |
| 1658 | fprintf(stderr, " hiera_num_heads = %d\n", hp.hiera_num_heads); |
| 1659 | fprintf(stderr, " hiera_stages = [%d, %d, %d, %d]\n", |
| 1660 | hp.hiera_stages[0], hp.hiera_stages[1], |
| 1661 | hp.hiera_stages[2], hp.hiera_stages[3]); |
| 1662 | fprintf(stderr, " hiera_total_blks = %d\n", hp.hiera_total_blocks()); |
| 1663 | fprintf(stderr, " hiera_q_pool = %d\n", hp.hiera_q_pool); |
| 1664 | fprintf(stderr, " hiera_window_spec = [%d, %d, %d, %d]\n", |
| 1665 | hp.hiera_window_spec[0], hp.hiera_window_spec[1], |
| 1666 | hp.hiera_window_spec[2], hp.hiera_window_spec[3]); |
| 1667 | fprintf(stderr, " hiera_global_n = %d\n", hp.hiera_global_n); |
| 1668 | fprintf(stderr, " hiera_feat_size = %d\n", hp.hiera_feat_size()); |
| 1669 | fprintf(stderr, " scalp = %d\n", hp.scalp); |
| 1670 | fprintf(stderr, " neck_dim = %d\n", hp.neck_dim); |
| 1671 | fprintf(stderr, " sam_embed_dim = %d\n", hp.sam_embed_dim); |
| 1672 | fprintf(stderr, " mem_attn_layers = %d\n", hp.mem_attn_layers); |
| 1673 | fprintf(stderr, " num_maskmem = %d\n", hp.num_maskmem); |
| 1674 | fprintf(stderr, " pred_obj_scores = %d\n", hp.pred_obj_scores); |
| 1675 | fprintf(stderr, " sigmoid_scale = %.1f\n", hp.sigmoid_scale()); |
| 1676 | fprintf(stderr, " sigmoid_bias = %.1f\n", hp.sigmoid_bias()); |
| 1677 | } |
| 1678 | |
| 1679 | // Set per-block metadata: stage_idx, dim_in/out, window_size, has_q_stride |
| 1680 | static void sam2_precompute_hiera_metadata(sam3_model& model) { |
no test coverage detected