연세대학교 RMR — 터널 막장면 암반등급 평가 시스템

RMR 앱 아이콘

연세대학교 RMR — 터널 막장면 암반등급 평가 시스템

연세대학교 건설환경공학과의 산학협력 연구과제로 개발한 터널 막장면(Tunnel Face) 암반등급 자동 평가 시스템입니다. 터널 굴착 현장에서 막장면 사진을 촬영하면, PyTorch 기반 딥러닝 모델이 RMR(Rock Mass Rating) 5개 인자(R1~R5)를 자동으로 평가합니다. iOS, Android 네이티브 앱과 SvelteKit 웹 애플리케이션, Flask ML 추론 API로 구성된 멀티플랫폼 시스템입니다.


RMR(Rock Mass Rating)이란?

RMR(Rock Mass Rating)은 Bieniawski(1989)가 제안한 암반 분류 체계로, 터널 굴착 시 암반의 안정성을 정량적으로 평가하는 국제 표준 기법입니다. 5개 인자를 합산하여 0~100점 범위의 등급을 산정합니다.

인자평가 항목설명
R1암석 강도 (UCS)일축압축강도 — 암석의 기본 강도
R2RQDRock Quality Designation — 코어 회수율 기반 암반 품질
R3절리 간격불연속면 간의 간격 — 암반 블록 크기
R4절리 상태불연속면의 거칠기·충전물·풍화도
R5지하수 조건유입수량·수압 — 터널 내 용수 상태

기존에는 현장 기술자가 육안으로 막장면을 관찰하고 수기로 평가하는 방식이었으나, 딥러닝 모델이 막장면 사진에서 R1~R5 인자를 자동 추론하여 평가의 객관성과 일관성을 크게 향상시킵니다. 이를 Smart RMR이라 합니다.


시스템 아키텍처

모바일 클라이언트(iOS/Android), 웹 애플리케이션(SvelteKit), ML 추론 API(Flask/PyTorch), 클라우드 인프라(Supabase/AWS S3)로 구성된 분산 시스템입니다.

시스템 아키텍처
iOS App
Swift UIKit Realm Supabase AWS S3
110개 Swift 소스 · iOS 13.0+
Android App
Kotlin Compose Hilt Room CameraX Supabase
99개 Kotlin 소스 · ~7,900 LOC
Web App
SvelteKit Tailwind DaisyUI Prisma pdf-lib
82개 소스 · ~7,200 LOC · 관리자+사용자 UI
ML API (Smart RMR)
Flask PyTorch TorchVision CUDA
7개 사전학습 모델 · GPU 추론
Supabase
PostgreSQL Backend
AWS S3
이미지 저장소
Netlify
웹 배포

Smart RMR — AI 자동 평가 파이프라인

터널 막장면 사진 한 장으로 RMR 5개 인자를 자동 평가하는 딥러닝 추론 파이프라인입니다.

Smart RMR 추론 파이프라인
막장면 촬영
iOS/Android 카메라
이미지 전처리
400×800 리사이즈
7개 모델 추론
PyTorch · GPU
R1~R5 점수
개별+복합 평가
PDF 보고서
평가 결과 출력

ML API는 단일 인자 모델 5개(R1~R5)와 복합 모델 2개(R1234, R12345)를 동시에 실행하여, 개별 인자 점수와 종합 점수를 함께 반환합니다. GPU 가속(CUDA)을 지원하며, CPU 환경에서도 동작합니다.


기술 스택

구성 요소기술 스택역할
iOS AppSwift 5, UIKit, Realm, Supabase SDK, AWS S3 SDKiOS 네이티브 현장 기록 앱
iOS 아키텍처Repository 패턴, Extension 라이브러리, Fastlane CI/CD로컬/서버 이중 저장 + 충돌 해결
Android AppKotlin 1.9, Jetpack Compose, Hilt 2.50, Room DBAndroid 네이티브 현장 기록 앱
Android 아키텍처MVVM + Clean Architecture, CameraX, Glide, Navigation인앱 촬영 + 오프라인 지원
Web AppSvelteKit 2, Svelte 4, Tailwind CSS 3, DaisyUI 3관리자 + 사용자 웹 인터페이스
Web ORM/인증Prisma 4, Supabase Auth, AWS S3 SDK v3데이터 관리 + 인증 + 파일 저장
Web 기능pdf-lib, CropperJS, D3-scale, zodPDF 보고서 생성, 이미지 편집, 차트
ML APIPython 3.8, Flask 2.3, PyTorch 2.0, TorchVision딥러닝 추론 서버
ML 모델사전학습 CNN 모델 7개 (R1~R5 단일 + R1234/R12345 복합)막장면 이미지 → RMR 점수 추론
BackendSupabase (PostgreSQL)사용자·프로젝트·스테이션 데이터
StorageAWS S3터널 막장면 이미지 클라우드 저장
배포Netlify (Web), Flask standalone (API)웹 배포 + ML 서버 운영

데이터 모델 — 스테이션과 막장면

터널 측량의 핵심 데이터 단위인 스테이션(Station)막장면(Face)의 구조입니다. 하나의 스테이션은 터널 내 특정 측점을 나타내며, 6가지 촬영 방향의 이미지를 관리합니다.

터널 막장면 촬영 방향 (6방위)
CEIL_LEFT
천단 좌측
CEIL
천단부
CEIL_RIGHT
천단 우측
LEFT
좌측벽
END
막장면
RIGHT
우측벽
스테이션 명명 규칙: {km}k+{m}.{decimal} (예: 1k+234.5)

주요 화면

로그인

Supabase Auth 기반 로그인 화면입니다. iOS와 Android 모두 동일한 백엔드 인증을 사용합니다.

RMR iOS 로그인
iOS — 로그인
RMR Android 로그인
Android — 로그인

공구 선택 & 프로젝트 관리

터널 공사의 공구(施工區)를 선택하여 해당 구간의 스테이션 데이터를 관리합니다. 하나의 프로젝트에 여러 공구가 포함될 수 있으며, 공구별로 독립적인 스테이션 목록을 유지합니다.

공구 선택
Android — 공구 선택
데이터 다운로드
Android — 서버 데이터 동기화

스테이션 목록

터널 내 측정 스테이션을 목록으로 조회합니다. 각 스테이션의 이름(거리 표기), 촬영 이미지 수, 동기화 상태를 한눈에 파악할 수 있습니다. 로컬 저장 후 서버 동기화 방식으로 오프라인 환경에서도 사용 가능합니다.

iOS 스테이션 목록
iOS — 스테이션 목록
Android 스테이션 목록
Android — 스테이션 목록
iOS 스테이션 목록 2
iOS — 스테이션 목록 (이미지 포함)
Android 스테이션 목록 2
Android — 스테이션 목록 (상세 뷰)
iOS 스테이션 목록 3
iOS — 스테이션 목록 (갤러리 뷰)

스테이션 정보 — 막장면 이미지 & RMR 평가

스테이션의 상세 정보를 확인합니다. 6방위 촬영 이미지(천단 좌/우, 천단부, 좌측벽, 우측벽, 막장면)를 한 화면에서 조회하고, 수동 RMR 입력값과 Smart RMR 자동 평가 결과를 비교할 수 있습니다.

iOS 스테이션 정보
iOS — 스테이션 정보 (이미지)
Android 스테이션 정보
Android — 스테이션 정보 (이미지)
iOS 스테이션 정보 RMR
iOS — RMR 평가 결과
Android 스테이션 정보 RMR
Android — RMR 평가 결과

스테이션 추가 & 수정

새 스테이션을 등록하거나 기존 스테이션 정보를 수정합니다. 스테이션명(거리 표기), 막장면 방향(시점/종점), 촬영 이미지를 입력합니다. 카메라로 직접 촬영하거나 갤러리에서 이미지를 선택할 수 있습니다.

iOS 스테이션 추가
iOS — 스테이션 추가
Android 스테이션 추가
Android — 스테이션 추가
iOS 스테이션 추가 2
iOS — 이미지 촬영 방향 선택
Android 스테이션 추가 2
Android — 이미지 촬영 방향 선택
iOS 스테이션 추가 3
iOS — 막장면 사진 촬영
Android 스테이션 정보 수정
Android — 스테이션 정보 수정
iOS 스테이션 추가 4
iOS — 이미지 업로드 완료
Android 스테이션 수정
Android — 스테이션 수정

사진 촬영 & 업로드

Android 앱은 CameraX를 활용한 인앱 카메라를 제공합니다. 촬영한 사진을 미리보기하고, 6방위 중 해당하는 촬영 방향을 지정하여 업로드합니다. 촬영 후 AWS S3에 자동 업로드되며, 로컬 Room DB에도 캐싱하여 오프라인 환경을 지원합니다.

사진 업로드
Android — 사진 업로드
사진 미리보기
Android — 사진 미리보기

마이페이지 & 웹 연동

사용자 정보 관리와 웹 앱 연동 화면입니다. iOS 앱에서는 웹 기반 Smart RMR 분석 화면을 외부 프로그램으로 연동하여 사용할 수 있습니다.

iOS 마이페이지
iOS — 마이페이지
Android 마이페이지
Android — 마이페이지
iOS 웹 외부 프로그램 연동
iOS — 웹 기반 Smart RMR 분석 화면 연동

오프라인 동기화 아키텍처

터널 내부는 네트워크가 불안정한 환경입니다. iOS(Realm)와 Android(Room)는 로컬 데이터베이스에 먼저 저장한 뒤, 네트워크가 가용할 때 Supabase 서버와 동기화합니다. 편집 충돌(Conflict) 감지 및 해결 메커니즘을 내장하여 데이터 무결성을 보장합니다.

오프라인 우선 데이터 흐름
현장 촬영
카메라 / 갤러리
로컬 저장
Room / Realm
충돌 검사
Edit History
서버 동기화
Supabase + S3

플랫폼별 모듈 구조

iOS (Swift)
App/ — AppDelegate, SceneDelegate
Extensions/ — UIKit, Foundation, Supabase 확장
Models/ — Station, Face, Image, Project, Company
Network/ — Repository (Local/Supabase), Service
Resources/ — Assets, Colors, Icons
Android (Kotlin)
base/ — BaseFragment, BaseStateViewModel
data/ — Room DAOs, Database
di/ — Hilt DI Modules
model/ — Station, Face, Image, SmartRmr
repository/ — Data Repositories
ui/ — Compose Screens (목록/상세/추가)
navigation/ — Navigation Graph
Web (SvelteKit)
/admin — 회사·프로젝트 관리
/app/station — 스테이션 CRUD
/app/gallary — 이미지 갤러리
SmartRmr — AI 평가 인터페이스
report/ — PDF 보고서 생성
storage/ — S3 스토리지 연동
Sketch — 막장면 스케치 도구

프로젝트 규모

구성 요소언어소스 파일코드 라인비고
iOS AppSwift110개iOS 13.0+ · Realm · Fastlane CI/CD
Android AppKotlin99개~7,900API 24+ · Jetpack Compose · MVVM
Web AppJS/TS/Svelte82개~7,200SvelteKit 2 · Prisma · DaisyUI
ML APIPython1개173PyTorch 모델 7개 (총 ~500MB)
합계292개~15,300+4개 플랫폼 동시 개발