✨Data Science/project

[2024 Winter] 2주차 기록

kiwiio_v 2025. 1. 21. 15:44

2주차에는, 데이터 정리와 keypoint 추출을 위한 코드 작성을 진행하였다.  

 

1. 데이터 정리

positive(쓰러진 사진) 880장을 추출하였으며, 해당 사진에서는 1명의 사람만 등장한다.

neagtive(서있는 사진) negative사진으로는 upright 자세인 사진만 사용하였다.해당 사진에는 사람 여러명이 포함되어있다.

 

2, 키포인트 추출

 human pose estimation은 크게 두가지 방식으로 접근할 수 있는데, 첫번째는 Top-down방식이고, 두번째는 Bottom-up 방식이다.

 

1) Top-down method

human detection을 먼저 수행하고, 주어진 human bounding box 내부에서 pose estimation을 수행하는 two stages 방식을 사용한다.

  • 장점 : detector의 성능은 상당히 발전했기 때문에, 추정한 bounding box에서 keypoint를 찾는 것이 정확도가 높다.
  • 단점 : 사람 수에 비례하여 연산량이 증가한다.

1) Bottom-up method

먼저 모든 keypoint를 찾아낸 뒤 person instance로 그룹화한다.

  • 장점 : 한 네트워크 안에서 연산이 진행되기 때문에, 효율적이다. 
  • 단점 : Top-down 방식보다 정확도가 낮을 수 있고, 많은 사람이나 이미지에서 작게 나타나는 사람 또는 keypoint 부위에 취약하다.(crop해서 estimation하지 않으므로)

 

먼저 Bottom-up 방식으로 keypoint 추출을 진행하였는데, 아직 person detection팀과 어떤 키포인트 format를 사용할지 결정하지 못하여, mediapipe pose 라이브러리를 통해 키포인트를 추출하였다. 재대로 keypoint를 추출하고 있는지 시각화 하는 코드도 추가로 작성하였는데, positive에서는 사람이 한명이였어서, 대부분 추출이 정상적으로 이루어졌으나, 사람이 여러명인 negative에서는 효과적인 추출이 진행되지 않았다. 아무래도 negative 사진에 사람 외의 물체가 많다보니, 사람이 아닌 데이터의 keypoint값들도 뽑아버리는 경향이 있어서, 필요하지않은 데이터까지 추출되는 문제가 발생하였다.

Top-down방식으로 코드를 변경해야할꺼같다는 생각이 들어, 추후 수정하여 진행하기로 하였다. 

 

3. 개선사항

막상 추출을 진행하다보니 여러 문제점과 고민이 생겼다. 

1) keypoint 값의 손실이 생길 수 밖에 없다. 사진에서 가려진 부위나, 사람 자체가 물체에 가려져있으면, 하체 전체가 잡히지 않는 부분도 존재한다.  또한 추출된 keypoint값들에도 신뢰도가 낮게 나오는 값들이 존재한다.  해당 사항에서 신뢰도가 낮은 keypoint값을 0으로 대체할지, 아님, 신뢰도가 낮더라고 해당 값을 그대로 사용할지에 대한 논의가 필요할 것 같다. 

 

2) 1)의 문제를 고려할때, 나는 keypoint가 완벽하게 coco format에 맞게 17개가 완전해야한다고 생각했다.  좋은 훈련을 위해서는 좋은 데이터가 필요하니까, 하지만 실시간 상황에 적용해봤을때, 사람이 온전히 찍히지 않을 수도 있기때문에, 어느정도 노이즈가 분명 필요할 것이다. 이에 대해 조금더 생각해봐야할것 같다. 

 

3) 추가적인 교수님의 의견으로는, 쓰러진 데이터가 부족하다보니, 우리가 데이터셋을 구축하는 것도 제안해주셨다. 아무래도, 정상적인 keypoint를 억지로 17개를 찾는거보다, 17개가 온전한 데이터에서 일부러 키포인트 소실을 가정하는데 더 쉬운 방법이니, 해당 방법도 고려해보는게 좋을꺼같다.