과제 목적
브랜드매니저라는 나의 진로와 연계해 소비자의 감정과 반응을 기술적으로 분석하는 기초 과정을 직접 구현해보는 것이 목적이다. 구현하기 위해 마빗과 미디어 파이프를 활용해서 얼굴 방향, 미소, 눈 감기 등 사용자의 표정 변화를 실시간으로 감지하게 했다. 또 그 결과를 로봇의 동작과 LED 표시로 출력하는 AI 시스템을 제작하려 했다. 그래서 얼굴 인식 AI가 데이터를 분석하는 방식과 분석된 정보가 하드웨어 동작으로 연결되는 구조를 이해하는 것도 목표로 잡았다.
최종 프로젝트 영상
프로젝트 코드
기타 자료
•
동영상 편집 자료(canva)
제작과정/문제해결과정/느낀점
[제작과정]
브랜드매니저라는 나의 진로와 연관된 주제를 생각하다가 고객 반응을 분석하는 프로젝트를 하기로 정하였다. 마빗과 미디어 파이프를 활용해 제작하였다. 선생님의 도움을 받아 레고를 제작하고 코딩을 설계하였다. 먼저 미디어 파이프와 마빗 코딩 화면을 번갈아가면서 비례 변환의 pitch를 설정하였다. 이것으로 얼굴 방향을 따라오도록 만들었다. 만약 블록과 아이콘 출력 등의 블록을 활용해 미소를 지으면 하트 LED와 빨간 불빛이 나온다는 것을 설계하였다. 마지막으로 미디어 파이프 화면을 번갈아가면서 눈의 깜빡이는 정도를 구하였다. 그리고 그것을 대입해 한쪽 눈을 감으면 화난 표정이 나오도록 구현하였다.
[문제해결과정]
가장 먼저 마주한 문제는 얼굴 인식이 불안정하다는 것이었다. 미디어 파이프를 적용했지만 초기엔 카메라 각도, 조명에 따라 얼굴이 제대로 인식되지 않았다. 그래서 로봇이 엉뚱한 방향으로 움직이고 LED가 계속 깜빡이는 오류가 일어났다. 또 미소 인식은 입꼬리 좌표가 조도 변화에 영향을 많이 받아서 웃지 않아도 하트 LED가 뜨는 일도 발생했다. 이런 문제들을 해결하기 위해 선생님의 조언을 받아 값을 그대로 쓰지 않고 미디어 파이프 화면과 마빗 코드를 번갈아가면서 확인하고 실행해보고 수정하고 실행하고를 반복해 코드를 수정했다. 그러다 보니 변화에 덜 민감하게 움직이도록 개선할 수 있었다. 다음으론 표정을 인식하는 중에 한쪽 눈 감기에서도 문제가 생겼다. 미디어 파이프가 눈을 감은 상태와 눈을 작게 떠 있는 상태를 구별하지 못할 때가 많았다. 그래서 사용하는 사람이 정상적으로 눈을 깜빡이기만 해도 화난 얼굴 LED가 켜지는 문제가 있었다. 이걸 해결하기 위해 양쪽 눈이 동시에 하는 변화는 깜빡임으로 처리하고 한쪽 눈이 일정 시간 닫혀 있을 때만 윙크로 판단하도록 조건을 조정했다. 눈 감김의 숫자 변화를 여러 번 바꿔가면서 테스트하니 정상적으로 감지하는 비율을 크게 높일 수 있었다. 마지막으로 레고 조립이 미숙하여 로봇이 불안정하게 움직인다는 점이었다. 레고를 여러 번 바꿔가며 끼우고 빼고를 반복했지만 한쪽을 고정하면 다른 쪽이 헐렁해지는 일이 반복되었었다. 다양한 레고를 여러가지 써보고 선생님의 도움도 받아 결국 고정한 상태로 만들 수 있었다. 또 내가 코딩을 잘 하지 못 한다는 점도 내 발목을 잡았다. 내가 하고 싶은 조건, 구현하고 싶은 AI 등은 이미 다 기획하고 정하였지만 실행을 하기에 코딩이라는 벽이 높았다. 여러 사이트를 찾아보고 노션 파일도 여러 번 복습하였지만 새로운 실행을 구현하기에 어려움이 많았다. 이것을 해결하기 위해 선생님께 적극적으로 여쭤보고 생성형 AI에게도 많은 질문을 하였다. 선생님께서 구체적인 도움을 많이 주셨고 나도 그 내용을 활용하여 나만의 고객 반응 분석 시스템을 완성할 수 있었다.
[느낀점]
최종 프로젝트를 하면서 나는 브랜드매니저로서 고객 경험을 분석하고 반응을 이해하는 것을 배웠다. 뿐만 아니라 코딩과 기술을 활용한 문제 해결 과정까지 직접 경험하면서 정말 많은 것을 배웠다. 처음엔 코딩 경험이 거의 없었기에 미디어 파이프와 마빗을 연결해 얼굴 방향과 표정을 인식하고 로봇과 LED를 제어하는 모든 과정이 막막하게만 느껴졌다. 얼굴 값을 분석해서 미소, 눈 감기 같은 세부적인 표정을 판별하고 이걸 정확하게 하드웨어로 출력하는 부분에서는 오류가 계속 발생해서 좌절감을 느낄 때도 많았다. 다른 친구들은 혼자서 뚝딱뚝딱 만드는 것 같은데 난 선생님께 의지하고 내 힘으로 무언갈 만들 수 없는 건가 하는 속상함도 느꼈다. 하지만 문제의 원인을 하나씩 분석하고 값을 조절하는 등 코딩을 세밀하게 수정하고 테스트를 반복하면서 점점 안정적인 결과를 만들어낼 수 있었다. 또 예전 노션 코드들을 복습하고 선생님께서 알려주신 방법을 나만의 방법으로 재구성하면서 내 코딩도 더 나아졌다. 난 코드의 구조와 흐름을 이해하고 문제를 논리적으로 분해해서 해결하는 사고력을 기를 수 있었다. 하드웨어 연동 과정에서도 배움이 많았다. 모터가 덜컥거리고 LED 출력에 오류가 생기는 등 코드만으로는 해결되지 않는 문제들이 나왔다. 이런 문제들을 해결하면서 소프트웨어와 하드웨어가 서로 영향을 주고받는 관계를 이해하게 되었다. 나만의 프로젝트를 스스로 기획하고 만들고 수정하는 과정에서 인내심도 많이 길렀다. 하나를 해결하면 원래 잘 작동되던 다른 하나가 안 되는 순간들이 참 많았다. 그럴 때마다 다시 할 수 있다고 생각하면서 하나하나 차근히 고쳐가고 다잡는 순간에서 많은 인내심이 길러졌다. 또 코딩이라는 건 항상 나에겐 두려운 존재였는데 이렇게 큰 프로젝트를 내 힘으로 만들어 보니 그 장벽이 많이 허물어졌다는 걸 느꼈다. AI를 활용하는 요즘 나도 항상 코딩을 배우고 잘 활용하는 사람이 되어야 더 나은 사람이 되겠다는 생각이 있었다. 하지만 학교에선 다양한 코딩을 해볼 수 있는 기회는 흔치 않다 보니 거점학교를 신청한 것이다. 내가 모르는 분야에 도전하면서 걱정도 많았는데 이렇게 최종까지 도달하니 나 자신이 성장했다는 걸 깊이 느꼈다. 뭐부터 시작해야 하지라는 생각에서 일단 이거부터 해결하고 다른 걸 하자는 생각으로 바뀌다 보니 이런 사고들이 다른 일상적인 상황에서도 많이 힘이 됐다. 하나하나 하면서 코딩과 친해지니까 내가 잘 모르던 분야를 알아가는 느낌이 뿌듯하면서도 재미있었다. 앞으로도 내가 모르는 분야에 당당하게 다가갈 수 있는 시작이 되었다. 또 최종 프로젝트를 하는 다른 친구들의 능숙함을 보면서도 많이 배웠다. 자신의 힘으로 하나씩 해결하는 친구들을 보면서 나도 저렇게 되어야지 하는 마음에 더 복습하고 기억할 수 있었다. 코딩을 배우고 알게 된 그런 간단한 경험이 아니라는 생각이 들었다. 마인드적으로도 앞으로의 내 모습에도 긍정적인 영향을 많이 받아서 너무나도 뜻깊은 시간이었다. 이 경험으로 앞으로 더 성장하는 내가 되어야 겠다고 느꼈다.

