2024년도 하반기이다.
이번년도는 다른 때보다 더 빨랐던 것 같다.
학점을 많이 올려서 장학금도 받고,
자격증 공부도 하고,
교내 공모전 이것저것 나가서 상금도 받고,
팀장으로 1년간 팀을 이끌며 외부 활동을 진행하고,
졸업작품도 하고.. 놀기도 많이 놀고...
그동안 캡스톤과 멘토링을 하면서
회고록을 제때 쓰지 못해서 그동안 진행했던 것들을
새벽에 심하게 자세히 회고해보려 한다.
할게 너무 많아.😭😭😭 오늘 오후~새벽 알바도 간다.
그래도 안쓰면 다 잊어버리니 총정리 하는 느낌으로 쓰려 한다.
1. 프로젝트 개요
1.1 프로젝트 이름
우리는
[장애인 및 감정조절장애 가족을 위한
갈등 해결 AI 중재자 "솔버(solver)"]
라는 이름의 프로젝트를 진행하고 있다.
팀명은 [CONCAT]
SQL concat 함수에서 따온거 맞다.
글자를 합친다는 의미의 함수로,
개인 팀원들 간 다양성과 각자의 장점을 결합하여 더 큰 가치를 창출하고
좋은 협업을 중시하는 바람에서 생각하게 되었다.
내가 생각한 아이디어가 팀원들 사이에서 채택되었다.
원래 졸업작품으로 웹 플랫폼만 만들 예정이었는데
교수님의 추천으로 ICT 멘토링까지 지원하다보니
좀 더 창의성이 있는..? 나름 특이하고
여러가지를 시도해볼 수 있는 주제로 가게 되었다.
1.2 프로젝트 간단 개요
솔버는 가족 내에서 발생하는 갈등을 실시간으로 감지하고
해결책을 제시하는 AI 중재자 로봇으로,
특히 가족 중에 장애인과 감정조절장애를 가진 구성원이 있을 때 큰 도움을 줄 수 있다.
표정에서 나타나는 감정과 대화내용을 분석하여 맞춤형 조언을 제공한다.
객체 감지 주행과 장애물 회피 기능을 통해 사람이 있는 갈등 장소로 이동하며,
웹으로 갈등 분석 결과와 해결책을 시각적으로 제공한다.
1.3 프로젝트의 목적과 목표
프로젝트의 궁극적인 목표는 졸업작품과 멘토링 프로그램에서
좋은 성과를 내는 것이었다.
(결국 한이음 공모전에서는 입상하지 못하였지만ㅠㅠ)
스프링부트를 이용해서 웹을 만들고 싶었고 배포 운영까지 해보고 싶었다.
또 이번 기회에 여러가지 기술들을 사용해보고 싶었다.
그러다보니 웹 이외에 기계가 들어오고 인공지능 모델을 만들고
스케일이 커지게 되었다...
1.4. 프로젝트 기간
1년 정도, 정확히는 8~9개월 동안 진행하는
멘토링 프로젝트 겸 졸업 작품이다.
학기 초반에는 주제 선정과 대체 이 프로젝트를
어떻게 진행해야할지 고민했던 시간들이었다.
정말 프로젝트를 본격적으로 진행한건
좀 더워지려할때? 인 것 같다.
2. 프로젝트의 배경
2.1 아이디어 선정 과정
최근 몇 년간 한국에서 분노조절장애 환자가 증가했다.
장애인과 감정조절장애를 가진 가족 구성원들은 일상생활에서
감정 조절 및 의사소통에 어려움을 느낄 수 있다.
이는 가족 내 이해 부족과 오해를 초래하고 갈등을 증폭시킨다.
학기 극 초반에 각자 졸업작품+멘토링프로그램 프로젝트
주제를 몇가지씩 생각해오기로 했다.
그리고 교수님(지금은 갑자기 어디로 가버리심...휴ㅠ)과
팀원들과의 회의 끝에 '솔버'가 선정되었다.
우리가 주제를 선정할 때 중점을 두었던 키워드는
"공익성, 창의성, 기술성"
이런 것들이었던 것 같다.
2.2 팀 구성 및 역할 분담
우리 팀은 총 5명이다.
그런데 한 명은 디자인 쪽이라서 개발하는 사람들은 4명.
아래가 대충 각자 역할들이다.
* 팀원 1: 나
(팀장-총괄, 풀스택, 감정분석기기 개발)
- 이미지 기반 감정 분석 모델 개발
- 라즈베리파이5와 웹 카메라를 이용한 갈등 감지 기기 개발
(웹 실시간 송출 -> 녹화 -> 화자분리 대화내용 텍스트/영상 저장 -> GPT 이용한 해
결책 도출 로직 기능 개발) + 갈등감지로직 추가 예정
- 웹페이지 프론트 개발
- 웹페이지 저장된 영상&해결책 목록/검색/확인 기능 개발
- 웹페이지 마이메인페이지 대시보드 개발(참여한 대화의 감정통계, 대화의 재구성, 가
족 관계 개선을 위한 랜덤 팁)
- 웹페이지 메인페이지 개발(실시간 영상, 화자분리대화내용, 해결책 송출)
- 웹페이지 배포
- YOLO 알고리즘 객체 감지 추가
* 팀원 2
(풀스택)
- 웹페이지 프론트 개발
- 웹페이지 휴지통 기능(영상 삭제/목록 확인/복구/영구삭제/30일 이후 삭제 기능) 개
발
- 웹페이지 로그인/회원가입 시 이메일 인증 개발(이메일 인증 시 인증코드 발송/인증)
- 웹페이지 로그인/회원가입 시 비밀번호 해싱 기능 개발
- 웹페이지 아이디/비밀번호 찾기 기능 개발
+ 텍스트를 이용한 감정 인식
* 팀원 3
(풀스택)
- 웹페이지 프론트 개발
- 웹페이지 sns 로그인/ 회원가입 기능 개발
- 웹페이지 회원정보 수정 기능 개발
- 웹페이지 로그아웃, 회원탈퇴 기능 개발
- 네이버 클로바 스피치 API를 이용한 STT, 화자분리 개발
- 시각장애인을 위한 해결책 TTS 기능 개발
- GPT 와 음성으로 대화하며 실시간으로 대화 훈련하는 기능
* 팀원 4
(풀스택, 객체 감지 장애물 회피 주행기기 개발)
- 웹페이지 프론트 개발
- 웹페이지 로그인/회원가입 기능 개발
- 주행 기기의 라이다 센서를 이용한 장애물 회피 기능 개발
+ 주행기기의 객체감지 + 장애물 회피 기능 보완, 개발중
* 팀원 5 (디자인)
- 피그마를 이용한 웹 페이지 UI/UX 디자인 개발
3. 진행 과정
3.1 프로젝트 설계
[목표 설정]
장애인 및 감정조절장애를 가진 가족 구성원들이 있는 가정에서
발생하는 갈등을 실시간으로 감지하고 효과적으로 해결함으로써,
가족 내의 평화와 조화를 증진시키는 것이 프로젝트의 목표이다.
가족 구성원들이 서로를 더 잘 이해하고 지원할 수 있도록 하며,
정서적 안정과 정신 건강을 유지할 수 있는 환경을 조성하는 것이다.
[프로젝트 설계 자료]
여기까지가 한 두달 전까지의 프로젝트이다.
:: 더 추가된 것 (진행 중) ::
1. 텍스트, 멜 스펙트로그램 기반 감정분류 모델
+ 기존 이미지 영상 감정분류 모델을 이용하여
갈등 상황인지 파악하는 로직
2. GPT 와 음성으로 대화하며 실시간으로 대화 훈련하는 기능
+ 마이페이지 대시보드도 추가되었다.
[일정 관리]
일정은 위에 사진 첨부한 것처럼 노션을 통해서 관리했다.
일정 스프린트를 통해 해당 목표 계획에 대한 기간을 정하고
완료되면 체크하는 방식이다.
일정 지연이나 변경 상황이 발생했을 때는 융통성 있게
며칠 정도는 유동적으로 움직였다.
그래도 학기 초중반에는 빡셀 후반을 위해
최대한 일정을 맞추며 수행했다.
3.2 기술적인 접근
[사용한 기술 스택]
[주요 기능]
ㅇ 객체 감지(사람) 및 장애물 회피 주행 기능
: YOLO 알고리즘을 통해 객체(사람) 감지를 하고
라이다를 이용해 장애물을 회피하며 주행한다.
ㅇ 실시간 감정 인식 분석
: Google Colab을 통해 개발한 영상 이미지 기반 감정분석 모델로
실시간으로 감정을 분석하여 갈등 상황 인식, 감정을 저장한다.
ㅇ 음성 인식 및 화자분리
: Naver Clova Speech API를 통한 실시간 stt와 화자분리
ㅇ 갈등상황에 대한 맞춤형 해결방안 제시
: OpenAI API GPT-4를 통해 맞춤형 해결 방안 생성
[어떻게 구현했을까?]
더 좋은 방법이 있겠지만 우린 이렇게 했다.
생각나는 그 모든 과정들과 생각들을 작성해봤다.
현재 진행중이라 변경될 수 있다.
:: 1. 객체 감지(사람) 및 장애물 회피 주행 기능 ::
갈등 상황에 있는 사람들을 찾아가기 위한 기능이다.
내가 먼저 하다가 다른 팀원이 개발중이다.라즈베리파이 4와 주행기기 키트를 구입했다.
YOLO 라이브러리를 사용하여 사람 감지를 수행했다.
카메라에 사람이 잡히면 프레임 면적에 따라 기기가 멈출 수 있도록 그 면적 값을 설정했다.
예를 들어 카메라에 사람이 3분의 2만큼 잡히면사람과의 1m 거리 앞에서 주행 기기가 정지된다.
* 변경된 계획 *
1차: 마이크센서를 이용하여 갈등 소리가 들리는 쪽으로 자율 이동한다. --> 실패...
2차: 사람 객체 감지 후 사람이 있는 쪽으로 장애물을 피해 이동한다.
(사람이 보이지 않을 경우 기기는 회전하면서 사람 객체 찾고 감지)
* 문제점과 이를 해결하기 위한 시도 *
:: (1) 라즈베리파이 카메라 ::
처음에는 라즈베리파이에 연결된 파이캠이 나오지 않아 애를 먹었다.
바보같이 이것 때문에 며칠은 날렸다.
해결법은 예전 버전 라즈베리파이 os를 설치하는 것이였다.
카메라부터 수월하지 않아서 도대체 뭐가 문제인지
같은 주행기기를 구매한 블로그들을 몽땅 찾아서댓글로 정중히 여쭤봤다.
카메라가 안된다고ㅋㅋㅋ
내 os 버전을 붙여넣고 이러이러한데 안된다,이 버전이 맞은가? 이런식으로 말이다.
정말 감사하게도 친절하게 다들 답변해주셨다ㅠㅠ
책에 있는 버전대로 하라는 답변이었다.
앗.. 같이 제공된 교재도 있었는데 바보같이 이 부분을 놓쳤나보다.ㅎ
하지만 이것도 결국은 쓸모가 없어졌다.
:: (2) 라인트레이서 주행 ::
이건 개발 설계 자체에 대한 문제였다.
이걸로는 몇 주 날렸을 것이다.
우린 단순히 '자율주행' 이 키워드에 꽂혀서 주행기기와 같이 동봉된 라인트레이서 센서와
파이캠을 이용하여검은 선에 대한 데이터를 수집하고
모델을 학습시켜서 자율주행 시킬 생각에 푹 빠져있었다.
라인트레이서가 잘 작동을 하지 않길래 주행기기 만드신 작가님께 카톡으로 내가 연락도 드렸었다.
주행기기에 연결된 라인트레이서 센서로 검은색 선으로 만든 길과
바닥의 색을 구분하여주행하면서 파이캠으로 데이터를 수집하고
수많은 사진 데이터들로 모델 학습까지 시켜서주행 테스트를 하고 있었다.
그런데 갑자기 이런 생각이 스쳤다.
아...우리 이거 왜 하고 있는거지?
우린 이거 필요없잖아...우리에게는 애초에 길이 없잖아...
우리에게는 '길'을 이용한 주행이 아니라
'길' 없이 사람을 감지하고 장애물을 회피하여 주행하는 것이다.
몇 주 동안ㅋㅋ 정말 많은 자료들을 보며 힘을 들였지만
필요가 없어졌기 때문에 바로 폐기했다.
그 이후로는 쿠팡에서 웹캠을 사고 객체 감지와 장애물 회피에 몰두했다.
시간을 낭비하지 않도록 초반에 설계할 때 정말
많이 생각하고 회의해야한다는 것을 깨달았다.
:: (3) 사람 객체 감지 ::
어떻게 하면 사람의 몸 일부분만 나와도 정확하게
사람이라고 감지할 수 있을까 정말 많이 찾아봤다.
구글에 사람 몸 감지 소스들은 많다.
그런데 단순한 소스들은 사람 몸 전체가 나와야지 사람이라고
감지가 된다던가, 사물까지 사람이라고 잡아버리는 경우가 많았다.
yolo 모델을 찾았다.
yolo는 실시간 객체 감지를 위한 딥러닝 알고리즘으로
빠른 속도로 객체 인식을 수행할 수 있다.
이미지를 SxS 그리드로 나누고, 각 그리드 셀에서 하나 이상의
바운딩 박스를 예측하여 그 박스 안에 객체가 있는지를 판단한다고 한다.
사용해본 사람 감지 알고리즘 중 제일 잘 감지했다.
그런데.. 너무 무겁다.
안그래도 카메라 프레임 로딩 속도가 느린데 더 느려졌다.
검색해서 나오는 모든 방법들은 다 해본것 같다.
프레임 수를 줄이고 크기를 낮추고 등등 그래도 느리다.
어쩔 수 없이 그냥 진행하기로 했다.더 좋은 객체 감지 알고리즘이 있을지 모르지만
해본 것들 중에서는 이게 제일 정확히 감지가 되기 때문에.
모터 속도를 줄이면 어느 정도 따라잡을수 있다.
:: (4) 우리에게 필요한가? ::
예상 개발 시간보다 일정이 너무 뒤쳐지니
이 기능에 대한 본질적인 의문이 들었다.
이 기능... 꼭 필요한가?
원래 초반 이 프로젝트를 계획했을 때는
갈등 소리가 들리는 곳으로 자율 이동하는 것이었다.
그런데 아무리 많은 소리 추적 자료와 논문들을 봐도
이건 나의 능력 밖임을 깨닫게 되었다.
그래서 계획을 객체 추적으로 변경했다.
솔직히 이 기능의 필요성 중요성은 그리 크지 않다.
물론 있으면 너무나도 좋을 기능이지만 꼭 필요하진 않다.
한달밖에 시간이 안남은 지금, 현재 기기를 담당하고 있는 팀원에게
일단 지금은 객체 감지 및 멈추기까지는 되니까
거기까지 하고 조이스틱으로 조종하는 코드 삽입하는 것을 하면 어떻겠냐고 제안했다.
그런데 라이다로 장애물 회피하는 기능을 포기하기
어렵다고 해서 더 대화를 나눠봐야 할 것 같다.
아무래도 약 두달 정도 계속 하다보니 그럴 수 밖에 없지만
지금은 결단을 내려야 할 때라고 나는 생각한다.ㅠㅠ
'캡스톤 졸업작품 & ICT멘토링(프로보노) > 일지' 카테고리의 다른 글
(Women in AI) AI4HER APAC Conference 에서 발표한 회고 (3) | 2024.12.19 |
---|---|
1년을 갈아넣은 캡스톤 졸업작품 회고 (멀티모달 감정인식모델과 ChatGPT를 통한 가족 갈등 해결 AI 스마트 홈캠) (2) | 2024.12.15 |
그동안의 프로보노 ICT 멘토링 (1) | 2024.09.29 |
그동안의 진행 과정 (0) | 2024.07.16 |