CLIP이 여전히 처리하지 못하는 것을 위해 일주일 만에 EVA-02를 미세 조정하여 신경망 비디오 검색 엔진을 구축했습니다 [P]
요약
7일간의 스프린트를 거쳐 로컬 비디오 검색 엔진을 오픈 소스했습니다. 이 엔진은 시각적 포즈, 의류 디테일 등 기존 모델(CLIP 등)이 놓치던 복잡한 비정형 비디오를 검색할 수 있습니다. 업로더 메타데이터에 의존하지 않으며 최소 VRAM으로 작동합니다.
핵심 포인트
- EVA-02 미세 조정을 통해 낮은 VRAM 환경에서도 학습 및 구동 가능.
- 다중 인스턴스 라우팅을 사용하여 프레임별 기울기를 전달, 검색 정확도 향상.
- 3x3 컨택 시트 모자이크 압축과 그래프 크롤링으로 대용량 비디오 처리.
- Soft negative floor 및 Long-tail balancing 기법 적용.
요약하자면(TL;DR): 광란의 7일간의 스프린트 끝에, 저는 시각적 포즈, 의류 디테일, 카메라 각도, 움직임 리듬을 통해 방대한 비정형 비디오 포털을 검색하도록 구축된 로컬 비디오 검색 엔진을 오픈 소스했습니다. 이 엔진은 검색 시 업로더 메타데이터를 무시하며 최소한의 VRAM으로 작동합니다. GitHub: https://github.com/qn06142/eva02-neural-video-retrieval
기존 모델 및 검색의 실패 이유:
- 기반 가중치 제거(Scrubbed foundation weights): Stock CLIP, BLIP, SigLIP은 여전히 특정 신체 자세, 비전통적인 의류 스타일, 필터링되지 않은 시각적 개념에 대해 거대한 사각지대를 가지고 있습니다.
- 불안정한 고정 분류기(Fragile fixed classifiers): 이전에 사용했던 JoyTag, P-HAR, FashionCLIP의 앙상블은 흐릿하고 압축된 영상과 엄격한 분류 체계에서 어려움을 겪었습니다. 예를 들어 "thighhighs"는 "over-the-knee socks"를 놓치고, "from behind"는 "rear view"를 놓칩니다.
- 깨진 플랫폼 검색: 업로더들은 비디오당 50개의 일반적인 SEO 태그를 넣으며, 단일 썸네일 인덱싱은 25분짜리 클립에서 단지 20초 동안만 나타나는 포즈나 의상을 완전히 놓칩니다.
데이터 파이프라인 및 저장소:
- 그래프 크롤링(Graph crawling): 48 스레드의 너비 우선 탐색(breadth-first) 크롤러가 추천 그래프를 순회하며, 특정 의상(스타킹, 미니스커트, 메이드 유니폼, 앞치마, 하이힐)과 포즈(무릎 꿇기, 몸 숙이기, 스쿼팅, POV)에 대해 정규 표현식(regex)을 통해 후보들을 필터링합니다.
- 모자이크 압축(Mosaic compression): 테라바이트 단위의 원본 비디오를 보관하는 대신, 각 클립은 9개의 시간 순서가 있는 키프레임으로 구성된 3x3 컨택 시트 모자이크로 저장되며, 나머지 141k 개의 아카이브 tarball(12 GB)은 Colab G4 인스턴스로 오프로드됩니다.
- 동적 캡셔닝(Dynamic captioning): 정화기(sanitizer)는 URL, 스튜디오 워터마크, 구두점 스팸, 해상도 혼란을 제거하며, 학습 과정에서는 동의어 순환, 절 재배열, 무작위 태그 삭제를 통해 매 에포크마다 캡션을 재생성합니다.
수정 사항:
- 고정된 공간 트렁크(Frozen spatial trunk): EVA-02-CLIP-L-14-336 비전 백본(vision backbone) (304M 파라미터, 336x336 입력, 576 공간 패치)을 고정함으로써, 텍스트 타워와 투영 헤드(projection head)를 업데이트하는 동안 8 GB RTX 4060 노트북의 4.5 GB VRAM 내에서 학습이 가능해졌습니다.
다중 인스턴스 라우팅(Multi-instance routing): 비디오를 하나의 흐릿한 벡터로 평균화하는 대신, 훈련 과정에서 무작위 모자이크 프레임 세트(random bag of mosaic frames)를 가져와 각 프레임을 캡션과 점수 매기고, 가장 잘 일치하는 단일 프레임을 통해 기울기(gradients)를 전달합니다. 소프트 네거티브 플로어(Soft negative floor): 병렬 SigLIP 실행은 쌍별 시그모이드 손실(pairwise sigmoid loss)을 위해 스왑 소프트맥스(swap softmax)를 사용하고, 근접 중복 배치 제목(near-duplicate batch titles)을 감지하기 위해 고정된 텍스트 인코더 복사본을 사용하여 부정적 페널티를 25%의 하한선(floor)으로 완화합니다. 롱테일 균형(Long-tail balancing): 태그 개수는 주요 용어(head terms)와 희귀한 꼬리 부분(rare tails) 사이에 9,000배의 편향이 있습니다 (15,000~45,000+ 히트, POV는 ~16k, 일반 의상은 4k–5k+). 이는 제곱근 역빈도 샘플링(square-root inverse-frequency sampling)을 통해 해결했습니다. 도메인 붕괴 방지(Preventing domain collapse): 선별된 4,652개 이미지의 Danbooru2023 앵커 세트를 실사 배치에 대칭적으로 혼합하여, 실제 영상과 함께 2D 일러스트레이션 특징이 온전히 유지되도록 합니다. 데이터셋 규모(Dataset scale): 147,412개의 선별된 비디오(132만 개의 키프레임)를 통해 훈련되었으며 현재는 288,000 클립 이상으로 규모를 확장하고 있으며, 검증 손실(validation loss)을 1.428에서 1.054로 낮췄습니다. 보류된 검색(Held-out retrieval): 보류된 검증 분할(held-out validation splits) 전반에 걸쳐 Recall@1이 12.4%에서 20.67%로 상승했으며, 선별된 분할에서는 Recall@1 28.0%, Recall@5 60.0%를 달성했습니다. 도메인 간 및 다중 타일 이점(Cross-domain and multi-tile gains): 도메인 간 Recall@1은 제로샷(zero-shot) 기준 18.09%에서 55.28%로 상승했으며, 중앙 썸네일만 평가하는 대신 모든 모자이크 타일을 평가함으로써 자체적으로 +39%의 Recall@1 향상을 제공합니다. 세밀 시각 검색(Fine-grained visual search): 웹 뷰어(드래그 앤 드롭 및 Ctrl+V 스크린샷 검색 기능 포함)를 통해 무광 가죽과 유광 라텍스 치마, 샤워 장면 대 욕조/변기 장면, 수십 페이지 깊숙이 숨겨진 정확한 란제리 색상 등을 명확하게 분리합니다. 하드웨어 병목 및 추론 속도(Hardware Bottlenecks and Inference Speed): 두 단계 로컬 검색(Two-stage local search): 모든 정규화된 반정밀도 키프레임 벡터를 2 GB VRAM에 유지하면 전체 인덱스를 약 8.9ms 만에 스캔할 수 있으며, 이후 스테이지 II에서 공간 패치(spatial patches)를 언패킹하여 국소적인 재순위 지정(localized reranking)을 수행하고 호버 시 4x3 그리드에서 실시간 광학 흐름 BPM(live optical flow BPM)을 실행합니다.
JPEG 디코딩 병목 현상: Python PIL이 CPU에서 JPEG 디코딩에 이미지당 32ms를 사용하며 GPU 활용률을 18%로 떨어뜨렸습니다. C++ libjpeg-turbo를 중심으로 로더를 재작성하여 디코딩 시간을 2.1ms까지 낮췄습니다. Ada Lovelace FP8 문제: cuBLASLt가 16으로 나누어 떨어지지 않는 차원의 FP8 행렬 곱셈을 거부했으며, 577 토큰과 2,730 MLP 너비에 패딩을 적용하는 것이 네이티브 FP16 FlashAttention 대비 속도 향상을 없앴습니다. 여전히 노이즈가 많은 엣지 태그 주변을 다듬고 디스크에 남아있는 모자이크를 완성할 부분이 많이 있지만, MIL contrastive setup, label skew, domain collapse, optical flow cadence estimation, 또는 PyTorch/CUDA의 특이점(quirks)에 대한 질문에는 기꺼이 답변드리겠습니다! submitted by /u/qn06142 [link] [comments]
AI 자동 생성 콘텐츠
본 콘텐츠는 r/MachineLearning (hot)의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기