mirror of
https://github.com/k4yt3x/video2x.git
synced 2025-02-26 17:39:07 +00:00
chore(models): add the Real-ESRGAN general models (#1319)
Signed-off-by: k4yt3x <i@k4yt3x.com>
This commit is contained in:
parent
2c5a059d39
commit
afa37f9e58
@ -5,12 +5,18 @@ All notable changes to this project will be documented in this file.
|
|||||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
||||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||||
|
|
||||||
|
## [Unreleased]
|
||||||
|
|
||||||
|
### Added
|
||||||
|
|
||||||
|
- Real-ESRGAN models `realesr-general-x4v3` and `realesr-general-wdn-x4v3` (#1319).
|
||||||
|
|
||||||
## [6.4.0] - 2025-01-24
|
## [6.4.0] - 2025-01-24
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- Multi-versioning to critical functions to enhance performance in generic architecture builds.
|
- Multi-versioning to critical functions to enhance performance in generic architecture builds.
|
||||||
- RIFE models v4.25 and v4.26 (#1304).
|
- RIFE models `v4.25` and `v4.26` (#1304).
|
||||||
- Support for processing videos without PTS information (#1278).
|
- Support for processing videos without PTS information (#1278).
|
||||||
- The feature to copy input streams' metadata to the output streams (#1282).
|
- The feature to copy input streams' metadata to the output streams (#1282).
|
||||||
- (Video2X Qt6) German translation (#1279).
|
- (Video2X Qt6) German translation (#1279).
|
||||||
|
@ -18,6 +18,7 @@ class FilterRealesrgan : public Filter {
|
|||||||
int gpuid = 0,
|
int gpuid = 0,
|
||||||
bool tta_mode = false,
|
bool tta_mode = false,
|
||||||
int scaling_factor = 4,
|
int scaling_factor = 4,
|
||||||
|
int noise_level = 0,
|
||||||
const fsutils::StringType model_name = STR("realesr-animevideov3")
|
const fsutils::StringType model_name = STR("realesr-animevideov3")
|
||||||
);
|
);
|
||||||
|
|
||||||
@ -47,6 +48,7 @@ class FilterRealesrgan : public Filter {
|
|||||||
int gpuid_;
|
int gpuid_;
|
||||||
bool tta_mode_;
|
bool tta_mode_;
|
||||||
int scaling_factor_;
|
int scaling_factor_;
|
||||||
|
int noise_level_;
|
||||||
const fsutils::StringType model_name_;
|
const fsutils::StringType model_name_;
|
||||||
AVRational in_time_base_;
|
AVRational in_time_base_;
|
||||||
AVRational out_time_base_;
|
AVRational out_time_base_;
|
||||||
|
BIN
models/realesrgan/realesr-generalv3-wdn-x4.bin
vendored
Normal file
BIN
models/realesrgan/realesr-generalv3-wdn-x4.bin
vendored
Normal file
Binary file not shown.
75
models/realesrgan/realesr-generalv3-wdn-x4.param
vendored
Normal file
75
models/realesrgan/realesr-generalv3-wdn-x4.param
vendored
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
7767517
|
||||||
|
73 74
|
||||||
|
Input data 0 1 data
|
||||||
|
Split splitncnn_input0 1 2 data data_splitncnn_0 data_splitncnn_1
|
||||||
|
Convolution /Conv 1 1 data_splitncnn_1 /Conv_output_0 0=64 1=3 4=1 5=1 6=1728
|
||||||
|
PReLU /PRelu 1 1 /Conv_output_0 /PRelu_output_0 0=64
|
||||||
|
Convolution /Conv_1 1 1 /PRelu_output_0 /Conv_1_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_1 1 1 /Conv_1_output_0 /PRelu_1_output_0 0=64
|
||||||
|
Convolution /Conv_2 1 1 /PRelu_1_output_0 /Conv_2_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_2 1 1 /Conv_2_output_0 /PRelu_2_output_0 0=64
|
||||||
|
Convolution /Conv_3 1 1 /PRelu_2_output_0 /Conv_3_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_3 1 1 /Conv_3_output_0 /PRelu_3_output_0 0=64
|
||||||
|
Convolution /Conv_4 1 1 /PRelu_3_output_0 /Conv_4_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_4 1 1 /Conv_4_output_0 /PRelu_4_output_0 0=64
|
||||||
|
Convolution /Conv_5 1 1 /PRelu_4_output_0 /Conv_5_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_5 1 1 /Conv_5_output_0 /PRelu_5_output_0 0=64
|
||||||
|
Convolution /Conv_6 1 1 /PRelu_5_output_0 /Conv_6_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_6 1 1 /Conv_6_output_0 /PRelu_6_output_0 0=64
|
||||||
|
Convolution /Conv_7 1 1 /PRelu_6_output_0 /Conv_7_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_7 1 1 /Conv_7_output_0 /PRelu_7_output_0 0=64
|
||||||
|
Convolution /Conv_8 1 1 /PRelu_7_output_0 /Conv_8_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_8 1 1 /Conv_8_output_0 /PRelu_8_output_0 0=64
|
||||||
|
Convolution /Conv_9 1 1 /PRelu_8_output_0 /Conv_9_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_9 1 1 /Conv_9_output_0 /PRelu_9_output_0 0=64
|
||||||
|
Convolution /Conv_10 1 1 /PRelu_9_output_0 /Conv_10_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_10 1 1 /Conv_10_output_0 /PRelu_10_output_0 0=64
|
||||||
|
Convolution /Conv_11 1 1 /PRelu_10_output_0 /Conv_11_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_11 1 1 /Conv_11_output_0 /PRelu_11_output_0 0=64
|
||||||
|
Convolution /Conv_12 1 1 /PRelu_11_output_0 /Conv_12_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_12 1 1 /Conv_12_output_0 /PRelu_12_output_0 0=64
|
||||||
|
Convolution /Conv_13 1 1 /PRelu_12_output_0 /Conv_13_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_13 1 1 /Conv_13_output_0 /PRelu_13_output_0 0=64
|
||||||
|
Convolution /Conv_14 1 1 /PRelu_13_output_0 /Conv_14_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_14 1 1 /Conv_14_output_0 /PRelu_14_output_0 0=64
|
||||||
|
Convolution /Conv_15 1 1 /PRelu_14_output_0 /Conv_15_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_15 1 1 /Conv_15_output_0 /PRelu_15_output_0 0=64
|
||||||
|
Convolution /Conv_16 1 1 /PRelu_15_output_0 /Conv_16_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_16 1 1 /Conv_16_output_0 /PRelu_16_output_0 0=64
|
||||||
|
Convolution /Conv_17 1 1 /PRelu_16_output_0 /Conv_17_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_17 1 1 /Conv_17_output_0 /PRelu_17_output_0 0=64
|
||||||
|
Convolution /Conv_18 1 1 /PRelu_17_output_0 /Conv_18_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_18 1 1 /Conv_18_output_0 /PRelu_18_output_0 0=64
|
||||||
|
Convolution /Conv_19 1 1 /PRelu_18_output_0 /Conv_19_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_19 1 1 /Conv_19_output_0 /PRelu_19_output_0 0=64
|
||||||
|
Convolution /Conv_20 1 1 /PRelu_19_output_0 /Conv_20_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_20 1 1 /Conv_20_output_0 /PRelu_20_output_0 0=64
|
||||||
|
Convolution /Conv_21 1 1 /PRelu_20_output_0 /Conv_21_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_21 1 1 /Conv_21_output_0 /PRelu_21_output_0 0=64
|
||||||
|
Convolution /Conv_22 1 1 /PRelu_21_output_0 /Conv_22_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_22 1 1 /Conv_22_output_0 /PRelu_22_output_0 0=64
|
||||||
|
Convolution /Conv_23 1 1 /PRelu_22_output_0 /Conv_23_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_23 1 1 /Conv_23_output_0 /PRelu_23_output_0 0=64
|
||||||
|
Convolution /Conv_24 1 1 /PRelu_23_output_0 /Conv_24_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_24 1 1 /Conv_24_output_0 /PRelu_24_output_0 0=64
|
||||||
|
Convolution /Conv_25 1 1 /PRelu_24_output_0 /Conv_25_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_25 1 1 /Conv_25_output_0 /PRelu_25_output_0 0=64
|
||||||
|
Convolution /Conv_26 1 1 /PRelu_25_output_0 /Conv_26_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_26 1 1 /Conv_26_output_0 /PRelu_26_output_0 0=64
|
||||||
|
Convolution /Conv_27 1 1 /PRelu_26_output_0 /Conv_27_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_27 1 1 /Conv_27_output_0 /PRelu_27_output_0 0=64
|
||||||
|
Convolution /Conv_28 1 1 /PRelu_27_output_0 /Conv_28_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_28 1 1 /Conv_28_output_0 /PRelu_28_output_0 0=64
|
||||||
|
Convolution /Conv_29 1 1 /PRelu_28_output_0 /Conv_29_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_29 1 1 /Conv_29_output_0 /PRelu_29_output_0 0=64
|
||||||
|
Convolution /Conv_30 1 1 /PRelu_29_output_0 /Conv_30_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_30 1 1 /Conv_30_output_0 /PRelu_30_output_0 0=64
|
||||||
|
Convolution /Conv_31 1 1 /PRelu_30_output_0 /Conv_31_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_31 1 1 /Conv_31_output_0 /PRelu_31_output_0 0=64
|
||||||
|
Convolution /Conv_32 1 1 /PRelu_31_output_0 /Conv_32_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_32 1 1 /Conv_32_output_0 /PRelu_32_output_0 0=64
|
||||||
|
Convolution /Conv_33 1 1 /PRelu_32_output_0 /Conv_33_output_0 0=48 1=3 4=1 5=1 6=27648
|
||||||
|
PixelShuffle /DepthToSpace 1 1 /Conv_33_output_0 /DepthToSpace_output_0 0=4
|
||||||
|
Interp /Resize 1 1 data_splitncnn_0 /Resize_output_0 0=1 1=4.000000e+00 2=4.000000e+00
|
||||||
|
BinaryOp /Add 2 1 /DepthToSpace_output_0 /Resize_output_0 /Add_output_0
|
||||||
|
Clip /Clip 1 1 /Add_output_0 output 0=0.000000e+00 1=1.000000e+00
|
BIN
models/realesrgan/realesr-generalv3-x4.bin
vendored
Normal file
BIN
models/realesrgan/realesr-generalv3-x4.bin
vendored
Normal file
Binary file not shown.
75
models/realesrgan/realesr-generalv3-x4.param
vendored
Normal file
75
models/realesrgan/realesr-generalv3-x4.param
vendored
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
7767517
|
||||||
|
73 74
|
||||||
|
Input data 0 1 data
|
||||||
|
Split splitncnn_input0 1 2 data data_splitncnn_0 data_splitncnn_1
|
||||||
|
Convolution /Conv 1 1 data_splitncnn_1 /Conv_output_0 0=64 1=3 4=1 5=1 6=1728
|
||||||
|
PReLU /PRelu 1 1 /Conv_output_0 /PRelu_output_0 0=64
|
||||||
|
Convolution /Conv_1 1 1 /PRelu_output_0 /Conv_1_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_1 1 1 /Conv_1_output_0 /PRelu_1_output_0 0=64
|
||||||
|
Convolution /Conv_2 1 1 /PRelu_1_output_0 /Conv_2_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_2 1 1 /Conv_2_output_0 /PRelu_2_output_0 0=64
|
||||||
|
Convolution /Conv_3 1 1 /PRelu_2_output_0 /Conv_3_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_3 1 1 /Conv_3_output_0 /PRelu_3_output_0 0=64
|
||||||
|
Convolution /Conv_4 1 1 /PRelu_3_output_0 /Conv_4_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_4 1 1 /Conv_4_output_0 /PRelu_4_output_0 0=64
|
||||||
|
Convolution /Conv_5 1 1 /PRelu_4_output_0 /Conv_5_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_5 1 1 /Conv_5_output_0 /PRelu_5_output_0 0=64
|
||||||
|
Convolution /Conv_6 1 1 /PRelu_5_output_0 /Conv_6_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_6 1 1 /Conv_6_output_0 /PRelu_6_output_0 0=64
|
||||||
|
Convolution /Conv_7 1 1 /PRelu_6_output_0 /Conv_7_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_7 1 1 /Conv_7_output_0 /PRelu_7_output_0 0=64
|
||||||
|
Convolution /Conv_8 1 1 /PRelu_7_output_0 /Conv_8_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_8 1 1 /Conv_8_output_0 /PRelu_8_output_0 0=64
|
||||||
|
Convolution /Conv_9 1 1 /PRelu_8_output_0 /Conv_9_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_9 1 1 /Conv_9_output_0 /PRelu_9_output_0 0=64
|
||||||
|
Convolution /Conv_10 1 1 /PRelu_9_output_0 /Conv_10_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_10 1 1 /Conv_10_output_0 /PRelu_10_output_0 0=64
|
||||||
|
Convolution /Conv_11 1 1 /PRelu_10_output_0 /Conv_11_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_11 1 1 /Conv_11_output_0 /PRelu_11_output_0 0=64
|
||||||
|
Convolution /Conv_12 1 1 /PRelu_11_output_0 /Conv_12_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_12 1 1 /Conv_12_output_0 /PRelu_12_output_0 0=64
|
||||||
|
Convolution /Conv_13 1 1 /PRelu_12_output_0 /Conv_13_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_13 1 1 /Conv_13_output_0 /PRelu_13_output_0 0=64
|
||||||
|
Convolution /Conv_14 1 1 /PRelu_13_output_0 /Conv_14_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_14 1 1 /Conv_14_output_0 /PRelu_14_output_0 0=64
|
||||||
|
Convolution /Conv_15 1 1 /PRelu_14_output_0 /Conv_15_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_15 1 1 /Conv_15_output_0 /PRelu_15_output_0 0=64
|
||||||
|
Convolution /Conv_16 1 1 /PRelu_15_output_0 /Conv_16_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_16 1 1 /Conv_16_output_0 /PRelu_16_output_0 0=64
|
||||||
|
Convolution /Conv_17 1 1 /PRelu_16_output_0 /Conv_17_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_17 1 1 /Conv_17_output_0 /PRelu_17_output_0 0=64
|
||||||
|
Convolution /Conv_18 1 1 /PRelu_17_output_0 /Conv_18_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_18 1 1 /Conv_18_output_0 /PRelu_18_output_0 0=64
|
||||||
|
Convolution /Conv_19 1 1 /PRelu_18_output_0 /Conv_19_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_19 1 1 /Conv_19_output_0 /PRelu_19_output_0 0=64
|
||||||
|
Convolution /Conv_20 1 1 /PRelu_19_output_0 /Conv_20_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_20 1 1 /Conv_20_output_0 /PRelu_20_output_0 0=64
|
||||||
|
Convolution /Conv_21 1 1 /PRelu_20_output_0 /Conv_21_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_21 1 1 /Conv_21_output_0 /PRelu_21_output_0 0=64
|
||||||
|
Convolution /Conv_22 1 1 /PRelu_21_output_0 /Conv_22_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_22 1 1 /Conv_22_output_0 /PRelu_22_output_0 0=64
|
||||||
|
Convolution /Conv_23 1 1 /PRelu_22_output_0 /Conv_23_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_23 1 1 /Conv_23_output_0 /PRelu_23_output_0 0=64
|
||||||
|
Convolution /Conv_24 1 1 /PRelu_23_output_0 /Conv_24_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_24 1 1 /Conv_24_output_0 /PRelu_24_output_0 0=64
|
||||||
|
Convolution /Conv_25 1 1 /PRelu_24_output_0 /Conv_25_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_25 1 1 /Conv_25_output_0 /PRelu_25_output_0 0=64
|
||||||
|
Convolution /Conv_26 1 1 /PRelu_25_output_0 /Conv_26_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_26 1 1 /Conv_26_output_0 /PRelu_26_output_0 0=64
|
||||||
|
Convolution /Conv_27 1 1 /PRelu_26_output_0 /Conv_27_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_27 1 1 /Conv_27_output_0 /PRelu_27_output_0 0=64
|
||||||
|
Convolution /Conv_28 1 1 /PRelu_27_output_0 /Conv_28_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_28 1 1 /Conv_28_output_0 /PRelu_28_output_0 0=64
|
||||||
|
Convolution /Conv_29 1 1 /PRelu_28_output_0 /Conv_29_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_29 1 1 /Conv_29_output_0 /PRelu_29_output_0 0=64
|
||||||
|
Convolution /Conv_30 1 1 /PRelu_29_output_0 /Conv_30_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_30 1 1 /Conv_30_output_0 /PRelu_30_output_0 0=64
|
||||||
|
Convolution /Conv_31 1 1 /PRelu_30_output_0 /Conv_31_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_31 1 1 /Conv_31_output_0 /PRelu_31_output_0 0=64
|
||||||
|
Convolution /Conv_32 1 1 /PRelu_31_output_0 /Conv_32_output_0 0=64 1=3 4=1 5=1 6=36864
|
||||||
|
PReLU /PRelu_32 1 1 /Conv_32_output_0 /PRelu_32_output_0 0=64
|
||||||
|
Convolution /Conv_33 1 1 /PRelu_32_output_0 /Conv_33_output_0 0=48 1=3 4=1 5=1 6=27648
|
||||||
|
PixelShuffle /DepthToSpace 1 1 /Conv_33_output_0 /DepthToSpace_output_0 0=4
|
||||||
|
Interp /Resize 1 1 data_splitncnn_0 /Resize_output_0 0=1 1=4.000000e+00 2=4.000000e+00
|
||||||
|
BinaryOp /Add 2 1 /DepthToSpace_output_0 /Resize_output_0 /Add_output_0
|
||||||
|
Clip /Clip 1 1 /Add_output_0 output 0=0.000000e+00 1=1.000000e+00
|
@ -17,12 +17,14 @@ FilterRealesrgan::FilterRealesrgan(
|
|||||||
int gpuid,
|
int gpuid,
|
||||||
bool tta_mode,
|
bool tta_mode,
|
||||||
int scaling_factor,
|
int scaling_factor,
|
||||||
|
int noise_level,
|
||||||
const fsutils::StringType model_name
|
const fsutils::StringType model_name
|
||||||
)
|
)
|
||||||
: realesrgan_(nullptr),
|
: realesrgan_(nullptr),
|
||||||
gpuid_(gpuid),
|
gpuid_(gpuid),
|
||||||
tta_mode_(tta_mode),
|
tta_mode_(tta_mode),
|
||||||
scaling_factor_(scaling_factor),
|
scaling_factor_(scaling_factor),
|
||||||
|
noise_level_(noise_level),
|
||||||
model_name_(std::move(model_name)) {}
|
model_name_(std::move(model_name)) {}
|
||||||
|
|
||||||
FilterRealesrgan::~FilterRealesrgan() {
|
FilterRealesrgan::~FilterRealesrgan() {
|
||||||
@ -35,10 +37,16 @@ int FilterRealesrgan::init(AVCodecContext* dec_ctx, AVCodecContext* enc_ctx, AVB
|
|||||||
std::filesystem::path model_param_path;
|
std::filesystem::path model_param_path;
|
||||||
std::filesystem::path model_bin_path;
|
std::filesystem::path model_bin_path;
|
||||||
|
|
||||||
fsutils::StringType param_file_name =
|
fsutils::StringType param_file_name = model_name_;
|
||||||
model_name_ + STR("-x") + fsutils::to_string_type(scaling_factor_) + STR(".param");
|
fsutils::StringType bin_file_name = model_name_;
|
||||||
fsutils::StringType bin_file_name =
|
|
||||||
model_name_ + STR("-x") + fsutils::to_string_type(scaling_factor_) + STR(".bin");
|
if (model_name_ == STR("realesr-generalv3") && noise_level_ > 0) {
|
||||||
|
param_file_name += STR("-wdn");
|
||||||
|
bin_file_name += STR("-wdn");
|
||||||
|
}
|
||||||
|
|
||||||
|
param_file_name += STR("-x") + fsutils::to_string_type(scaling_factor_) + STR(".param");
|
||||||
|
bin_file_name += STR("-x") + fsutils::to_string_type(scaling_factor_) + STR(".bin");
|
||||||
|
|
||||||
// Find the model paths by model name if provided
|
// Find the model paths by model name if provided
|
||||||
model_param_path = std::filesystem::path(STR("models")) / STR("realesrgan") / param_file_name;
|
model_param_path = std::filesystem::path(STR("models")) / STR("realesrgan") / param_file_name;
|
||||||
|
@ -91,6 +91,7 @@ void ProcessorFactory::init_default_processors(ProcessorFactory& factory) {
|
|||||||
static_cast<int>(vk_device_index),
|
static_cast<int>(vk_device_index),
|
||||||
config.tta_mode,
|
config.tta_mode,
|
||||||
proc_cfg.scaling_factor,
|
proc_cfg.scaling_factor,
|
||||||
|
proc_cfg.noise_level,
|
||||||
config.model_name
|
config.model_name
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -156,23 +156,23 @@ int parse_args(
|
|||||||
"anime4k-v4-b, anime4k-v4-b+b, anime4k-v4-c, anime4k-v4-c+a, anime4k-v4.1-gan)")
|
"anime4k-v4-b, anime4k-v4-b+b, anime4k-v4-c, anime4k-v4-c+a, anime4k-v4.1-gan)")
|
||||||
;
|
;
|
||||||
|
|
||||||
po::options_description realesrgan_opts("RealESRGAN options");
|
po::options_description realesrgan_opts("Real-ESRGAN options");
|
||||||
realesrgan_opts.add_options()
|
realesrgan_opts.add_options()
|
||||||
("realesrgan-model", PO_STR_VALUE<video2x::fsutils::StringType>()
|
("realesrgan-model", PO_STR_VALUE<video2x::fsutils::StringType>()
|
||||||
->default_value(STR("realesr-animevideov3"), "realesr-animevideov3")
|
->default_value(STR("realesr-animevideov3"), "realesr-animevideov3")
|
||||||
->notifier(validate_realesrgan_model_name),
|
->notifier(validate_realesrgan_model_name),
|
||||||
"Name of the RealESRGAN model to use (realesr-animevideov3, realesrgan-plus-anime, "
|
"Name of the Real-ESRGAN model to use (realesr-animevideov3, "
|
||||||
"realesrgan-plus)")
|
"realesrgan-plus-anime, realesrgan-plus, realesr-generalv3)")
|
||||||
;
|
;
|
||||||
|
|
||||||
po::options_description realcugan_opts("RealCUGAN options");
|
po::options_description realcugan_opts("Real-CUGAN options");
|
||||||
realcugan_opts.add_options()
|
realcugan_opts.add_options()
|
||||||
("realcugan-model", PO_STR_VALUE<video2x::fsutils::StringType>()
|
("realcugan-model", PO_STR_VALUE<video2x::fsutils::StringType>()
|
||||||
->default_value(STR("models-se"), "models-se")
|
->default_value(STR("models-se"), "models-se")
|
||||||
->notifier(validate_realcugan_model_name),
|
->notifier(validate_realcugan_model_name),
|
||||||
"Name of the RealCUGAN model to use (models-nose, models-pro, models-se)")
|
"Name of the Real-CUGAN model to use (models-nose, models-pro, models-se)")
|
||||||
("realcugan-threads", po::value<int>()->default_value(1),
|
("realcugan-threads", po::value<int>()->default_value(1),
|
||||||
"Number of threads to use for RealCUGAN")
|
"Number of threads to use for Real-CUGAN")
|
||||||
("realcugan-syncgap", po::value<int>()->default_value(3),
|
("realcugan-syncgap", po::value<int>()->default_value(3),
|
||||||
"Sync gap mode; 0:no sync, 1: accurate sync: 2 = rough sync, 3: very rough sync")
|
"Sync gap mode; 0:no sync, 1: accurate sync: 2 = rough sync, 3: very rough sync")
|
||||||
;
|
;
|
||||||
@ -212,7 +212,7 @@ int parse_args(
|
|||||||
<< " video2x -i input.mp4 -o output.mp4 -w 3840 -h 2160 \\" << std::endl
|
<< " video2x -i input.mp4 -o output.mp4 -w 3840 -h 2160 \\" << std::endl
|
||||||
<< " -p libplacebo --libplacebo-shader anime4k-v4-a+a" << std::endl
|
<< " -p libplacebo --libplacebo-shader anime4k-v4-a+a" << std::endl
|
||||||
<< std::endl
|
<< std::endl
|
||||||
<< " Upscale a film by 4x using RealESRGAN with custom encoder options:"
|
<< " Upscale a film by 4x using Real-ESRGAN with custom encoder options:"
|
||||||
<< std::endl
|
<< std::endl
|
||||||
<< " video2x -i input.mkv -o output.mkv -s 4 \\" << std::endl
|
<< " video2x -i input.mkv -o output.mkv -s 4 \\" << std::endl
|
||||||
<< " -p realesrgan --realesrgan-model realesrgan-plus \\" << std::endl
|
<< " -p realesrgan --realesrgan-model realesrgan-plus \\" << std::endl
|
||||||
@ -385,16 +385,19 @@ int parse_args(
|
|||||||
}
|
}
|
||||||
case video2x::processors::ProcessorType::RealESRGAN: {
|
case video2x::processors::ProcessorType::RealESRGAN: {
|
||||||
if (!vm.count("realesrgan-model")) {
|
if (!vm.count("realesrgan-model")) {
|
||||||
video2x::logger()->critical("RealESRGAN model name must be set for RealESRGAN."
|
video2x::logger()->critical("The model name must be set for Real-ESRGAN.");
|
||||||
);
|
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (proc_cfg.scaling_factor < 2 || proc_cfg.scaling_factor > 4) {
|
if (proc_cfg.scaling_factor < 2 || proc_cfg.scaling_factor > 4) {
|
||||||
video2x::logger()->critical(
|
video2x::logger()->critical(
|
||||||
"Scaling factor must be set to 2, 3, or 4 for RealESRGAN."
|
"Scaling factor must be set to 2, 3, or 4 for Real-ESRGAN."
|
||||||
);
|
);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
if (proc_cfg.noise_level < 0 || proc_cfg.noise_level > 1) {
|
||||||
|
video2x::logger()->critical("Noise level must be 0 or 1 for Real-ESRGAN.");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
proc_cfg.processor_type = video2x::processors::ProcessorType::RealESRGAN;
|
proc_cfg.processor_type = video2x::processors::ProcessorType::RealESRGAN;
|
||||||
video2x::processors::RealESRGANConfig realesrgan_config;
|
video2x::processors::RealESRGANConfig realesrgan_config;
|
||||||
@ -406,31 +409,31 @@ int parse_args(
|
|||||||
}
|
}
|
||||||
case video2x::processors::ProcessorType::RealCUGAN: {
|
case video2x::processors::ProcessorType::RealCUGAN: {
|
||||||
if (!vm.count("realcugan-model")) {
|
if (!vm.count("realcugan-model")) {
|
||||||
video2x::logger()->critical("RealCUGAN model name must be set for RealCUGAN.");
|
video2x::logger()->critical("The model name must be set for Real-CUGAN.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (vm.count("realcugan-threads") && vm["realcugan-threads"].as<int>() < 1) {
|
if (vm.count("realcugan-threads") && vm["realcugan-threads"].as<int>() < 1) {
|
||||||
video2x::logger()->critical(
|
video2x::logger()->critical(
|
||||||
"Number of threads must be at least 1 for RealCUGAN."
|
"Number of threads must be at least 1 for Real-CUGAN."
|
||||||
);
|
);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (vm.count("realcugan-syncgap") && (vm["realcugan-syncgap"].as<int>() < 0 ||
|
if (vm.count("realcugan-syncgap") && (vm["realcugan-syncgap"].as<int>() < 0 ||
|
||||||
vm["realcugan-syncgap"].as<int>() > 3)) {
|
vm["realcugan-syncgap"].as<int>() > 3)) {
|
||||||
video2x::logger()->critical(
|
video2x::logger()->critical(
|
||||||
"Sync gap mode must be set to 0, 1, 2, or 3 for RealCUGAN."
|
"Sync gap mode must be set to 0, 1, 2, or 3 for Real-CUGAN."
|
||||||
);
|
);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (proc_cfg.scaling_factor < 2 || proc_cfg.scaling_factor > 4) {
|
if (proc_cfg.scaling_factor < 2 || proc_cfg.scaling_factor > 4) {
|
||||||
video2x::logger()->critical(
|
video2x::logger()->critical(
|
||||||
"Scaling factor must be set to 2, 3, or 4 for RealCUGAN."
|
"Scaling factor must be set to 2, 3, or 4 for Real-CUGAN."
|
||||||
);
|
);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (proc_cfg.noise_level < -1 || proc_cfg.noise_level > 3) {
|
if (proc_cfg.noise_level < -1 || proc_cfg.noise_level > 3) {
|
||||||
video2x::logger()->critical(
|
video2x::logger()->critical(
|
||||||
"Noise level must be set to -1, 0, 1, 2, or 3 for RealCUGAN."
|
"Noise level must be set to -1, 0, 1, 2, or 3 for Real-CUGAN."
|
||||||
);
|
);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -447,7 +450,7 @@ int parse_args(
|
|||||||
}
|
}
|
||||||
case video2x::processors::ProcessorType::RIFE: {
|
case video2x::processors::ProcessorType::RIFE: {
|
||||||
if (!vm.count("rife-model")) {
|
if (!vm.count("rife-model")) {
|
||||||
video2x::logger()->critical("RIFE model name must be set for RIFE.");
|
video2x::logger()->critical("The model name must be set for RIFE.");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
if (proc_cfg.frm_rate_mul < 2) {
|
if (proc_cfg.frm_rate_mul < 2) {
|
||||||
|
@ -24,7 +24,10 @@ void validate_anime4k_shader_name(const video2x::fsutils::StringType& shader_nam
|
|||||||
|
|
||||||
void validate_realesrgan_model_name(const video2x::fsutils::StringType& model_name) {
|
void validate_realesrgan_model_name(const video2x::fsutils::StringType& model_name) {
|
||||||
static const std::unordered_set<video2x::fsutils::StringType> valid_realesrgan_models = {
|
static const std::unordered_set<video2x::fsutils::StringType> valid_realesrgan_models = {
|
||||||
STR("realesrgan-plus"), STR("realesrgan-plus-anime"), STR("realesr-animevideov3")
|
STR("realesrgan-plus"),
|
||||||
|
STR("realesrgan-plus-anime"),
|
||||||
|
STR("realesr-animevideov3"),
|
||||||
|
STR("realesr-generalv3"),
|
||||||
};
|
};
|
||||||
if (valid_realesrgan_models.count(model_name) == 0) {
|
if (valid_realesrgan_models.count(model_name) == 0) {
|
||||||
throw po::validation_error(
|
throw po::validation_error(
|
||||||
|
Loading…
Reference in New Issue
Block a user