이전 글
다양한 방법들이 있다
손톱 물어뜯는 걸 인식하는 AI는 내가 처음 떠올린걸까? 🧐
구글에 검색해보면, 몇 가지 해외 블로그들을 찾아볼 수 있다.
해당 블로그에선 가장 쉽게 접근할 수 있는 방법론을 설명해 준다.
간단하게 살펴 보자면,
자신이 손톱을 물어뜯는 사진과 물어뜯지 않는 사진을 여러 장 찍어 모델을 학습시키는 것이다.
Vision분야에서 가장 흔하게 볼 수 있는, 이미지 분류로 문제를 해결한것이다.
이미지 분류의 주의점 → DataCentric의 중요성
하지만, 위의 방법론으로는 데이터 관점에서 주의점이 보였다.
우리가 개와 고양이를 분류하는 모델을 학습시킨다고 가정해 봤을 때,
위처럼 인터넷에서 개와 고양이 사진 몇 장 가져와서 학습시키면 되겠지?
라고 생각한다면 큰 오산이다.
실제로는 아래와 같은 고민이 필요하며, 이에 맞는 데이터를 잘 수집해서 학습시켜야 한다.
위처럼 모든 상황에서도 잘 동작하는 강건한 AI모델을 만들기 위해서는,
모델보다는 양질의 데이터를 수집하는 것이 관건이다.
우리는 이를 DataCentic AI라고 한다.
이러한 점을 빗대어 봤을 때,
손톱을 물어뜯는 장면인 양질의 데이터를 수집하는것 또한 꽤 많은 시간과 비용이 들것이다.
AI가 인식해야 할 것을 조금 더 좁혀보자
손톱 물어뜯는 걸 인식한다는 건, 너무 광범위한 문제로 보인다.
문제를 조금 더 좁혀보자.
손톱을 물어뜯는다는 것은, 우선 손가락이 입안으로 들어가는 행위를 한다는 것이다.
AI가 인식해야 할 것을 손톱을 물어뜯는 순간이 아닌, 손가락이 입으로 들어가는 순간이라 우회해 볼 수 있다.
(어쨌든 손가락이 입으로 들어가는 것은 안 좋은 습관이므로)
이렇게 명확한 기준을 세워버리면, 비교적 문제가 간단해진다.
이제 내가 해야 할 것은
손가락과 입을 인식하고 이 둘의 영역이 겹쳐지면,
손가락이 입으로 들어가는 상황이라 판단하는 로직을 구현하는 것이다.
그리고 이러한 것들을 잘하는 모델은 비교적 찾기가 쉽다.
Google의 Mediapipe 활용한 손톱 물어뜯기 인식
Mediapipe는 Google에서 개발한 오픈소스 머신러닝 프레임워크다.
머신러닝을 활용한 다양한 솔루션(객체탐지, 포즈인식 등)들을 공개해 놓은 플랫폼이라 볼 수 있다.
그중에서도, 손가락과 입을 인식하기 위해선 Mediapipe의 아래 모델들을 활용해 볼 수 있다.
HandLandmark와 FaceLandmark는 각각 손가락과 얼굴 표면을 인식하여,
아래와 같이 랜드마크 포인트들을 잡아준다.
이 둘을 활용해 손가락이 입안으로 들어가는 순간을 인식해 보자.
FaceLandmark에서 입술 주변의 포인트들을 활용해, 입 주변의 바운딩 박스를 만들 수 있다.
HandLandmark에서 손톱의 포인트들을 활용해, 입 주변 박스로 들어오는 순간을 탐지할 수 있다.
실제로는 이보다 더 까다로운 조건들이 몇 가지 필요하다.
예를 들어, 손톱을 물어뜯을 때는 손톱뿐 아니라 그 밑의 관절까지 입안의 영역으로 들어간다고 볼 수 있다.
이처럼, 수년간 손톱을 물어뜯은 경력을 총동원하여 인식률을 높이기 위한 여러 조건과 필터링을 적용해 주었다.
탐지 결과
이렇게 가장 기본 버전인 Pretty_Nail의 버전 1이 완성되었다🤗
이제 이 로직을 노트북 백그라운드에 실행 시켜 놓고 1주일 동안 나를 대상으로 테스트를 해볼 예정이다.
손톱을 물어뜯는 순간을 탐지하게 되면, 그 상황을 영상으로 녹화해서 저장해 놓도록 하였다.
그 결과물들을 보면, Pretty_Nail v1의 문제점과 개선점을 찾아볼 수 있을 것이다.
'Life' 카테고리의 다른 글
Pretty_Nail - 너 그게 맛있냐? (0) | 2024.04.14 |
---|---|
내가 AI를 즐겁게 시작했던 방법, 해커톤 (5) | 2024.02.04 |
글또 회고와 시작 (0) | 2023.12.10 |
쉽지 않은 글쓰기, 해결 방안 (0) | 2023.02.11 |