2021 교통 수(手)신호 동작 인식 AI 경진대회

알고리즘 | CV | 객체탐지 | 제어 | LogLoss

  • moneyIcon Prize : 총 500만원
  • 418명 마감

 

Private 4위 코드 (CNN+PoseC3D)

2021.10.17 11:35 4,615 Views language

안녕하세요
첫 대회 참여라, 다른 분들보다는 코드가 복잡하게 느낄 수 있을 것 같습니다
저는 처음에 CNN으로 접근했다가, 느낀 것은 데이터가 적다보니  모델이 손동작과 더불어 배경이나 사람 외적인 것에 집중할 수 있다고 생각했습니다
차렷 자세가 각 비디오마다 1/3을 차지했고, 최대한 손동작에 집중할 수 있도록 제공된 Pose 값을 이용해서 양손이 벌려진 각도(>50도)를 계산해서 해당 데이터만 추출했습니다
테스트 결과는 개선됐지만, 이미지다보니 여전히 문제가 있다고 생각해서 두번째는 skeleton  based Human Action Recognition PoseC3D 모델을 사용했습니다 (https://paperswithcode.com/task/skeleton-based-action-recognition)
설치할 패키지는 mmaction2, mmdet, mmpose입니다
이는 다행히 OpenMMLab 재단의 MMaction2 기반으로 구현이 되어 있어서 NTU60 Pretrained 모델에 config 설정을 통해서 구현했습니다. 테스트했을 때는 아무래도 non-weight보다 pretrained 상태에서 훈련이나 추론 면에서 나았습니다
다만 기존에 제공되어 있는 pose값이 아닌 HRNet 기반의 pose 값을 요구하고 있어서, 훈련 전에 skeleteon 데이터 만드는데 조금 시간이 소요되기는 합니다
만든 이후 pipeline은 각 폴더 안에서 임의로 80 프레임을 뽑아서 action에 대한 훈련을 진행했습니다
결국 추론은 Fold 하나로 할 때만 결과가 괜찮아서 Fold는 하나만 사용했습니다
결국 CNN과 PoseC3D를 이용해서 나온 결과값을 평균낸 후 가장 prob가 높은 것 0.975, 나머지는 0.025로 (좋은 결과를 최악의 경우를 방지하기 위한 트릭을 사용했습니다)(https://medium.com/@egor_vorobiev/how-to-improve-log-loss-score-kaggle-trick-3f95577839f1)
감사합니다

Code