안녕하세요 개발자 커뮤니티 여러분! ? 실시간 자세 분석을 통해 작업장을 더욱 안전하게 만드는 AI 기반 시스템인 ErgoVision을 구축하는 여정을 공유하게 되어 기쁩니다. 기술적 과제와 솔루션을 자세히 살펴보겠습니다!
텍사스 A&M 대학의 SIIR-Lab에서 실시간 자세 분석 시스템 구축을 위해 저에게 접근했을 때 우리는 몇 가지 주요 과제에 직면했습니다.
# Core dependencies import mediapipe as mp import cv2 import numpy as np
가장 큰 과제는 실시간 분석을 달성하는 것이었습니다. 문제를 해결한 방법은 다음과 같습니다.
def process_frame(self, frame): # Convert to RGB for MediaPipe rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB) results = self.pose.process(rgb_frame) if results.pose_landmarks: # Process landmarks self.analyze_pose(results.pose_landmarks) return results
def calculate_angle(self, a, b, c): vector1 = np.array([a[0] - b[0], a[1] - b[1], a[2] - b[2]]) vector2 = np.array([c[0] - b[0], c[1] - b[1], c[2] - b[2]]) # Handle edge cases if np.linalg.norm(vector1) == 0 or np.linalg.norm(vector2) == 0: return 0.0 cosine_angle = np.dot(vector1, vector2) / ( np.linalg.norm(vector1) * np.linalg.norm(vector2) ) return np.degrees(np.arccos(np.clip(cosine_angle, -1.0, 1.0)))
def calculate_reba_score(self, angles): # Initialize scores neck_score = self._get_neck_score(angles['neck']) trunk_score = self._get_trunk_score(angles['trunk']) legs_score = self._get_legs_score(angles['legs']) # Calculate final score return neck_score + trunk_score + legs_score
프레임 처리 최적화
오류 처리
def safe_angle_calculation(self, landmarks): try: angles = self.calculate_angles(landmarks) return angles except Exception as e: self.log_error(e) return self.default_angles
구현 결과:
ergovision/ ├── src/ │ ├── analyzer.py │ ├── pose_detector.py │ └── reba_calculator.py ├── tests/ │ └── test_analyzer.py └── README.md
# Planned optimization @numba.jit(nopython=True) def optimized_angle_calculation(self, vectors): # Optimized computation pass
즐거운 코딩하세요! ?
위 내용은 ErgoVision 구축: AI 안전을 위한 개발자의 여정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!