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 ํด๋์ค๋ ์์ธก์์ ์ ์ธํ๊ณ ์ง๊ณํ์ต๋๋ค.
์ฒดํฌํฌ์ธํธ ์ ์ ๊ทผ๊ฑฐ
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