h5 파일 확장자의 영상 피처 추출 (Feature Object Extraction(2D/3D) to h5 Format)

초코칩·2022년 10월 20일

딥러닝

목록 보기
1/1
post-thumbnail

소개

Deep CNN(ResNet-2D/3D) 모델을 활용하여 영상의 물체 피처를 추출하여 h5 확장자로 제공합니다.

  1. 영상을 1 FPS로 이미지를 분리합니다.
  2. CNN 모델을 활용하여 피처를 추출하고 .npy 확장자로 저장합니다.
  3. 영상들의 npy 형식의 파일을 h5 형식의 파일로 변환합니다.

요구 사항

  • Pytorch >= 1.0
  • Python >= 3.0
  • ffmpeg-python
  • h5py
  • numpy

아래 코드를 통해 설치할 수 있습니다.

!pip install -r requirements.txt

사용 방법

Dataset 준비

변환하고 싶은 데이터의 파일 경로와 h5파일의 출력 파일 경로를 input.csv 파일로 저장합니다.

video_path,feature_path
absolute_path_video1.mp4,absolute_path_of_video1_features.npy
absolute_path_video2.webm,absolute_path_of_video2_features.npy

clone한 파일 내에 input.csv 파일의 예시를 볼 수 있습니다.

Numpy 추출

아래의 코드를 통해 영상의 피쳐를 .npy 확장자로 추출할 수 있습니다.

!python extract.py --csv=input.csv --type=2d --batch_size=64 --num_decoding_thread=4

실행 후에 input.csv 파일에 입력했던 출력 파일 경로에 추출 결과를 확인할 수 있습니다.

h5 파일로의 변환

h5 파일의 형태로 저장하고 싶으면, 아래의 코드를 실행합니다.

!python convert.py --numpy_dir=/NumpyResult --output_dir=/h5Result --ouput_filename=SampleVideo

위의 예제 코드에서 h5Result 디렉터리에 h5 형태의 파일이 저장됨을 알 수 있습니다.

변환된 데이터 확인

아래의 코드를 통해 데이터를 쉽게 확인할 수 있습니다.

import h5py
a = h5py.File('./h5Result/SampleVideo.h5', "r+")

with a:
  # Check the keys
  print(a.keys())
  for next in a.keys():
    print(next, a[next].shape)

파일 구성

/h5Result
/NumpyResult
/SampleVideo
/videocnn
extract.py
convert.py
model.py
preprocessing.py
video_loader.py

Github

아래의 링크에서 원본을 확인할 수 있습니다.

https://github.com/Chocochip101/Video-Feature-Extractor

profile
초코칩처럼 달콤한 코드를 짜자

0개의 댓글