Skip to content
Merged
Show file tree
Hide file tree
Changes from 63 commits
Commits
Show all changes
86 commits
Select commit Hold shift + click to select a range
a0f3143
Add video io reader
suiyoubi Jul 9, 2025
8261ccb
Add test
suiyoubi Jul 9, 2025
226887d
Add video splitting pipeline with fixed stride extraction and transco…
suiyoubi Jul 10, 2025
5108d2c
remove debug test
suiyoubi Jul 10, 2025
0fde549
Add VideoReaderStage to video reading pipeline and update VideoDownlo…
suiyoubi Jul 14, 2025
440992d
Update VideoDownloadStage to support verbose logging and modify video…
suiyoubi Jul 14, 2025
6b69764
Update outputs for VideoDownloadStage and VideoReaderStage to include…
suiyoubi Jul 14, 2025
4f85180
Update CI workflow to include video dependencies for testing
suiyoubi Jul 14, 2025
82cd577
Add tests for video tasks module
suiyoubi Jul 14, 2025
8891957
Enhance video tasks module with additional test cases
suiyoubi Jul 14, 2025
6452e7d
Merge remote-tracking branch 'origin/aot/ray-video-reader' into aot/r…
suiyoubi Jul 14, 2025
95c519a
Add unit tests for grouping utilities
suiyoubi Jul 14, 2025
fa8915b
Refactor video splitting pipeline to remove debug mode and enhance st…
suiyoubi Jul 14, 2025
602e27e
Add video limit argument to video split clip example
suiyoubi Jul 14, 2025
b903c6f
Add ClipWriterStage to video splitting pipeline
suiyoubi Jul 10, 2025
81897d5
Enhance ClipWriterStage with additional metadata handling
suiyoubi Jul 14, 2025
8c4283c
Add motion filtering stages to video splitting pipeline
suiyoubi Jul 14, 2025
0cc8a8a
Add unit tests for video filtering stages
suiyoubi Jul 14, 2025
3894b70
Add frame extraction stage to video splitting pipeline
suiyoubi Jul 14, 2025
42df496
Enhance ClipFrameExtractionStage with improved target FPS handling an…
suiyoubi Jul 15, 2025
e2798f6
Add VideoFrameExtractionStage to video splitting pipeline
suiyoubi Jul 15, 2025
e7e5413
Add unit tests for video frame extraction and nvcodec utilities
suiyoubi Jul 15, 2025
221d636
Enhance video split clip example with TransNetV2 integration and exec…
suiyoubi Jul 16, 2025
420b31e
Remove TransNetV2ClipExtractionStage import from video split clip exa…
suiyoubi Jul 16, 2025
d478c2f
Add TransNetV2ClipExtractionStage to video splitting pipeline
suiyoubi Jul 16, 2025
9412616
Refactor video splitting pipeline and enhance TransNetV2 integration
suiyoubi Jul 16, 2025
632bcc7
fix test
suiyoubi Jul 16, 2025
c7e4990
Merge remote-tracking branch 'origin/aot/ray-video-video-frame-extrac…
suiyoubi Jul 16, 2025
2d17101
Refactor motion filter batch size parameter in video processing
suiyoubi Jul 18, 2025
f800d1f
Merge remote-tracking branch 'origin/ray-api' into aot/ray-video-reader
suiyoubi Jul 18, 2025
808c968
Update pyproject.toml to include a trailing comma for pynvml dependency
suiyoubi Jul 18, 2025
f0fed48
Update motion filter batch size parameter in test cases
suiyoubi Jul 18, 2025
3c3bf20
fix test
suiyoubi Jul 16, 2025
7e89eb5
Add Cosmos-Embed1 model and embedding stages
suiyoubi Jul 18, 2025
3b023f9
Add unit tests for CosmosEmbed1 model and embedding stages
suiyoubi Jul 18, 2025
9bed2ae
Refactor video processing stages to introduce a composite VideoReader…
suiyoubi Jul 21, 2025
e261d0f
Merge branch 'ray-api' into aot/ray-video-reader
suiyoubi Jul 21, 2025
330f7a9
Merge branch 'aot/ray-video-reader' into aot/ray-video-clip-extraction
suiyoubi Jul 21, 2025
111a408
Refactor video processing stages to enhance resource management and i…
suiyoubi Jul 21, 2025
3868cf7
Add mock GPU classes and enhance ClipTranscodingStage tests
suiyoubi Jul 21, 2025
839a910
Merge branch 'aot/ray-video-clip-extraction' into aot/ray-video-clip-…
suiyoubi Jul 21, 2025
e52dfba
Enhance video clip processing with new GenericClipWriterStage and req…
suiyoubi Jul 21, 2025
45cf6d1
Update ClipWriterStage to clarify local storage usage
suiyoubi Jul 21, 2025
42d8429
Remove deprecated GPU resource tests from ClipTranscodingStage
suiyoubi Jul 21, 2025
3e27e4c
Merge branch 'aot/ray-video-clip-extraction' into aot/ray-video-clip-…
suiyoubi Jul 22, 2025
53aad51
Refactor GPU memory allocation parameters in video processing
suiyoubi Jul 22, 2025
a6a4b18
Merge branch 'aot/ray-video-clip-writer' into aot/ray-video-motion-fi…
suiyoubi Jul 22, 2025
1ea7c4d
Merge branch 'aot/ray-video-motion-filter' into aot/ray-video-clip-fr…
suiyoubi Jul 22, 2025
e6eb56f
Refactor video_split_clip_example.py to import FrameExtractionPolicy
suiyoubi Jul 22, 2025
8ffe1a6
Merge branch 'aot/ray-video-clip-frame-extraction' into aot/ray-video…
suiyoubi Jul 22, 2025
79cc6f8
Update dependencies in pyproject.toml and enhance import handling in …
suiyoubi Jul 22, 2025
384a696
Refactor import statements in nvcodec_utils.py for improved clarity
suiyoubi Jul 22, 2025
35b5d13
Update pyproject.toml to reorganize CUDA dependencies
suiyoubi Jul 22, 2025
cc91c34
Refactor pixel format handling in nvcodec_utils.py
suiyoubi Jul 22, 2025
3a69328
Add tests for graceful handling of missing GPU dependencies in nvcode…
suiyoubi Jul 22, 2025
55d978a
Enhance video frame extraction with improved PyNvCodec handling
suiyoubi Jul 22, 2025
e1dc91f
Add comprehensive tests for VideoBatchDecoder and NvVideoDecoder func…
suiyoubi Jul 22, 2025
96ad03f
Merge branch 'aot/ray-video-video-frame-extraction' into aot/ray-vide…
suiyoubi Jul 22, 2025
8e4140c
Merge branch 'aot/ray-video-transnet-clip-extraction' into aot/ray-vi…
suiyoubi Jul 22, 2025
e2afaa4
Update video dependencies in pyproject.toml
suiyoubi Jul 22, 2025
94f364a
Add GPU availability check for video frame encoding test
suiyoubi Jul 22, 2025
d7e1ef6
Update error message in test for CosmosEmbed1 model_dir handling
suiyoubi Jul 22, 2025
5988512
Add aesthetic filtering capabilities to video processing pipeline
suiyoubi Jul 22, 2025
e1350ee
Merge branch 'ray-api' of github.com:NVIDIA-NeMo/Curator into aot/ray…
suiyoubi Aug 20, 2025
36a4cfa
Remove unused video processing stages and related files to streamline…
suiyoubi Aug 20, 2025
d072d32
Remove `storage_client.py` and associated test files to streamline th…
suiyoubi Aug 20, 2025
ad63332
Remove unused video dependencies from `pyproject.toml` to streamline …
suiyoubi Aug 20, 2025
1498bae
Add VideoFrameExtractionStage to video splitting pipeline
suiyoubi Aug 20, 2025
85c0130
Enhance video frame extraction and logging
suiyoubi Aug 20, 2025
6b85021
Merge branch 'aot/ray-video-video-frame-extraction' of github.com:NVI…
suiyoubi Aug 20, 2025
a0017e0
Enhance video splitting pipeline with new transnetv2 parameters
suiyoubi Aug 20, 2025
342ea13
Refactor TransNetV2 model and improve code readability
suiyoubi Aug 20, 2025
e8d2651
Remove unused `conda_env_name` property from `ModelInterface` in `bas…
suiyoubi Aug 20, 2025
9294748
Remove `conda_env_name` property and related tests from `TransNetV2` …
suiyoubi Aug 20, 2025
62eb1dc
Merge branch 'ray-api' of github.com:NVIDIA-NeMo/Curator into aot/ray…
suiyoubi Aug 20, 2025
35b2e97
Merge branch 'aot/ray-video-transnet-clip-extraction' of github.com:N…
suiyoubi Aug 20, 2025
6a26059
Refactor video processing stages and enhance CosmosEmbed1 model integ…
suiyoubi Aug 20, 2025
a7409bc
Refactor test setup for CosmosEmbed1 model
suiyoubi Aug 20, 2025
1d4a15e
Merge branch 'aot/ray-video-cosmos-embed' of github.com:NVIDIA-NeMo/C…
suiyoubi Aug 20, 2025
b43f0fd
Refactor aesthetic scoring and clip processing stages
suiyoubi Aug 20, 2025
3e73c98
Update CosmosEmbed1EmbeddingStage initialization in tests
suiyoubi Aug 20, 2025
28b4747
Merge branch 'aot/ray-video-cosmos-embed' of github.com:NVIDIA-NeMo/C…
suiyoubi Aug 20, 2025
0f46561
Update GPU memory allocation in CosmosEmbed1EmbeddingStage test
suiyoubi Aug 20, 2025
b7d25ee
Merge branch 'aot/ray-video-cosmos-embed' of github.com:NVIDIA-NeMo/C…
suiyoubi Aug 20, 2025
05ada0e
Merge branch 'ray-api' of github.com:NVIDIA-NeMo/Curator into aot/ray…
suiyoubi Aug 20, 2025
aab97f5
Refactor video splitting pipeline to enhance embedding handling
suiyoubi Aug 20, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ jobs:
run: |
pip install -U pip
cd ray-curator
pip install --no-cache-dir ".[dev,text]"
pip install --no-cache-dir ".[dev,text,video]"
pip install --no-cache-dir pytest-asyncio coverage

- name: Run tests
Expand Down
12 changes: 12 additions & 0 deletions ray-curator/pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ dependencies = [
"loguru",
"mecab-python3",
"pyarrow",
"pynvml==11.5.3",
"ray[default,data]",
"torch",
"transformers>=4.48.0",
Expand Down Expand Up @@ -58,6 +59,17 @@ dev = [
"pytest-loguru",
"ruff==0.11.4",
]
video = [
"av==13.1.0",
"opencv-python",
"torchvision",
"einops",
]
video_cuda = [
"PyNvVideoCodec==1.0.2",
"cvcuda_cu12",
"pycuda",
]

[tool.setuptools]
packages = ["ray_curator"]
Expand Down
51 changes: 51 additions & 0 deletions ray-curator/ray_curator/examples/video/video_read_example.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
import argparse

from ray_curator.backends.xenna import XennaExecutor
from ray_curator.pipeline import Pipeline
from ray_curator.stages.video.io.video_reader_download import VideoReaderDownloadStage


def create_video_reading_pipeline(args: argparse.Namespace) -> Pipeline:

# Define pipeline
pipeline = Pipeline(name="video_reading", description="Read videos from a folder and extract metadata on video level.")

# Add stages
# Add the composite stage that combines reading and downloading
pipeline.add_stage(VideoReaderDownloadStage(
input_video_path=args.video_folder,
video_limit=args.video_limit,
verbose=args.verbose
))

# TODO: Add Writer stage in the following PR

return pipeline


def main(args: argparse.Namespace) -> None:

pipeline = create_video_reading_pipeline(args)

# Print pipeline description
print(pipeline.describe())
print("\n" + "=" * 50 + "\n")

# Create executor
executor = XennaExecutor()

# Execute pipeline
print("Starting pipeline execution...")
pipeline.run(executor)

# Print results
print("\nPipeline completed!")

if __name__ == "__main__":
parser = argparse.ArgumentParser()
# General arguments
parser.add_argument("--video-folder", type=str, required=True, help="Path to the video folder")
parser.add_argument("--video-limit", type=int, default=-1, help="Limit the number of videos to read")
parser.add_argument("--verbose", action="store_true", default=False, help="Verbose output")
args = parser.parse_args()
main(args)
Loading