"1분반-DOS"의 두 판 사이의 차이

cdc wiki
이동: 둘러보기, 검색
(개발 과제의 배경 및 효과)
(이론적 계산 및 시뮬레이션)
279번째 줄: 279번째 줄:
 
:본 시스템의 등산로 생성 기능에는 다익스트라(Dijkstra) 알고리즘이 사용되었으며, 알고리즘의 이론적 시간 복잡도 (: 정점 수, : 간선 수)이다. [[#그림_3|그림 3]]은 각 산에 존재하는 등산로의 정점과 간선을 나타내는데, 각 산의 데이터가 크지 않음을 확인할 수 있다. 정점과 간선 개수가 많을수록 등산로 생성이 오래 걸리는데, 정점과 간선 개수가 가장 많은 팔공산 비로봉(정점 334개, 간선 405개를 기준으로 최장 거리 구간 탐색을 수행해도 소요 시간은 약 0.0005초에 불과했다.  
 
:본 시스템의 등산로 생성 기능에는 다익스트라(Dijkstra) 알고리즘이 사용되었으며, 알고리즘의 이론적 시간 복잡도 (: 정점 수, : 간선 수)이다. [[#그림_3|그림 3]]은 각 산에 존재하는 등산로의 정점과 간선을 나타내는데, 각 산의 데이터가 크지 않음을 확인할 수 있다. 정점과 간선 개수가 많을수록 등산로 생성이 오래 걸리는데, 정점과 간선 개수가 가장 많은 팔공산 비로봉(정점 334개, 간선 405개를 기준으로 최장 거리 구간 탐색을 수행해도 소요 시간은 약 0.0005초에 불과했다.  
  
[[파일:dos-자원사용률.jpg|800픽셀]]
+
[[파일:dos-자원사용률.jpg|1200픽셀|섬네일|가운데|<span id="그림_4">'''그림 4.''' 실제 서버에서 등산로 추천 요청을 100개 정도 받았을 때 걸리는 서버 부하</span>]]
  
 
:{| class="wikitable"
 
:{| class="wikitable"
 +
|-
 +
|+ <span id="표 1">표 1. 한 번에 10명의 사용자가 동시에 요청을 보냈을 때 소요 시간</span>
 
|-
 
|-
 
! 지표 !! 동시 사용자 10명 (100회 평균)
 
! 지표 !! 동시 사용자 10명 (100회 평균)
308번째 줄: 310번째 줄:
 
|}
 
|}
  
:실제 서비스를 위하여, 한 번에 많은 등산로 추천 요청을 받는 경우를 테스트했다. 시뮬레이션 결과, 서버에 걸리는 부하는 그림 4와 같았다. 1초에 약 9개 정도의 요청을 처리할 수 있는 것을 확인했으며, 평균 응답 시간은 1.08초였고, 최대 응답 시간은 1.52초였다. 우리가 제시했던 최대 응답 시간은 2초 이내로, 실제 부하가 있는 환경에서도 개발한 서비스가 제시했던 기준을 충족함을 확인했다.
+
:실제 서비스를 위하여, 한 번에 많은 등산로 추천 요청을 받는 경우를 테스트했다([[#표_1|표 1]]). 시뮬레이션 결과, 서버에 걸리는 부하는 [[#그림_4|그림 4]]와 같았다. 1초에 약 9개 정도의 요청을 처리할 수 있는 것을 확인했으며, 평균 응답 시간은 1.08초였고, 최대 응답 시간은 1.52초였다. 우리가 제시했던 최대 응답 시간은 2초 이내로, 실제 부하가 있는 환경에서도 개발한 서비스가 제시했던 기준을 충족함을 확인했다.
  
 
===상세설계 내용===
 
===상세설계 내용===

2025년 6월 19일 (목) 06:51 판

목차

 [숨기기

프로젝트 개요

기술개발 과제

국문 : AI 기반 개인 맞춤형 등산로 추천 시스템

영문 : AI-based Personalized Hiking Trail Recommendation System

과제 팀명

DOS

지도교수

김성환 교수님

개발기간

2025년 3월 ~ 2025년 6월 (총 4개월)

구성원 소개

서울시립대학교 컴퓨터과학부 20209200** 이*영(팀장)

서울시립대학교 컴퓨터과학부 20209200** 문*서

서울시립대학교 컴퓨터과학부 20209200** 장*빈

서론

개발 과제의 개요

개발 과제 요약

본 과제는 산림청 및 국립공원관리공단이 제공하는 신뢰도 높은 탐방로 데이터를 기반으로, 인공지능 기술을 활용하여 개인의 체력, 취향, 등산 경험에 최적화된 등산 목적지 및 코스를 추천하고 안내하는 시스템을 개발하는 것을 목표로 한다.

초기 추천 시스템 구축을 위해 서울 지역 주요 산 4개소(북한산, 도봉산, 수락산, 관악산)를 대상으로, 설문조사를 통해 등산객 106명의 사용자 개개인의 신체 능력과 등산 경험 등을 포함한 설문조사를 실시했다. 설문조사를 통해 수집한 신체 능력 및 등산 경험에 기반하여 사용자의 적정 난이도를 계산하는 알고리즘을 회귀분석으로 구현하였으며, 비슷한 성향을 가진 사람들이 자주 방문한 목적지를 추천하는 알고리즘을 인공지능 분류 모델을 이용하여 구현했다.

또한, 사용자 맞춤형 등산로의 경우 경로 난이도를 우선으로 고려해 다익스트라 알고리즘으로 희망하는 등산로를 생성하는 기능을 구현했다. 등산로의 난이도는 등산로 정보(예: 등산로의 기울기)를 이용해 Tobler’s hiking function을 응용하여 계산하였다. 이를 바탕으로 사용자에게 적절한 난이도와 추천한 목적지, 사용자의 입산 위치와 퇴산 위치를 바탕으로 개인에 최적화된 등산로를 생성하고, 사용자의 위치에 기반하여 등산로를 안내하는 기능을 제공한다.

현재 개발 과제는 서울 지역 주요 산 4개소(북한산, 도봉산, 수락산, 관악산)에 대해서는 목적지 추천 기능까지 모두 제공하며, 대한민국의 주요 산 20여 개에 대해서는 등산로 추천 기능만 제공한다. 추후 각 산에 따른 사용자 데이터를 추가로 수집하여 범위를 확장할 계획이다.

개발 과제의 배경 및 효과

그림 1. 등산사고 발생 요인 (산림청 제공)


최근 산림청의 조사[1]에 따르면, 대한민국 전체 성인 남녀 중 약 78%가 한 달에 한 번 이상 등산을 즐기고 있다(그림 1). 이처럼 등산은 국민 여가 활동의 중요한 부분을 차지하고 있다. 그러나 기존 등산 정보 제공 서비스들은 탐방로 정보의 신뢰성, 가독성, 그리고 사용자 맞춤형 추천 기능 등에서 한계를 보인다. 특히, 산림청과 같은 공공기관의 공식 데이터(그림 2)를 활용한 고품질 정보는 부족한 상황이며, 개인의 체력이나 운동 부하를 고려한 추천 시스템이 부재하여 사용자는 자신에게 적합한 코스를 찾기 어려운 실정이다.


그림 2. 산림청 제공 데이터 예시


본 과제는 이러한 문제점을 해결하고자 산림청, 국립공원관리공단의 정밀한 탐방로 데이터를 기반으로 사용자가 손쉽게 접근할 수 있는 인터페이스를 제공하며, 인공지능 기술을 통해 개인 맞춤형 등산 코스를 추천하는 시스템을 개발하는 것이다. 이 시스템을 통해 등산객들은 보다 안전하고 효율적인 코스 선택이 가능해지며, 이로 인해 개인의 안전사고 예방 효과가 기대된다.

개발 과제의 목표 및 내용

정확하고 신뢰성 있는 탐방로 정보 제공
산림청과 국립공원관리공단이 제공하는 공식 탐방로 데이터를 바탕으로, 사용자에게 명확하고 신뢰성 높은 정보를 제공하고자 한다. 이를 위해 사용자 인터페이스와 정보 구조를 재정비하고, 효과적인 데이터 시각화 기법을 도입하여 정보 접근성을 향상할 계획이다.
개인 맞춤형 등산로 추천 시스템 구현
사용자의 기본 정보, 체력 상태, 운동 부하, 선호도 등 다양한 요소를 종합적으로 분석하여 개인에게 최적화된 등산 코스를 추천하는 AI 기반 알고리즘을 개발한다. 이를 위해 머신러닝 및 딥러닝 모델을 적용하고, 사용자의 피드백을 신속하게 반영할 수 있는 동적 학습 기능을 포함할 예정이다.
지속적 시스템 개선 및 사용자 만족도 증대
시스템 개발 완료 후에도 사용자 피드백과 평가를 지속적으로 수집·분석하여 정기적인 업데이트를 수행한다. 이를 통해 최신 정보와 최적의 추천 서비스를 제공하며, 사용자의 만족도를 지속적으로 향상하고자 한다.


구체적인 개발 단계는 우선 탐방로 데이터의 정제 및 가공을 통해 데이터베이스를 구축하는 것으로 시작된다. 이후 사용자 프로파일링과 데이터 분석을 기반으로, 등산로와 사용자의 특성을 매칭하는 AI 알고리즘을 개발하고, 이를 챗봇 및 웹 기반 서비스로 개발할 것이다. 최종적으로 사용자 테스트와 파일럿 운영을 거쳐 상용화에 필요한 기술적, 기능적 보완을 진행하여, 실제 등산객들이 안정적으로 사용할 수 있는 완성도 높은 시스템을 구현할 예정이다.

관련 기술의 현황

관련 기술의 현황 및 분석(State of art)

등산로의 난이도 측정 알고리즘
- 지형 데이터를 수치화하여 난이도를 정량적으로 산출하는 알고리즘이 활발히 연구되고 있음.
- Naismith의 법칙을 기반으로 하면 상승 고도와 수평 거리의 시간적 등가성을 계산할 수 있음[2].
- Tobler 함수는 경사에 따른 보행 속도를 지수 함수로 모델링해, 경로 탐색과 최적화에 활용됨[3].
추천 시스템
- 추천 시스템은 다양한 응용 서비스 분야에서 활발히 사용되고 있다.
- 최근 연구들은 콘텐츠 기반 필터링, 협업 필터링 등 다양한 추천 모델을 활용하고 있음 [4].
- 특히, 설문조사나 사용자 행동 데이터를 기반으로 한 개인화 추천 시스템이 각광받고 있음 [4].
사용자 위치 기반 경로 안내 기술
- GPS, 고도계 등의 복합 센서를 활용해 실시간 사용자 위치를 추적하는 기술이 개발됨.
- 그러나, 실제 등산로와 사용자 방향을 실시간으로 분석해 비교하는 기술은 아직 존재하지 않음.
등산로 데이터 가공 및 시각화 기술
- 산림청에서는 등산로 데이터를 개방데이터로 공개하고 있음

기술 로드맵

1단계: 데이터 수집 및 구조화
- 산림청 데이터를 정제하고, 필요 정보(경도, 위도, 경로 특성 등)를 추출하여 구조화된 DB 구축
- 사용자 정보를 수집하기 위한 설문 시스템 기획 및 구축
2단계: 기초 알고리즘 개발
- Naismith 및 Tobler과 같은 실제 등산로 기반 난이도 산정 알고리즘 구현
- 기본적인 목적지 및 경로 추천 알고리즘 프로토타입 개발
- geojson 기반 등산로 시각화 모듈 제작
3단계: 개인화 및 실시간 시스템 통합
- 사용자 운동 경험, 연령, 희망 난이도 등 특성 기반 추천 시스템 고도화 (머신러닝 적용)
- 난이도 예측 알고리즘과 사용자 선호도 매칭을 통한 개인 맞춤형 경로 추천 기능 구현
- 실시간 경로 안내 알고리즘 구현

특허 조사

등산 내비게이션 단말 시스템 및 이를 이용한 등산 코스 안내 운영 방법
- GPS 수신기와 산악 전자지도 DB를 내장한 휴대용 등산 내비게이션 단말기를 이용해 안내
산림 빅데이터 플랫폼에 기반하여 데이터 상품을 제공하는 장치 및 방법
- 트레킹부터 시작하여 산림 빅데이터를 사용할 때 시스템의 구성에 관한 특허

특허 전략

사용자 맞춤의 구체적인 방식에 대한 차별화 전략
- 기존 특허가 포괄적으로 ‘산림 빅데이터’와 ‘사용자 맞춤 서비스’까지 청구항으로 포함하고 있어, 동작 과정의 구체적인 방식에 주목해 차별화를 시도할 예정임
구체적인 청구 전략
- Naismith, Tobler 등 복수의 등산 시간/속도 모델을 활용해 등산로의 난이도를 산정할 수 있음
- 운동 경험, 연령, 성별, 선호 강도를 통해 사용자의 희망 난이도를 산정할 수 있음
- 등산로의 난이도와 사용자의 희망 난이도를 매칭하여 경로를 추천할 수 있음

관련 시장에 대한 분석

경쟁제품 조사 비교

네이버 지도
장점
- 서비스의 인터페이스가 사용자 친화적이다.
- 사용자의 리뷰를 볼 수 있다.
단점
- 경사도, 통제 등의 상세한 등산로 정보를 제공하지 않는다.
- 코스 정보가 구간 단위로 파편화되어 있어 사용자가 전체 등산로에 대한 정보를 알기 어렵다.
국립공원공단 홈페이지
장점
- 상세한 등산로 정보를 제공한다.
- 정확한 등산로 정보를 제공한다.
단점
- UI의 가독성이 떨어진다.
- 같은 등산로에 대한 정보가 여러 페이지에 흩어져 있어 사용자가 등산로 정보를 한눈에 알아보기 힘들다.
트랭글
장점
- 실제 사용자 데이터를 기반으로 등산로 데이터를 제공한다.
- Gamification을 통해 사용자에게 등산에 대한 동기를 부여한다.
단점
- 등산로 데이터를 사용자가 직접 입력하기 때문에 정보의 신뢰성이 부족하다.
- 비인기 코스에 대한 등산로 정보가 부족하다.
- 핵심 기능(예: Gamification)을 유료로 제공하고 있다.

마케팅 전략

좋은 사용성을 유지하면서도 정확하고 자세한 등산 경로를 추천하는 서비스를 제공한다.
- 네이버 지도의 경우는 좋은 사용성을 가졌으나 전체 등산로 정보를 알기 어렵다.
- 국립공원공단 홈페이지는 정확하고 자세한 등산 경로를 제공하나, 사용성이 나쁘다.
- 트랭글은 사용성이 좋으나, 정보의 신뢰성이 부족하다.
- 우리 서비스는 선행 서비스를 따라잡기 위하여 좋은 사용성에 대한 점검을 철저히 할 계획이다.
사용자 개개인의 특성 및 난이도에 맞추어 정보를 제공한다.
- 사용자 개개인의 특성에 기반하여 등산 목적지를 추천한다.
- 사용자의 운동 수준 및 희망 수준, 등산 목적지를 고려하여 등산로를 생성하여 제공한다.
- 이는 선행 서비스에서 제공하지 않는 부분이다.
등산로에 대한 정확한 정보를 적절하게 제공한다.
- 산림청에 따르면 많은 산악사고가 등산로에 대한 정보 부족 때문에 발생한다[1].
- 잠재적 사용자(예: 등산객)를 대상으로 조사해본 결과, 블로그 등의 신뢰성을 보장할 수 없는 출처에서 등산로 정보를 얻는다는 점을 발견했다.
- 또한, 등산로 내 표지판 부족으로 다른 등산객들이 직접 표지판을 만드는 경우도 많다.
- 산악구조대 소속 전문가 인터뷰 결과, 등산로의 방향을 적절한 때에 제공하면 등산 중 사고가 줄어들 것이라는 의견을 받았다.


위의 마케팅 전략을 바탕으로, 우리는 다음과 같은 기능을 제공한다.
- 사용자 정보 입력 기능
- 사용자 맞춤형 등산 목적지 추천 기능
- 사용자 맞춤형 등산로 생성 기능
- 등산로 안내 기능

개발과제의 기대효과

기술적 기대효과

등산로 데이터 가공 및 구조화 기술 확보
산림청에서 제공하는 등산로 geojson 데이터를 기반으로, 향후 다양한 등산 관련 서비스의 기술적 기반을 마련할 수 있다.
등산 난이도 분석 알고리즘 개발
등산로의 길이, 고도차, 경사, 재질 등의 데이터를 종합하여 산행 난이도를 정량화하여, 사용자에게 맞춤형으로 제공할 수 있는 기술적 기반을 마련할 수 있다.
등산 경로 안내 기술 확보
가공한 등산로 데이터를 사용자에게 내비게이션과 유사한 방식으로 사용자에게 제공하여 등산로 정보를 가독성 있게 제공할 수 있다.

경제적, 사회적 기대 및 파급효과

내용

기술개발 일정 및 추진체계

개발 일정

내용

구성원 및 추진체계

내용

설계

사용자 요구사항

기능적 요구사항

R1: 개인 정보 입력 기능
- 사용자는 등산 목적지 추천 및 경로 생성을 위해 키, 체중, 성별, 등산 빈도, 선호 목적(예: 운동, 경치, 휴식) 등의 정보를 입력할 수 있어야 한다.
R2: 맞춤형 등산 목적지 추천 기능
- 시스템은 사용자가 입력한 신체 정보와 등산 경험 데이터를 바탕으로, 유사한 사용자들이 선호한 등산 목적지를 추천할 수 있어야 한다.
R3: 출발 및 도착 지점 선택 기능
- 사용자는 지도상에서 자신이 원하는 입산 지점과 하산 지점을 선택할 수 있어야 한다.
R4: 개인 맞춤형 등산로 생성 기능
- 시스템은 사용자의 체력 수준 및 희망 난이도와 등산로의 기울기, 고도, 재질 등의 정보를 고려하여 최적의 등산 경로를 생성해야 한다.
R5: 실시간 등산로 안내 기능
- 시스템은 GPS를 기반으로 사용자의 현재 위치를 표시하고, 등산 도중 갈림길이나 분기점에서 방향을 알려주는 기능을 제공해야 한다.

비기능적 요구사항

R6: 사용성 (Usability)
- 사용자 인터페이스는 직관적이고 사용자가 각 기능을 쉽게 사용할 수 있어야 한다.
R7: 응답 속도 (Performance)
- 등산 목적지 추천 기능 및 등산로 생성 기능은 각각 2초 이내에 처리되어야 한다.
R8: 신뢰성 (Reliability)
- 시스템은 산림청에서 제공한 등산로 데이터에 기반하여 정확한 정보를 제공해야 한다.
R9: 확장성 (Scalability)
- 추후 더 많은 산과 사용자 데이터를 추가할 수 있도록 시스템 구조는 확장 가능해야 한다.

사용자 요구사항 만족을 위한 기능 정의 및 기능별 정량목표

F1: 개인 맞춤형 등산 목적지 추천 기능
기능 정의
사용자가 입력한 키, 체중, 등산 빈도, 선호 목적 등 개인 정보를 바탕으로, 유사 사용자군이 선호한 목적지를 인공지능 모델을 통해 추천한다.
정량 목표
- 추천 결과 정확도: 95% 이상 (실제 등산 목적지 도달 성공률 기준)
- 평균 응답 시간: 2초 이내
- 사용자 만족도: SUS 점수 상위 5%
F2: 개인 맞춤형 등산로 생성 기능
기능 정의
사용자의 희망 목적지와 입산/퇴산 지점 정보를 바탕으로, 산림청 등산로 데이터를 활용하여 사용자 난이도에 맞는 최적 경로를 생성한다.
정량 목표
- 경로 생성 시간: 2초 이내
- 개인 맞춤형 등산로 생성 기능에 대한 ASQ 평가 결과 6점 이상
F3: 실시간 등산 경로 안내 기능
기능 정의
GPS 위치 정보를 기반으로, 사용자가 현재 위치에서 어떤 방향으로 이동해야 하는지를 이미지로 안내한다.
정량 목표
- 사용자 위치와 GPS 표기 위치 간 차이 15m 이내
- 안내 정확도: 99% 이상 (등산로 갈림길 방향 일치 여부)
F4: 사용자 정보 입력 기능
기능 정의
사용자가 자신의 정보를 손쉽게 입력할 수 있는 입력 양식을 제공한다.
정량 목표
- 입력 완료 소요 시간: 2분 이내
- 사용자 정보 입력 기능에 대한 ASQ 평가 결과 6점 이상
F5: 시스템 성능 및 신뢰성 목표
기능 정의
전체 시스템이 모바일 환경에서 원활히 작동하고, 여러 사용자가 동시에 요청하더라도 서버 부하 없이 빠르게 응답하도록 구성된다.
정량 목표
- 동시 요청 처리량: 10명 기준 초당 5건 이상
- 평균 응답 시간: 2초
- 시스템 실패율: 0% (100회 요청 기준)

기능 구현을 위한 세부기술 선택사항 (디자인)

서버 및 클라이언트 프레임워크
프론트엔드는 React를 활용하여 사용자 인터페이스를 구성하였다. 백엔드는 Python의 FastAPI를 사용하여 경량화된 RESTful API 서버를 구현하였다. FastAPI는 비동기 처리와 빠른 응답 속도를 제공한다. 컴포넌트 기반의 설계로 유지보수와 확장성이 뛰어나며, 사용자 경험(UX)을 고려한 동적 페이지 처리가 용이하다.
하드웨어 인프라 구성
라즈베리파이 5를 서버로 사용하여 저전력 환경에서도 동작할 수 있도록 구성하였다. 서버의 부하를 분산시키기 위해 파일 서버, 프론트엔드, 백엔드 각각 1개씩 총 3개의 라즈베리파이를 사용하였으며, 이를 통해 트래픽 분산과 장애 시 대체 가능성 확보 등 관리 용이성을 강화하였다.
경로 탐색 알고리즘 설계
등산로 생성 기능에서는 Tobler’s hiking function을 활용하여 등산로의 난이도를 산출한다. 산출된 난이도를 바탕으로 다익스트라(Dijkstra) 알고리즘을 사용하였다. 이를 통해 등산로 특성을 고려한 사용자 맞춤형 최적 경로를 생성할 수 있도록 설계하였다.
지도 시각화 도구
등산 경로의 시각화 및 지도 기능 구현에는 Leaflet.js와 OpenStreetMap을 사용하였다. 이를 통해 사용자에게 직관적이고 반응성이 뛰어난 지도 UI를 제공한다. 또한, 지도상에 경로 및 분기점을 효과적으로 표시할 수 있다.

시스템 설계

클라이언트 (프론트엔드)
구현 기술: React
주요 역할
- 사용자 정보 입력
- 지도 기반의 등산 경로 표시 (Leaflet.js + OpenStreetMap)
- 추천 경로 결과 시각화 및 반응형 UI 구성
API 서버 (백엔드)
구현 기술: FastAPI
주요 역할
- 사용자 요청 처리 (등산로 추천, 등산 경로 요청 등)
- 경로 탐색 알고리즘 실행 (Dijkstra 기반)
- 서버는 RESTful API 형태로 구현되어 있으며, 데이터는 JSON 형식으로 주고받는다.
데이터베이스 및 경로 데이터 처리
- 사용자 정보 및 등산로 데이터를 저장 및 관리한다.
- 산 데이터에는 등산로 전체 경로, 분기점 등의 속성이 포함되어 있다.
- 등산로는 좌표 데이터를 기반으로 Leaflet 상에 Polyline 객체로 변환되어 시각화된다.
- 좌표, 난이도 등의 속성이 포함되어 있으며, 알고리즘 수행 시 가중치로 사용된다.

이론적 계산 및 시뮬레이션

그림 3. 22개 산 데이터의 정점 수(왼쪽), 간선 수(오른쪽). 빨간색 점선은 평균값에 해당한다.


본 시스템의 등산로 생성 기능에는 다익스트라(Dijkstra) 알고리즘이 사용되었으며, 알고리즘의 이론적 시간 복잡도 (: 정점 수, : 간선 수)이다. 그림 3은 각 산에 존재하는 등산로의 정점과 간선을 나타내는데, 각 산의 데이터가 크지 않음을 확인할 수 있다. 정점과 간선 개수가 많을수록 등산로 생성이 오래 걸리는데, 정점과 간선 개수가 가장 많은 팔공산 비로봉(정점 334개, 간선 405개를 기준으로 최장 거리 구간 탐색을 수행해도 소요 시간은 약 0.0005초에 불과했다.
그림 4. 실제 서버에서 등산로 추천 요청을 100개 정도 받았을 때 걸리는 서버 부하
표 1. 한 번에 10명의 사용자가 동시에 요청을 보냈을 때 소요 시간
지표 동시 사용자 10명 (100회 평균)
처리량(요청/초) 9.24개/초
평균 응답 시간 1,081.9 ms (약 1.08초)
연결 설정 시간 7.0 ms
서버 대기 시간 982.0 ms
처리 완료 시간 1019.0 ms
총 소요 시간 1025.0 ms
P50 (상위50%) 1066 ms
P90 (상위90%) 1482 ms
P95 (상위95%) 1512 ms
P100 (상위100%) 1517 ms
실패율 0%
실제 서비스를 위하여, 한 번에 많은 등산로 추천 요청을 받는 경우를 테스트했다(표 1). 시뮬레이션 결과, 서버에 걸리는 부하는 그림 4와 같았다. 1초에 약 9개 정도의 요청을 처리할 수 있는 것을 확인했으며, 평균 응답 시간은 1.08초였고, 최대 응답 시간은 1.52초였다. 우리가 제시했던 최대 응답 시간은 2초 이내로, 실제 부하가 있는 환경에서도 개발한 서비스가 제시했던 기준을 충족함을 확인했다.

상세설계 내용

하드웨어 설계

구분 사양
모델 Raspberry Pi 5 (8GB RAM)
CPU Quad-core Cortex-A76 @ 2.4GHz
GPU VideoCore VII (800 MHz)
RAM 8GB LPDDR4X
Storage 64GB microSD
Network 1Gbps Ethernet, Wi-Fi 802.11ac, Bluetooth 5.0
I/O USB 3.0 x 2, USB 2.0 x 2, GPIO, HDMI × 2
전원 USB-C (5V 5A), 평균 소비 전력 약 15W
본 시스템에 사용한 라즈베리파이 5의 성능은 다음과 같았다. 총 라즈베리파이 5 (8GB 모델) 3대를 활용하였으며, 프론트엔드 서버(React 앱 서빙 및 정적 자원 제공), 백엔드 API 서버(FastAPI, 경로 추천, 사용자 데이터 처리), 데이터 서버(등산로 데이터, 이미지 저장 및 처리)로 역할을 분리한 구조로 설계되었다. 각 장비는 물리적으로 독립된 하드웨어로 구성되며, 동일 네트워크상의 라우터를 통해 상호 연결되어 있다.
이러한 구조는 저전력으로 운용할 수 있다는 장점을 가질 뿐만 아니라, 마이크로서비스 형태로의 확장이 용이하며, 장애 분리 및 병렬 처리가 가능하다는 장점이 있다. 각 장비는 SSH 접속을 통해 원격에서 제어 및 유지관리가 가능하도록 설정되어 있다.

소프트웨어 설계

본 시스템은 사용자 맞춤형 등산로 추천 기능을 중심으로 한 웹 기반 등산로 내비게이션 시스템으로, 다양한 소프트웨어(예: 프론트엔드 등)으로 이루어진다.

전체 아키텍처 설계
시스템은 클라이언트-서버 구조를 기반으로 하며, 주요 구성은 다음과 같다.
- 클라이언트 서버(프론트엔드): React 기반으로 구현되어 사용자 정보 입력, 등산로 시각화, 경로 추천 결과 출력, 등산로 안내 기능을 제공한다.
- API 서버(백엔드): FastAPI를 사용하여 사용자 입력 정보를 처리하고, 등산로 경로 생성 및 경로 안내를 수행한다.
- 데이터베이스 서버: 산림청 제공 데이터 및 2차 가공 데이터(예: 등산로 데이터) 등이 저장된다.
- 서버 인프라: 라즈베리파이 5 장비 3대를 병렬 구성하여 백엔드, 프론트엔드, 데이터 서버로 분리 운영하며, 저전력 기반에서도 충분한 성능을 제공한다.
주요 기능별 설계
개인 맞춤형 목적지 추천
- 사용자로부터 성별, 키, 체중, 등산 빈도, 등산 목적 등의 정보를 입력받는다.
- 회귀분석 기반의 운동 수준 계산 알고리즘과 인공지능 분류 모델을 사용하여 유사한 사용자들이 선호했던 목적지를 추천한다.
개인 맞춤형 등산로 생성
- 사용자의 체력 지수 및 희망 난이도, 시작 지점과 종료 지점을 바탕으로 등산로를 선택한다.
- 등산로의 난이도는 Tobler’s Hiking Function을 응용하여, 기울기와 고도차 등의 정보를 기반으로 계산한다.
- Dijkstra 알고리즘을 이용하여 난이도 기반 가중치를 고려한 최적 경로를 탐색한다.
실시간 등산로 안내 기능
- 사용자의 GPS 위치를 기반으로 등산로 진행 방향을 시각적 이미지로 제공한다.
- 산 내부 갈림길에서의 방향 정보를 제공하여, 표지판이 부족한 지역에서도 올바른 경로를 안내한다.


소프트웨어흐름도.png

결과 및 평가

완료 작품의 소개

Dos-작동사진.jpg

개인 정보 입력
사용자는 자신의 키, 체중 및 등산 빈도, 등산 목적과 같은 정보를 입력한다.
개인 맞춤형 등산 목적지 추천
앞서 입력된 개인 정보를 바탕으로 과거 유사한 사용자들이 선호했던 목적지들을 추천한다.
사용자는 추천된 목적지들을 저장하고 이를 바탕으로 개인 맞춤형 등산로 생성 기능에서 활용할 수 있다.
개인 맞춤형 등산로 생성
사용자는 개인 맞춤형 등산 목적지 추천 기능에서 선택한 등산 목적지들의 등산 시작 지점, 등산 종료 지점을 확인할 수 있다.
이후 등산 시작 지점, 등산 종료 지점을 선택하고, 희망 난이도(매우 쉽게- 매우 어렵게)를 선택한다.
시스템은 등산 목적지, 사용자 운동 수준 및 사용자의 희망 난이도, 그리고 입력받은 등산 시작 지점 및 등산 종료 지점을 바탕으로 개인 맞춤형 등산로를 생성한다.
생성한 등산로 안내
앞서 개인 맞춤형 등산로 생성 과정에서 생성한 등산로에 대해 사용자에게 안내하는 기능을 제공한다.
산 내부의 갈림길에서 표지판이 없는 경우가 있어 해당 기능을 제공하게 되었으며, 각 갈림길에서 진행해야 할 방향을 사용자에게 안내한다.
사용자는 자신의 현재 위치에 기반하여 정보를 받을 수 있고, 길을 잘못 들었을 경우 GPS를 통해 이를 확인하고 되돌아갈 수 있다.

실행 방법 (Run)

인터넷 탐색기에서 다음 주소를 입력하여 바로 실행할 수 있다. 모바일 환경에 최적화되어 있다.

셰르파(Sherpa)

완료 작품의 평가

표 3. 완료 작품 평가 항목 및 결과
평가 항목 평가방법 적용기준 개발 목표치 비중 (%) 평가결과
1. 정보의 정확성 평가용 질문 & 답변
실제 등산을 통한 확인
정확도 (100%) 99% 50 97.2%
2. 사용자 만족도 시스템 사용성 척도(SUS)
시나리오 후 설문(ASQ)
만족도 (5점)
점수 (7점)
SUS 4점
ASQ 5.5점
30 SUS 상위 5%
ASQ 6.67점
3. 유지보수 가능성 서비스를 운용하는 데
들어가는 비용 & 수익 비교
- 수익>비용 20 수익>비용

정보의 정확성

표 4. 생성한 등산로의 각 목적지별 정확도
목적지 정확도
수락산 정상 100%
수락산 내원암 100%
수락산 도정봉 100%
북한산 사모바위 97%
노고산 정상 89%

실제 등산로 안내 기능을 활용해 등산을 진행하며, 서비스에서 표시되는 화살표의 방향이 실제 진행해야 할 방향과 일치하는지를 확인하였다(표 4). 수락산에서는 기능이 정상적으로 동작하여 100%의 정확도를 보였다.

북한산 사모바위의 경우 97%의 정확도를 보였는데 33개의 갈림길에 대해 생성된 33개의 화살표 이미지 중 한 개의 화살표에 문제가 있었다. 실제 상황은 사거리에서 직진해야 하는 구조였으나, 좌측 8시 방향 탐방로가 표시되지 않아, 시스템상에서는 삼거리에서 직진하는 이미지가 생성되었다. 8시 방향 탐방로가 반영되지 않은 이유는 해당 구간이 이용이 금지된 비법정 탐방로로, 산림청 제공 데이터에 포함되어 있지 않았기 때문이다. 사거리가 삼거리로 표시되어 사용자에게 혼란을 줄 가능성은 있으나, 진행 방향은 정상적으로 안내되었고, 제공되지 않은 비법정 탐방로로 인해 실제 등산 과정에서 문제는 발생하지 않았다.

노고산 정상의 경우, 89%의 정확도를 보였다. 27개의 갈림길 중 초반 24개의 갈림길에 대해서는 화살표 이미지가 전부 정확하게 생성되었으나 후반 3개의 갈림에 대한 화살표 이미지가 생성되지 않았다. 이미지가 생성되지 않은 이유는, 산림청 제공 데이터에서 24번째 갈림길 이후의 등산로 데이터가 누락되어 있었기 때문이다. 다만, 24번째 갈림길까지는 정확한 길을 제시하였기 때문에 정상까지의 모든 길을 안내해 주지는 못하였으나, 잘못된 길로 안내하지도 않았다.

정보 누락의 원인으로는 두 가지 가능성을 고려할 수 있다.

첫째, 노고산은 국립공원에 속하지 않는 양주시 관할 등산로이기 때문에, 산림청과 기초지방자치단체(양주시) 간의 정보 공유 및 연계가 원활하지 않았을 가능성이 있다. 
둘째, 노고산은 상대적으로 탐방객 수가 적은 저명도 산지로, 양주시에서 등산로를 체계적으로 조사하거나 디지털화하여 외부 기관에 제공하는 데에 적극적이지 않았을 가능성도 존재한다.

실제 평가 결과 다섯 개의 평균은 97.2%로, 기존 개발 목표치였던 99%보다 떨어졌으나, 실제 등산 과정에서 사용자에게 치명적인 혼란이나 위험을 유발하지는 않았다는 점에서 기능의 기본적인 유효성은 확보되었음을 확인할 수 있다. 특히, 수락산과 같은 정비된 등산로에서는 화살표 이미지와 실제 경로가 완전히 일치하였고, 북한산도 단일 예외 사례를 제외하면 전반적으로 신뢰할 수 있는 결과를 보였다.

사용자 만족도

우리는 프로토타입의 추천 시스템의 초기 데이터로 사용하기 위해 106명의 등산객을 대상으로 설문조사를 진행하였다. 평가 인원을 모집하기 위하여 설문조사에 참여했던 등산객들에게 이메일, 전화번호를 이용해 사용자 평가 인원을 모집했다. 모집한 사용자들을 대상으로 사용자 만족도를 평가하고, 개발한 시스템을 개선하기 위하여 12명의 사용자를 대상으로 노고산(4명), 수락산(8명)에서 두 번의 평가를 진행했다. 사용자들은 실제로 등산 전에 3분 이내로 우리 시스템을 사용할 시간을 제공받고, 우리 시스템을 사용해 다음 Task를 수행했다(그림 8).


파일:사진명.jpg
그림 8. ASQ(시나리오 후 설문)에서 각 기능을 평가하기 위한 Task들


Task를 수행한 이후, 각 Task와 시스템의 사용성에 대해 질문한 후, 등산을 진행하면서 반구조화된 인터뷰를 수행하여 우리 앱의 좋았던 점, 개선할 점, UI, 추가되었으면 하는 기능을 전달받았다. 인터뷰 내용은 녹음을 통해 확인하였으며, 대본으로 바꾼 이후 즉시 녹음 파일을 삭제하였다.


시스템 사용성 척도 (SUS) [5]

그림 9. System Usability Scale(SUS) 10개 문항(1점 : 매우 동의하지 않는다, 5점 : 매우 동의한다). 오른쪽의 환산 점수가 각 문항별 우리 시스템의 사용성 점수이다.

시스템 사용성 척도(그림 9)는 시스템의 사용성을 빠르게 평가하기 위해 고안된 설문지이다.

시스템 사용성 척도는 10개의 Likert-scale 문항으로 구성되어 있으며, 홀수 문항은 점수가 높을수록, 짝수 항목은 점수가 낮을수록 높은 사용성을 의미한다[5]. 짝수 문항은 (6 – 점수)를 통해 환산 점수를 산출하며, 을 통해 시스템의 사용성 점수를 도출할 수 있다. 사용성은 84.1점 이상일 경우, 상위 5%의 사용성(Best imaginable)을 가진다. 실제 사용성 평가 결과 우리 시스템의 사용성은 91.8점이 나왔으며, 좋은 사용성을 가졌다는 것을 확인하였다.


시나리오 후 설문 (ASQ)

파일:사진명.jpg
그림 10. 시나리오 후 설문(ASQ)

시나리오 후 설문([그림 10]은 각 Task를 수행하는 것이 얼마나 어려운지 확인하는 사용성 평가 방법이다[6]. 우리는 우리 시스템에서 제공하는 주요 기능(개인 맞춤형 등산 목적지 추천, 개인 맞춤형 등산로 생성, 생성한 등산로 안내)을 쉽게 사용할 수 있는 지 확인하기 위하여 우리의 기능에 대응되는 Task를 만든 시나리오 후 설문을 진행했다. 설문 진행 결과, 우리가 제공하는 주요 기능이 모두 사용자가 쓰기 편하다는 것을 확인했다.


반구조화 인터뷰 우리는 추후 우리 앱을 개선하기 위하여, 앞선 두 개의 설문을 진행한 이후 우리 앱의 좋았던 점, 개선할 점, UI, 추가되었으면 하는 기능을 묻는 반구조화 인터뷰를 진행했다. 주요한 내용은 다음과 같았다.

좋았던 점
기존에 등산로 방향을 찾을 때 사진이 올라와 있는 블로그들을 많이 참조했는데, 직접적으로 방향을 알려주는 점이 좋았다.             -P7-
아직 개인의 운동 수준과 등산로 난이도 스케일이 정확히 맞지는 않는 것 같지만, 어려운 등산로일수록 등산로 난이도가 어렵게 나오는 건 맞는 것 같다. 등산을 진행할 때 어느 정도 참고가 가능할 것 같다.      -P10- 
개선할 점
등산 목적지에 쉬운 코스가 없을 경우, 난이도를 쉽게 설정해도 어려운 코스가 나오는 문제점이 있다.   -P4-  (해결됨)
위시리스트 담기라는 표현 자체가 잘 이해되지 않았다.      -P8-
Navi 페이지에서 진행바가 새로고침할 때마다 리셋되는 것이 아쉬웠다.  -P12-
목적지 추천 부분에서 산 이름이 영어로 나오는 점이 아쉬웠다.   -P11-
UI 관련
프로토타입 UI는 개인적으론 별 다른 것 없이 깔끔해서 좋았다.     -P2, P7-
잡다한 기능이 없어서 사용법을 금방 익힐 수 있었다. -P9-
추가되었으면 하는 기능
코스 예상시간이 표기되면 좋을 것 같다.   -P1-
더 많은 산들에 대해서도 정보를 제공하면 좋을 것 같다.   -P11-
나와 비슷한 사용자들을 매칭해주는 기능이 있으면 좋을 것 같다.   -P12-
등산했던 등산로들을 모아서 저장하고 공유할 수 있는 기능이 있으면 좋을 것 같다.      -P12-

유지보수 가능성

서비스를 운영하는 데에 드는 비용은 도메인 유지 비용(10달러/1년), 라즈베리파이를 유지하기 위한 전기료 정도를 고려할 수 있다. 이는 페이지 내 배너 광고를 하나만 추가해도 상회할 수 있으며, 운영 비용 자체가 적기 때문에 수익을 계속 유지할 수 있으며, 유지보수 및 지속적인 개발 또한 가능할 것으로 보인다.

향후 평가

어려웠던 내용들

- 산림청에서 제공하는 geojson 데이터를 시스템에서 사용하기 위한 형태로 가공하는 과정에서 많은 시행착오가 있었다.
- 기존에는 클라우드 서비스를 이용하는 형태로 설계했는데, 클라우드 비용 문제 및 교내망에서는 서버에 접속할 수 없는 문제가 발생하였다.
- 설문조사 및 인터뷰 대상을 모집하는 과정에서 어려움이 있었다.
- 추천 알고리즘을 만들기 위한 사람들의 등산 데이터가 너무 적었다.


차후 구현할 내용

주로 반구조화 인터뷰 중 아쉬웠던 점, 추가되었으면 하는 기능들 중 구현 난이도가 쉬운 항목부터 진행할 예정이다. 구체적으로 다음과 같다.

- “위시리스트 담기”와 같이 사용자가 한 번에 이해되지 않을만한 표현, 불필요하게 작성된 영어 표현이 있는지 확인하고 수정한다.
- Navi 페이지의 진행 바의 진행 상황을 새로고침 되더라도 유지한다.
- 코스 예상시간 표기 기능을 추가한다.
- 시스템에서 지원하는 산의 개수를 더 늘린다.
- 더 많은 사용자들의 검색 데이터들을 참고하여 추천 알고리즘을 개선한다.
- 등산했던 등산로들을 모아서 저장하고 공유하는 기능을 개발한다.

개발 사업비 정산

구성원 및 추진체계

사진들어갈자리

자재소요서

서비스를 제공할 도메인
10달러/1년의 비용이 발생하며, 서비스를 하기 위하여 항상 필요하다. (현재 사비로 지출)
라즈베리 파이 5  
백엔드, 프론트엔드, 데이터 각각의 서버를 구동하기 위하여 총 3개가 사용되었으며, 마찬가지로 없으면 서비스가 불가능하다.

개발사업비 내역서

(단위 : 천원)
항목
(품명, 규격)
수량 단가 금액 비고
직접 개발비 라즈베리 파이 5 3 130 390 390
합계 390 390

부록

A-1 참고문헌 및 참고사이트

[1] 산림청. (2022년 8월 2일). 우리나라 성인 78% 한 달에 한 번 이상 산에 간다. 대한민국 정책 브리핑. https://www.korea.kr/news/policyNewsView.do?newsId=148911465

[2] Scarf, P. (2007). Route choice in mountain navigation, Naismith's rule, and the equivalence of distance and climb. Journal of Sports Sciences, 25(6), 719–726.

[3] Goodwin, A., Hammett, M., & Harris, M. (2025). The application of Tobler's hiking function in data-driven traverse modelling for planetary exploration. Acta Astronautica, 228, 265–273.

[4] Ko, H., Lee, S., Park, Y., & Choi, A. (2022). A survey of recommendation systems: recommendation models, techniques, and application fields. Electronics, 11(1), 141.

[5] Brooke, J. (2013). SUS: a retrospective. Journal of usability studies, 8(2).

[6] Qualaroo. How to create an after-scenario questionnaire (ASQ). Retrieved June 10, 2025, from https://help.qualaroo.com/after-scenario-questionnaire

A-2 관련 특허

[1] 등산 내비게이션 단말 시스템 및 이를 이용한 등산 코스 안내 운영 방법 [2] 산림빅데이터 플랫폼에 기반하여 데이터 상품을 제공하는 장치 및 방법

A-3 소프트웨어 프로그램 소스

(소스코드 내용이 이곳에 들어감. 필요 시 별도 첨부)