Skip to content

Latest commit

 

History

History
359 lines (194 loc) · 25 KB

README.md

File metadata and controls

359 lines (194 loc) · 25 KB

[SAFE] 머신러닝을 활용한 차량 별 침수 위험 예측 모델 개발 및 사용자 맞춤 침수차 위험 지도 제공 서비스

image



요약

  • 머신러닝을 활용한 차량 별 침수 위험 예측 모델 및 사용자 맞춤 침수차 위험 지도 제공 서비스, SAFE 개발

역할

  • 총 3명에서 진행( 웹 개발: 1명, 데이터 분석: 2명)
  • 본인은 웹 개발자로 참여
  • 상세 역할 : 본인은 웹 디자인, 웹 개발, 최적화, 배포 등 웹 개발 전체 프로세스 담당
  • 서브 역할 : QGIS의 QWC 기술을 통한 데이터 시각화 컴포넌트 제작

시기

  • 2023년 8월 1일~ 2023년 12월 3일

Project Stack

  • react

  • Machine learning - LSTM

  • QGIS - QWC

  • AHP 기법

  • styled-components

  • react-router-dom

  • framer-motion

  • keyframes

  • CloudFlare



📝 머신러닝을 활용한 차량 별 침수 위험 예측 모델 개발 및 사용자 맞춤 침수차 위험 지도 제공 서비스

  • 핵심 프로세스 요약

■ AHP기법을 통한 변수 별 가중치 설정

  • 해당 연구에서는 ‘도시 침수에 위험도 분석 요소‘를 강수량, 불투수율, 고도, 경사도, 우수관거 밀도, 우 수받이 밀도로 선정하여 전문가들을 대상으로 각 요소들에 대한 쌍대 비교 설문을 진행하였다.

■ LSTM 모델을 활용한 침수심 예측

  • 가중치를 부여한 도시 침수 요인 6가지와 침수심 학습 데이터를 입력 변수로 LSTM 모델을 학습시켰 다.
  • 평가지수를 통해 최적의 파라미터를 선정하여 가장 정확도가 높은 모델을 구축해 침수심을 예측하였다.

■ QGIS를 통한 침수차 위험 지도 제작

  • 침수차 위험도에 대한 기준 설정 후, 머신 러닝 예측 결과를 활용하여 QGIS 레이어에 시각화하였다.

■ QWC를 통한 웹 서비스 개발

  • Figma를 사용하여 웹 디자인 설계 후, 전 단계에서 만든 위험 지도에 대한 웹 페이지를 React를 사용 하여 개발하였다.
  • 웹 페이지 테스트 완료 후, Cloud Flare를 통해 사용자가 이용 가능한 형태의 웹 서비스를 배포하였다.

github 주소

https://github.com/sean2337/SAFE

배포 링크

SAFE

프로젝트 논문 파일

머신러닝을 활용한 차량 별 침수 위험 예측 모델 개발 및 사용자 맞춤 침수차 위험 지도 제공 서비스_주시현_김민주_정병빈.pdf

해당 아래 설명은 위 논문을 바탕으로 설명된 요약 버전입니다. 요약 버전을 원하시면 아래 내용을 읽어주시면 되고, 보다 자세한 내용을 원하시면 위 파일을 읽어주시면 됩니다.

서비스 시연 요약 영상

https://youtube.com/shorts/qTb0aPsxQzE?feature=share



👍 프로젝트 상세 설명

핵심 포인트

  1. 기존 침수 방지 시스템의 경우 단순한 취약 지역을 분석이나 침수가 많이 발생하는 환경 분석 등이 끝이였던 문제를 개선하여, 침수 피해를 예측하여 이 정보를 제공하는 서비스를 개발함으로써 침수 피해를 예방하게 할 수 있는 예방 침수 방지 시스템을 시민분들께 제공한다.
  2. LSTM 모델과 지역적 특성을 고려한 AHP기법을 통해 보다 정확한 침수 예측 모델을 개발한다.
  3. QWC 기술을 활용하여 모델을 통해 얻은 데이터를 QGIS에 가시화 하고 이를 웹 컴포넌트 형태로 변환할 수 있다.
  4. 사용자 차량, 날짜 선택을 통한 사용자 맞춤 침수 위험제도를 제공받을 수 있다.

프로젝트 기획과 배경 및 목적

image

전 세계적인 기후 변화의 영향으로 도시 지역에 대한 불규칙적인 집중호우가 빈번해지며, 이에 따라 침수차 발생도 매년 증가하는 추세다.

침수 위험을 파악할 수 있는 수단으로는 현재 환경부의 도시침수지도가 존재하지만 강수량에 따른 침수 정도가 고려되어 있지 않아 미래의 침수심을 예측하는 것은 불가능하며, 그마저도 제작이 완료된 지역은 36.7%뿐이다. 게다가 인천 지역은 홍수 발생 시 차량 진입을 막기 위한 자동차 진입 차단 시설이나 침수 시 작동하는 배수펌프의 기준이 타 지역에 비해 낮은 편으로 해당 상황에 대한 대책이 매우 미흡한 실정이다.

이렇듯 홍수 피해에 직접적으로 놓여 있는 인천 시민들은 이러한 위험 상황을 예측할 수 없을뿐더러, 대비책도 명확하게 마련되어 있지 않아 침수 차량 발생 위험에 매우 크게 노출되어 있다. 따라서 해당 과제에서는 머신러닝에 기반한 인천 지역의 침수심 예측 모델과 사용자 경험 웹서비스의 개발을 통해 인천 지역의 침수에 대한 대응 능력을 향상시킬 수 있는 실질적인 도구를 제공하는 것을 주요 목적으로 한다.



🤔 프로젝트 프로세스

1. 머신러닝 및 데이터 분석 세부 프로세스

image

2. 웹 개발 세부 프로세스

image



데이터 분석 단계

1. 사용 데이터

image

본 프로젝트에서 사용한 데이터는 위 표와 같이 총 6개로 모두 공개된 데이터이다.


2. AHP 사용을 통한 가중치 설정

○ 계층 구조 모델링

본 연구에서는 AHP 기법을 도입하기 위해 한국건설기술연구원과 인하대학교 사회인프라공학과 수문생태학연구실 소속 전문가들을 대상으로 2023년 11월 6일부터 11월 8일까지 설문조사를 실시하였다. 도시 침수 위험도 분석 항목을 비교함에 있어, 어느 항목이 우선적으로 중요하게 고려되는지에 대한 의견을 바탕으로 설문조사를 진행하였으며, 평가 항목은 다음과 같다.

image

○ 상대적 중요도

본 연구에서는 AHP 기법을 도입하기 위해 한국건설기술연구원 및 인하대학교 사회인프라공학과 수문생태학연구실 소속 전문가들을 대상으로 2023년 11월 6일부터 11월 8일까지 설문조사를 실시하였다. 도시 침수 위험도 분석 항목을 비교함에 있어, 어느 항목이 우선적으로 중요하게 고려되는지에 대한 의견을 바탕으로 설문조사를 진행하였으며, 평가 항목은 다음과 같다.

image

○ 일관성 검증

의미 있는 가중치를 구하기 위해서는 일정 수준 이상의 응답 일관성이 필요하므로, 쌍대 비교를 통해 얻은 결과는 일관성 검사를 거친다. Satty는 일관성 비율이 10%(0.1)이내이면 응답자가 상당히 일관성 있게 이원비교를 수행한 것으로 판단하고, 20%(0.2) 이내일 경우 용납할 수 있는 수준의 비일과성을 갖고 있으나, 20%(0.2) 이상이면 일관성이 부족한 것으로 재조사가 필요하다고 제안하였다(Satty and Kearns, 1985). 다른 선행 연구에서도 마찬가지로 일관성 비율이 0.1 이하가 나와야 판단에 일관성이 있는 것으로 판단하기 때문에, 본 연구에도 일관성 검사 결과가 10% 이하인 설문의 결과값만을 참고하여 가중치 산정에 이용하도록 하였다.

위와 같이 설문조사를 진행하였고, 각 응답자들의 설문 내용을 바탕으로 침수 영향 요소 6개 항목들에 대한 상대적 중요도 및 우선순위를 분석하였다. 분석 전 일관성 검증을 통해 10% 이하인 설문만을 선택하였 고, 결과적으로 17개의 설문지 중 13개의 설문지가 채택되었다.

image

채택한 설문 결과를 바탕으로 우선순위를 분석한 결과, 강수량이(0.336292)로 가장 높았고 그 다음이 불투수면 비율(0.209901), 우수관거밀도(0.138142), 고도(0.118327), 경사도 (0.110514), 마지막이 우수받이밀도(0.086823)였다. 해당 우선순위를 바탕으로 가중치를 부 여하여 머신러닝 모델 구축 시에 사용하기 위한 데이터를 제작하였다.



3. LSTM 모델 구축 및 학습

○ LSTM 모델의 선정 이유

기존 머신러닝 모델은 시계열 자료 분석에 있어 과거 자료에 상당한 중요도를 두고 예측을 할 수 있다는 단점이 있었다. 이 단점을 보완하기 위해 활용하는 것이 LSTM 모델이며, 해당 모델은 과거의 중요도가 낮은 자료를 자동으로 폐기하고 새로운 시계열 자료의 중요도를 파악하여 예측에 사용할지, 사용하지 않을지 판단하여 중요도가 높은 자료만을 사용해 예측한다는 특성이 있어 시계열 예측에 활용되고 있다. 본 연구에서 학습 데이터로 사용하는 강수량 데이터의 경우 시계열 자료이며, 값이 선형적이지 않다는 점에서 여러 머신러닝 모델 중 LSTM 모델이 가장 적합하다고 판단하였고 이를 적용하였다.


○ 예측 모델 구축

LSTM 모델을 구축하고 학습 데이터를 입력해 정확도 측정 및 평가를 수행했다. 각 하이퍼 파라미터는 군, 구별로 다른 침수 양상을 반영하기 위해 서로 다르게 설정했다. 특히, Validation set의 학습률을 결정하는 Drop out과 Activation function을 여러 가지로 설정 후 예측 양상이 실제 양상을 잘 설명하는 모델만 사용하여 침수를 예측할 수 있게 했다.


○ 예측 모델을 이용한 침수심 예측

군, 구별 침수심 예측 모델을 이용하여 변수 입력 및 예측을 진행하고 예측값과 실제 값을 비교했다. 2020년 8월의 침수심 예측을 통해 예측 모델 평가 및 CSV 파일로의 저장까지 해당 과정에서 진행했다.


⇒ 결과

image

다음과 같이 구, 군별로 침수심 예측 모델을 생성했다. 그 후에 각 모델을 이용한 예측 결과를 CSV 파일로 저장하여 QGIS에 바로 출력할 수 있도록 하였다. 아래는 예시로 부평구의 예측 결과이다. 아래 결과처럼 각 구, 군별로 예 측 결과를 추출했다.

image



4. QGIS에 시각화 및 QWC 변환

○ 침수차 위험 기준 설정

본 프로젝트는 침수심 예측 결과를 바탕으로 차량이 침수될 수 있는 가능성을 고려하여 침수 차량 위험도를 산출해야한다. 침수차 위험 기준은 행정안전부 국민안전포털에서 제 시하는 침수차 위험 기준인 차량 타이어의 2/3를 참고하여 아래와 같이 설정하였다. 뿐만 아니라 자동차 기업 사이트, 관련 논문에서도 대부분이 침수차 위험 기준을 2/3으로 제시 하고 있으며 본 연구에서도 이를 적용하여 기준을 정하였다. 또한 도로의 침수 수치가 똑 같지 않다는 점에서 60% 이하의 위험, 주의, 안전이 기준으로 정하여, 사용자로 하여금 더 폭 넓은 정보를 받을 수 있게 하였다.

image

○ QGIS 위험도 지도 시각화

기존 개발한 LSTM모델과 위의 위험기준에 따라 침수위험지도 일주일 치를 Map에 시각화를 진행하였다. 차량의 경우, 가장 많이 사용하는 차량, 다양한 크기의 차량으로 10개를 선정하여 이를 가지고 일주일 간에 레이어를 생성하였고, 총 70개의 레이어를 생성하였다.

image

○ QWC 변환

  • QWC란?

    QWC(QGIS Web Client)는 사용자가 복잡한 웹 맵 및 웹 GIS 애플리케이션을 만들지 않고도 QGIS 프로젝트를 손쉽게 웹으로 전환할 수 있도록 하는 것을 목표로 하고 있다. 이를 통해 사용자들은 웹 브라우저 상에서 QGIS 프로젝트를 열람하고 상호 작용할 수 있다.

    개념적으로는 QWC는 사용자 인터페이스, 지도 렌더링, 레이어 관리, 속성 정보 조회 등을 웹에서 제공하며, 사용자들이 지리 공간 데이터를 효과적으로 활용할 수 있도록 도와주는 역할을 수행한다. 이는 지리 정보 시스템(GIS)의 활용을 웹 환경에서 더욱 간편하게 만들어주고 협업을 촉진하는 데 기여하고 있다. 본 프로젝트에서는 이를 적극 활용하여 QGIS프로젝트를 웹 컴포넌트화 시킨 후에 웹 개발 기술에 응용하였다.

위에서 QGIS로부터 생성한 70개의 레이어QWC기술을 통해 최종 웹에서 사용할 수 있도록 웹 컴포넌트화 시켰다. QWC기술을 활용하여 관련 프로젝트를 웹으로 만들 수 있게 HTML. CSS, JavaScript 파일로 변환시켰다. 또한 추가적으로 이때 JavaScript 파일을 수 정하여 확대/축소 기능, GPS기반의 본인 위치 표출, 주소 검색 기능 등을 추가하여 사용 자 편의성을 높였다. 위 파일들을 실행시켜보면 오른쪽 실행화면과 같이 URL 형태의 웹 이 랜더링 되는 것을 확인할 수 있다. 이를 통해 이후 단계에서 웹 앱 SAFE 개발 환경 에 적용시킬 수 있다.

image



5. SAFE 웹 개발

데이터 분석을 통해 예측 데이터를 얻었고, 이를 바탕으로 QGIS에 시각화하였고, QWC를 적용하였다. 이를 통해 웹 컴포넌트 형태로 만들었다. 이제 이 만든 결과를 사용자 맞춤으로 제공할 웹을 개발하려 한다.

○ 웹 개발 언어 및 환경

image

○ Branch Strategy

Github flow 전략을 사용합니다.

개발 Branch의 경우에는 단독으로 개발을 진행하여 Main브랜치에서 1차적으로 브랜치를 생성하여 작업하였고, 코드를 완성하고 합칠 때(Merge) 시에는 해당 브랜치를 삭제시켜서 더욱 깔끔한 작업 공간을 만들면서 진행하였다. 위에서 정한 규칙을 통해 효율적인 작업을 진행하였다.

image

○ Commit Massage Convention

type(file name): commit message

모든 commit message는 최대한 간략하게 작성합니다. file name의 경우, 특정 파일만을 수정한 경우에는 해당 파일 이름을 포함하지만, 여러 파일인 경우에는 미포함하여 작성합니다.

모든 commit message 앞에는 다음의 type을 작성합니다.

  • feat : 새로운 기능을 추가한 경우
  • fix : 버그를 고친 경우
  • design : CSS 등 사용자 UI 디자인을 변경한 경우
  • refactor : 프로덕션 코드 리팩토링의 경우 (새로운 기능이나 버그 수정 없이 현재 구현을 개선)
  • docs : 문서를 수정한 경우
  • comment : 필요한 주석 추가 및 변경의 경우
  • chore : 위의 경우에 포함되지 않는 경우

○ UI/UX 디자인 및 개발

image

위와 같이 기초를 다진 뒤, Figma을 이용하여 아래와 같이 웹 디자인을 진행하였다. 이때 가장 신경 쓴 부분이 어떻게 하면 사용자가 가장 편하게 느낄 지에 대한 UX영역이었다. 이를 위해 관련 일을 하고 계시는 선배님들께 자문을 많이 구하여 아래와 같이 완성시켰다.

이 디자인이 완성된 후, 이에 맞춰 공용 컴포넌트를 만들고 해당 페이지를 완성시켰다.

○ 업데이트 및 최적화

위의 초기 세팅과 웹 디자인에 따라 개발을 완료하였고, 이 웹을 바탕으로 웹 개발 관련 직무를 가지신 개발자 30명을 대상으로 베타 테스트를 요청 후, 여러 피드백을 받았다. 받은 피드백을 통하여 업데이트 및 최적화 작업을 진행하였는데, 그 작업은 다음과 같다.

  1. 이미지 랜더링 시간 문제 본 프로젝트의 서비스는 차량 이미지가 굉장히 많이 사용된다. 이 이미지를 랜더링하는 데 시간이 오래 걸려, 서비스를 이용하는데 매끄럽지 못하는 점이 있었다. 그래서 위 문제를 우리는 이미지 캐싱이라는 개념을 이용하여 PreLoading기술을 적용함으로써 이 로딩 시간 문제를 개선하였다. 해당 과정에서 사용된 이미지 캐싱이란, 한번 렌더링 된 이미지는 웹 브라우저 상에서 저장해둔 뒤, 이후에 랜더링할 때 저장해 둔 이미지를 사용하는 개념이다. 또한 PreLoading이란, JS에서 지원하는 기술로 이미지를 실제로 사용자에게 보여주진 않아도 코드 상에서 이미지를 미리 렌더링 시키는 기술이다. 위 두 개념을 이용하여 웹 브라우저 초기 시작화면에서 필요한 이미지를 미리 랜더링 시켜 두는 방향으로 업데이트 및 최적화를 진행하였고, 시간을 크게 단축하는데 성공하였 다.
  2. 사용자 침수차 위험지도 제공까지의 큰 로딩 시간 이미지와 마찬가지로 사용자 침수차 위험지도 제공까지의 큰 로딩 시간이 문제로 많이 지적받았다. QWC내에 기술에서 변환한 파일들을 불러오는 데까지 생각보다 큰 시간이 걸려서 이 부분에 대해 개선점이 요구되었다. QWC 내부 프로세스를 바꿀 순 없었고, QWC에서 제공해준 파일의 경량화 작업을 진행했다. 현재 우리 프로젝트의 목적이 부합 하지 않고 불필요하게 실행되는 파일들을 실행시키지 않게 하고, 관련 파일, 이미지를 모 두 삭제하는 작업을 통해 최대한 경량화를 진행했다. 이 덕분에 이미지 로딩 시간에 대해서 매우 단축시켰다. 또한 이미지 로딩 중간에 매끄러운 UX를 위해 로딩 애니메이션을 추가적으로 넣어서 단축시킨 로딩 시간도 사용자로 하여금 매끄럽게 느낄 수 있게 업데이트 진행하였다. 위의 두개의 업데이트가 가장 많이 요청된 피드백 요소이자, 큰 해결책을 요구했던 업데이트였으며 이것 이외에도 일부 업데이트를 진행하여 다양한 사용자의 요구를 수용하는 서비스를 개발했다. 또한 이를 CloudFlare를 통해 최종 배포까지 진행하였다.



최종 SAFE 결과물

1. 초기 페이지와 서비스 로고

image

2. 차량 선택, 날짜 선택, 결과 분석 로딩 페이지

image

3. 결과 로딩, 결과 지도 페이지

image
  • 침수 위험도 분석 이외에 사용자 편의를 위한 제공 기능
  1. GPS기반의 현재 본인의 위치 위험도를 확인할 수 있는 GPS 아이콘 버튼을 클릭하면 본인 위치로 이동하며, 현재 위치에 위험도를 바로 확인할 수 있다.
  2. 주소 검색 서비스 기능인 돋보기 버튼을 클릭하여 전 세계의 주소 검색이 가능하며, 그 지역으로 이동하여 위험도를 바로 확인할 수 있다.
  3. Zoom In/Out +, - 버튼을 클릭하여 줌을 조정할 수 있으며 터치로도 조정이 가능하다.
  4. 원하는 지역의 침수차 위험도를 색깔이 아니라 수치로 정확한 값을 원한다면 해당 지 역 위치를 클릭 시 팝업 기능을 통해 지역 이름과 위험도 수치를 확인할 수 있다.



기대효과

1. 과학기술적 파급효과

  • 기상 예측 자료를 사용자가 편리하게 접근할 수 있으며 기존의 정확도가 떨어지는 기

    상 예측 정보뿐만 아니라, 침수에 영향을 주는 요인을 고려해 침수 예측을 더욱 정확히

    할 수 있다.

  • 프로젝트에서 개발된 침수 위험 지역 예측 모델을 활용하여 기존에 있었던 공간정보와

    다른 영역 간의 융합을 통해 다른 영역에 파급효과를 줄 수 있다.

2. 경제적 파급효과

  • 최근 증가하고 있는 침수차량 피해를 줄여 시민들의 경제적 부담을 줄일 수 있다.

3. 사회적 파급효과

  • 인천 지역을 지나는 국민들에게 침수 위험 예측 플랫폼을 제공함으로써 인명피해를 줄이고, 국민들의 안전성 보장 가능하다.



활용 방안

1. 본인 거주지의 침수 위험 상황 알림 서비스

침수의 경우, 매일 일어나는 현상이 아님으로 사용자가 매번 이 서비스에 접속한다는 것은 매우 비효율적이며, 접근성이 떨어진다. 이를 위해 SAFE 서비스를 이용하고 있는 고객에게 본인 거주지 근처에서 침수위험이 크게 발생한다면, 이를 팝업으로 알려주는 알림 서비스를 구현할 수 있다. 이를 통해 더욱 사용자 분들께 사용성 있는 정보를 제공할 수 있다.

2. 내비게이션 알고리즘에 연동하여 침수차 위험 지역을 고려한 침수 안전 경로 제공

현재 내비게이션에 경우, 침수차 위험을 고려하지 않고 있다. 이 때문에 내비게이션을 따라가다 침수에 빠지는 사건이 발생하게 된다. 사용자가 위에 서비스를 사용하지 않더라도, 이 프로젝트의 데이터 프로세스를 내비게이션 알고리즘에 적용하여 침수 위험 지역을 피해가게끔 침수 안전 경로를 제공할 수 있을 것이라고 기대한다.

3. 긴급 대응 및 구호 작업에 활용하여 구호단체 및 정부기관이 자원을 효율적으로 할당 가능

긴급 대응 및 구호 작업에 경우, 보통 운송수단으로 자동차를 이용하게 된다. 이때 침수가 발생한 지역을 통과하게 된다면 엄청난 지연이 발생할 수 있다. 이때도 이 알



본 프로젝트 성과

image image