검출 파이프라인 실행 가이드
시스템을 실행하고 철도 지물을 자동 검출하는 전체 과정을 단계별로 설명한다. AI 내부 처리 흐름부터 뷰어 조작법, 결과 해석, 정확도 향상 팁까지 다룬다.
핵심 요약
| 항목 | 내용 |
|---|---|
| 실행 URL | http://127.0.0.1:3000 |
| 전체 자동 검출 | [Auto Label Obstacles] 버튼 1회 클릭 |
| 처리 시간 | FHD 1장 기준 약 2~5초 (GPU 사양에 따라 상이) |
| 출력 결과 | 지물별 Mask(색칠 영역) + Label(이름표) + 신뢰도 점수 |
| 결과 저장 | JSON 또는 이미지 오버레이 형태로 내보내기 가능 |
1. 파이프라인 내부 흐름
전체 처리 단계
flowchart TD A[이미지 입력] --> B[GroundingDINO: 위치 탐색 → 바운딩 박스] B --> C[SAM 2.1: 정밀 경계 추출 → Mask] C --> D[합산 신뢰도 계산] D --> E{임계값 통과?} E -->|Yes| F[화면에 Mask + Label 표시] E -->|No| G[미표시 — 오탐 방지] F --> H[공간 필터링: 위치 이상 자동 기각] H --> I[최종 결과 확정]
신뢰도 계산 방식
| 요소 | 설명 |
|---|---|
| GroundingDINO score | 지물 이름과 이미지 영역이 얼마나 일치하는가 (0~1) |
| SAM score | 추출된 경계가 얼마나 선명하고 일관적인가 (0~1) |
| 합산 점수 | 두 점수를 곱셈 또는 가중 평균으로 산출 |
| 임계값 | 기본 0.3 — 설정에서 조정 가능 |
2. 검출 실행 방법
방법 A: 전체 자동 검출 (권장)
10종 지물을 한꺼번에 탐지한다.
1. 브라우저에서 http://127.0.0.1:3000 접속
2. 왼쪽 이미지 리스트에서 분석할 이미지 클릭
3. 화면 우측 상단의 [Auto Label Obstacles] 버튼 클릭
4. AI가 10종 지물을 순서대로 검색하여 화면에 표시
방법 B: 특정 지물만 검출
특정 지물에 집중하거나 커스텀 프롬프트를 사용할 때.
1. 설정(Settings) 메뉴에서 detector_mode → grounding_dino_sam 선택
2. 검색창에 찾고 싶은 지물의 프롬프트 입력
예) "railway contact wire catenary"
3. [검색] 버튼 클릭
프롬프트는 영어로 입력해야 정확도가 높다. 한국어 프롬프트는 성능이 저하된다.
방법 C: 수동 보정 (AI 결과 수정)
AI가 놓친 지물을 사람이 직접 추가하거나 잘못된 경계를 수정한다.
1. AI 검출 완료 후 빠진 지물 영역을 마우스로 클릭
2. 클릭 지점을 힌트로 SAM이 즉시 경계를 재추출
3. 지물 이름(Label)을 드롭다운에서 선택
4. 저장
3. 결과 해석
검출이 완료되면 이미지 위에 다음 정보가 오버레이된다.
| 결과 요소 | 설명 | 예시 |
|---|---|---|
| Mask (색칠 영역) | 지물의 실제 형태를 따라 반투명 색으로 표시 | 레일 → 파란색 영역 |
| Label (이름표) | 지물 종류명 표시 | rail, catenary_pole |
| Confidence (신뢰도) | 0~1 사이 점수. 0.7 이상이면 신뢰 가능 | 0.85 |
신뢰도별 검수 방침
| 신뢰도 범위 | 권장 처리 |
|---|---|
| 0.7 이상 | 자동 확정 — 사람 검수 생략 가능 |
| 0.4 ~ 0.7 | 사람이 한 번 확인 후 확정 |
| 0.4 미만 | 결과 삭제 또는 수동 보정 |
4. 정확도 향상 팁
프롬프트 상세화
| 상황 | 기본 프롬프트 | 개선 프롬프트 |
|---|---|---|
| 전주 오탐 많음 | pole | catenary pole railway overhead line |
| 애자 미탐 | insulator | porcelain insulator railway electrical line |
| 자갈과 침목 혼동 | ballast | railway ballast gravel crushed stone track bed |
타일링 설정 활용
4K 이상 이미지나 소형 지물(애자, 드로퍼 등)이 많을 때 타일링 모드를 켠다.
설정 → tile_size: 640 (기본값)
설정 → overlap_ratio: 0.2 (타일 경계에서 지물이 잘리지 않도록)
공간 필터링 조정
지물이 나타나야 하는 화면 영역을 지정하면 엉뚱한 위치의 오탐을 걸러낼 수 있다.
| 지물 | 예상 위치 | 설정 예시 |
|---|---|---|
| 전차선 부품 | 이미지 상단 50% | y_max: 0.5 |
| 궤도 시설물 | 이미지 하단 70% | y_min: 0.3 |
| 교량 | 화면 전체 | 필터 없음 |
5. 한계 및 주의사항
탐지 성능이 저하되는 상황
| 상황 | 원인 | 대응 |
|---|---|---|
| 전선이 촘촘하게 겹침 | contact_wire / messenger_wire 경계가 모호 | 타일링 + 프롬프트 개선 |
| 작은 지물 (먼 거리 애자) | 이미지에서 차지하는 픽셀 수 부족 | 50m 이하 고도로 재촬영 |
| 터널 내부 저조도 | AI가 지물 윤곽을 인식하지 못함 | 조명 드론 또는 적외선 카메라 |
| 역광 · 강한 그림자 | 지물과 배경의 경계가 흐릿해짐 | 이미지 밝기/대비 전처리 후 입력 |
결과 왜곡 유형
| 유형 | 설명 | 대응 |
|---|---|---|
| 영역 확장 | 지물 본체 + 그림자·인접 구조물이 한 덩어리로 탐지 | 수동 경계 조정 또는 임계값 상향 |
| 오명칭 | 전주(catenary_pole)와 교각(bridge_pier) 혼동 | 공간 필터링으로 위치 구역 지정 |
| 분할 탐지 | 긴 레일이 여러 조각으로 나뉘어 탐지 | 타일 overlap_ratio 증가 (0.3~0.4) |
AI의 결과물은 반드시 샘플 검수 과정을 거친다. 신뢰도 0.7 이상이어도 중요 구간은 사람이 확인하는 것을 권장한다.
6. 결과 내보내기
뷰어 우측 상단 [Export] → 형식 선택:
- JSON: 좌표 + 클래스 + 신뢰도 (DB 연동용)
- PNG: 원본 이미지 위에 Mask 오버레이 (보고서용)
- CSV: 지물별 통계 요약 (Excel 연동용)
JSON 출력 구조 예시
{
"image": "section_A_001.jpg",
"detections": [
{
"class": "rail",
"confidence": 0.91,
"bbox": [120, 450, 1800, 520],
"mask_area_px": 42300
},
{
"class": "catenary_pole",
"confidence": 0.84,
"bbox": [600, 80, 680, 400],
"mask_area_px": 8200
}
]
}문서 탐색
참고 자료
| 출처 | 내용 |
|---|---|
| 3.1.3 철도 파이프라인 설계 | 개발자용 SAM+YOLO 배치 파이프라인 상세 |
| 3.2.1 시스템 개요 | GroundingDINO + SAM 원리 및 10종 지물 정의 |
| GroundingDINO 논문 | 텍스트 기반 객체 탐지 모델 원논문 |
| SAM 2 공식 문서 | Meta SAM 2.1 세그멘테이션 모델 |
| SAHI 타일링 | 고해상도 이미지 타일링 추론 라이브러리 |