논문 리뷰

[논문 리뷰] AlphaPose를 활용한 LSTM(Long Short-Term Memory) 기반 이상행동인식

yeonarom 2023. 5. 26. 02:22
 

[논문]AlphaPose를 활용한 LSTM(Long Short-Term Memory) 기반 이상행동인식

사람의 행동인식(Action Recognition)은 사람의 관절 움직임에 따라 어떤 행동을 하는지 인식하는 것이다. 이를 위해서 영상처리에 활용되는 컴퓨터 비전 태스크를 활용하였다. 사람의 행동인식은 딥

scienceon.kisti.re.kr

 

요약

사람의 행동인식(Action Recognition)은 사람의 관절 움직임에 따라 어떤 행동을 하는지 인식하는 것이다. 이를 위해서 영상처리에 활용되는 컴퓨터 비전 태스크를 활용하였다. 사람의 행동인식은 딥러닝과 CCTV를 결합한 안전사고 대응서비스로서 안전관리 현장 내에서도 적용될 수 있다.

기존 연구는 딥러닝을 활용하여 사람의 관절 keypoint 추출을 통한 행동인식 연구가 상대적으로 부족한 상태이다. 또한 안전관리 현장에서 작업자를 지속적이고 체계적으로 관리하기 어려운 문제점도 있었다.

본 논문에서는 이러한 문제점들을 해결하기 위해 관절 keypoint와 관절 움직임 정보만을 이용하여 위험 행동을 인식하는 방법을 제안하고자 한다. Pose Estimation 방법의 하나인 AlphaPose를 활용하여 신체 부위의 관절 keypoint를 추출하였다. 추출된 관절 keypoint를 LSTM(Long Short-Term Memory) 모델에 순차적으로 입력하여 연속적인 데이터로 학습을 하엿다. 행동인식 정확도를 확인한 결과 "누워있기(Lying Down)" 행동인식 결과의 정확도가 높음을 확인할 수 있었다.

 

서론

1. Human Pose Estimation 방식

(1) Top-Down 방식

: 사람을 먼저 Detection 한 후 Detection 된 사람의 자세를 추정.

ex) AlphaPose, Mask-RCNN

(2) Bottom-Up 방식

: landmark(관절점)를 먼저 감지한 후 서로 연결하여 사람의 자세를 추정.

ex) OpenPose

 

2. 논문에서 제안된 방식

AlphaPose는 여러 방법 중 관절 추출정확도가 가장 높으며, 다수의 사람을 검출할 수 있고, CCTV 높이에서 사람의 이상행동 인식이 가능해 현장 작업자들의 행동인식 시스템으로 활용이 가능하다.

그렇기 때문에 본 논문에서는 AlphaPose를 활용하여 작업현장 내 안전사고를 예방하려는 연구를 시도한다.

 

본 논문에서는 HRNet 기반의 관절 keypoint 추출을 통해 AlphaPose를 활용하고, 추출한 관절 keypoint를 통해 행동을 인식하는 방법을 제안한다.

그리고 연속된 데이터를 활용하여 영상기반 시계열 예측으로 행동인식을 나타낸다.

이러한 시계열 예측을 위해 LSTM(Long Short-Term Memory)을 사용하였다.

 

관련 연구

1. AlphaPose를 활용한 관절 keypoint 추출

AlphaPose는 다수의 사람에 대한 Pose Estimation을 실시간으로 할 수 있으며, 총 18개의 관절 keypoint를 추출하였다.

AlphaPose는 Top-Down 방식으로 Bottom-Up 방식 대비 정확도와 효율성 측면에서 State-Of-The-Art(SOTA) 결과에 준하는 성능을 보였다.

 

 

위의 식은 AlphaPose의 관절 keypoint 추출에 대한 식이다.

객체의 모든 관절 keypoint에 대한 분포가 낮을수록 각각의 Confidence 점수가 높을수록 좋다.

tanh는 신뢰도가 낮은 값을 필터링하며 Pi와 Pj의 두 좌표가 일치할수록 tanh의 미분된 값은 1에 근접해진다.

 

COCO 데이터셋에서의 AP(정밀도)를 측정하여 여러 방법들의 정확률을 비교하였다.

AP@0.5:0.95는 IoU(Intersection over Union : (교집합 영역 넓이) / (합집합 영역 넓이))의 Threshold를 0.5부터 0.95까지 0.5의 간격으로 달리 줬을 때의 AP 평균을 의미한다.

 

 

관절 keypoint 추출 성능을 비교해 본 결과, OpenPose는 속도는 빠르지만 정확성은 떨어지고, Detectron은 속도는 느리나 정확성은 높다.

본 논문에서는 OpenPose와 Detectron보다 정밀하게 관절 keypoint를 추출하는 AlphaPose를 채택하였다.

 

2. LSTM을 활용한 행동인식 구조

프레임마다 사람의 관절에서 34(17x2)개의 keypoint 값을 추출하여 벡터로 변화하고 연속된 프레임을 모아 데이터를 만들었다.

형성된 관절 keypoint 데이터는 학습 데이터와 테스트 데이터를 8:2의 비중으로 나누었다.

추출된 관절의 keypoint들은 영상의 프레임에 대해 시계열 예측이 가능한 RNN의 은닉층(Hidden State)에 기억층(Cell State)을 추가한 구조인 LSTM 모델에 입력 데이터로 사용하였다.

RNN의 기울기 소실 문제를 극복하기 위해 고안된 LSTM을 프레임마다 관절의 움직임을 기억하도록 내부 파라미터를 수정하였다.

입력 데이터를 평균이 0, 분산이 1인 데이터 분포로 바꾸고 균일한 분포의 데이터로 전환하여 손실함수에서 학습이 잘 진행하도록 하였다.

여러 클래스를 분류하기 위해 Cross Entropy 함수를 사용하였다. 아래는 Cross Entropy 식이다.

 

실제 환경의 값은 q이고 모델의 예측 값은 p이다.

실제 분포 q에 대해 알지 못한 상태에서 p를 통해 q를 예측하는 것이다.

실제 값과 예측값의 차이를 줄이는 것에 목적이 있다.

 

본 논문에서는 시계열 데이터를 다룰 수 있는 순환 신경망 모델 중 LSTM 모델을 활용했으며 영상의 9프레임을 확인하고 관절의 움직임을 관찰하여 현장 내 이상행동을 판단하도록 한다.

미국직업안정 및 건강관리청(OSHA : Occupational Safety and Health Administration)의 안전보건사고통계목록 기반으로 "쓰러지기(Falling Down)" 행동을 이상행동으로 정의하였다.

 

현장 안전관리를 위한 행동인식 모델

현장 안전관리를 위한 행동인식 모델의 연구 진행순서는 아래와 같다.

1단계 Pose Estimation - 영상에서 HRNet을 활용하여 사람의 관절 keypoint를 추출한다.

2단계 LSTM - 추출된 keypoint가 LSTM의 데이터로 입력되고 9프레임 단위로 행동을 인식한다.

 

HRNet은 Feature Map의 크기가 작아지고 깊이가 깊어질수록 고해상도 표현이 좋아진다는 장점이 있다.

HRNet은 고해상도 표현을 향상하기 위해 Multi Scale Fusions을 수행하고, 동일한 깊이와 유사한 수준이 저해상도 표현도 사용하였다.

그 결과 고해상도 표현은 Pose Estimation에 좋은 성능을 보였다.

 

전통적인 머신러닝 방법인 Random Forest와 SVM 방법도 클래스에 대해 다중 분류가 가능하지만, 데이터의 수가 많아질수록 속도가 크게 떨어진다는 문제점이 있다.

그러므로 속도가 더 빠르고 시계열 예측 성능이 좋은 LSTM으로 연구를 수행하였다.

 

본 논문의 모델은 영상데이터로부터 관절의 좌표 x, y를 각각 17개씩 추출하여 관절 좌표의 변화에 따라 물건 옮기기, 쓰러지기, 걷기, 물건 들기, 서있기, 누워있기의 총 6가지 행동을 인식하도록 한다.

현장 안전관리를 위한 모델은 현장 내 일반적인 행동 4가지(물건 옮기기, 걷기, 물건 들기, 서있기)와 이상행동 2가지(쓰러지기, 누워있기)로 분류되어 인식한다.

모델의 적합한 계산을 위해 아래의 표와 같이 세부 파라미터를 수정하고 최적화한다.

모델이 전달받는 시간 정보의 범위를 담당하는 프레임 수를 최적화 파라미터 값으로 조정한다.

 

LSTM Prameters

  • Loss function - Cross Entropy
    6가지 행동 클래스를 다중 부류하여 인식하도록 한다.
  • Optimizer - Adam
    RMSProp보다 세밀하게 학습되며, 학습 속도를 보다 빠르게 한다.
    학습률은 RMSProp과 마찬가지로 Gradient 제곱의 이동평균에 반비례하도록 설정된다.
  • Sequence Length - 9
    장면의 연속되는 데이터 길이가 9일 때 한 가지 행동으로 인식한다.
    초당 30 프레임인 데이터에서 9개의 프레임을 추출할 때 사람의 관절 keypoint를 추출하여 순차적으로 keypoint를 DataLoader로 불러오는 방법을 활용하였다.
  • Shuffle - True
    사람의 관절 keypoint 값들을 과적합 시키지 않도록 한다.
  • Pin Memory - True
    메모리 가속화 목적으로 Tensor를 CUDA 고정 메모리에 할당시키는 파라미터 설정이다.

 

34개씩 순차적으로 입력된 관절의 keypoint로 관절 움직임을 9 프레임 동안 확인하고 행동을 인식하는 모델로 영상 프레임에 대해서 행동 인식이라는 하나의 출력값을 도출하기 위해 Many-To-One 방식인 모델로 구축하였다.

 

실험 결과 및 평가

1. 사람 동작 데이터셋

본 논문에서 활용한 데이터는 AI-Hub의 데이터이다.

영상 데이터는 작업현장에서 주로 보이는 물건 옮기기, 쓰러지기, 걷기, 물건 들기, 서있기, 누워있기의 총 6가지 동작 영상을 수집하였다.

영상으로 부터 사람의 관절 keypoint를 추출한 데이터셋은 학습데이터 8, 평가 데이터 2의 비율로 나눠 학습 데이터 167,886개, 평가 데이터 41,712개를 사용하였다.

데이터값은 관절 keypoint의 좌표이다.

행동의 영상은 각각 5~10초 길이이며, 영상의 크기는 1920x1080 픽셀이고 프레임 속도는 30Fps이다.

 

영상 데이터는 동작 캡처 촬영을 위한 대략 8m x 8m 공간을 12대의 고속 카메라를 동기화하여 촬영하였다.

사람이 자이로 슈트를 착용하고 슈트 위에 평상복을 입은 상태에서 여러 사람의 동작을 수집하였다.

12대의 고속 카메라는 서로 간의 동기화와 트리거를 연결해 동시에 촬영하여 영상 클립의 싱크를 맞추는 방식으로 타임 동기화를 진행하였다.

 

2. 모델의 실험 결과 및 평가

(1) Pose Estimation에서 관절의 keypoint 추출에 대한 성능

사람이 특정 자세를 취하였을 때 관절의 시각화가 정상적으로 되는지, 관절의 관계성을 비교할 목적으로 3가지 Pose Estimation 방법을 사용하였다.

테스트 영상은 이상행동인 "누워있기(Lying Down)"을 사용하였다.

실험은 Tf-Pose-Estimation, OpenPose, AlphaPose 순으로 진행되었고 각각 추출된 관절의 수는 18개, 25개, 18개이다.

다음은 실험의 결과이다.

 

  • Tf-Pose-Estimation의 '누워있기' 인식 결과
    눈, 코, 귀, 골반, 팔과 다리의 관절 위치와 관절 간 길이가 제대로 대응되지 않았다.
  • OpenPose의 '누워있기' 인식 결과
    눈, 코, 귀, 팔, 골반의 관절 위치와 관절 간 길이는 정상적으로 대응되지만 오른쪽 다리 간절의 위치가 왼쪽 다리와 비정상적으로 겹치게 인식하였다.
  • AlphaPose의 '누워있기' 인식 결과
    모든 관절의 위치가 다른 방법들보다 정상적으로 위치하며 관절과 관절 간 길이가 정확히 대응되었다.

 

(2) '누워있기'를 제외한 나머지 5가지 행동에 대한 AlphaPose의 관절 keypoint 추출 성능

앞서 '누워있기' Pose Estimation 결과에서 가장 성능이 좋았던 AlphaPose를 사용하여 추가 실험을 진행한다.

물건 옮기기, 쓰러지기, 걷기, 물건 들기, 서있기의 5가지 행동에 대해서도 AlphaPose가 관절과 관절 간 길이를 정확이 대응시킬 수 있는지에 대해 실험을 진행하였다.

다음은 실험의 결과이다.

 

 

(3) 모델의 Parameter에 따른 모델 성능

모델 학습 시 Optimizer를 RMSProp으로 설정한 경우 Train Accuracy는 96.69%, Validation Accuracy는 92.48%이다.

Optimizer를 Adam으로 설정한 경우 Train Accuracy는 96.75%, Validation Accuracy는 95.63%이다.

Adam이 학습방향과 스텝 크기를 최적해 준다.

그래서 Train Accuracy는 차이가 작지만, Validation Accuracy는 Adam이 4.27% 정도 더 좋은 결과가 나왔다.

아래는 Tensorboard를 활용하여 실험 결과를 그래프로 그려 시각화한 것이다.

 

모델 학습 시 Cross Entropy는 실제 데이터의 확률 분포와 계산한 확률 분포 차이를 구하는 데 사용된다.

Cross Entropy를 손실함수로 사용했을 때 Train loss는 0.1532이고, Validation loss는 0.1845이다.

Adam을 사용한 모델의 Loss는 아래와 같다.

(4) 행동인식 결과

실험분석 결과로 누워있기와 쓰러지기와 같은 이상행동과 물건 옮기기, 걷기, 물건 들기, 서있기와 같은 일반적인 행동을 비교했다.

행동의 인식률 결과는 다음과 같다.

그 결과, 누워있기 행동의 관절 변화량과 관절의 움직이는 각도가 다른 일반적인 행동들보다 크기 때문에 쓰러지는 행동의 인식률이 일반적인 행동의 인식률보다 10~12% 더 높게 측정되었다.

 

결론 및 향후 방향

본 논문에서는 행동인식 연구를 목적으로 Pose Estimation 모델들의 관절 keypoint 추출에 대한 성능 평가 후, 성능이 좋은 AlphaPose와 LSTM을 활용하여 이상행동 인식 모델을 구축하였다.

 

현장안전 분야에서의 행동인식 데이터셋 구축 방법을 소개하였고, 다른 여러 산업 분야에서 CCTV를 활용해 행동인식 태스크를 진행할 때 도움을 주고자 한다.

영상 데이터로부터 프레임마다 관절의 keypoint를 추출하고 추출된 값을 적용시켰다.

LSTM 내부 파라미터들에 대해 fine-tuning을 함으로써 대체로 성능 향상을 이루었다.

관절 keypoint를 추출하는 부분에서는 고해상도 유지 목적으로 HRNet을 사용하였고, 추출된 관절 데이터를 LSTM에 input 데이터로 적용한 결과, 정확도는 95.63%, loss는 0.1845로 성능이 가장 높게 나왔다.

 

향후 연구 계획으로는 사람의 관절 값을 3차원으로 추출하여 CCTV를 통해 실시간으로 사람의 행동을 인식하는 연구를 지속하고자 한다. 다른 각도에서는 보이지 않는 관절을 추출할 수 있으며, 복자반 관절에 대한 인식률 성능 향상을 기대할 수 있다.