hollowaykeanho / Upscaler

A consolidation of various compiled open-source AI image/video upscaling product for a working CLI friendly image and video upscaling program.
BSD 3-Clause "New" or "Revised" License
251 stars 20 forks source link

Request to add sample results #96

Open MatthewScholefield opened 2 months ago

MatthewScholefield commented 2 months ago

Description

Hello! This project looks awesome but to decide whether I would like to invest the time into setting it up, it'd be great to be able to see some sample upscaled videos. I was wondering if the project would be open to including some on the README (ie. maybe one real world video and another anime video). I know there are different models but it'd still be helpful to have an example of generally how good/bad we should expect the results to be.

(In my case, I'm concerned with if the upscaled results will be spatially inconsistent for real world footage resulting in a really bad distracting `result)

Current Researched Artifacts [COMPULSORY]

I looked in the tests/ folder for the example footage and found only the inputs are there not the upscaled results.

hollowaykeanho commented 2 weeks ago

Hi, @MatthewScholefield, sorry for the late reply was caught up for something at the moment.

The tests/ folder is meant to generate an output video on a specific device (basically to test a given host machine can generate an output.

You can let it run overnight by executing ./tests/02_test_upscale_video_single.sh.ps1. It shall generate an output video (based on that machine) right next to the sample 1 video inside ./tests/video/ directory.

The reason I didn't add in any output video because it's host-specific (it may looks good on mine but not on yours). That's why I place the entire test function in so end-user can test not only the output but the host machine's compatibility in 1 go.

MatthewScholefield commented 2 weeks ago

Thanks for the reply! Hmm, I don't fully follow. I know the exact generated output might be slightly different due to some non-determinism with parallel floating point operations, but won't the results still generally all look the same for the same input and model?

The idea is just to give a prime example for potential users to get a sense of what sort of results to expect so I don't think it'd matter if it looks a little different.

hollowaykeanho commented 2 weeks ago

I know the exact generated output might be slightly different due to some non-determinism with parallel floating point operations, but won't the results still generally all look the same for the same input and model?

Not this problem. It's a different one like on some hardware some folks produced some big mosaic distorted output that I can't reproduce the bug here at all for debugging purposes. Then there is the hardware configurations uncharted territory (e.g. I never got a chance to test on AMD hardware; so far Apple & 3 Nvidia).

When resources are scare, distribute a decentralized consistent test infrastructure is 2 birds 1 stone (for now).

The idea is just to give a prime example for potential users to get a sense of what sort of results to expect so I don't think it'd matter if it looks a little different.

Point taken on the marketing material. =)

For the interim, internally, it's basically using ffmpeg dissecting the video frame by frame by probing its highest quality state (frame-rate matching and etc) then replace it back making its visual larger. No variable bit rate support though; that's beast is too complicated.

My recommendation is to use the image mode and some test image to find your desired model, then only do the video (save time). What's confirmed is the size is definitely upscaled and some model has some visual effects (noise reductions and etc).

Site-note: be careful with your scaling factor (e.g. 720p upscale 4x), it nearly fry my laptop once when generating an output video beyond 4k.

hollowaykeanho commented 2 weeks ago

FYI, what I did was using this video from Pexels: https://www.pexels.com/video/the-sun-illuminating-earth-s-surface-1851190/

Download the smallest (source), and the nearest output size. Then AI generated and compare. Pexels allowed you to download multiple sizes by selecting the options next to the download button.