Open
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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.