Giter Site home page Giter Site logo

andysingal / ai-turtleneck-detector Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jinnyko/ai-turtleneck-detector

0.0 0.0 0.0 11.69 MB

I trained a model using YOLOv8Pose with data containing specific coordinates for the upper body. The software outputs the real-time coordinates of the user's image from a webcam and displays a message.

Python 16.47% C# 83.53%

ai-turtleneck-detector's Introduction

AI-TurtleNeck-Detector

AI 거북목 실시간 탐지 및 알림 소프트웨어 프로젝트 개요

장시간 컴퓨터 사용을 하면서 나도 모르게 거북목 증후군 자세를 취하게 되는 경우가 많았습니다. 매번 스스로 인지하기 힘들기 때문에 거북목 자세를 실시간으로 알려주는 서비스를 개발하게 되었습니다.

  • Pose Estimation 기술을 활용하여 웹캠상의 사용자 이미지 좌표를 실시간으로 읽습니다.
  • 자체 거북목 계산 알고리즘을 통해 일정 수준의, 일정 기간의 거북목으로 인식되면 메세지를 띄우는 응용 소프트웨어 입니다.
  • 약 5000개의 상반식 데이터를 직접 수집/및 라벨링 하여 YOLOV8Pose 모델을 사용하여 학습 시켰으며, 최적의 성능의 모델을 만들기 위해 Image size, Optimizer, single_class 등의 하이파 파라미터들을 변경 해보며 최적의 성능의 모델을 만들었습니다.

프로젝트 문제를 해결 및 개선시킨 부분

1. 다양한 조건의 모델 분석을 통한 모델 성능 개선

데이터셋을 약 세 배로 확장했음에도 불구하고 모델의 성능 향상이 미미한 상황이었습니다. 따라서 다양한 하이퍼파라미터 설정으로 모델을 학습하고 평가하며, 이를 통해 배치 크기나 에포크 수 등의 조정보다도 옵티마이저의 종류가 모델 성능에 더 큰 영향을 미침을 확인하였습니다. 특히, SGD 옵티마이저가 Human detection 및 Keypoint detection 작업 에서 모두 더 우수한 결과를 보여주었고 이를 토대로 모델의 학습 및 예측 프로세스를 최적화하여 프로젝트 성능를 향상시키게 되었습니다.

2. 두 언어 간 데이터 및 파일 공유 문제 해결

프로젝트에서 이미지 분석과 관절 포인트 예측은 Python 스크립트를 통해 이루어졌고, 인터페이스는 C#으로 개발되었습니다. 이로 인해 두 언어의 프로젝트가 데이터와 파일을 공유하기 어려웠습니다. 따라서 C# 코드에서 현재 프로젝트의 경로를 파악하고, 이 경로 정보를 Python 스크립트에 동적으로 전달하도록 구현하였습니다. 이로써 Python 스크립트와 C# 코드는 동일의 경로에서 이미지를 읽고 결과 좌표를 저장하고 결과 값을 활용하여 알고리즘을 수행할 수 있게 되었습니다.

3. 거북목 알림 딜레이 문제 개선

처음에 Python 스크립트에서 모델 예측과 거북목 알고리즘 연산을 동시에 수행하면서 이미지 프레임당 처리 속도가 약 6-7초가 소요되었으며, 이로 인해 거북목 알림이 시간적으로 지연되는 문제가 발생하였습니다. 따라서 Python 스크립트에서는 모델 예측만 담당하고, 다른 모든 연산 처리는 C#에서 수행하도록 개선하였습니다. 이렇게 함으로써 이미지 프레임당 처리 속도가 약 2초 정도 단축되었으며, 거북목 알림이 더 정확한 타이밍에 제공될 수 있게 되었습니다.

인터페이스 설계

image

라벨링을 위한 KeyPoint 정의

image

본 프로젝트에서 적용한 거북목 판별 방법 : "변화율" 판단

image

Challenge 1
웹캠과 피사체의 거리, 피사체 별 신체적인 크기 는 전부 다르기 때문에, 이를 절대적인 변화량에 맞추어 거북목을 탐지하는 것엔 잦은 오류가 있었습니다. 따라서 어깨 좌표, 목 끝 점 좌표 등을 사용하여 바른 자세와 거북목 자세일 때의 일정 변화율을 측정하여 거북의 지표로 사용하였습니다.

모델 성능 비교

image image

Challenge 2
약 200개가 넘는 최종 pt파일들을 만들었으나, 어떤 모델이 "가장 좋다" 라고 정할 수 있는 지표가 없었었습니다. 사용하는 사람에따라 거북목을 제일 잘 잡는다는 모델이 다르곤 했습니다. 따라서 라벨좌표와 모델 예측 후의 좌표간의 거리로 서로 얼마나 멀리 떨어져 있는지에 대한 평균값을 구하여 모델의 정확도 순위를 주었습니다. 또한 너무 무거운 모델이 될 경우 최종 인터페이스인 윈폼에서 딜레이가 심하게 났기 때문에 이 또한 평가 지표에 적용하였습니다.

인터페이스 Main Page

image

사용자가 직접 탐지되는 거북목의 심한 정도와, 탐지 해서 울리는 알람의 빈도 수 를 설정 할 수 있도록 하였습니다.

인터페이스 Log Page

image

거북목자세가 한번이 아닌 일정 시간동안 탐지가 되었을 떄 알림이 울리는 것을 확인 할 수 있습니다.

인터페이스 "MyReport" Page

image

ai-turtleneck-detector's People

Contributors

jinnyko avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.