Skip to content

Update draw_dwpose.py#75

Open
thisisvk45 wants to merge 1 commit intoTMElyralab:mainfrom
thisisvk45:patch-2
Open

Update draw_dwpose.py#75
thisisvk45 wants to merge 1 commit intoTMElyralab:mainfrom
thisisvk45:patch-2

Conversation

@thisisvk45
Copy link

Breakdown of the specific changes made to optimize the previous code:

Video Info in One Step: I used get_video_info() to grab the width, height, and fps in one go, avoiding redundant operations.

Parallel Processing: I added ThreadPoolExecutor to handle multiple videos at the same time, speeding up the process.

Progress Bar for Videos: I moved tqdm to track the progress across all videos, making it cleaner and easier to monitor.

Simplified Directory Handling: I used os.makedirs(save_dir, exist_ok=True) to automatically create directories without manually checking.

Unified Resizing Logic: I calculated the render and save dimensions once, then reused them, eliminating repeated resizing steps.

I am a final year undergrad student looking for internships and full time role.

Breakdown of the specific changes made to optimize the previous  code:

1. **Unified Video Info Retrieval**: 
   - Before: The video file was opened twice, once to get the width/height and again to extract frames.
   - Now: `get_video_info()` retrieves width, height, and fps in one step.
   - **Example**:
     ```python
     width, height, fps = get_video_info(video_path)
     ```

2. **Parallel Processing with ThreadPoolExecutor**:
   - Before: Videos were processed sequentially.
   - Now: Multiple videos are processed in parallel using `ThreadPoolExecutor`.
   - **Example**:
     ```python
     with ThreadPoolExecutor(max_workers=args.num_workers) as executor:
         futures = [executor.submit(process_video, video_path, ...)]
     ```

3. **Progress Bar Enhancement**:
   - Before: Progress tracking was done inside the inner loop (for each pose).
   - Now: `tqdm` tracks the overall video processing, giving cleaner progress output.
   - **Example**:
     ```python
     for future in tqdm(futures, total=len(video_mp4_paths), desc="Processing videos"):
     ```

4. **Directory Handling Simplification**:
   - Before: The script manually checked and created directories.
   - Now: `os.makedirs(save_dir, exist_ok=True)` handles directory creation more efficiently.
   - **Example**:
     ```python
     os.makedirs(save_dir, exist_ok=True)
     ```

5. **Removed Redundant Video Resizing**:
   - Before: The video frame resize logic was repeated multiple times.
   - Now: The scaling factor for rendering and saving is calculated once and reused.
   - **Example**:
     ```python
     k_render = 1024 / min(width, height)
     h_render, w_render = int(k_render * height // 2 * 2), int(k_render * width // 2 * 2)
     ```

## I am a final year undergrad student looking for internships and full time role.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant