본문으로 건너뛰기

M12.04 · Semantic/Instance Segmentation과 차선/도로 장면

단위별 목표·권장 선수와 자료 준비 상태를 확인하고, 공개된 본문과 활동을 읽고 준비 상태를 확인할 수 있습니다.

전체 커리큘럼

학습 안내

본문을 읽고 장비 없는 기본 실습·세 확인 문제와 해설로 이해를 확인하세요.

예상 학습 시간: 미정. 이 페이지 방문이나 자료 열람으로 완료·숙달을 자동 부여하지 않습니다.

현재 경로·이전·다음 단위 확인 ↓

학습 목표

  • semantic/instance 분할과 도로·차선 출력의 차이를 설명하고 class/instance ID와 표시 색을 구분한다.
  • 합성 mask의 ignore 규칙·좌표 변환을 검사하고 유효 픽셀 정확도와 클래스별/평균 IoU를 계산한다.
  • 분할된 도로를 실제 주행 가능 영역과 구분하여 가림·경계·조건 변화의 실패 근거 및 추가 확인을 제안한다.

아래 설명·실습·문제로 각 학습 목표를 확인하세요.

권장 선수

M11.05의 IoU와 M12.01~03의 영상/투영/라벨이 선수다. 기본은 여섯 픽셀의 합성 mask와 도로 장면 설명의 종이 분석이다. 실제 segmentation 모델이나 차량/로봇을 실행하지 않는다. 이미 알고 있다면 직접 열어볼 수 있습니다.

설명 필수

세 목표에 대응하는 검수된 설명·예제를 읽습니다.

클래스 지도와 개체 지도를 나눈다

semantic segmentation은 각 픽셀에 클래스 의미를 부여한다. 한 이미지에 자동차 두 대가 붙어 있어도 둘 다 car로 표시하면 클래스 지도에서는 같은 값일 수 있다. instance segmentation은 같은 클래스의 서로 다른 물체를 개별 mask/ID로 구분한다. 한 프레임의 instance ID가 다음 프레임에서도 같은 실제 물체를 뜻하는 tracking ID라고 자동 보장되지는 않는다. 시간 연결은 M12.05에서 따로 판단한다.

Semantic과 Instance의 구분. 같은 클래스의 두 물체를 semantic 지도는 같은 값으로, instance 지도는 개체별 값으로 나눈다. 색 자체는 class ID가 아니며 단일 프레임 instance ID와 시간 추적 ID도 다르다.그림 원본 크기로 보기

그림 M12.04-1. 같은 클래스의 두 물체를 semantic 지도는 같은 값으로, instance 지도는 개체별 값으로 나눈다. 색 자체는 class ID가 아니며 단일 프레임 instance ID와 시간 추적 ID도 다르다. 직접 제작.

도로 장면에도 여러 질문이 있다. road/sidewalk/person 같은 semantic 클래스, 개별 차량/사람의 instance, 차선 표시 픽셀/곡선·서로 다른 차선 ID/연결 관계는 다른 출력이다. 넓은 도로 영역을 잘 찾았다고 얇은 차선의 연속성이나 좌/우 경계를 맞췄다는 뜻은 아니다. 차선이 보이는 위치와 로봇이 통과할 수 있는 공간도 다르다. 원하는 행동을 위해 어떤 출력과 라벨 정책이 필요한지 먼저 정한다.

Cityscapes 공식 자료는 도심 semantic/instance 주석과 class·group/void 정책을 설명한다. 하나의 데이터셋에서 정한 관례를 모든 분할 작업의 정답으로 옮기지 않는다. 예를 들어 가림이나 투명 영역/개체 경계가 애매한 경우의 정책은 자료에 따라 다를 수 있다. 라벨 정책과 모델 출력의 정의가 같은지 확인해야 한다.

예쁜 색과 학습 ID는 별개다

분할 결과를 사람이 보기 쉽게 색으로 칠할 수 있지만 팔레트 색은 표시 방식이다. 실제 라벨 파일은 정수 class ID나 instance ID, 또는 별도의 mask 목록일 수 있다. 저장된 RGB 색을 클래스 번호와 혼동하거나 JPEG처럼 손실 압축한 표시 그림을 그대로 정답 ID로 읽으면 값이 바뀔 수 있다. 원본 mask의 dtype/shape/코드표와 표시용 overlay를 분리한다.

Cityscapes의 원본 id와 학습용 trainId도 역할이 다르며 공식 평가에서는 요구하는 ID로 되돌리는 매핑이 필요하다. 공식 labels.py는 id/trainId/hasInstances/ignoreInEval/색을 구별한다. 이번 활동은 그 표를 복제하지 않고 자체 코드 0=road/1=obstacle/255=ignore를 쓴다. 255는 이번 주석에서 평가 대상이 아닌 픽셀이지 일반 배경 클래스 0의 다른 이름이 아니다.

모델의 출력도 class별 score 배열일 수 있고 argmax 뒤 정수 지도일 수 있다. score 축/해상도와 class 순서를 알아야 정답과 비교할 수 있다. 공식 torchvision segmentation 자료처럼 특정 모델은 정해진 학습 클래스/전처리를 가지므로 이름만 보고 road 모델이라고 가정하지 않는다. 이 단위에서는 그 모델이나 가중치를 다운로드하지 않는다.

ignore를 적용한 지표를 직접 센다

여섯 픽셀의 합성 정답은[0,0,0,1,1,255], 예측은[0,0,1,0,1,0]이라고 하자. 인덱스는 왼쪽부터 0~5다. 정답 255인 마지막 픽셀은 이번 평가에서 제외하여 유효 픽셀은 5개다. 예측이 스스로 255를 내놓았다고 유효 정답의 분모까지 지워 좋은 점수를 만드는 것은 아니다. 미응답/unknown 출력의 평가·coverage 정책은 따로 정해야 한다. 이번 예측은 모든 유효 위치에서 0/1을 낸다.

유효 위치 0/1/4는 정답과 같고 2/3은 다르므로 pixel accuracy=3/5=0.6이다. road를 관심 클래스로 보면 정답 road는 0/1/2, 예측 road는 0/1/3이다. 교집합 2/합집합 4라 IoU=0.5다. obstacle은 정답 3/4, 예측 2/4로 교집합 1/합집합 3, IoU=1/3이다. 두 클래스에 같은 가중치를 둔 mean IoU는(0.5+1/3)/2=5/12≈0.416667이다.

같은 예측에서 정확도 0.6과 mean IoU0.416667이 다른 것은 모순이 아니다. 정확도는 유효 픽셀을 세고 mean IoU는 클래스별 겹침 비율을 같은 무게로 평균했다. 실제 자료에서는 클래스별 픽셀 수/무시 라벨·없는 클래스의 분모 0 처리와 집계 단위를 기록한다. 두 mask 모두 비어 합집합 0인 클래스를 자동으로 완벽 1이라고 채우지 않는다. 큰 배경이 대부분인 영상은 단순 정확도가 작은 물체/가는 차선의 실패를 가릴 수 있다.

영상과 mask를 같은 좌표로 변환한다

crop/resize/회전/뒤집기는 영상과 정답 mask에 같은 기하 대응을 적용해야 한다. class ID mask에 일반 색 영상처럼 선형 보간을 하면 0/1 사이에 0.5 같은 코드표 밖 값이 생길 수 있다. 범주 지도에는 nearest-neighbor 등 라벨을 보존하는 규약을 명시한다. 반면 연속 score/logit 지도를 보간한 뒤 argmax하는 파이프라인은 다른 설계이므로 무조건 같은 규칙으로 혼동하지 않는다.

OpenCV 변환 문서의 보간/경계·좌표 규약과 함께 크기/채널/라벨 ID를 확인한다. class 지도와 instance ID도 각각 보존해야 한다. 색을 섞어 시각적으로 부드러운 경계를 만든 것이 더 정확한 라벨이라는 뜻은 아니다. M12.02의 pixel-center/crop 계약에 맞춘 overlay를 통해 어긋남을 검사한다.

road 픽셀이 이동 허가는 아니다

카메라의 road 클래스는 영상 의미의 예측이다. 실제 통과 가능성에는 3차원 높이/경사·장애물/수면/노면 상태, 로봇 크기와 경로/동역학 조건이 더 필요하다. 예를 들어 도로로 분류된 어두운 구간이 그림자인지 구멍인지 영상만으로 불명확할 수 있다. 가림 뒤를 road라고 확장한 예측도 실제 빈 공간의 증거가 아니다. ‘검출되지 않음’과 ‘없음이 확인됨’을 나누어 기록한다.

차선도 마찬가지다. 마스크가 몇 픽셀 끊겼다고 실제 도로가 끊겼다고 단정하지 않고 가림/빛 반사·마모·해상도/전처리를 조사한다. 반대로 후처리로 끊긴 선을 이어 그렸다고 관측된 근거로 바꾸지 않는다. 원래 관측과 보간/추정 결과를 구분해 표시한다. 두 개의 차량 mask를 합치면 semantic IoU는 좋을 수 있어도 개체 수/거리 추정이 틀릴 수 있으므로 task에 맞는 instance 평가가 필요하다.

조건별 기록에는 조명/날씨·젖은 노면·가림/작은 물체, 카메라/해상도·시각·보정, 라벨/모델/후처리 개정과 실패 유형을 남긴다. 임계값/모형 선택은 검증 자료에서 하고 test는 분리한다. 기존 4.6 Domain Randomization의 장면 변화가 실제 조건을 모두 포함한다고 가정하지 않는다. 분할 품질·공간 정보·작업 성공은 서로 보완할 증거이며 아래 계산은 실제 주행 성과가 아니다.

학습 범위와 한계

기본 설명·예제가 준비되었습니다. 기존 보충 자료의 범위와 구별하세요.

실습 필수

장비 없는 실습을 수행하고 관찰·계산 근거를 해설과 비교합니다.

입력은 위 여섯 픽셀과 자체 코드표다. 별도 장면에는 서로 붙은 차량 두 대가 같은 car semantic값으로 표시되고, 그림자/구멍 여부가 불명확한 구간은 road로 예측됐다. ID mask를 선형 보간해 0.5가 나온 기록도 있다.

  1. semantic/instance·차선 연결의 출력 차이를 설명하고 ID/색/ignore를 구분한다.
  2. 유효 위치의 정확도·두 IoU/mean IoU를 계산한다. 보간/ignore 적용의 오류를 진단한다.
  3. 차량 개체와 road 예측을 작업 성공으로 승인할 수 있는지 판정하고 추가 정보/조건별 실패 기록을 제안한다.

관찰은 출력 계약·픽셀 지표·장면 판단으로 나눈다. 막히면 정답 255를 먼저 표시한 뒤 클래스별 정답/예측 집합을 그린다. 실제 모델/도로 주행은 필요하지 않다.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

학습 범위와 한계

기본 실습은 장비 없이 수행합니다. 실제 장비·GPU 실증을 완료했다는 뜻은 아닙니다.

평가·해설 필수

목표별 세 서술문항에 답하고 해설·판정 기준으로 자기검토합니다.

확인 문제 Q1

같은 car 클래스인 두 물체가 붙은 semantic mask와 개별 mask는 무엇이 다른가? 표시 색/ID와 한 프레임 instance ID/시간 tracking ID도 구분하라.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

확인 문제 Q2

자체 코드표의 정답[0,0,1,255], 예측[0,1,1,0]에서 유효 정확도와 road/obstacle IoU·mean IoU를 구하라. 정답 ignore와 선형 보간된 class값의 처리를 설명하라.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

확인 문제 Q3

road/차선 mask가 매끈하게 나왔으므로 가린 구간도 안전하게 통과할 수 있다고 한다. 어떤 추정/관측 혼동이 있으며 필요한 추가 정보와 평가를 제안하라.

0 / 8,000자 · 확인하면 이 브라우저에 저장

답안을 작성하고 확인하기를 한 번 선택하면 해설·판정 기준을 열어볼 수 있습니다.

학습 범위와 한계

서술답안과 해설이 준비되었습니다. 자기검토와 학습 완료는 숙달 인증과 별개입니다.

참고 자료

학습 확인

실습과 세 문항의 답안을 해설과 비교한 뒤, 이 단위의 학습 완료를 직접 기록할 수 있습니다. 자기검토·학습 완료는 자동 채점이나 숙달 인증과 별개입니다.

실습1개·확인 문제3개의 답안을 저장하고 각각 자기검토를 기록하세요.

학습 이동

학습 단계 순서 · 공통 과정 이후 전문화 선택

전체 목차로 돌아가기 →

신규 활동의 답안은 이 브라우저의 통합 학습 기록에 저장합니다. 기존 화면의 답안·진도는 원래 키를 유지합니다. AI 강사는 현재 단위의 준비 상태·부족한 범위와 연결된 실제 자료를 참고합니다.