한국소프트웨어산업협회 - 빅데이터를 활용한 풀스택 개발자 양성과정 / 국제컴퓨터아트학원 천호캠퍼스 세 번째 팀프로젝트
-
프로젝트 주제 : 미세먼지 빅데이터 분석 및 사전 예보 웹사이트 개발
-
기간: 2023.12.04 ~ 2023.12.29. (4주)
Team 9교시 : 단아 지현 선빈.
프로젝트 소개
미세먼지 데이터를 수집, 분석하고 시각화하여 사용자에게 실시간 정보를 제공하며, 딥러닝 기술을 활용하여 미래의 미세먼지 상황을 예측하는 시스템을 구축하는 것을 목표로 합니다.
💡주요 기능:
- 실시간 미세먼지 정보 제공: 웹사이트를 통해 각 지역의 실시간 미세먼지 농도를 제공합니다. 사용자는 자신의 현재 위치를 기반으로 한 정보를 확인할 수 있어, 일상 생활에 따른 미세먼지 대응이 가능합니다.
- 미세먼지 예보 시스템: 딥러닝 알고리즘을 활용하여 미래의 미세먼지 농도를 예측하는 시스템을 개발합니다. 날짜별로 차트로 표현하여 사용자에게 미래의 미세먼지 상황에 대한 시각적 정보를 제공합니다.
- 지역별 예보 및 차트: 각 지역마다 미세먼지 예보를 제공하며, 과거 데이터를 기반으로 한 차트를 통해 사용자에게 미세먼지의 흐름을 시각적으로 보여줍니다. 이를 통해 사용자는 미세먼지 패턴을 파악하고 대응할 수 있습니다.
- 사용자 친화적 인터페이스: 직관적이고 사용자 친화적인 웹사이트 인터페이스를 구축하여 누구나 쉽게 미세먼지 정보를 확인하고 활용할 수 있도록 합니다.
- Python, Flask, tensorflow, Mysql
- Javascript, React , JQuery, Chart.js, D3.js
- Vscode, pycharm, jupyter notebook
- api 활용 실시간 데이터를 웹페이지에 시각화(지도) 구현
- 미세먼지 데이터 활용하여 딥러닝을 통한 예측 시스템 개발
- 로그인 기능, face_recognition 라이브러리 활용 얼굴인식 로그인 기능
- 커리큘럼에 없는 React 언어를 새롭게 시도해 프로젝트를 완성
- fetch 활용 데이터 통신, state, prob 활용 데이터 흐름 관리
- 서버에서 다양한 정보를 수집, 처리하고 웹 프론트엔드에서 구현
- Pandas DataFrame을 활용한 데이터 처리 숙련도 증가
- Flask 서버와 React 통신 방식에 대한 이해
- Open api 통신 방식, rest api에 대한 이해
- 딥러닝 모델 직접 구현을 통해 수업 시간과 인공지능 수학 스터디에서 배웠던 선형대수 ,미적분, 선형회귀,Logistic Regression , 신경망, 경사하강법에 대한 심층적 이해
- 미세먼지 데이터 활용하여 딥러닝을 통한 예측 시스템 개발
- 4년간의 미세먼지 데이터를 활용하여 내일의 미세먼지를 예측하기 위해 시계열 데이터에 기반한 모델을 구축하려고 했으나, 현재 모델은 30일치의 결과를 반환하고 있습니다. 이를 개선하기 위해 입력 데이터의 구성 방식을 다시 살펴보고 모델에 올바른 입력을 제공하여 예측 과정을 수정할 필요가 있습니다. 또한, 모델 학습 과정에서 발생한 문제를 식별하고 수정하여 더 나은 예측 성능을 달성하고자 합니다.
- 다양한 데이터를 활용하고 모델들을 다양하게 설계해보았는데 그에 대해 기록하고 비교해서 정리한 문서를 작성하지 못한 점.
- 개인 맞춤 서비스 개발: 교통량 데이터를 크롤링하여 교통량과 미세먼지 농도 간의 연관성을 분석하고 교통량이 많은 특정 시간대와 미세먼지 농도가 높은 지역을 식별하여, 개인화된 서비스를 통해 사용자들의 건강을 보호하고, 동시에 환경 문제에 대한 인식을 높이는 것을 목표로 프로젝트의 발전 방향 논의
-
4년의 기상정보 데이터 수집 : 분석시 계절에 따른 미세먼지 동향을 볼 수 있었다.
-
데이터 전처리 -불필요한 column 삭제 -nan 값과, 미세먼지가 400이 넘어가는 이상치는 제거
- x,y 데이터 분리 (미세먼지는 종속 변수 그 외는 독립 변수)
- 정규화
- train, test 데이터 분리
-
RNN 모델
- CONVID 레이어는 1차원 합성곱(CONVOLUTION)을 수행 입력 데이터를 SEQUENCE_X(시퀀스 길이)와 FEATURE_K(특성의 수)에 맞게 처리하여 데이터의 지역적 특징을 추출
- LSTM(LONG SHORT-TERM MEMORY) 레이어는 순환 신경망(RNN)는 이전 정보를 유지하면서 시퀀스 데이터의 패턴 파악
- DENSE 레이어(16개 뉴런)는 16개의 뉴런을 가진 밀집층으로 이전 레이어의 출력을 입력받아 비선형 함수를 사용하여 입력 데이터의 패턴 학습
- DENSE 레이어(SEQUENCE_Y 개의 뉴런)는 시퀀스의 각 위치에서 예측해야 하는 출력 값의 개수에 맞게 뉴런을 가진 밀집층으로 모델이 시퀀스의 각 요소에 대한 출력을 생성하도록 도우며, 컨볼루션 신경망(CNN)과 재귀 신경망(RNN)의 조합으로 시퀀스 데이터에서 패턴을 학습하여 예측하고자 하는 결과를 생성하는데 사용
-
model compile & train
-
train data
-
validation data
-
predict data
- 작업 내용
- 지도 클릭 시 클릭 지역 실시간 미세먼지 데이터 제공
- 등급에 따른 색상 변경
- Flask 서버 미세먼지 API 연동
- 필요에 맞게 데이터 형태 처리(Pandas 활용)
- 지도 생성 및 클릭 시 이벤트 구현
- 작업 내용
-Form을 활용한 회원가입, 소셜 회원가입
/signup 엔드 포인트로 POST 요청이 들어오면, 클라이언트에서 전송한 폼 데이터 추출
- 중복여부 확인, 유효성 검사, 이메일 형식 확인 및 안내
- 이미지 업로드 시, 해당 아이디로 폴더 생성하여 이미지 저장, DB에 이미지 경로 저장
- 얼굴 인식 딥러닝 학습을 위해 이미지를 사용하여 KNN 분류 훈련 실행
- 작업 내용
- Form 활용 로그인, 소셜 로그인
- /signin 엔드 포인트로 POST 요청이 들어오면, 클라이언트가 제공한 JSON 데이터를 받아오고 DB에서 조회
- 로그인 성공 시, 클라이언트에게 성공 메시지와 함께 발급된 토큰을 전달
- 비밀번호가 일치하지 않거나 아이디가 존재하지 않는 경우 오류 메시지를 반환
- 외장 캠 사용
- 작업 내용
- 얼굴 인식 로그인 버튼 클릭시, 사용자를 식별하고 로그인을 수행
- /facelogin 엔드 포인트로 GET 요청이 들어오면, 얼굴 인식을 시작
- OpenCV와 face_recognition 라이브러리를 사용하여 얼굴을 감지하고 인식
- 회원가입 시 미리 훈련된 모델을 사용하여 가장 유사한 얼굴 식별
- 인증 성공 시, 해당 사용자의 정보 데이터베이스에서 조회하고 토큰 생성
- 인증 실패 하거나 아이디가 존재하지 않는 경우 오류 메시지를 반환