์ฐธ์กฐ ultralytics/models/sam/amg.py
์ฐธ๊ณ
์ด ํ์ผ์ https://github.com/ultralytics/ ultralytics/blob/main/ ultralytics/models/ sam/amg .py์์ ํ์ธํ ์ ์์ต๋๋ค. ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ๋ฉด ํ ๋ฆฌํ์คํธ ๐ ๏ธ ์ ๊ธฐ์ฌํ์ฌ ๋ฌธ์ ํด๊ฒฐ์ ๋์์ฃผ์ธ์. ๊ฐ์ฌํฉ๋๋ค ๐!
ultralytics.models.sam.amg.is_box_near_crop_edge(boxes, crop_box, orig_box, atol=20.0)
์์๊ฐ ์๋ฅด๊ธฐ ๊ฐ์ฅ์๋ฆฌ ๊ทผ์ฒ์ ์๋์ง ์ฌ๋ถ๋ฅผ ๋ํ๋ด๋ tensor ๋ถ์ธ์ ๋ฐํํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/models/sam/amg.py
ultralytics.models.sam.amg.batch_iterator(batch_size, *args)
์ ๋ ฅ ์ธ์๋ก๋ถํฐ ๋ฐ์ดํฐ ๋ฐฐ์น๋ฅผ ์ฐ์ถํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/models/sam/amg.py
ultralytics.models.sam.amg.calculate_stability_score(masks, mask_threshold, threshold_offset)
๋ง์คํฌ ๋ฐฐ์น์ ๋ํ ์์ ์ฑ ์ ์๋ฅผ ๊ณ์ฐํฉ๋๋ค.
์์ ์ฑ ์ ์๋ ์์ธก๋ ๋ง์คํฌ ๋ก์ง์ ๋์ ๊ฐ๊ณผ ๋ฎ์ ๊ฐ์ผ๋ก ์๊ณ๊ฐ์ ์ค์ ํ์ฌ ์ป์ ์ด์ง ๋ง์คํฌ ์ฌ์ด์ IoU์ ๋๋ค. ๊ฐ๊ณผ ๋ฎ์ ๊ฐ ์ฌ์ด์์ ์ป์ IoU์ ๋๋ค.
์ฐธ๊ณ
- ํ๋์ ๋ง์คํฌ๋ ํญ์ ๋ค๋ฅธ ๋ง์คํฌ ์์ ํฌํจ๋์ด ์์ต๋๋ค.
- torch.int64๋ก ๋ถํ์ํ ์บ์คํ ์ ๋ฐฉ์งํ์ฌ ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ
์ ์์ค ์ฝ๋ ultralytics/models/sam/amg.py
ultralytics.models.sam.amg.build_point_grid(n_per_side)
0,1]x[0,1] ๋ฒ์์์ ๊ท ์ผํ ๊ฐ๊ฒฉ์ ์ ์ผ๋ก ๊ตฌ์ฑ๋ 2D ๊ฒฉ์๋ฅผ ์์ฑํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/models/sam/amg.py
ultralytics.models.sam.amg.build_all_layer_point_grids(n_per_side, n_layers, scale_per_layer)
๋ชจ๋ ์๋ฅด๊ธฐ ๋ ์ด์ด์ ๋ํ ํฌ์ธํธ ๊ฒฉ์๋ฅผ ์์ฑํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/models/sam/amg.py
ultralytics.models.sam.amg.generate_crop_boxes(im_size, n_layers, overlap_ratio)
๋ค์ํ ํฌ๊ธฐ์ ์๋ฅด๊ธฐ ์์ ๋ชฉ๋ก์ ์์ฑํฉ๋๋ค.
๊ฐ ๋ ์ด์ด์๋ i๋ฒ์งธ ๋ ์ด์ด์ ๋ํด (2i)๊ฐ์ ์์๊ฐ ์์ต๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/models/sam/amg.py
ultralytics.models.sam.amg.uncrop_boxes_xyxy(boxes, crop_box)
์๋ฅด๊ธฐ ์์ ์คํ์ ์ ์ถ๊ฐํ์ฌ ๊ฒฝ๊ณ ์์ ์๋ฅด๊ธฐ ํด์ .
์ ์์ค ์ฝ๋ ultralytics/models/sam/amg.py
ultralytics.models.sam.amg.uncrop_points(points, crop_box)
์๋ฅด๊ธฐ ์์ ์คํ์ ์ ์ถ๊ฐํ์ฌ ํฌ์ธํธ ์๋ฅด๊ธฐ๋ฅผ ํด์ ํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/models/sam/amg.py
ultralytics.models.sam.amg.uncrop_masks(masks, crop_box, orig_h, orig_w)
๋ง์คํฌ๋ฅผ ์๋ณธ ์ด๋ฏธ์ง ํฌ๊ธฐ์ ๋ง๊ฒ ํจ๋ฉํ์ฌ ์๋ฅด๊ธฐ๋ฅผ ํด์ ํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/models/sam/amg.py
ultralytics.models.sam.amg.remove_small_regions(mask, area_thresh, mode)
๋ง์คํฌ์ ์์ ์ฐ๊ฒฐ์ด ๋์ด์ง ๋ถ๋ถ์ด๋ ๊ตฌ๋ฉ์ ์ ๊ฑฐํ์ฌ ๋ง์คํฌ์ ์์ ํ์๊ธฐ๋ฅผ ๋ฐํํฉ๋๋ค.
์ ์์ค ์ฝ๋ ultralytics/models/sam/amg.py
ultralytics.models.sam.amg.batched_mask_to_box(masks)
๋ง์คํฌ ์ฃผ์์ ์์๋ฅผ XYXY ํ์์ผ๋ก ๊ณ์ฐํฉ๋๋ค.
๋น ๋ง์คํฌ์ ๊ฒฝ์ฐ [0,0,0,0]์ ๋ฐํํฉ๋๋ค. ์ ๋ ฅ ๋ํ C1xC2x...xHxW์ ๊ฒฝ์ฐ, ์ถ๋ ฅ ๋ํ์ C1xC2x...x4์ ๋๋ค.