Skip to content

Visual-Mic v2.0.0: Project hardening#11

Merged
joeljose merged 6 commits into
mainfrom
feature/hardening-v2
Mar 21, 2026
Merged

Visual-Mic v2.0.0: Project hardening#11
joeljose merged 6 commits into
mainfrom
feature/hardening-v2

Conversation

@joeljose

Copy link
Copy Markdown
Owner

Summary

Bring Visual-Mic to parity with EVM and DTCWT Motion Mag repos.

  • Remove denoising codedenoise_spectral(), denoise_morphological(), --denoise, --denoise-input removed. Use audio_denoising repo instead.
  • Add versioningVERSION file (2.0.0), __version__, --version flag, Docker image version tags
  • Add CLI flags--nlevels (default 3), --biort (default near_sym_b), --qshift (default qshift_b) matching DTCWT Motion Mag v2.0.0
  • Add GPU memory estimation — pre-flight VRAM check warns if > 70% of available VRAM
  • Upgrade GPU Dockerfile — PyTorch 1.12.1/CUDA 11.3 → PyTorch 2.1.2/CUDA 12.1 (verified compatible)
  • Add testing — 28 CPU tests + 7 GPU tests, test.sh Docker-based runner, requirements-dev.txt
  • Add CI/CD.github/workflows/ci.yml with CPU + GPU jobs (lint, import, help, version)
  • Add docs — CHANGELOG.md, CONTRIBUTING.md, design doc ADR
  • README overhaul — Remove denoising section, restructure setup, add CI badge, add Development section

Fixes #3, Fixes #4, Fixes #5, Fixes #6, Fixes #7, Fixes #8

Note: #9 (manual GPU verification with MIT CSAIL video) and #10 (parent tracking) remain open.

Test plan

🤖 Generated with Claude Code

Remove denoise_spectral(), denoise_morphological(), --denoise, and
--denoise-input CLI flags. Denoising is available separately via the
audio_denoising repo. Add VERSION file (2.0.0), __version__, and
--version CLI flag. Make -i/--input required (no longer optional due
to --denoise-input mode).

Fixes #3
Make wavelet parameters configurable: --nlevels (default 3),
--biort (default near_sym_b), --qshift (default qshift_b). Defaults
match DTCWT Motion Mag v2.0.0. Both CPU and GPU paths now use the
same filter defaults for consistency.

Add estimate_vram() and pre-flight VRAM check before GPU processing.
Warns if estimated usage exceeds 70% of available VRAM with
actionable suggestions.

Fixes #4
…ging

Upgrade GPU base image from pytorch:1.12.1-cuda11.3 to
pytorch:2.1.2-cuda12.1-cudnn8-runtime. Pin numpy<2 in
requirements-gpu.txt for pytorch_wavelets compatibility. Pin upper
bounds on all dependencies.

Update both Dockerfiles to include tests/ and requirements-dev.txt.
Add VERSION build arg and version label. Update docker-build scripts
to read VERSION file and tag images with version + latest.

Add requirements-dev.txt (pytest, ruff) and tests/ stub for
Dockerfile compatibility.

Fixes #5
Add tests/test_visualmic.py (28 CPU tests) with tiered coverage:
- Strict: format_duration, find_best_shift, save_wav
- Moderate: postprocess_phase_signals, Butterworth filter, estimate_vram
- Smoke: extract_audio on synthetic 256x256 video, CLI validation

Add tests/test_visualmic_gpu.py (7 GPU tests):
- DTCWTForward shapes/finiteness, custom filters
- extract_audio_gpu smoke test on synthetic video
- All skip automatically without CUDA

Add test.sh Docker-based test runner supporting cpu/gpu/--build modes.

Move nlevels validation before file check for early error reporting.

Fixes #6
Add .github/workflows/ci.yml with two jobs matching EVM/DTCWT repos:
- CPU: build Docker, lint (ruff), verify import/help/version
- GPU: build GPU Docker, lint (ruff), verify import/help/version
Triggers on push to main and pull requests to main.

Fixes #7
Add CHANGELOG.md (Keep a Changelog, starting at v2.0.0),
CONTRIBUTING.md, and docs/design/visualmic-hardening.md ADR.

README overhaul:
- Remove Part 4 (Denoising) — use audio_denoising repo instead
- Restructure Setup section (remove YouTube link, add GPU Docker)
- Add CI badge
- Add Development section (tests, versioning, project structure)
- Update CLI flags table with --nlevels, --biort, --qshift, --version
- Update Future Work (remove GPU as done, remove denoising ref)
- Update parameters table with filter defaults

Fixes #8
@joeljose joeljose merged commit d12d7df into main Mar 21, 2026
2 checks passed
@joeljose joeljose deleted the feature/hardening-v2 branch March 21, 2026 11:29
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant