[낙상 감지 프로젝트] 2024년 12월 16일(월)
전체 요약 12.16(월) - YOLOv8-pose와 미디어파이프 두가지 모델을 사용하여 낙상감지 프로젝트 구상 - 우선 YOLOv8n-pose로 관절값(코, 양쪽 어깨)을 json파일로 뽑아서 속도 임계값을
so-fast.tistory.com
전체 요약
12.17(화)
- 처음 잡힌 사람을 기준으로 하기 위해서 트래커를 적용
지난 회의때는 2명으로 잡히는 부분이 있었기때문에,
이 부분을 한명으로 트래킹해서 2명으로 잡는 부분을 해결하고 싶었습니다
트랙킹을 알아야하기때문에 공식홈페이지를 보고 공부도 겸했습니다.
from ultralytics import YOLO
import cv2
# YOLO Pose 모델 로드
model = YOLO('yolov8n-pose.pt')
# 입력 및 출력 동영상 경로
input_video = '/content/00015_H_A_SY_C5.mp4'
output_video = '/content/output_yolo_pose_track.mp4'
# 동영상 읽기 및 저장 설정
cap = cv2.VideoCapture(input_video)
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
fps = int(cap.get(cv2.CAP_PROP_FPS))
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
out = cv2.VideoWriter(output_video, fourcc, fps, (width, height))
# 프레임 단위로 Pose + 추적 수행
while cap.isOpened():
ret, frame = cap.read()
if not ret:
break
# YOLO Pose 추적 수행
results = model.track(frame, persist=True) # persist=True로 ID를 지속적으로 유지
# 시각화된 결과 가져오기
annotated_frame = results[0].plot() # 프레임에 바운딩 박스, 키포인트, ID 시각화
# 결과를 동영상에 저장
out.write(annotated_frame)
cap.release()
out.release()
cv2.destroyAllWindows()
print(f"처리가 완료되었습니다! 결과 동영상: {output_video}")
.
한눈에 확인하기 좋은 결과값
![]() |
![]() |
![]() |
Origin | Before tracking | After tracking |
결과 영상
이 다음엔 json을 추출해서 속도를 뽑고, 뽑은 값을 기준으로 잡아서 낙상, 비낙상, 위험 3가지의 클래스로 해결해보려고 합니다.
'Project > 낙상' 카테고리의 다른 글
[낙상 감지 프로젝트] 2025년 2월 22일 (토) _프로젝트 완성 (0) | 2025.02.22 |
---|---|
[낙상 감지 프로젝트] 2025년 2월 15일 (토) (0) | 2025.02.15 |
[낙상 감지 프로젝트] 2024년 12월 31일(화) (1) | 2024.12.31 |
[낙상 감지 프로젝트] 2024년 12월 20일(금) (3) | 2024.12.20 |
[낙상 감지 프로젝트] 2024년 12월 16일(월) (0) | 2024.12.16 |