본문 바로가기
C.W.K.
Stream
Lesson 04 of 06 · published

이미지 분할

~8 min · keras-cv

Level 0Keras 도제
0 XP0/97 lessons0/20 achievements
0/120 XP to next level120 XP to go0% complete

상자 단위가 아니라 픽셀 단위로 판단해

객체 탐지가 물체마다 상자를 그린다면 이미지 분할은 모든 픽셀에 클래스를 부여해. 출력은 입력과 같은 H×W 크기의 레이블 맵이야. 종양의 정확한 경계, 차량 앞의 주행 가능 영역, 피사체를 배경에서 떼어 내는 매트처럼 모양 자체가 중요한 과제에 필요해.

목적이 다른 두 갈래

  • 의미론적 분할(DeepLabV3Plus, SegFormer)은 모든 픽셀에 클래스 레이블을 붙여. DeepLab은 팽창 합성곱으로 해상도를 보존하며 여러 크기를 보고, SegFormer는 Transformer 기반 접근이야. 관심 클래스 집합이 정해져 있을 때 사용해.
  • 두드러짐·경계 중심 분할(BASNet)은 클래스 정체성보다 선명한 경계를 최적화해 전경과 배경을 분리해. 매팅과 오려내기에 알맞아.

모델은 같은 from_preset 방식으로 불러오고 사전 학습된 백본 위에서 어느 백엔드로든 실행할 수 있어. 출력 규약도 기억해. 채널 축에 argmax를 적용하면 픽셀마다 하나의 레이블을 갖는 클래스 맵이 나와.

Code

의미론적 분할 모델 불러오기와 출력 해석·python
import keras
import keras_cv

# Semantic segmentation: one class per pixel
segmenter = keras_cv.models.SegFormerB0.from_preset(
    "segformer_b0_ade20k"
)

logits = segmenter.predict(images)        # (B, H, W, num_classes)
masks = keras.ops.argmax(logits, axis=-1) # (B, H, W) class label per pixel

External links

Exercise

SAM을 from_preset으로 불러와 표본 이미지의 서로 다른 객체 세 곳에 이미지 좌표 기반 점 프롬프트를 주고, 반환된 마스크를 원본 위에 겹쳐 그려. 이어서 한 객체에 상자 프롬프트를 주고 프롬프트 유형에 따른 차이를 기록해. 마지막으로 같은 이미지에 SegFormer 의미론적 분할을 적용해 SAM의 '이 덩어리'와 SegFormer의 '이건 클래스 12' 출력을 대조해.
Hint
SAM은 프롬프트마다 신뢰도가 붙은 후보 마스크 여러 개를 반환해. 가장 높은 것을 고르거나 모두 시각화해 모델이 어떤 모호함을 풀고 있는지 살펴봐.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.