ACR Instance Segmentation RF-DETR Refinement v1.0.1

ACR Refinement ์ž‘์—…์„ ์œ„ํ•œ RF-DETR Seg2XLarge instance segmentation ๋ชจ๋ธ์ž…๋‹ˆ๋‹ค. v1.0.0 ๊ฐ€์ค‘์น˜๋ฅผ ์ด์–ด๋ฐ›์•„ 30 epochs ์ถ”๊ฐ€ fine-tuningํ•œ EMA ์ฒดํฌํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค.

ํŒŒ์ผ

ํŒŒ์ผ ์„ค๋ช…
cmes_RF_Refinement_960_v1.0.1.pth RF-DETR Seg2XLarge 30-epoch ์ถ”๊ฐ€ ํ•™์Šต EMA weight
config.yaml ๋ชจ๋ธ, ํ•™์Šต, ์ถ”๋ก  ๋ฐ ํ‰๊ฐ€ ์„ค์ •
evaluation.json ํ‰๊ฐ€ ๊ฒฐ๊ณผ
EVALUATION.md ํ‰๊ฐ€ ๋ฐฉ๋ฒ•, ์ฒดํฌํฌ์ธํŠธ ์„ ์ • ๊ทผ๊ฑฐ, cross-environment ๊ฒ€์ฆ
SHA256SUMS ์—…๋กœ๋“œ ํŒŒ์ผ ๋ฌด๊ฒฐ์„ฑ ํ™•์ธ๊ฐ’
events.out.tfevents.* ์ด๋ฒˆ 30-epoch ํ•™์Šต์˜ TensorBoard ๋กœ๊ทธ (tensorboard --logdir .)

์ฃผ์š” ์„ค์ •

  • ๋ชจ๋ธ: RFDETRSeg2XLarge
  • RF-DETR: 1.9.0
  • ์ž…๋ ฅ: RGB, 960 x 960
  • ๊ถŒ์žฅ confidence threshold: 0.40 (v1.0.0์˜ 0.50์—์„œ ๋ณ€๊ฒฝ โ€” ์•„๋ž˜ "์ ์šฉ ์‹œ ์ฃผ์˜" ์ฐธ๊ณ )
  • ์ตœ๋Œ€ detection ์ˆ˜: 300
  • ํด๋ž˜์Šค ์ˆ˜: 3
  • ์ดˆ๊ธฐ ๊ฐ€์ค‘์น˜: ACR-instance-segmentation-RF-Refinement-v1.0.0 (from-scratch ์žฌํ•™์Šต์ด ์•„๋‹˜)
  • ์ถ”๊ฐ€ ํ•™์Šต: 30 epochs, BF16, 8 GPU, EMA decay 0.993
  • ์„ ํƒ๋œ ์ฒดํฌํฌ์ธํŠธ: checkpoint_27.ckpt (epoch 28, 0-indexed 27) + EMA โ€” ์•„๋ž˜ "์ฒดํฌํฌ์ธํŠธ ์„ ์ • ๊ทผ๊ฑฐ" ์ฐธ๊ณ 

ํด๋ž˜์Šค ID๋Š” ๋‹ค์Œ ์ˆœ์„œ๋ฅผ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.

0  possible
1  impossible
2  under_possible

์„ค์น˜

python -m pip install rfdetr==1.9.0 torch torchvision pillow numpy pyyaml huggingface_hub

๋‹ค์šด๋กœ๋“œ

from huggingface_hub import hf_hub_download

weight_path = hf_hub_download(
    repo_id="cmes-deepvision/ACR-instance-segmentation-RF-Refinement-v1.0.1",
    filename="cmes_RF_Refinement_960_v1.0.1.pth",
)

PyTorch ์ถ”๋ก 

import torch
from PIL import Image
from rfdetr import RFDETRSeg2XLarge

model = RFDETRSeg2XLarge.from_checkpoint(
    weight_path,
    trust_checkpoint=True,
    resolution=960,
    device="cuda:0",
)
model.inference(compile=False, batch_size=1, dtype=torch.float16)

image = Image.open("image.jpg").convert("RGB")
detections = model.predict(
    image,
    threshold=0.40,
    shape=(960, 960),
    patch_size=12,
    include_source_image=False,
)

์ด ํŒŒ์ผ์€ PyTorch pickle ๊ธฐ๋ฐ˜ ํ˜•์‹์ž…๋‹ˆ๋‹ค. ์‹ ๋ขฐํ•  ์ˆ˜ ์žˆ๋Š” ์ €์žฅ์†Œ์—์„œ ๋ฐ›์€ ํŒŒ์ผ์—๋งŒ trust_checkpoint=True๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

์ ์šฉ ์‹œ ์ฃผ์˜: confidence threshold๋Š” config.yaml์—์„œ ์ž๋™์œผ๋กœ ์ฝํžˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค

config.yaml์˜ inference.confidence_threshold: 0.40์€ ๋ฌธ์„œํ™”๋œ ๊ถŒ์žฅ๊ฐ’์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. rfdetr์˜ model.predict(..., threshold=...)๋„, perception_module์˜ RFDetrSegmentation.initialize()๋„ ์ด ํŒŒ์ผ์—์„œ threshold๋ฅผ ์ฝ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ค์ œ ์ ์šฉ๋˜๋Š” threshold๋Š” ํ•ญ์ƒ ํ˜ธ์ถœ๋ถ€๊ฐ€ ๋„˜๊ธฐ๋Š” ์ธ์ž(perception ๋ฐฐํฌ๋ผ๋ฉด ModelRegistry/์šด์˜ ์„ค์ •, ์ง์ ‘ ํ˜ธ์ถœ์ด๋ผ๋ฉด ์œ„ ์˜ˆ์ œ์˜ threshold= ์ธ์ž)๋กœ ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. ์ด ๋ชจ๋ธ์„ confidence 0.40์œผ๋กœ ๋ฐฐํฌํ•˜๋ ค๋ฉด perception ์šด์˜ ์„ค์ •์—๋„ 0.40์„ ๋ณ„๋„๋กœ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ํ‰๊ฐ€ ๊ฒฐ๊ณผ

acr_rf109_refinement_v100_finetuning test split 525์žฅ, score threshold 0.40, IoU 0.50 ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค. ์ด split์— GT๊ฐ€ ์—†๋Š” under_possible ํด๋ž˜์Šค๋Š” ์˜ˆ์ธก์—์„œ ์ œ์™ธํ•˜๊ณ  ์ง‘๊ณ„ํ–ˆ์Šต๋‹ˆ๋‹ค.

Precision Recall F1 bbox mAP@0.5 segm mAP@0.5
0.7202 0.6425 0.6792 0.7294 0.7263

์ฒดํฌํฌ์ธํŠธ ์„ ์ • ๊ทผ๊ฑฐ

30 epoch ์ „์ฒด๋ฅผ ๋‹จ์ผ ์ตœ๊ณ ์ (top-1)์œผ๋กœ ๊ณ ๋ฅด์ง€ ์•Š๊ณ , validation F1์ด ์•ˆ์ •์ ์œผ๋กœ plateau๋ฅผ ์ด๋ฃจ๋Š” epoch 21-30 ๊ตฌ๊ฐ„(EMA ํ‰๊ท  69.07 ยฑ 0.40, regular ํ‰๊ท  68.99 ยฑ 0.49)์—์„œ ๋Œ€ํ‘œ epoch์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ๋ณ„ epoch ๊ฐ„ F1 ์ฐจ์ด(~1์  ๋‚ด์™ธ)๋Š” ์ด ๊ตฌ๊ฐ„ ํ‘œ์ค€ํŽธ์ฐจ ์•ˆ์— ์žˆ์–ด ์ˆœ์œ„๋กœ์„œ์˜ ์˜๋ฏธ๊ฐ€ ํฌ์ง€ ์•Š๋‹ค๊ณ  ํŒ๋‹จํ–ˆ๊ณ , checkpoint_27 (epoch 28) EMA๋ฅผ ์ตœ์ข…์œผ๋กœ ์„ ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

์•Œ๋ ค์ง„ ์ œ์•ฝ ์‚ฌํ•ญ

  • validation == test ์ค‘๋ณต: ์ด track์€ allow_test_overlap: true๋กœ ์„ค์ •๋˜์–ด ์žˆ์–ด validation๊ณผ test๊ฐ€ ๊ฐ™์€ task๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค. ์œ„ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๋Š” ์ฒดํฌํฌ์ธํŠธ ์„ ํƒ ๊ทผ๊ฑฐ๋กœ๋Š” ์œ ํšจํ•˜์ง€๋งŒ, ์™„์ „ํžˆ ๋…๋ฆฝ์ ์ธ generalization ์„ฑ๋Šฅ ์ฃผ์žฅ์œผ๋กœ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
  • Native โ†” perception_module cross-environment ๊ฒ€์ฆ: ์ด ํŒจํ‚ค์ง€(config.yaml + pth)๋ฅผ ํ•™์Šต ์ปจํ…Œ์ด๋„ˆ์˜ native rfdetr ๊ฒฝ๋กœ์™€, ์‹ค์ œ ๋ฐฐํฌ ์–ด๋Œ‘ํ„ฐ์ธ crp_perception.core.models.rfdetr_mask.RFDetrSegmentation์„ ํ†ตํ•ด ๋ณ„๋„ Docker ํ™˜๊ฒฝ์—์„œ ๊ฐ๊ฐ ๋กœ๋“œํ•ด ๊ฐ™์€ error-case ์ด๋ฏธ์ง€ ์„ธํŠธ๋กœ ๋น„๊ตํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ณ ์‹ ๋ขฐ๋„ detection์€ ๋‘ ํ™˜๊ฒฝ์ด ๊ฑฐ์˜ ๋™์ผํ–ˆ๊ณ (box ์ฐจ์ด 2px ์ดํ•˜, score ์ฐจ์ด 0.001 ์ดํ•˜), ๋งค์นญ๋œ detection ์Œ์˜ mask IoU ์ค‘๊ฐ„๊ฐ’์€ 0.996-0.997, 90% ์ด์ƒ์ด IoU 0.9 ์ด์ƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚จ์€ ์ฐจ์ด๋Š” score๊ฐ€ threshold ๊ฒฝ๊ณ„(0.4-0.5 ๋ถ€๊ทผ)์— ๊ฑธ์นœ ์ €์‹ ๋ขฐ๋„ detection์ด ์„œ๋กœ ๋‹ค๋ฅธ torch/CUDA ๋นŒ๋“œ ๊ฐ„ ๋ถ€๋™์†Œ์ˆ˜์  ๋น„๊ฒฐ์ •์„ฑ์œผ๋กœ ํฌํ•จ/์ œ์™ธ๊ฐ€ ๋’ค๋ฐ”๋€Œ๋Š” ์ •์ƒ์ ์ธ ํ˜„์ƒ์ด๋ฉฐ, ๊ฐ€์ค‘์น˜ยทconfigยทadapter์˜ ๊ฒฐํ•จ์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋ฐฉ๋ฒ•์€ EVALUATION.md๋ฅผ ์ฐธ๊ณ ํ•˜์‹ญ์‹œ์˜ค.
Downloads last month
9
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Collection including cmes-deepvision/ACR-instance-segmentation-RF-Refinement-v1.0.1