-
12장 CNN + RNN [장면 전환 판별 신경망]파이썬 날코딩으로 알고 짜는 딥러닝 2020. 12. 11. 14:00
1. 비순환 계층 (CNN) 에서의 시계열 데이터 처리
- 동영상
- 동영상은 초당 30장 정도의 프레임 이미지로 구성된 대표적인 시계열 데이터이다
- 이를 효과적으로 처리하기 위해 이미지 데이터 처리를 위한 CNN과 시계열 데이터 처리를 위한 RNN의 결합이 필요하다.
- RNNExtModel
- 시계열 데이터에 대해 CNN 같은 비 순환 계층의 처리 지원을 위한 seqwrap 계층이 있다.
- 동영상의 장면 전환 검출 신경망 구성에 활용된다.
- 동영상 데이터의 미니배치
- 일반적인 이미지 데이터는 [이미지행, 이미지열, 채널]로 구성된 3차원 데이터이다.
- 동영상 미니배치 데이터는 [미니배치, 시간, 이미지행, 이미지열, 채널]로 구성된 5차원 데이터이다.
- CNN은 [미니배치, 이미지행, 이미지열, 채널] 형태의 4차원 데이터 처리가 가능하나, 시간 축과 길이 정보에 대한 처리가 불가능
- RNN은 3차원 데이터 처리가 가능하나, 이미지 처리가 불가능하다.
- 시계열 포장 계층 ( Sequential Wrapping Layer )
- CNN과 RNN의 결합 처리를 위한 간단한 해결책
- 서브 신경망 구성 정보를 갖는 복합 신경망
- 서브 신경망 : CNN과 같은 비시계열 데이터 처리를 위한 신경망
- 복합 계층 : parallel, serial, add, loop, custom 등을 구현하여 서브 신경망을 가지면서 외부에 대해 하나의 계층으로 동작
- 동작 과정
- 인접 계층에 대해서는 시계열 데이터 입출력 지원
- 내부적으로는 비시계열 데이터를 취급하는 비순환 계층들로 구성된 서브 신경망 활용
- 시계열 데이터 --(나열)--> 비시계열 서브 신경망 --(재구성)--> 시계열 데이터
2. 출력 계층과 후처리 단계
- 시계열 데이터 처리를 위한 출력 계층 확장
- 출력 계층의 확장을 위해 은닉 벡터가 시계열 데이터인지 확인하고 시계열 데이터일 경우 seqwrap 계층과 유사한 방식으로 처리
- 데이터셋 클래스 객체를 시계열 데이터에 알맞게 처리할 필요가 있다.
- VideoShotDataset : 시계열 데이터 형태 속에 장면 전환 여부 판정 문제를 처리한 데이터셋
- 장면 전환 신경망 학습의 어려움
- 장면 전환 비율이 낮은 데이터 : 데이터 균형이 맞지 않아 학습이 느리고 학습 진척 파악이 어려움
- 정답 레이블 정보 확보의 어려움 : 수작업을 통해 장면 전환 위치 확인해야함
- 장면 전환 횟수에 비해 과도한 데이터 양 : 실제 동영상에서 장면 전환 비율이 낮은 반면 동영상의 크기가 매우 크다.
- 해결책
- 캐시 정보 생성
- 원본 영상에서 임의 위치의 프레임을 무작위로 선택 (프레임 묶음 내에서는 장면 전환이 없을 것으로 간주)
- 임의 수의 프레임 묶음을 선택하여 캐시 정보 구성 (프레임 묶음 사이에는 장면 전환이 있을 것으로 간주)
- 캐시 정보 활용
- 캐시 정보를 이용하여 학습 및 평가 데이터 구성
- 다음 프레임을 선택할 때의 레이블 정보 부여 [ 같은 프레임 묶음 = 0 , 다른 프레임 묶음으로 전환 = 1 ]
- 임의 위치 프레임을 선택할 때의 레이블 정보 부여
- 캐시 정보 생성
장면 전환 정보를 나타내기 위해 장면이 전환되는 프레임에 대한 레이블 정보를 기록한다 '파이썬 날코딩으로 알고 짜는 딥러닝' 카테고리의 다른 글
14장 Encoder - Decoder (0) 2020.12.17 13장 Autoencoder (0) 2020.12.11 - 동영상