252 lines
5.6 KiB
Markdown
252 lines
5.6 KiB
Markdown
# Video Analysis - Testing Checklist
|
|
|
|
## ⚠️ HIGH PRIORITY: Model Comparison for Semantic Analysis
|
|
|
|
### Background
|
|
|
|
Currently both deepfake detection and semantic analysis use **BusterX** (Qwen2.5-VL-7B, 7B parameters). However, we have access to a much larger model **Qwen3-VL-30B** (30B parameters) that could provide significantly better semantic understanding.
|
|
|
|
### Hypothesis
|
|
|
|
Semantic analysis (content understanding, scene description, narrative) would benefit from the larger Qwen3-VL-30B model, while deepfake detection should continue using the specialized BusterX model.
|
|
|
|
---
|
|
|
|
## Test Plan: Qwen3-VL-30B for Semantic Analysis
|
|
|
|
### Current Configuration
|
|
|
|
```bash
|
|
# modules/video-analysis/deploy/.env
|
|
VIDEO_ANALYSIS_VLLM_BASE_URL=http://didiAI-video-vllm-buster:54500 # Port 54500
|
|
VIDEO_ANALYSIS_VLLM_MODEL=busterx # 7B parameters
|
|
```
|
|
|
|
### Test Configuration
|
|
|
|
```bash
|
|
# modules/video-analysis/deploy/.env
|
|
VIDEO_ANALYSIS_VLLM_BASE_URL=http://didiAI-llm-vllm-vision:14002 # Port 14002
|
|
VIDEO_ANALYSIS_VLLM_MODEL=qwen3-vl # 30B parameters
|
|
```
|
|
|
|
---
|
|
|
|
## Testing Procedure
|
|
|
|
### Step 1: Baseline Test (BusterX 7B)
|
|
|
|
```bash
|
|
# Current configuration - no changes needed
|
|
cd /home/vasi/ml-projects/modules/video-analysis/deploy
|
|
|
|
# Test semantic analysis with BusterX
|
|
curl -X POST http://localhost:8007/analyze/video/semantic \
|
|
-F "file=@test_video_60s.mp4" \
|
|
-F "chunk_duration_s=10.0" \
|
|
-F "frames_per_chunk=24" \
|
|
-o baseline_busterx.json
|
|
|
|
# Review results
|
|
jq '{
|
|
model: "BusterX-7B",
|
|
num_chunks: .num_chunks,
|
|
chunk_descriptions: [.chunk_results[].description],
|
|
final_summary: .final_summary,
|
|
total_latency_s: .total_latency_s
|
|
}' baseline_busterx.json
|
|
```
|
|
|
|
### Step 2: Test with Qwen3-VL-30B
|
|
|
|
```bash
|
|
cd /home/vasi/ml-projects/modules/video-analysis/deploy
|
|
|
|
# Backup current config
|
|
cp .env .env.backup
|
|
|
|
# Update to use Qwen3-VL
|
|
cat > .env << 'ENVFILE'
|
|
HF_TOKEN=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
|
|
HF_CACHE_DIR=/cai2_ds_storage/hf_cache
|
|
VIDEO_ANALYSIS_RUNS_DIR=/app/runs
|
|
|
|
# Switch to Qwen3-VL for testing
|
|
VIDEO_ANALYSIS_VLLM_BASE_URL=http://didiAI-llm-vllm-vision:14002
|
|
VIDEO_ANALYSIS_VLLM_MODEL=qwen3-vl
|
|
|
|
# Semantic analysis settings
|
|
VIDEO_ANALYSIS_SEMANTIC_CHUNK_DURATION_S=10.0
|
|
VIDEO_ANALYSIS_SEMANTIC_FRAMES_PER_CHUNK=24
|
|
VIDEO_ANALYSIS_SEMANTIC_ENABLE_AGGREGATION=true
|
|
VIDEO_ANALYSIS_SEMANTIC_AGGREGATION_MODEL=gpt-oss-120b
|
|
VIDEO_ANALYSIS_SEMANTIC_LLM_BASE_URL=http://deploy-llm-api-1:8100
|
|
ENVFILE
|
|
|
|
# Rebuild and restart
|
|
docker compose build video-analysis-api
|
|
docker compose up -d video-analysis-api
|
|
|
|
# Wait for startup
|
|
sleep 10
|
|
|
|
# Test with same video
|
|
curl -X POST http://localhost:8007/analyze/video/semantic \
|
|
-F "file=@test_video_60s.mp4" \
|
|
-F "chunk_duration_s=10.0" \
|
|
-F "frames_per_chunk=24" \
|
|
-o test_qwen3vl.json
|
|
|
|
# Review results
|
|
jq '{
|
|
model: "Qwen3-VL-30B",
|
|
num_chunks: .num_chunks,
|
|
chunk_descriptions: [.chunk_results[].description],
|
|
final_summary: .final_summary,
|
|
total_latency_s: .total_latency_s
|
|
}' test_qwen3vl.json
|
|
```
|
|
|
|
### Step 3: Compare Results
|
|
|
|
```bash
|
|
# Side-by-side comparison
|
|
echo "=== BusterX 7B ==="
|
|
jq -r '.chunk_results[0].description' baseline_busterx.json
|
|
echo ""
|
|
echo "=== Qwen3-VL 30B ==="
|
|
jq -r '.chunk_results[0].description' test_qwen3vl.json
|
|
echo ""
|
|
|
|
echo "=== Final Summaries ==="
|
|
echo "BusterX: $(jq -r '.final_summary' baseline_busterx.json)"
|
|
echo ""
|
|
echo "Qwen3-VL: $(jq -r '.final_summary' test_qwen3vl.json)"
|
|
```
|
|
|
|
---
|
|
|
|
## Evaluation Criteria
|
|
|
|
### Quality Metrics
|
|
|
|
1. **Description Detail**
|
|
- [ ] More specific object identification
|
|
- [ ] Better action recognition
|
|
- [ ] More context understanding
|
|
|
|
2. **Narrative Coherence**
|
|
- [ ] Logical flow between segments
|
|
- [ ] Temporal consistency
|
|
- [ ] Better story understanding
|
|
|
|
3. **Accuracy**
|
|
- [ ] Correct identification of people/objects
|
|
- [ ] Accurate scene descriptions
|
|
- [ ] Proper action sequences
|
|
|
|
### Performance Metrics
|
|
|
|
| Metric | BusterX 7B | Qwen3-VL 30B | Difference |
|
|
|--------|-----------|--------------|------------|
|
|
| Latency per chunk | ~12s | ~??s | ?? |
|
|
| Total latency (60s video) | ~77s | ~??s | ?? |
|
|
| Token usage per chunk | ~5200 | ~????? | ?? |
|
|
|
|
---
|
|
|
|
## Expected Outcomes
|
|
|
|
### If Qwen3-VL is Better:
|
|
|
|
**Action:** Update default configuration to use Qwen3-VL for semantic analysis
|
|
|
|
```bash
|
|
# Keep two separate configs:
|
|
# 1. Deepfake endpoint → BusterX (specialized)
|
|
# 2. Semantic endpoint → Qwen3-VL (better understanding)
|
|
```
|
|
|
|
**Implementation:**
|
|
- Add `VIDEO_ANALYSIS_DEEPFAKE_MODEL` and `VIDEO_ANALYSIS_SEMANTIC_MODEL` settings
|
|
- Configure different models per endpoint
|
|
|
|
### If BusterX is Sufficient:
|
|
|
|
**Action:** Keep current configuration, document findings
|
|
|
|
**Rationale:**
|
|
- Latency advantage (30B model is slower)
|
|
- VRAM savings
|
|
- BusterX might be sufficient for semantic tasks
|
|
|
|
---
|
|
|
|
## Test Videos
|
|
|
|
Suggested test scenarios:
|
|
|
|
1. **Meeting/Conference** (60s)
|
|
- Multiple people
|
|
- Complex interactions
|
|
- Scene changes
|
|
|
|
2. **Action Sequence** (60s)
|
|
- Fast movements
|
|
- Object manipulation
|
|
- Environmental changes
|
|
|
|
3. **Indoor/Outdoor Transition** (60s)
|
|
- Lighting changes
|
|
- Multiple scenes
|
|
- Context shifts
|
|
|
|
---
|
|
|
|
## Rollback Procedure
|
|
|
|
If issues occur:
|
|
|
|
```bash
|
|
cd /home/vasi/ml-projects/modules/video-analysis/deploy
|
|
|
|
# Restore original config
|
|
cp .env.backup .env
|
|
|
|
# Rebuild
|
|
docker compose build video-analysis-api
|
|
docker compose up -d video-analysis-api
|
|
```
|
|
|
|
---
|
|
|
|
## Status
|
|
|
|
- [ ] Baseline test completed (BusterX)
|
|
- [ ] Test with Qwen3-VL completed
|
|
- [ ] Results compared
|
|
- [ ] Decision made
|
|
- [ ] Configuration updated (if needed)
|
|
- [ ] Documentation updated
|
|
|
|
---
|
|
|
|
## Notes
|
|
|
|
Add observations here during testing:
|
|
|
|
```
|
|
Date: ___________
|
|
Tester: _________
|
|
|
|
Observations:
|
|
|
|
|
|
|
|
|
|
Recommendation:
|
|
|
|
|
|
|
|
```
|
|
|