FSA.log
로그인
FSA.log
로그인
[VideoLLaMA 3] action recognition
FSA
·
2025년 2월 23일
팔로우
0
0
[video] foundation model
목록 보기
8/10
4개 했음 (6개 남음)
해결해야할 의문점
Vision Encoder에 비디오 input 넣는 법 찾기
이 링크를 보면 된다.
질문
Video Language Model("DAMO-NLP-SG/VideoLLaMA3-7B") 내의 Vision Encoder 가 video input을 어떤 format으로 받는지 파악하기
Vision Encoder 가 video input을 어떤 format으로 받는지 파악하기
Vision Encoder의 processor로 이를 만들 수 있는지 확인하기
예상
"DAMO-NLP-SG/VideoLLaMA3-7B" processor의 역할
input에 비디오가 있는지 없는지를 체크한 후
비디오니까, 프레임별로 for문을 돌면서
이미지를 받아, patch화 한 후, 선형 layer을 거쳐서
patch당 초기 patch embedding vector 를 추출한다.
"DAMO-NLP-SG/VL3-SigLIP-NaViT" processor의 역할
input에 비디오가 들어왔을 경우를 처리하는 경우는 없을 것으로 추정됨
확인 결과
processor
input
'assets/goal_video.mp4'
171초 짜리 비디오
"fps": 1
"max_frames": 180
로직
default hyperparameter
1 fps로 샘플링
가로 51 / 세로 41 로 patch 만드는 것 같음
내가 알고 싶은 것
비디오를 어떻게 처리하나?
fps를 내가 조절할 수 있나?
patch size는 어떻게 되어 있을까?
output: Dict
pixel_values : shape (61880. 588)
grid_sizes : shape (1, 3)
[[170, 14, 26]]
참고 : 170 (프레임 수)
14 (세로 패치 수)
16 (가로 패치 수) = 61880
merge_sizes : shape (1)
[2]
전처리 과정에서 시각적 특징을 합치는(merge) 방식에 대한 정보를 담고 있습니다.
여기서 값 [2]는 예를 들어,
특정 영역이나 인접 패치의 정보를 결합하는 전략(예: 두 개씩 merge)으로 해석할 수 있습니다.
Video Language Model("DAMO-NLP-SG/VideoLLaMA3-7B")의 Vision Encoder("VideoLLaMA3-7B Vision Encoder")을 쓰고 있음
어떻게 이를 확인할 수 있는가? 무엇을 참고해야하는가?
Video Language Model("DAMO-NLP-SG/VideoLLaMA3-7B")의 Vision Encoder이 비디오를 input으로 받을 때
질문
어떤 type과 format으로 비디오 input을 받는가?
Vision Encoder은 어떤 type과 format의 output을 출력하는가?
어떻게 이를 확인할 수 있는가? 무엇을 참고해야하는가?
예상
processor가
TODO:
.mp4
를 input으로 받을 수 있나? 아니면 내가 직접 frames화 해서 넣어줘야 하나?
Vision Encoder의 output format 예상
(
N*F,D
shape의 임베딩 벡터 출력)
Video Language Model("DAMO-NLP-SG/VideoLLaMA3-7B")의 Video compressor의 input / output format은 어떻게 되는가?
예상
input: (
N*F,D
) shape의 임베딩 벡터 출력
output: (
N
n
e
w
N_{new}
N
n
e
w
, D) shape의 임베딩 벡터 출력
N
n
e
w
N_{new}
N
n
e
w
의 길이는 매번 바뀔 것 같음
Video encoder을 학습시키는 코드 공부하기
질문
데이터셋은 어떻게 구성되어 있나?
코드가 어떤 식으로 데이터셋을 불러오나?
data augmentation 은 어떤 것들을 이용하나?
Attentional Pooling 코드는 어떻게 되어있나?
아래 구현체를 이용하면 됨
https://github.com/huggingface/pytorch-image-models/blob/main/timm/layers/attention_pool2d.py#L150
https://huggingface.co/spaces/Roll20/pet_score/blob/88b06a51ba63f586dad6548231ba0f8b6c1c44ec/lib/timm/models/layers/attention_pool2d.py
TODO: 결정사항
2d rotary positional encoding을 또 적용해야 하는가? 이미, 한번 적용했으니까, 필요 없는거 아닌가?
둘 다 실험 돌려봐야하는것 같음
binary classification을 위해서는 어떤 네트워크를 구축해야하는지 알아보기
네트워크 구조 어떻게 짤 것인가?
앞부분
"DAMO-NLP-SG/VideoLLaMA3-7B" processor 사용 (혹은 "DAMO-NLP-SG/VL3-SigLIP-NaViT" processor)
목적: 비디오 input의 tokenize
"DAMO-NLP-SG/VL3-SigLIP-NaViT"을 forward
결정사항(고민)
"DAMO-NLP-SG/VideoLLaMA3-7B"의
Video compressor
을 활용
output: (
N
n
e
w
N_{new}
N
n
e
w
, D) shape의 임베딩 벡터 출력
N
n
e
w
N_{new}
N
n
e
w
의 길이는 매번 바뀔 것 같음
Attentional Pooling
아래 구현체를 이용하면 됨
https://github.com/huggingface/pytorch-image-models/blob/main/timm/layers/attention_pool2d.py#L150
https://huggingface.co/spaces/Roll20/pet_score/blob/88b06a51ba63f586dad6548231ba0f8b6c1c44ec/lib/timm/models/layers/attention_pool2d.py
TODO: 결정사항
2d rotary positional encoding을 또 적용해야 하는가? 이미, 한번 적용했으니까, 필요 없는거 아닌가?
둘 다 실험 돌려봐야하는것 같음
Linear layer
(dim)을 input으로 받아, (2)를 출력하는 layer 만들기
TODO
binary classification을 위해서는 어떤 네트워크를 구축해야하는지 알아보기
데이터셋?
데이터셋을 어떻게 만들 것인가?
내가 생각하는 데이터셋 구조
10초짜리 비디오 clips을 저장해놓은 폴더
제목은 어떻게 할 것인가? 시작 tiemstamp를 이름으로 하면 좋겠다.
데이터에 대한 annotation을 해 놓은 json 파일
비디오 파일 제목과,
0,1
표시만 있으면 됨
구조는 kinetics 400 데이터셋의 구조를 따라하자.
데이터셋을 어떻게 만들 것인가?
10초 길이로 자르자.
득점 인지 아닌지 라벨링하기
득점 클립
1:9 ~ 9:1 까지 총 9개를 득점 클립으로 만들어내자.
득점 클립이 아닌 클립
골장면 플러스 마이너스 12초 구간은 잘라내고,
남은 시각에서 random sampling하여 클립 만들어내기
경기 중인지 아닌지 라벨링하기
경기 중이 아닌 클립
부상 상황
시작하기 전 상황
끝난 후 상황
data augmentation을 어떻게 할 것인가?
해상도
720 by 1080
을, 0.5배 ~ 1배를 랜덤 샘플링하여 input에 넣어줍니다.
상하좌우 반전
상하좌우 반전을 전부 시켜줍니다.
Random Frame Sampling
비디오에서 frame을 추출하는 방식을 다양하게 설정합니다.
video llama3 에서는 1~10 FPS 까지 지원하더라.
TODO: 이걸 논문에서 어떻게 지원하는지 확인해보기
inference 시에는 어떻게 판단할 것인가?
8초 간격으로 시작 시점을 jumping해서 비디오 클립을 만들어서, 폴더에 저장한다.
batch 개 씩 불러오면서 inference 한다.
득점 clip을 전부 모아서, clip 중 겹치는게 있으면, 겹치는 시각의 중간점을 득점 시각으로 잡고,
앞 뒤 시간 설정해서 고정된 길이의 골 clip으로 설정할 수 있음
FSA
모든 의사 결정 과정을 지나칠 정도로 모두 기록하고, 나중에 스스로 피드백 하는 것
팔로우
이전 포스트
VideoLLaMA 3 README
다음 포스트
[VideoLLaMA 3] processor
0개의 댓글
댓글 작성
관련 채용 정보