175 Commits

Author SHA1 Message Date
k4yt3x
a6dfdc7343 docs(*): update changelog and readme for 6.2.0
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-12-12 00:00:00 +00:00
k4yt3x
ca5044f09c feat(libvideo2x): add optimization for scene detection
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-12-12 00:00:00 +00:00
k4yt3x
0e00aca401 feat(libvideo2x): change the video processor state to an enum
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-12-08 00:00:00 +00:00
K4YT3X
0400cf51b0 refactor(video2x): split the CLI into multiple files; improve CLI args validation (#1247)
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-12-04 08:06:35 +00:00
k4yt3x
adf3baf4be style(video2x): fix incorrect variable name
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-12-03 00:00:00 +00:00
K4YT3X
d4d1e58f8d refactor(libvideo2x): convert the video processor into a class (#1246)
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-12-03 05:22:07 +00:00
k4yt3x
a379c7481e fix(cmake): install missing headers
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-12-02 00:00:00 +00:00
k4yt3x
f27d8556c0 style(libvideo2x): remove C headers
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-12-02 00:00:00 +00:00
K4YT3X
f8dcad3aef chore(libvideo2x)!: replace the C API with C++ API (#1245)
* chore(libvideo2x)!: replace the C API with C++ API
* fix: convert wide string to u8 for av_opt_set
* style: removed unnecessary enum and struct specifiers

Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-12-02 07:24:30 +00:00
k4yt3x
24d43a8478 feat(video2x): update CLI help message examples
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-12-01 00:00:00 +00:00
K4YT3X
627f3d84a4 feat(rife): add support for frame interpolation and RIFE (#1244)
* feat: add RIFE files and processor/interpolator abstractions
* feat: add `rife` as processor option
* feat: add frame interpolation math except first frame
* feat: complete motion interpolation and add scene detection
* feat: improve Vulkan device validation
* fix: fix casting issues and variable names
* refactor: improve error-checking; add abstractions and factories
* refactor: improve readability of the frames processor
* docs: update changelog

Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-12-01 09:55:56 +00:00
k4yt3x
2fc89e3883 feat(video2x): print help when no args are specified
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-26 00:00:00 +00:00
k4yt3x
073f706980 docs(readme): adjust header links in README
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-23 00:00:00 +00:00
k4yt3x
a388a12d7d docs(conduct): add code of conduct
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-23 00:00:00 +00:00
k4yt3x
937939710a docs(security): add a security policy
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-23 00:00:00 +00:00
k4yt3x
ed318f61ad docs(readme): update documentation links in the README file
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-23 00:00:00 +00:00
k4yt3x
862b7f4ae8 docs(book): fixed incorrect edit URL template
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-23 00:00:00 +00:00
k4yt3x
b20f065fe0 ci(*): formatted CI pipeline files
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-22 00:00:00 +00:00
k4yt3x
149cf1ca4a docs(book): added the docs.video2x.org mdBook source files and pipeline
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-22 00:00:00 +00:00
k4yt3x
a77cf9e14f ci(build): include more paths in the pipeline's triggering conditions
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-22 00:00:00 +00:00
k4yt3x
d3de1ded96 feat(video2x): improve the CLI help message structure and clarity
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-22 00:00:00 +00:00
k4yt3x
3215c89870 feat(encoder): add support for more encoder options
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-22 00:00:00 +00:00
k4yt3x
169509b7d4 refactor(*): refactored the encoder and decoder into classes
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-17 00:00:00 +00:00
k4yt3x
b520d51c6c chore: removed OpenCV dependency
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-13 00:00:00 +00:00
k4yt3x
980b44bc05 fix(libvideo2x): added missing checks around freeing memory
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-13 00:00:00 +00:00
k4yt3x
561671c4cb fix(cmake): removed the redundant REQUIRED word
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-12 00:00:00 +00:00
k4yt3x
0869d153c0 docs(readme): removed the outdated label for Colab
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-10 00:00:00 +00:00
k4yt3x
4c919de6ba fix(encoder): read pix_fmts from AVCodec->pix_fmts for old libavformat
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-10 00:00:00 +00:00
k4yt3x
e393910f21 feat(encoder): added auto selection of the most suitable output pix_fmt
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-10 00:00:00 +00:00
k4yt3x
e477123e88 fix(encoder): timestamp errors processing frames with PTS equal to 0
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-10 00:00:00 +00:00
k4yt3x
c8f2acdea6 feat(libplacebo): made hardware context creation failure non-critical
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-09 00:00:00 +00:00
k4yt3x
aa8ed60e52 build(debian): added a build target for Ubuntu 22.04
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-09 00:00:00 +00:00
k4yt3x
e07beb67a4 chore(video2x): moved the CLI application to a separate directory
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-08 00:00:00 +00:00
k4yt3x
bc8ae34dde refactor(libvideo2x): extracted video frame count estimation into a function
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-08 00:00:00 +00:00
k4yt3x
6a218ebd9c docs(readme): updated README for 6.1.1
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-07 00:00:00 +00:00
k4yt3x
0d6a6abce2 chore(release): bump version to 6.1.1
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-07 00:00:00 +00:00
k4yt3x
943b446d26 fix(encoder): make the encoder use the right color space
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-07 00:00:00 +00:00
k4yt3x
1b81f7d1e2 ci(build): make the build pipeline only run on code changes
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-07 00:00:00 +00:00
k4yt3x
64697a9385 ci(issues): added the issues auto-labeling pipeline
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-07 00:00:00 +00:00
k4yt3x
e8b0b0ec21 docs(readme): updated installation instructions for Linux
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-06 00:00:00 +00:00
k4yt3x
05b275dd82 feat(video2x): added time remaining and processing speed to the progress bar
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-06 00:00:00 +00:00
k4yt3x
33b7c53e16 fix(encoder): fixed incorrect stream mapping for multi-stream files
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-06 00:00:00 +00:00
k4yt3x
3b7921a774 docs(readme): added a badge for GitHub sponsors
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-05 00:00:00 +00:00
k4yt3x
dfb29e05b7 docs(readme): updated README for 6.1.0
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-05 00:00:00 +00:00
k4yt3x
3bae03f403 docs(changelog): updated the changelog for 6.1.0
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-05 00:00:00 +00:00
k4yt3x
9ff320721f ci(build): updated the name of the build pipeline
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-05 00:00:00 +00:00
k4yt3x
7a7558e1a8 ci(release): disabled Ubuntu 24.04 build in the release pipeline
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-05 00:00:00 +00:00
k4yt3x
ec4b51064a feat(libplacebo): added Vulkan device selection for libplacebo
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-04 00:00:00 +00:00
k4yt3x
77a06e7d92 ci(release): added Ubuntu and Windows builds to the release pipeline
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-04 00:00:00 +00:00
k4yt3x
8eda3fa2d2 build(cmake): fixed the broken RealESRGAN installation rules
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-04 00:00:00 +00:00
k4yt3x
bcbe33d5dc feat(video2x): added the --listgpus option and GPU ID validation
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-04 00:00:00 +00:00
k4yt3x
850e0fde9c build(cmake): install the char_defs.h header file 2024-11-04 03:50:41 -05:00
k4yt3x
a63b8d85b0 build(makefile): added make targets for Windows 2024-11-04 03:49:20 -05:00
k4yt3x
1d1792d10f style: added platform-dependent type aliases for char and string
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-04 00:00:00 +00:00
k4yt3x
851f13bd4d fix(libvideo2x): fixed errors in estimating the total number of frames
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-03 00:00:00 +00:00
k4yt3x
fbe3b44139 feat(video2x): improved the timer
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-03 00:00:00 +00:00
k4yt3x
d6f27b3f22 fix(libplacebo): fixed wide char string path support for GLSL shader path 2024-11-02 23:13:03 -04:00
k4yt3x
fb0e3a040d fix(video2x): fixed RealESRGAN model name parsing
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-02 00:00:00 +00:00
k4yt3x
bb74144070 fix(realesrgan): fixed RealESRGAN model name variable
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-02 00:00:00 +00:00
k4yt3x
406a97f360 fix(video2x): fixed return code fetching
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-02 00:00:00 +00:00
k4yt3x
9c491d4277 feat: improved file not found messages
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-02 00:00:00 +00:00
K4YT3X
27c76189d9 Merge pull request #1208 from k4yt3x/dev
feat(*): fixed wide character string paths and rewritten the CLI
2024-11-02 01:35:27 -04:00
k4yt3x
77b3df22c1 ci(build): enabled caching for Vulkan SDK installation
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-02 00:00:00 +00:00
k4yt3x
b333f88c2f build(cmake): fixed boost build path and removed redundant librife DLL
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-02 00:00:00 +00:00
k4yt3x
8cafb29f70 build(cmake): cleaned up install directives
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-02 00:00:00 +00:00
k4yt3x
afd7c8050f chore: added missing boost lib into Makefile, Debian, PKGBUILD
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-02 00:00:00 +00:00
k4yt3x
66c623ff49 chore: fixed missing boost submodule
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-02 00:00:00 +00:00
k4yt3x
0633b3fd62 ci(build): fixed build pipeline boost dependency
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-02 00:00:00 +00:00
k4yt3x
0588908dd6 fix(video2x): fixed string conversions on Linux
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-11-02 00:00:00 +00:00
k4yt3x
b309bec1cb feat(video2x): rewritten the CLI with C++ 2024-11-01 22:20:32 -04:00
k4yt3x
94e69f9f62 fix(libvideo2x): fixed wide character string paths on Windows 2024-11-01 22:19:01 -04:00
k4yt3x
a8b952c3ad feat(libplacebo): auto-detect the buffer filter's supported options
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-31 00:00:00 +00:00
k4yt3x
c912bfaffc build(makefile): added make target for ubuntu deb package
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-31 00:00:00 +00:00
k4yt3x
f5eb195d79 chore: reorganized packaging related files
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-30 00:00:00 +00:00
k4yt3x
5156d4a825 fix(video2x): fixed Anime4K shader name in the help message
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-30 00:00:00 +00:00
k4yt3x
cbffef2b23 docs(readme): updated README for 6.0.0
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-29 00:00:00 +00:00
k4yt3x
31e606bd4c chore(librealesrgan): updated librealesrgan submodule path
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-29 00:00:00 +00:00
k4yt3x
d50cf54f2a style(libvideo2x): improved resource cleaning and error handling
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-29 00:00:00 +00:00
k4yt3x
613b75ffec fix(encoder): fixed incorrect encoded video frame rate
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-28 00:00:00 +00:00
k4yt3x
9d342c51a2 fix(libplacebo): fixed libplacebo shader path formatting on Windows
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-28 00:00:00 +00:00
k4yt3x
48119a30eb feat(anime4k): added version name to Anime4K GLSL shader files
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-27 00:00:00 +00:00
k4yt3x
9d09d8570f feat(anime4k): added Anime4K GAN GLSL shaders
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-27 00:00:00 +00:00
Neo_Chen (BU4AK)
ebef5f54cb fix(video2x): fixed -g option in src/video2x.c and help message for libplacebo (#1197)
* fixed -g option in src/video2x.c and help message for libplacebo
* style: sorted getopt options

---------

Signed-off-by: Neo_Chen <chenkolei@gmail.com>
Co-authored-by: K4YT3X <i@k4yt3x.com>
2024-10-26 19:16:55 +00:00
k4yt3x
747d85cf9b docs(readme): updated links for 6.0.0-beta.5
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-26 00:00:00 +00:00
k4yt3x
f89b263487 ci(release): corrected release name variable
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-26 00:00:00 +00:00
k4yt3x
ebd5e8eb3d fix(realesrgan): fixed incorrect type for ncnn::Mat elemsize
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-26 00:00:00 +00:00
k4yt3x
50d5cb16d1 docs(video2x): updated command line help messages
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-26 00:00:00 +00:00
k4yt3x
8eac1a7393 feat(libplacebo): added more modes for Anime4K v4
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-26 00:00:00 +00:00
k4yt3x
f0f3166d92 chore(models): moved model files into subdirectories
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-26 00:00:00 +00:00
k4yt3x
482e82f9c4 style(*): reduced implicit casting and other styling issues
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-25 00:00:00 +00:00
k4yt3x
58ea9e4b35 feat(cmake): removed CMake policy CMP0146 for compatibility
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-22 00:00:00 +00:00
k4yt3x
e077849a2c docs(readme): updated links for 6.0.0-beta.4
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-22 00:00:00 +00:00
k4yt3x
0fb547589d feat(*): updated Dockerfile and PKGBUILD for 6.0.0-beta.4
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-22 00:00:00 +00:00
k4yt3x
1f18b8507d feat(cmake): added installation rules for FFmpeg and OpenCV DLLs 2024-10-21 21:43:11 -04:00
k4yt3x
eb7d411f49 perf(libvideo2x): removed unnecessary read of nb_frames
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-22 00:00:00 +00:00
k4yt3x
640d9cd52b fix(encoder): fixed memory leak in the encoder
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-21 00:00:00 +00:00
K4YT3X
bc168d11ab feat(libvideo2x): use OpenCV to retrieve total frame count (#1194) 2024-10-21 23:54:22 +00:00
Owen Quinlan
e09f348890 Fix missing spdlog in docker build [Fix for #1185] (#1186)
* Fix missing spdlog in docker build
* fix: added the spdlog dependency for the Dockerfile building stage

---------

Co-authored-by: K4YT3X <i@k4yt3x.com>
2024-10-14 16:51:40 +00:00
k4yt3x
f3caf22765 docs(readme): updated links for 6.0.0-beta.3
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-14 00:00:00 +00:00
K4YT3X
cd2006b4d9 feat(*): switched to spdlog for logging and organized headers (#1183)
* feat: updated PKGBUILD description
* feat: updated workflow syntax and dependencies
* feat: switched logging to spdlog
* chore: adjusted library defaults
* ci: fixed spdlog format string issues
* docs: fixed docs for libvideo2x functions
* feat: organized header files
* fix: fixed header installation directory
* feat: link spdlog statically if compiled from source
* feat: adjusted libvideo2x log level enum names
* feat: added version.h header

Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-14 02:46:59 +00:00
k4yt3x
ecbc512711 ci(build): fixed librealesrgan library name
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-11 00:00:00 +00:00
k4yt3x
3fe1f6d544 docs(readme): updated Windows download link
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-11 00:00:00 +00:00
k4yt3x
ee4d6f360e chore(librealesrgan): updated librealesrgan submodule
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-10 00:00:00 +00:00
k4yt3x
7ae1943754 docs(readme): added EOL notice for versions 4 and 5
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-10 00:00:00 +00:00
k4yt3x
c2a4b25290 ci(build): fixed missing include in conversions.h
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-10 00:00:00 +00:00
k4yt3x
f79d4893db docs(readme): updated README for 6.0.0-beta.2
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-10 00:00:00 +00:00
K4YT3X
37c2c4c647 feat(*): added support for copying audio/subtitle streams and pause/abort (#1179)
* feat: added Makefile target for debian
* fix: fixed Dockerfile installing the wrong package
* feat: added hwaccel for encoder and decoder
* feat: added benchmark mode
* feat: removed hard-coded keyframe info
* chore: cleaned up headers and organized code
* style: cleaned up headers and includes
* feat: added a progress bar for CLI
* feat: removed atomicity requirements on processed frames
* feat: added pause and abort for CLI
* chore: updated default preset and crf settings
* feat: added support for copying audio and subtitle streams
* fix: fixed syntax issues for MSVC
* fix: fixed audio/subtitle timestamp rescaling

Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-10 07:23:13 +00:00
k4yt3x
c7fa9c10e6 docs(readme): fixed logo for GitHub light theme
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-08 00:00:00 +00:00
k4yt3x
fa1dca8708 docs(*): updated CI pipeline name and added .gitattributes
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-10-08 00:00:00 +00:00
K4YT3X
a7952fc493 feat(*): rewritten the project with C/C++ (#1172) 2024-10-08 02:29:00 +00:00
k4yt3x
721de8cbce chore(license): bumped copyright year to 2024
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-02-10 00:46:00 +00:00
k4yt3x
7de040bbb7 fix(dockerfile): fixed the Dockerfile to work with the latest code
Signed-off-by: k4yt3x <i@k4yt3x.com>
2024-02-09 23:36:24 +00:00
k4yt3x
b382f3973f feat(video2x): dynamically import optional dependencies
Signed-off-by: k4yt3x <i@k4yt3x.com>
2023-09-24 11:26:16 +00:00
k4yt3x
37bdfddf55 chore(project): add the 'all' optional dependency
Signed-off-by: k4yt3x <i@k4yt3x.com>
2023-09-24 10:37:32 +00:00
k4yt3x
21967209b8 chore(project): update optional dependencies and classifiers
Signed-off-by: k4yt3x <i@k4yt3x.com>
2023-09-24 10:31:02 +00:00
k4yt3x
b4b7cadf0d tests(*): updated test file paths and removed unused dependencies
Signed-off-by: k4yt3x <i@k4yt3x.com>
2023-09-24 07:33:07 +00:00
k4yt3x
7c70032fe7 fix(video2x): fixed the issue where output width/height aren't calculated if they are None
Signed-off-by: k4yt3x <i@k4yt3x.com>
2023-09-20 05:43:45 +00:00
k4yt3x
71821dbb56 fix(pipeline): bumped Python version in pipeline
Signed-off-by: k4yt3x <i@k4yt3x.com>
2023-09-16 23:10:48 +00:00
k4yt3x
22993028b4 feat(video2x): updated the variables in the Video2X class for compatibility with the GUI
Signed-off-by: k4yt3x <i@k4yt3x.com>
2023-09-16 18:49:29 +00:00
k4yt3x
6d934e6a98 feat(style): added formatting dependencies into pyproject.toml
Signed-off-by: k4yt3x <i@k4yt3x.com>
2023-09-16 18:47:47 +00:00
k4yt3x
78a2aafa0e moved non-project ignores out of gitignore 2023-06-07 14:24:02 +00:00
k4yt3x
e535cf7333 updated PDM build backend 2023-05-31 19:18:10 +00:00
k4yt3x
e725712be9 added no progress bar warning for FFmpeg direct process scenarios 2023-05-31 15:24:12 +00:00
k4yt3x
d66b7fa144 fixed upscaler test 2023-05-31 15:23:53 +00:00
k4yt3x
155a144a93 removed file update dates, unified role names 2023-05-30 23:18:34 +00:00
k4yt3x
275f329f7f disabled formatting for example code to keep comment indentation 2023-05-29 14:08:26 +00:00
k4yt3x
60ae71f3c5 adjusted interpolation %diff from 10% to 5% 2023-05-25 21:09:58 +00:00
k4yt3x
cc01f2d8e2 refactored interpolator 2023-05-25 18:44:54 +00:00
k4yt3x
5255e20283 fixed incorrect interpolator choices; reduced libfdk_aac cutoff freq 2023-05-25 18:43:53 +00:00
k4yt3x
c746773980 added Anime4K v4 (GLSL) support via FFmpeg & libplacebo 2023-05-09 08:30:02 +00:00
k4yt3x
afc0df30cd fixed CI logo 2023-05-09 08:07:34 +00:00
k4yt3x
bb759197d8 ignored data dir 2023-05-09 08:04:19 +00:00
k4yt3x
b4570cc106 bumped year to 2023 2023-05-09 08:02:47 +00:00
k4yt3x
66f4c17294 changed license-expression to license so PDM can build the package 2022-11-13 01:14:47 +00:00
k4yt3x
30048ae304 removed the slim Docker image since it does not build properly 2022-10-07 16:19:43 +00:00
k4yt3x
84b730497b Revert "added rich console patch for Google Colab"
This reverts commit db0b87597d.
2022-09-04 21:56:40 +00:00
k4yt3x
db0b87597d added rich console patch for Google Colab 2022-09-04 21:41:57 +00:00
k4yt3x
102340e2be updated Pillow version requirements 2022-09-04 21:32:27 +00:00
k4yt3x
85437a8481 removed the walrus operator to remain compatible with Python 3.7 2022-09-04 00:06:46 +00:00
k4yt3x
176ae90bbb removed fps_mode since it causes incompatibility issues 2022-08-28 19:23:49 +00:00
k4yt3x
44238aed35 bumped vulkan image version to 1.3-470 2022-08-28 19:18:37 +00:00
k4yt3x
045e643867 pinned opencv-python to 4.5.5.64 due to bug #676 in version 4.6.0.66 2022-08-28 19:18:17 +00:00
k4yt3x
c92805e7bc added realcugan-ncnn-vulkan's license 2022-08-28 16:02:12 +00:00
k4yt3x
899fe3ae2d added realcugan-ncnn-vulkan into licenses section 2022-08-28 16:01:23 +00:00
k4yt3x
a75c2a50ca bumped version to 5.0.0-beta6 2022-08-28 16:01:07 +00:00
K4YT3X
508d6ea4d0 Merge pull request #695 from k4yt3x/feat/decouple 2022-08-28 11:51:51 -04:00
K4YT3X
8976dd8199 Merge branch 'master' into feat/decouple 2022-08-28 11:17:39 -04:00
k4yt3x
29a55e633c fixed the issue where the encoder cannot exit 2022-08-28 15:03:16 +00:00
k4yt3x
f7d6dc41b3 changed FFmpeg vsync to fps_mode 2022-08-28 03:44:27 +00:00
K4YT3X
d236131134 Merge pull request #644 from plambe/master
Fixed interpolation algorithms list
2022-05-08 17:17:12 -04:00
plambeto
d669654142 Fixed interpolation algorithms list 2022-05-08 21:16:09 +03:00
k4yt3x
4b0ab5382c added kill method to encoder 2022-05-01 08:46:33 +00:00
k4yt3x
737646a248 made processor objects a class var 2022-05-01 08:45:56 +00:00
k4yt3x
9fc0aa787e moved main to __main__; changed _run to use the new encoder and processor 2022-05-01 08:44:33 +00:00
k4yt3x
a041a60d87 added processor skeleton class 2022-05-01 08:43:13 +00:00
k4yt3x
020fb2dc80 updated value unpacking 2022-05-01 08:42:13 +00:00
k4yt3x
9a27960bf7 added decoder thread 2022-05-01 08:34:31 +00:00
k4yt3x
862b811517 moved main to __main__ 2022-05-01 08:34:00 +00:00
k4yt3x
e01d24c164 broken the upscaler into descrete parts 2022-04-28 14:33:33 +00:00
k4yt3x
0a052a3a72 simplified the encoder 2022-04-27 22:28:14 +00:00
k4yt3x
f3eaa47ec6 changed decoder from a thread into an iterator 2022-04-27 22:27:48 +00:00
K4YT3X
3f457907b6 Merge pull request #634 from snixon/checking_output
Adding check for valid output path
2022-04-13 23:33:52 -04:00
K4YT3X
a1d750e7ca combined output dir check with the previous section 2022-04-14 03:33:22 +00:00
Steve Nixon
22f656b800 Adding check for valid output path 2022-04-11 22:47:50 -07:00
k4yt3x
8eeba71ece added configs for flake8 and isort 2022-04-09 18:43:36 +00:00
k4yt3x
afca10a17b fixed #627 env vars lost in Popen processes 2022-04-09 18:40:43 +00:00
K4YT3X
f976bdc1c9 Merge pull request #629 from snixon/ffmpeg_subs_crash
ffmpeg can crash if source title has subtitles
2022-04-09 05:16:27 -04:00
Steve Nixon
51c0c38b34 ffmpeg can crash when a title has subs 2022-04-05 23:26:31 -07:00
k4yt3x
f2b2e11c41 bumped RealCUGAN to 1.0.2 2022-04-06 03:54:14 +00:00
k4yt3x
865e3bd193 fixed Flake8 issues 2022-04-06 03:39:32 +00:00
k4yt3x
e0dc8237f5 pinned pdm-pep517 version to >=0.12 2022-04-02 18:04:47 +00:00
k4yt3x
bbc1b57445 changed license field to license-expression (PEP 639) 2022-04-02 05:36:22 +00:00
k4yt3x
ebbe4570d5 check bools explicitly 2022-04-02 05:29:54 +00:00
k4yt3x
bcb2e97f89 fixed console script error 2022-04-01 07:52:28 +00:00
k4yt3x
ba29349e65 added licensing info for pynput 2022-04-01 07:21:18 +00:00
187 changed files with 32858 additions and 5331 deletions

1
.gitattributes vendored Normal file
View File

@@ -0,0 +1 @@
models/** linguist-vendored

10
.github/FUNDING.yml vendored
View File

@@ -1,12 +1,2 @@
# These are supported funding model platforms
github: k4yt3x
patreon: k4yt3x
open_collective: # Replace with a single Open Collective username
ko_fi: # Replace with a single Ko-fi username
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
liberapay: # Replace with a single Liberapay username
issuehunt: # Replace with a single IssueHunt username
otechie: # Replace with a single Otechie username
custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']

123
.github/workflows/build.yml vendored Normal file
View File

@@ -0,0 +1,123 @@
name: Build
on:
push:
paths:
- ".github/workflows/build.yml"
- "include/**"
- "src/**"
- "tools/**"
- "third_party/**"
- "CMakeLists.txt"
pull_request:
paths:
- ".github/workflows/build.yml"
- "include/**"
- "src/**"
- "tools/**"
- "third_party/**"
- "CMakeLists.txt"
workflow_dispatch:
jobs:
ubuntu:
runs-on: ubuntu-latest
env:
DEBIAN_FRONTEND: noninteractive
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install dependencies
run: |
git submodule update --init --recursive
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
libavcodec-dev \
libavdevice-dev \
libavfilter-dev \
libavformat-dev \
libavutil-dev \
libswscale-dev \
libvulkan-dev \
glslang-tools \
libomp-dev \
libboost-program-options-dev
- name: Build Video2X
run: |
mkdir -p /tmp/build /tmp/install
cmake -B /tmp/build -S . -DUSE_SYSTEM_NCNN=OFF -DUSE_SYSTEM_SPDLOG=OFF \
-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \
-DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/tmp/install \
-DINSTALL_BIN_DESTINATION=. -DINSTALL_INCLUDE_DESTINATION=include \
-DINSTALL_LIB_DESTINATION=. -DINSTALL_MODEL_DESTINATION=.
cmake --build /tmp/build --config Debug --target install --parallel
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: video2x-nightly-linux-amd64
path: /tmp/install
windows:
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install Vulkan SDK
uses: humbletim/setup-vulkan-sdk@v1.2.0
with:
vulkan-query-version: 1.3.204.0
vulkan-components: Vulkan-Headers, Vulkan-Loader, Glslang, SPIRV-Tools, SPIRV-Headers
vulkan-use-cache: true
- name: Install dependencies
shell: pwsh
run: |
$ffmpegVersion = "7.1"
$ncnnVersion = "20240820"
git submodule update --init --recursive
curl -Lo ffmpeg-shared.zip "https://github.com/GyanD/codexffmpeg/releases/download/$ffmpegVersion/ffmpeg-$ffmpegVersion-full_build-shared.zip"
Expand-Archive -Path ffmpeg-shared.zip -DestinationPath third_party
Rename-Item -Path "third_party/ffmpeg-$ffmpegVersion-full_build-shared" -NewName ffmpeg-shared
curl -Lo ncnn-shared.zip "https://github.com/Tencent/ncnn/releases/download/$ncnnVersion/ncnn-$ncnnVersion-windows-vs2022-shared.zip"
Expand-Archive -Path ncnn-shared.zip -DestinationPath third_party
Rename-Item -Path "third_party/ncnn-$ncnnVersion-windows-vs2022-shared" -NewName ncnn-shared
- name: Build Video2X
shell: pwsh
run: |
cmake -S . -B build `
-DUSE_SYSTEM_NCNN=OFF -DUSE_SYSTEM_SPDLOG=OFF -DUSE_SYSTEM_BOOST=OFF `
-DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=build/video2x_install
cmake --build build --config Debug --parallel --target install
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: video2x-nightly-windows-amd64
path: build/video2x_install
container:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- uses: mr-smithers-excellent/docker-build-push@v5
name: Build the Docker image
with:
registry: ghcr.io
dockerfile: packaging/docker/Dockerfile
image: video2x
tags: latest
pushImage: false

View File

@@ -1,41 +0,0 @@
name: CI
on:
push:
branches:
- master
- dev/*
pull_request: {}
workflow_dispatch: {}
jobs:
ubuntu:
runs-on: ubuntu-latest
env:
DEBIAN_FRONTEND: noninteractive
steps:
- name: Checkout repository
uses: actions/checkout@v2
with:
submodules: recursive
- name: Setup Python
uses: actions/setup-python@v2
with:
python-version: 3.8
- name: Install dependencies
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
python3-opencv python3-pil python3-tqdm python3-dev \
libvulkan-dev glslang-dev glslang-tools swig
pip install wheel
- name: Build wheels
run: |
pip wheel -w /tmp/wheels \
rife-ncnn-vulkan-python@git+https://github.com/media2x/rife-ncnn-vulkan-python.git .
- name: Package artifacts
run: |
tar cJvf /tmp/video2x-nightly-wheels.txz /tmp/wheels/*
- name: Upload artifacts
uses: actions/upload-artifact@v2
with:
name: video2x-nightly-wheels
path: /tmp/video2x-nightly-wheels.txz

49
.github/workflows/docs.yml vendored Normal file
View File

@@ -0,0 +1,49 @@
name: Docs
on:
push:
branches:
- master
paths:
- "docs/book/**"
workflow_dispatch:
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install mdBook
run: |
version="$(curl https://api.github.com/repos/rust-lang/mdBook/releases/latest | jq -r '.tag_name')"
curl -sSL "https://github.com/rust-lang/mdBook/releases/download/$version/mdbook-$version-x86_64-unknown-linux-musl.tar.gz" | tar -xz
sudo mv mdbook /usr/local/bin/
- name: Build Docs with mdBook
run: mdbook build -d "$PWD/build/docs/book" docs/book
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: "build/docs/book"
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

52
.github/workflows/issues.yml vendored Normal file
View File

@@ -0,0 +1,52 @@
name: Issues
on:
issues:
types:
- opened
- reopened
- closed
jobs:
label_issues:
runs-on: ubuntu-latest
steps:
- name: Remove all 'state:' labels
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
ISSUE_NUMBER=${{ github.event.issue.number }}
REPO=${{ github.repository }}
EXISTING_LABELS=$(gh issue view $ISSUE_NUMBER --repo $REPO --json labels --jq '.labels[].name')
for label in $EXISTING_LABELS; do
if [[ $label == state:* ]]; then
gh issue edit $ISSUE_NUMBER --remove-label "$label" --repo $REPO
fi
done
- name: Add 'state:Backlog' label on issue opened or reopened
if: ${{ github.event.action == 'opened' || github.event.action == 'reopened' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
LABEL_NAME="state:Backlog"
REPO=${{ github.repository }}
ISSUE_NUMBER=${{ github.event.issue.number }}
if gh label list --repo $REPO | grep -q "$LABEL_NAME"; then
gh issue edit $ISSUE_NUMBER --add-label "$LABEL_NAME" --repo $REPO
fi
- name: Add 'state:Done' label on issue closed
if: ${{ github.event.action == 'closed' }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
run: |
LABEL_NAME="state:Done"
REPO=${{ github.repository }}
ISSUE_NUMBER=${{ github.event.issue.number }}
if gh label list --repo $REPO | grep -q "$LABEL_NAME"; then
gh issue edit $ISSUE_NUMBER --add-label "$LABEL_NAME" --repo $REPO
fi

View File

@@ -1,78 +1,165 @@
name: Release
on:
push:
tags:
- "*"
permissions:
contents: write
jobs:
setup:
if: github.event.base_ref == 'refs/heads/master'
name: Setup
if: github.event.base_ref == 'refs/heads/master'
runs-on: ubuntu-latest
outputs:
tag: ${{ steps.get_tag.outputs.tag }}
version: ${{ steps.get_version.outputs.version }}
steps:
- name: Get tag
id: get_tag
run: echo ::set-output name=tag::${GITHUB_REF/refs\/tags\//}
- name: Get version
id: get_version
run: echo version=${GITHUB_REF/refs\/tags\//} >> $GITHUB_OUTPUT
create-release:
name: Create release
ubuntu-2404:
# GitHub Actions' ubuntu-24.04 runner does not have enough RAM
if: false
name: Build Ubuntu 24.04 release
needs:
- setup
runs-on: ubuntu-latest
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
runs-on: ubuntu-24.04
env:
DEBIAN_FRONTEND: noninteractive
steps:
- name: Create release
id: create_release
uses: actions/create-release@v1
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Checkout repository
uses: actions/checkout@v4
with:
tag_name: ${{ needs.setup.outputs.tag }}
release_name: Video2X ${{ needs.setup.outputs.tag }}
draft: true
prerelease: false
submodules: recursive
- name: Install dependencies
run: |
git submodule update --init --recursive
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
libavcodec-dev \
libavdevice-dev \
libavfilter-dev \
libavformat-dev \
libavutil-dev \
libswscale-dev \
libvulkan-dev \
glslang-tools \
libomp-dev \
libboost-program-options-dev
- name: Build Video2X
run: |
cmake -B build -S . -DUSE_SYSTEM_NCNN=OFF -DUSE_SYSTEM_SPDLOG=OFF -DSPDLOG_NO_EXCEPTIONS=ON \
-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ \
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=build/video2x-linux-ubuntu-2404-amd64/usr
cmake --build build --config Release --target install --parallel
mkdir -p build/video2x-linux-ubuntu-2404-amd64/DEBIAN
cp packaging/debian/control build/video2x-linux-ubuntu-2404-amd64/DEBIAN/control
dpkg-deb --build build/video2x-linux-ubuntu-2404-amd64
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: video2x-linux-ubuntu-2404-amd64
path: build/video2x-linux-ubuntu-2404-amd64.deb
windows:
name: Build Windows release
needs:
- setup
runs-on: windows-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install Vulkan SDK
uses: humbletim/setup-vulkan-sdk@v1.2.0
with:
vulkan-query-version: 1.3.204.0
vulkan-components: Vulkan-Headers, Vulkan-Loader, Glslang, SPIRV-Tools, SPIRV-Headers
vulkan-use-cache: true
- name: Install dependencies
shell: pwsh
run: |
$ffmpegVersion = "7.1"
$ncnnVersion = "20240820"
git submodule update --init --recursive
curl -Lo ffmpeg-shared.zip "https://github.com/GyanD/codexffmpeg/releases/download/$ffmpegVersion/ffmpeg-$ffmpegVersion-full_build-shared.zip"
Expand-Archive -Path ffmpeg-shared.zip -DestinationPath third_party
Rename-Item -Path "third_party/ffmpeg-$ffmpegVersion-full_build-shared" -NewName ffmpeg-shared
curl -Lo ncnn-shared.zip "https://github.com/Tencent/ncnn/releases/download/$ncnnVersion/ncnn-$ncnnVersion-windows-vs2022-shared.zip"
Expand-Archive -Path ncnn-shared.zip -DestinationPath third_party
Rename-Item -Path "third_party/ncnn-$ncnnVersion-windows-vs2022-shared" -NewName ncnn-shared
- name: Build Video2X
shell: pwsh
run: |
cmake -S . -B build `
-DUSE_SYSTEM_NCNN=OFF -DUSE_SYSTEM_SPDLOG=OFF -DUSE_SYSTEM_BOOST=OFF `
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=build/video2x_install
cmake --build build --config Release --parallel --target install
- name: Compress artifacts
run: |
Compress-Archive -Path build/video2x_install/* -DestinationPath build/video2x-windows-amd64.zip
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: video2x-windows-amd64
path: build/video2x-windows-amd64.zip
container:
name: Build and upload container
needs:
- setup
- create-release
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v2
uses: actions/checkout@v4
- uses: mr-smithers-excellent/docker-build-push@v5
name: Build & push the Docker image
with:
registry: ghcr.io
username: ${{ secrets.GHCR_USER }}
password: ${{ secrets.GHCR_TOKEN }}
dockerfile: Dockerfile
dockerfile: packaging/docker/Dockerfile
image: video2x
tags: latest, ${{ needs.setup.outputs.tag }}
tags: latest, ${{ needs.setup.outputs.version }}
container-variants:
name: Build and upload variants of the container
create-release:
name: Create release
needs:
- setup
- create-release
strategy:
matrix:
version:
- slim-alpine
# - ubuntu-2404
- windows
- container
runs-on: ubuntu-latest
outputs:
upload_url: ${{ steps.create_release.outputs.upload_url }}
steps:
- name: Checkout repository
uses: actions/checkout@v2
- uses: mr-smithers-excellent/docker-build-push@v5
name: Build & push the Docker image
- name: Download artifacts
uses: actions/download-artifact@v4
- name: Create release
id: create_release
uses: softprops/action-gh-release@v2
with:
registry: ghcr.io
username: ${{ secrets.GHCR_USER }}
password: ${{ secrets.GHCR_TOKEN }}
dockerfile: Dockerfile.${{ matrix.version }}
image: video2x
tags: ${{ needs.setup.outputs.tag }}-${{ matrix.version }}
token: ${{ secrets.GITHUB_TOKEN }}
tag_name: ${{ needs.setup.outputs.version }}
name: ${{ needs.setup.outputs.version }}
draft: true
prerelease: false
files: |
video2x-windows-amd64.zip

170
.gitignore vendored
View File

@@ -1,119 +1,77 @@
# PDM
.pdm.toml
__pypackages__/
# Data files
data/
# test videos
*.mp4
*.mkv
*.mov
*.avi
*.flv
*.webm
# vim session file
Session.vim
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
# Built-binaries
bin/
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Prerequisites
*.d
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Object files
*.o
*.ko
*.obj
*.elf
# Unit test / coverage reports
htmlcov/
.tox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/
# Linker output
*.ilk
*.map
*.exp
# Translations
#*.mo
#*.pot
# Precompiled Headers
*.gch
*.pch
# Django stuff:
*.log
local_settings.py
db.sqlite3
# Libraries
*.lib
*.a
*.la
*.lo
# Flask stuff:
instance/
.webassets-cache
# Shared objects (inc. Windows DLLs)
*.dll
#*.so
*.so.*
*.dylib
# Scrapy stuff:
.scrapy
# Executables
*.exe
*.out
*.app
*.i*86
*.x86_64
*.hex
# Sphinx documentation
docs/_build/
# Debug files
*.dSYM/
*.su
*.idb
*.pdb
# PyBuilder
target/
# Kernel Module Compile Results
#*.mod*
*.cmd
.tmp_versions/
modules.order
Module.symvers
Mkfile.old
dkms.conf
# Jupyter Notebook
.ipynb_checkpoints
# clang tooling compilation databases
.cache/
*.plist
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
# CMake
CMakeLists.txt.user
CMakeCache.txt
CMakeFiles
CMakeScripts
Testing
Makefile
cmake_install.cmake
install_manifest.txt
compile_commands.json
CTestTestfile.cmake
_deps
CMakeUserPresets.json

15
.gitmodules vendored Normal file
View File

@@ -0,0 +1,15 @@
[submodule "third_party/librealesrgan_ncnn_vulkan"]
path = third_party/librealesrgan_ncnn_vulkan
url = https://github.com/k4yt3x/librealesrgan-ncnn-vulkan.git
[submodule "third_party/ncnn"]
path = third_party/ncnn
url = https://github.com/Tencent/ncnn.git
[submodule "third_party/spdlog"]
path = third_party/spdlog
url = https://github.com/gabime/spdlog.git
[submodule "third_party/boost"]
path = third_party/boost
url = https://github.com/boostorg/boost.git
[submodule "third_party/librife_ncnn_vulkan"]
path = third_party/librife_ncnn_vulkan
url = https://github.com/k4yt3x/librife-ncnn-vulkan.git

69
CHANGELOG.md Normal file
View File

@@ -0,0 +1,69 @@
# Changelog
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/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [6.2.0] - 2024-12-11
### Added
- Automatic selection of the most suitable pixel format for the output video.
- Frame interpolation processing mode.
- More `AVCodecContext` options.
- Support for RIFE ncnn Vulkan.
- Support for specifying arbitrary `AVOptions` for the encoder (#1232).
- Visual C++ Redistributable version check to the installer. (Video2X Qt6)
### Changed
- Improve CLI argument validation.
- Improve error handling and error messages.
- Improve the CLI help message structure and clarity.
- Improve the UI with a complete redesign. (Video2X Qt6)
### Removed
- The C API for easier maintenance and development.
### Fixed
- Timestamp errors processing frames with PTS equal to 0 (#1222).
## [6.1.1] - 2024-11-07
### Added
- Time remaining, and processing speed to the status bar.
### Fixed
- Stream mapping for cases where the video stream is not the first stream in the input file (#1217).
- The encoder using the wrong color space for the output video.
## [6.1.0] - 2024-11-04
### Added
- A better timer that gets paused when the processing is paused.
- Detection for the validity of the provided GPU ID.
- Status bar and processing statistics. (Video2X Qt6)
- The `--listgpus` option to list available Vulkan GPU devices.
- Vulkan device selection for libplacebo.
### Changed
- Automatically detect if options `colorspace` and `range` are supported by the buffer filter.
- Resource file missing error messages.
- Rewritten the CLI with C++.
### Fixed
- Wide character string paths support on Windows systems without UTF-8 support enabled (#1201).
## [6.0.0] - 2024-10-29
### Added
- The initial release of the 6.0.0 version of Video2X.

423
CMakeLists.txt Normal file
View File

@@ -0,0 +1,423 @@
cmake_minimum_required(VERSION 3.10)
project(video2x VERSION 6.2.0 LANGUAGES CXX)
if(POLICY CMP0167)
cmake_policy(SET CMP0167 NEW)
endif()
# Set the C++ standard
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
# Set the default build type to Release if not specified
if(NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release)
endif()
# Set the default optimization flags for Release builds
if(CMAKE_BUILD_TYPE STREQUAL "Release")
if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /Ox /GL /LTCG /MD /DNDEBUG")
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O3 -march=native -flto")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${CMAKE_EXE_LINKER_FLAGS_RELEASE} -s")
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${CMAKE_SHARED_LINKER_FLAGS_RELEASE} -s")
endif()
endif()
# Set global compile options for all targets
if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
add_compile_options(/W4 /permissive-)
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
add_compile_options(-Wall -Wextra -Wpedantic -Wconversion -Wshadow)
endif()
# Build options
option(BUILD_SHARED_LIBS "Build libvideo2x as a shared library" ON)
option(BUILD_VIDEO2X_CLI "Build the video2x executable" ON)
option(USE_SYSTEM_NCNN "Use system ncnn library" ON)
option(USE_SYSTEM_SPDLOG "Use system spdlog library" ON)
option(USE_SYSTEM_BOOST "Use system Boost library" ON)
# Generate the version header file
configure_file(
"${CMAKE_CURRENT_SOURCE_DIR}/include/libvideo2x/version.h.in"
"${CMAKE_CURRENT_BINARY_DIR}/libvideo2x/version.h"
@ONLY
)
# Find the required packages
set(ALL_INCLUDE_DIRS)
set(ALL_LIBRARIES)
# Platform-specific dependencies
if(WIN32)
# Define base paths for FFmpeg and ncnn
set(FFMPEG_BASE_PATH ${PROJECT_SOURCE_DIR}/third_party/ffmpeg-shared)
set(NCNN_BASE_PATH ${PROJECT_SOURCE_DIR}/third_party/ncnn-shared/x64)
# FFmpeg
set(FFMPEG_LIB
${FFMPEG_BASE_PATH}/lib/avcodec.lib
${FFMPEG_BASE_PATH}/lib/avdevice.lib
${FFMPEG_BASE_PATH}/lib/avfilter.lib
${FFMPEG_BASE_PATH}/lib/avformat.lib
${FFMPEG_BASE_PATH}/lib/avutil.lib
${FFMPEG_BASE_PATH}/lib/swscale.lib
)
list(APPEND ALL_LIBRARIES ${FFMPEG_LIB})
list(APPEND ALL_INCLUDE_DIRS ${FFMPEG_BASE_PATH}/include)
# ncnn
# TODO: Figure out why this file is not being copied to the install directory
set(SPIRV_BUILD_PATH
${CMAKE_BINARY_DIR}/realesrgan-prefix/src/realesrgan-build/ncnn/glslang/SPIRV
)
if(CMAKE_BUILD_TYPE STREQUAL "Release")
set(SPIRV_LIB ${SPIRV_BUILD_PATH}/Release/SPIRV.lib)
else()
set(SPIRV_LIB ${SPIRV_BUILD_PATH}/Debug/SPIRVd.lib)
endif()
list(APPEND ALL_LIBRARIES
${NCNN_BASE_PATH}/lib/ncnn.lib
${SPIRV_LIB}
)
list(APPEND ALL_INCLUDE_DIRS ${NCNN_BASE_PATH}/include/ncnn)
else()
# FFmpeg
find_package(PkgConfig REQUIRED)
set(FFMPEG_REQUIRED_PKGS
libavcodec
libavdevice
libavfilter
libavformat
libavutil
libswscale
)
# Loop through each package to find and collect include dirs and libraries
set(FFMPEG_LIB)
foreach(PKG ${FFMPEG_REQUIRED_PKGS})
pkg_check_modules(${PKG} REQUIRED ${PKG})
list(APPEND ALL_INCLUDE_DIRS ${${PKG}_INCLUDE_DIRS})
list(APPEND FFMPEG_LIB ${${PKG}_LIBRARIES})
endforeach()
list(APPEND ALL_LIBRARIES ${FFMPEG_LIB})
endif() # WIN32
# Find ncnn package
if(USE_SYSTEM_NCNN)
find_package(ncnn REQUIRED)
else()
option(NCNN_INSTALL_SDK "" OFF)
option(NCNN_PIXEL_ROTATE "" OFF)
option(NCNN_VULKAN "" ON)
option(NCNN_VULKAN_ONLINE_SPIRV "" ON)
option(NCNN_BUILD_BENCHMARK "" OFF)
option(NCNN_BUILD_TESTS "" OFF)
option(NCNN_BUILD_TOOLS "" OFF)
option(NCNN_BUILD_EXAMPLES "" OFF)
option(NCNN_DISABLE_RTTI "" ON)
option(NCNN_DISABLE_EXCEPTION "" ON)
option(NCNN_BUILD_SHARED_LIBS "" OFF)
option(SKIP_GLSLANG_INSTALL "" ON)
option(WITH_LAYER_absval "" OFF)
option(WITH_LAYER_argmax "" OFF)
option(WITH_LAYER_batchnorm "" OFF)
option(WITH_LAYER_bias "" OFF)
option(WITH_LAYER_bnll "" OFF)
option(WITH_LAYER_concat "" ON)
option(WITH_LAYER_convolution "" ON)
option(WITH_LAYER_crop "" ON)
option(WITH_LAYER_deconvolution "" OFF)
option(WITH_LAYER_dropout "" OFF)
option(WITH_LAYER_eltwise "" ON)
option(WITH_LAYER_elu "" OFF)
option(WITH_LAYER_embed "" OFF)
option(WITH_LAYER_exp "" OFF)
option(WITH_LAYER_flatten "" ON)
option(WITH_LAYER_innerproduct "" ON)
option(WITH_LAYER_input "" ON)
option(WITH_LAYER_log "" OFF)
option(WITH_LAYER_lrn "" OFF)
option(WITH_LAYER_memorydata "" OFF)
option(WITH_LAYER_mvn "" OFF)
option(WITH_LAYER_pooling "" OFF)
option(WITH_LAYER_power "" OFF)
option(WITH_LAYER_prelu "" ON)
option(WITH_LAYER_proposal "" OFF)
option(WITH_LAYER_reduction "" OFF)
option(WITH_LAYER_relu "" ON)
option(WITH_LAYER_reshape "" OFF)
option(WITH_LAYER_roipooling "" OFF)
option(WITH_LAYER_scale "" OFF)
option(WITH_LAYER_sigmoid "" OFF)
option(WITH_LAYER_slice "" OFF)
option(WITH_LAYER_softmax "" OFF)
option(WITH_LAYER_split "" ON)
option(WITH_LAYER_spp "" OFF)
option(WITH_LAYER_tanh "" OFF)
option(WITH_LAYER_threshold "" OFF)
option(WITH_LAYER_tile "" OFF)
option(WITH_LAYER_rnn "" OFF)
option(WITH_LAYER_lstm "" OFF)
option(WITH_LAYER_binaryop "" ON)
option(WITH_LAYER_unaryop "" OFF)
option(WITH_LAYER_convolutiondepthwise "" OFF)
option(WITH_LAYER_padding "" ON)
option(WITH_LAYER_squeeze "" OFF)
option(WITH_LAYER_expanddims "" OFF)
option(WITH_LAYER_normalize "" OFF)
option(WITH_LAYER_permute "" OFF)
option(WITH_LAYER_priorbox "" OFF)
option(WITH_LAYER_detectionoutput "" OFF)
option(WITH_LAYER_interp "" ON)
option(WITH_LAYER_deconvolutiondepthwise "" OFF)
option(WITH_LAYER_shufflechannel "" OFF)
option(WITH_LAYER_instancenorm "" OFF)
option(WITH_LAYER_clip "" OFF)
option(WITH_LAYER_reorg "" OFF)
option(WITH_LAYER_yolodetectionoutput "" OFF)
option(WITH_LAYER_quantize "" OFF)
option(WITH_LAYER_dequantize "" OFF)
option(WITH_LAYER_yolov3detectionoutput "" OFF)
option(WITH_LAYER_psroipooling "" OFF)
option(WITH_LAYER_roialign "" OFF)
option(WITH_LAYER_packing "" ON)
option(WITH_LAYER_requantize "" OFF)
option(WITH_LAYER_cast "" ON)
option(WITH_LAYER_hardsigmoid "" OFF)
option(WITH_LAYER_selu "" OFF)
option(WITH_LAYER_hardswish "" OFF)
option(WITH_LAYER_noop "" OFF)
option(WITH_LAYER_pixelshuffle "" ON)
option(WITH_LAYER_deepcopy "" OFF)
option(WITH_LAYER_mish "" OFF)
option(WITH_LAYER_statisticspooling "" OFF)
option(WITH_LAYER_swish "" OFF)
option(WITH_LAYER_gemm "" OFF)
option(WITH_LAYER_groupnorm "" OFF)
option(WITH_LAYER_layernorm "" OFF)
option(WITH_LAYER_softplus "" OFF)
add_subdirectory(third_party/ncnn)
endif()
# spdlog
if(USE_SYSTEM_SPDLOG)
find_package(spdlog REQUIRED)
list(APPEND ALL_INCLUDE_DIRS ${spdlog_INCLUDE_DIRS})
set(SPDLOG_LIB spdlog::spdlog)
else()
add_subdirectory(third_party/spdlog)
set(SPDLOG_LIB spdlog::spdlog_header_only)
endif()
list(APPEND ALL_LIBRARIES ${SPDLOG_LIB})
# Boost
if(USE_SYSTEM_BOOST)
find_package(Boost REQUIRED COMPONENTS program_options)
list(APPEND ALL_INCLUDE_DIRS ${Boost_INCLUDE_DIRS})
else()
option(Boost_USE_STATIC_LIBS "" ON)
option(Boost_USE_STATIC_RUNTIME "" ON)
option(Boost_COMPONENTS "program_options")
add_subdirectory(third_party/boost)
include_directories(${PROJECT_SOURCE_DIR}/third_party/boost/libs/program_options/include)
set(BOOST_BASE_PATH ${CMAKE_BINARY_DIR}/third_party/boost/libs/program_options/${CMAKE_BUILD_TYPE})
endif()
set(BOOST_LIB Boost::program_options)
if(BUILD_VIDEO2X_CLI)
find_package(Vulkan REQUIRED)
set(VULKAN_LIB Vulkan::Vulkan)
endif()
# Include ExternalProject module
include(ExternalProject)
# Add librealesrgan-ncnn-vulkan as an external project
ExternalProject_Add(
realesrgan
SOURCE_DIR ${PROJECT_SOURCE_DIR}/third_party/librealesrgan_ncnn_vulkan/src
CMAKE_ARGS
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/realesrgan_install
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DUSE_SYSTEM_NCNN=${USE_SYSTEM_NCNN}
BUILD_ALWAYS ON
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE}
)
# Add librealesrgan-ncnn-vulkan as an external project
ExternalProject_Add(
rife
SOURCE_DIR ${PROJECT_SOURCE_DIR}/third_party/librife_ncnn_vulkan/src
CMAKE_ARGS
-DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}
-DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/rife_install
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
-DUSE_SYSTEM_NCNN=${USE_SYSTEM_NCNN}
BUILD_ALWAYS ON
INSTALL_COMMAND ${CMAKE_COMMAND} --build . --target install --config ${CMAKE_BUILD_TYPE}
)
# Remove duplicate entries
list(REMOVE_DUPLICATES ALL_INCLUDE_DIRS)
list(REMOVE_DUPLICATES ALL_LIBRARIES)
# Create the shared library 'libvideo2x'
file(GLOB LIBVIDEO2X_SOURCES src/*.cpp)
add_library(libvideo2x ${LIBVIDEO2X_SOURCES})
target_compile_definitions(libvideo2x PRIVATE LIBVIDEO2X_EXPORTS)
if(WIN32)
set_target_properties(libvideo2x PROPERTIES OUTPUT_NAME libvideo2x)
else()
set_target_properties(libvideo2x PROPERTIES OUTPUT_NAME video2x)
endif()
# Ensure that the shared library is built after the external projects
add_dependencies(libvideo2x realesrgan rife)
# Include directories for the shared library
target_include_directories(libvideo2x PRIVATE
${ALL_INCLUDE_DIRS}
${CMAKE_CURRENT_BINARY_DIR}
${PROJECT_SOURCE_DIR}/include
${PROJECT_SOURCE_DIR}/include/libvideo2x
${PROJECT_SOURCE_DIR}/third_party/librealesrgan_ncnn_vulkan/src
${PROJECT_SOURCE_DIR}/third_party/librife_ncnn_vulkan/src
)
# Compile options for the shared library
target_compile_options(libvideo2x PRIVATE
-fPIC
$<$<CONFIG:Release>:-Ofast>
$<$<CONFIG:Debug>:-g -DDEBUG>
)
# Define the paths to the shared libraries
if(WIN32)
set(REALESRGAN_LIB ${CMAKE_BINARY_DIR}/realesrgan_install/lib/librealesrgan-ncnn-vulkan.lib)
set(RIFE_LIB ${CMAKE_BINARY_DIR}/rife_install/lib/librife-ncnn-vulkan.lib)
else()
set(REALESRGAN_LIB ${CMAKE_BINARY_DIR}/realesrgan_install/lib/librealesrgan-ncnn-vulkan.so)
set(RIFE_LIB ${CMAKE_BINARY_DIR}/rife_install/lib/librife-ncnn-vulkan.so)
endif()
list(APPEND ALL_LIBRARIES ${REALESRGAN_LIB} ${RIFE_LIB})
# Link the shared library with the dependencies
target_link_libraries(libvideo2x PRIVATE ${ALL_LIBRARIES})
if(NOT WIN32)
if(USE_SYSTEM_NCNN)
target_link_libraries(libvideo2x PUBLIC ncnn)
else()
target_link_libraries(libvideo2x PRIVATE ncnn)
endif()
endif()
# Create the executable 'video2x'
if(BUILD_VIDEO2X_CLI)
file(GLOB VIDEO2X_SOURCES tools/video2x/src/*.cpp)
add_executable(video2x ${VIDEO2X_SOURCES})
set_target_properties(video2x PROPERTIES OUTPUT_NAME video2x)
# Include directories for the executable
target_include_directories(video2x PRIVATE
${ALL_INCLUDE_DIRS}
${CMAKE_CURRENT_BINARY_DIR}
${PROJECT_SOURCE_DIR}/include
${PROJECT_SOURCE_DIR}/tools/video2x/include
)
# Compile options for the executable
target_compile_options(video2x PRIVATE $<$<CONFIG:Debug>:-g -DDEBUG>)
# Link the executable with the shared library
target_link_libraries(video2x PRIVATE
libvideo2x
${FFMPEG_LIB}
${SPDLOG_LIB}
${BOOST_LIB}
${VULKAN_LIB}
)
endif()
# Define the default installation directories
if(WIN32)
set(BIN_DESTINATION_DEFAULT ".")
set(INCLUDE_DESTINATION_DEFAULT "include/libvideo2x")
set(LIB_DESTINATION_DEFAULT ".")
set(MODEL_DESTINATION_DEFAULT ".")
else()
set(BIN_DESTINATION_DEFAULT "bin")
set(INCLUDE_DESTINATION_DEFAULT "include/libvideo2x")
set(LIB_DESTINATION_DEFAULT "lib")
set(MODEL_DESTINATION_DEFAULT "share/video2x")
endif()
# Set the installation directories
set(INSTALL_BIN_DESTINATION ${BIN_DESTINATION_DEFAULT} CACHE STRING "")
set(INSTALL_INCLUDE_DESTINATION ${INCLUDE_DESTINATION_DEFAULT} CACHE STRING "")
set(INSTALL_LIB_DESTINATION ${LIB_DESTINATION_DEFAULT} CACHE STRING "")
set(INSTALL_MODEL_DESTINATION ${MODEL_DESTINATION_DEFAULT} CACHE STRING "")
# Common installation rules for libvideo2x and models
install(TARGETS libvideo2x
LIBRARY DESTINATION ${INSTALL_LIB_DESTINATION}
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE
ARCHIVE DESTINATION ${INSTALL_LIB_DESTINATION}
RUNTIME DESTINATION ${INSTALL_BIN_DESTINATION}
)
# Install model files
install(DIRECTORY ${CMAKE_SOURCE_DIR}/models DESTINATION ${INSTALL_MODEL_DESTINATION})
# Install the executable if BUILD_VIDEO2X_CLI is enabled
if(BUILD_VIDEO2X_CLI)
install(TARGETS video2x RUNTIME DESTINATION ${INSTALL_BIN_DESTINATION})
endif()
# Install the header files
file(GLOB HEADER_FILES ${PROJECT_SOURCE_DIR}/include/libvideo2x/*.h)
install(FILES
${HEADER_FILES}
${CMAKE_CURRENT_BINARY_DIR}/libvideo2x/version.h
DESTINATION ${INSTALL_INCLUDE_DESTINATION}
)
# Platform-specific installation rules
if(WIN32)
if(CMAKE_BUILD_TYPE STREQUAL "Release")
set(BOOST_DLL_PATH ${BOOST_BASE_PATH}/boost_program_options-vc143-mt-x64-1_86.dll)
else()
set(BOOST_DLL_PATH ${BOOST_BASE_PATH}/boost_program_options-vc143-mt-gd-x64-1_86.dll)
endif()
file(GLOB FFMPEG_DLLS "${FFMPEG_BASE_PATH}/bin/*.dll")
install(FILES
${CMAKE_BINARY_DIR}/realesrgan_install/bin/librealesrgan-ncnn-vulkan.dll
${CMAKE_BINARY_DIR}/rife_install/bin/librife-ncnn-vulkan.dll
${FFMPEG_DLLS}
${NCNN_BASE_PATH}/bin/ncnn.dll
${BOOST_DLL_PATH}
DESTINATION ${INSTALL_BIN_DESTINATION}
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE
)
else()
install(FILES ${REALESRGAN_LIB} ${RIFE_LIB}
DESTINATION ${INSTALL_LIB_DESTINATION}
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE
)
endif()

20
CODE_OF_CONDUCT.md Normal file
View File

@@ -0,0 +1,20 @@
# Code of Conduct
## Our Goal
Our goal is to create a respectful and inclusive environment for everyone involved in our project.
## Our Standards
- **Respect Others**: Treat everyone with respect, regardless of their background or beliefs.
- **Resolve Peacefully**: Address disagreements constructively and aim for peaceful resolutions.
- **Report Problems**: If you witness or experience any issues, report them to [github@k4yt3x.com](mailto:github@k4yt3x.com).
## Enforcement
- **Confidentiality**: Reports will be handled confidentially.
- **Action**: The project team will review and address reported issues promptly and appropriately.
## Contact
For any questions or concerns, please contact us at [github@k4yt3x.com](mailto:github@k4yt3x.com).

View File

@@ -1,42 +0,0 @@
# Name: Video2X Dockerfile
# Creator: K4YT3X
# Date Created: February 3, 2022
# Last Modified: March 28, 2022
# stage 1: build the python components into wheels
FROM docker.io/nvidia/vulkan:1.2.133-450 AS builder
ENV DEBIAN_FRONTEND=noninteractive
COPY . /video2x
WORKDIR /video2x
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
python3.8 python3-pip python3-opencv python3-pil \
python3.8-dev libvulkan-dev glslang-dev glslang-tools \
build-essential swig \
&& pip wheel -w /wheels wheel pdm-pep517 .
# stage 2: install wheels into the final image
FROM docker.io/nvidia/vulkan:1.2.133-450
LABEL maintainer="K4YT3X <i@k4yt3x.com>" \
org.opencontainers.image.source="https://github.com/k4yt3x/video2x" \
org.opencontainers.image.description="A lossless video/GIF/image upscaler"
ENV DEBIAN_FRONTEND=noninteractive
ENV VK_ICD_FILENAMES=/usr/share/vulkan/icd.d/nvidia_icd.json\
:/usr/share/vulkan/icd.d/radeon_icd.x86_64.json\
:/usr/share/vulkan/icd.d/intel_icd.x86_64.json
COPY --from=builder /var/lib/apt/lists* /var/lib/apt/lists/
COPY --from=builder /wheels /wheels
COPY . /video2x
WORKDIR /video2x
RUN apt-get install -y --no-install-recommends \
python3-pip python3.8-dev \
python3-opencv python3-pil \
mesa-vulkan-drivers cuda-drivers ffmpeg \
&& pip install --no-cache-dir --no-index -f /wheels . \
&& apt-get clean \
&& rm -rf /wheels /video2x /var/lib/apt/lists/*
WORKDIR /host
ENTRYPOINT ["/usr/bin/python3.8", "-m", "video2x"]

View File

@@ -1,34 +0,0 @@
# Name: Video2X Dockerfile (Slim Alpine)
# Creator: K4YT3X
# Date Created: February 1, 2022
# Last Modified: March 18, 2022
# stage: build python components into heels
FROM docker.io/library/python:3.10.4-alpine3.15 AS builder
COPY . /video2x
WORKDIR /video2x
RUN apk add --no-cache \
cmake g++ gcc git ninja swig linux-headers \
ffmpeg-dev glslang-dev jpeg-dev vulkan-loader-dev zlib-dev \
&& pip install -U pip \
&& CMAKE_ARGS="-DWITH_FFMPEG=YES" pip wheel -w /wheels opencv-python \
&& pip wheel -w /wheels wheel pdm-pep517 .
# stage 2: install wheels into final image
FROM docker.io/library/python:3.10.4-alpine3.15
LABEL maintainer="K4YT3X <i@k4yt3x.com>" \
org.opencontainers.image.source="https://github.com/k4yt3x/video2x" \
org.opencontainers.image.description="A lossless video/GIF/image upscaler"
COPY --from=builder /wheels /wheels
COPY . /video2x
WORKDIR /video2x
RUN apk add --no-cache --virtual .run-deps \
ffmpeg libgomp libjpeg-turbo libstdc++ \
vulkan-loader mesa-vulkan-ati \
&& pip install --no-cache-dir -U pip \
&& pip install --no-cache-dir --no-index -f /wheels . \
&& rm -rf /wheels /video2x
WORKDIR /host
ENTRYPOINT ["/usr/local/bin/python", "-m", "video2x"]

201
Makefile Normal file
View File

@@ -0,0 +1,201 @@
.PHONY: build static debug windows windows-debug debian ubuntu clean \
test-realesrgan test-libplacebo test-rife \
memcheck-realesrgan memcheck-libplacebo memcheck-rife \
heaptrack-realesrgan heaptrack-libplacebo heaptrack-rife
BINDIR=build
CC=clang
CXX=clang++
TEST_VIDEO=data/standard-test.mp4
TEST_OUTPUT=data/output.mp4
build:
cmake -S . -B $(BINDIR) \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DCMAKE_C_COMPILER=$(CC) \
-DCMAKE_CXX_COMPILER=$(CXX) \
-DCMAKE_BUILD_TYPE=Release
cmake --build $(BINDIR) --config Release --parallel
cp $(BINDIR)/compile_commands.json .
static:
cmake -S . -B $(BINDIR) \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DCMAKE_C_COMPILER=$(CC) \
-DCMAKE_CXX_COMPILER=$(CXX) \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF
cmake --build $(BINDIR) --config Release --parallel
cp $(BINDIR)/compile_commands.json .
debug:
cmake -S . -B $(BINDIR) \
-DCMAKE_EXPORT_COMPILE_COMMANDS=ON \
-DCMAKE_C_COMPILER=$(CC) \
-DCMAKE_CXX_COMPILER=$(CXX) \
-DCMAKE_BUILD_TYPE=Debug
cmake --build $(BINDIR) --config Debug --parallel
cp $(BINDIR)/compile_commands.json .
windows:
cmake -S . -B $(BINDIR) \
-DUSE_SYSTEM_NCNN=OFF \
-DUSE_SYSTEM_SPDLOG=OFF \
-DUSE_SYSTEM_BOOST=OFF \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=build/libvideo2x-shared
cmake --build $(BINDIR) --config Release --parallel --target install
windows-debug:
cmake -S . -B $(BINDIR) \
-DUSE_SYSTEM_NCNN=OFF \
-DUSE_SYSTEM_SPDLOG=OFF \
-DUSE_SYSTEM_BOOST=OFF \
-DCMAKE_BUILD_TYPE=Debug \
-DCMAKE_INSTALL_PREFIX=build/libvideo2x-shared
cmake --build $(BINDIR) --config Debug --parallel --target install
debian:
apt-get update
apt-get install -y --no-install-recommends \
build-essential cmake clang pkg-config \
libavcodec-dev \
libavdevice-dev \
libavfilter-dev \
libavformat-dev \
libavutil-dev \
libswscale-dev \
libvulkan-dev \
glslang-tools \
libomp-dev \
libspdlog-dev \
libboost-program-options-dev
cmake -B /tmp/build -S . -DUSE_SYSTEM_NCNN=OFF \
-DCMAKE_C_COMPILER=$(CC) -DCMAKE_CXX_COMPILER=$(CXX) \
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/tmp/install \
-DINSTALL_BIN_DESTINATION=. -DINSTALL_INCLUDE_DESTINATION=include \
-DINSTALL_LIB_DESTINATION=. -DINSTALL_MODEL_DESTINATION=.
cmake --build /tmp/build --config Release --target install --parallel
ubuntu2404:
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
build-essential cmake pkg-config \
libavcodec-dev \
libavdevice-dev \
libavfilter-dev \
libavformat-dev \
libavutil-dev \
libswscale-dev \
libvulkan-dev \
glslang-tools \
libomp-dev \
libboost-program-options-dev
cmake -B build -S . -DUSE_SYSTEM_NCNN=OFF -DUSE_SYSTEM_SPDLOG=OFF -DSPDLOG_NO_EXCEPTIONS=ON \
-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ \
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=video2x-linux-ubuntu-amd64/usr
cmake --build build --config Release --target install --parallel
mkdir -p video2x-linux-ubuntu-amd64/DEBIAN
cp packaging/debian/control.ubuntu2404 video2x-linux-ubuntu-amd64/DEBIAN/control
dpkg-deb --build video2x-linux-ubuntu-amd64
ubuntu2204:
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y software-properties-common
add-apt-repository -y ppa:ubuntuhandbook1/ffmpeg7
apt-get update
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
build-essential cmake \
libavcodec-dev \
libavdevice-dev \
libavfilter-dev \
libavformat-dev \
libavutil-dev \
libswscale-dev \
libvulkan-dev \
glslang-tools \
libomp-dev \
libboost-program-options-dev
cmake -B build -S . -DUSE_SYSTEM_NCNN=OFF -DUSE_SYSTEM_SPDLOG=OFF -DSPDLOG_NO_EXCEPTIONS=ON \
-DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ \
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=video2x-linux-ubuntu-amd64/usr
cmake --build build --config Release --target install --parallel
mkdir -p video2x-linux-ubuntu-amd64/DEBIAN
cp packaging/debian/control.ubuntu2204 video2x-linux-ubuntu-amd64/DEBIAN/control
dpkg-deb --build video2x-linux-ubuntu-amd64
clean:
rm -vrf $(BINDIR) data/output*.* heaptrack*.zst valgrind.log
test-realesrgan:
LD_LIBRARY_PATH=$(BINDIR) $(BINDIR)/video2x -i $(TEST_VIDEO) -o $(TEST_OUTPUT) \
-p realesrgan -s 4 --realesrgan-model realesr-animevideov3
test-libplacebo:
LD_LIBRARY_PATH=$(BINDIR) $(BINDIR)/video2x -i $(TEST_VIDEO) -o $(TEST_OUTPUT) \
-p libplacebo -w 1920 -h 1080 --libplacebo-shader anime4k-v4-a
test-rife:
LD_LIBRARY_PATH=$(BINDIR) $(BINDIR)/video2x -i $(TEST_VIDEO) -o $(TEST_OUTPUT) \
-p rife -m 4 --rife-model rife-v4.6
memcheck-realesrgan:
LD_LIBRARY_PATH=$(BINDIR) valgrind \
--tool=memcheck \
--leak-check=full \
--show-leak-kinds=all \
--track-origins=yes \
--show-reachable=yes \
--verbose --log-file="valgrind.log" \
$(BINDIR)/video2x \
-i $(TEST_VIDEO) -o $(TEST_OUTPUT) \
-p realesrgan -s 2 --realesrgan-model realesr-animevideov3 \
-e preset=veryfast -e crf=30
memcheck-libplacebo:
LD_LIBRARY_PATH=$(BINDIR) valgrind \
--tool=memcheck \
--leak-check=full \
--show-leak-kinds=all \
--track-origins=yes \
--show-reachable=yes \
--verbose --log-file="valgrind.log" \
$(BINDIR)/video2x \
-i $(TEST_VIDEO) -o $(TEST_OUTPUT) \
-p libplacebo -w 1920 -h 1080 --libplacebo-shader anime4k-v4-a \
-e preset=veryfast -e crf=30
memcheck-rife:
LD_LIBRARY_PATH=$(BINDIR) valgrind \
--tool=memcheck \
--leak-check=full \
--show-leak-kinds=all \
--track-origins=yes \
--show-reachable=yes \
--verbose --log-file="valgrind.log" \
$(BINDIR)/video2x \
-i $(TEST_VIDEO) -o $(TEST_OUTPUT) \
-p rife -m 4 --rife-model rife-v4.6 \
-e preset=veryfast -e crf=30
heaptrack-realesrgan:
LD_LIBRARY_PATH=$(BINDIR) HEAPTRACK_ENABLE_DEBUGINFOD=1 heaptrack \
$(BINDIR)/video2x \
-i $(TEST_VIDEO) -o $(TEST_OUTPUT) \
-p realesrgan -s 4 --realesrgan-model realesr-animevideov3 \
-e preset=veryfast -e crf=30
heaptrack-libplacebo:
LD_LIBRARY_PATH=$(BINDIR) HEAPTRACK_ENABLE_DEBUGINFOD=1 heaptrack \
$(BINDIR)/video2x \
-i $(TEST_VIDEO) -o $(TEST_OUTPUT) \
-p libplacebo -w 1920 -h 1080 --libplacebo-shader anime4k-v4-a \
-e preset=veryfast -e crf=30
heaptrack-rife:
LD_LIBRARY_PATH=$(BINDIR) HEAPTRACK_ENABLE_DEBUGINFOD=1 heaptrack \
$(BINDIR)/video2x \
-i $(TEST_VIDEO) -o $(TEST_OUTPUT) \
-p rife -m 4 --rife-model rife-v4.6 \
-e preset=veryfast -e crf=30

46
NOTICE
View File

@@ -1,43 +1,11 @@
Video2X
Copyright (c) 2018-2022 K4YT3X and contributors.
Copyright (C) 2018-2024 K4YT3X and contributors.
This product depends on FFmpeg, which is available under
the GNU Lesser General Public License 2.1. The source code can be found at
https://www.gnu.org/licenses/agpl-3.0.txt.
This product depends on FFmpeg, which is available under the GNU Lesser General Public License 2.1.
The source code can be found at https://github.com/FFmpeg/FFmpeg.
This product depends on waifu2x-ncnn-vulkan, which is available under
the MIT License. The source code can be found at
https://github.com/nihui/waifu2x-ncnn-vulkan.
This product depends on Real-ESRGAN ncnn Vulkan, which is available under the MIT License.
The source code can be found at https://github.com/xinntao/Real-ESRGAN-ncnn-vulkan.
This product depends on srmd-ncnn-vulkan, which is available under
the MIT License. The source code can be found at
https://github.com/nihui/srmd-ncnn-vulkan.
This product depends on realsr-ncnn-vulkan, which is available under
the MIT License. The source code can be found at
https://github.com/nihui/realsr-ncnn-vulkan.
This product depends on rife-ncnn-vulkan, which is available under
the MIT License. The source code can be found at
https://github.com/nihui/rife-ncnn-vulkan.
This product depends on ffmpeg-python, which is available under
the Apache License Version 2.0. The source code can be found at
https://github.com/kkroening/ffmpeg-python.
This product depends on Loguru, which is available under
the MIT License. The source code can be found at
https://github.com/Delgan/loguru.
This product depends on opencv-python, which is available under
the MIT License. The source code can be found at
https://github.com/opencv/opencv-python.
This product depends on Pillow, which is available under
the Historical Permission Notice and Disclaimer. The source code
can be found at
https://github.com/python-pillow/Pillow.
This product depends on Rich, which is available under
the MIT License. The source code can be found at
https://github.com/Textualize/rich.
This product depends on ncnn, which is available under the BSD 3-Clause License.
The source code can be found at https://github.com/Tencent/ncnn.

144
README.md
View File

@@ -1,42 +1,78 @@
<p align="center">
<img src="https://user-images.githubusercontent.com/21986859/102733190-872a7880-4334-11eb-8e9e-0ca747f130b1.png"/>
<img src="https://github.com/user-attachments/assets/5cd63373-e806-474f-94ec-6e04963bf90f"
alt="Video2X: A machine learning-based video super resolution and frame interpolation framework."/>
</br>
<img src="https://img.shields.io/github/v/release/k4yt3x/video2x?style=flat-square"/>
<img src="https://img.shields.io/github/workflow/status/k4yt3x/video2x/CI?label=CI&style=flat-square"/>
<img src="https://img.shields.io/github/downloads/k4yt3x/video2x/total?style=flat-square"/>
<img src="https://img.shields.io/github/license/k4yt3x/video2x?style=flat-square"/>
<img src="https://img.shields.io/github/sponsors/k4yt3x?style=flat-square&link=https%3A%2F%2Fgithub.com%2Fsponsors%2Fk4yt3x"/>
<img src="https://img.shields.io/badge/dynamic/json?color=%23e85b46&label=Patreon&query=data.attributes.patron_count&suffix=%20patrons&url=https%3A%2F%2Fwww.patreon.com%2Fapi%2Fcampaigns%2F4507807&style=flat-square"/>
</p>
## [💬 Telegram Discussion Group](https://t.me/video2x)
## 🌟 Version 6.0.0
Join our Telegram discussion group to ask any questions you have about Video2X, chat directly with the developers, or discuss about upscaling technologies and the future of Video2X in general.
Video2X 6.0.0 highlights:
## [🪟 Download Windows Releases](https://github.com/k4yt3x/video2x/releases/tag/4.8.1)
- Complete rewrite of the Video2X project in C/C++.
- Faster and more efficient architecture.
- Cross-platform support for Windows and Linux.
- Vastly improved output quality.
- New GUI and installer for easy setup on Windows.
The latest Windows update is built based on version 4.8.1. GUI is not available for 5.0.0 yet, but is already under development. Go to the [GUI](https://github.com/k4yt3x/video2x/wiki/GUI) page to see the basic usages of the GUI. Try the [mirror](https://files.k4yt3x.com/Projects/Video2X/latest) if you can't download releases directly from GitHub.
<details>
<summary>Click to see more details</summary>
Version 6.0.0 is a complete rewrite of this project in C/C++. It:
- genuinely works this time, with much less hassle compared to the 5.0.0 beta;
- is blazing fast, thanks to the new optimized pipeline and the efficiency of C/C++;
- is cross-platform, available now for both Windows and Linux;
- offers significantly better output quality with Anime4K v4, RealESRGAN, and RIFE;
- supports two modes: filtering (upscaling) and frame interpolation;
- supports Anime4K v4 and all custom MPV-compatible GLSL shaders;
- supports RealESRGAN (all three models) via ncnn and Vulkan;
- supports RIFE via ncnn and Vulkan;
- requires zero additional disk space during processing, just space for the final output; and
- exports a standard C function for easy integration into other projects! (documentation is on the way)
Support for RealCUGAN is coming soon.
</details>
![6.1.0-screenshot](https://github.com/user-attachments/assets/57aa11d0-dd01-49e9-b6b0-2d2f21a363ac)
## [🪟 Install on Windows](https://docs.video2x.org/installing/windows-qt6.html)
**[Download the Latest Windows Installer Executable (6.1.1)](https://github.com/k4yt3x/video2x/releases/download/6.1.1/video2x-qt6-windows-amd64-installer.exe)**
You can download the latest Windows release on the [releases page](https://github.com/k4yt3x/video2x/releases/latest). For basic GUI usage, refer to the [documentation](https://docs.video2x.org/running/desktop.html). If you're unable to download directly from GitHub, try the [mirror site](https://files.k4yt3x.com/Projects/Video2X). The GUI currently supports the following languages:
- English (United States)
- 简体中文(中国)
- 日本語(日本)
- Português (Portugal)
## [🐧 Install on Linux](https://docs.video2x.org/installing/linux.html)
You can install Video2X on Arch Linux using the [video2x-git](https://aur.archlinux.org/packages/video2x-git) AUR package or on Ubuntu/Debian using the `.deb` package from the [releases page](https://github.com/k4yt3x/video2x/releases/latest). If you'd like to build from source, refer to the [PKGBUILD](packaging/arch/PKGBUILD) file for a general overview of the required packages and commands. If you'd prefer not to compile the program from source, consider using the container image below.
## [📦 Container Image](https://docs.video2x.org/running/container.html)
Video2X [container images](https://github.com/k4yt3x/video2x/pkgs/container/video2x) are available on the GitHub Container Registry for easy deployment on Linux and macOS. If you already have Docker/Podman installed, only one command is needed to start upscaling a video. For more information on how to use Video2X's Docker image, please refer to the [documentation](https://docs.video2x.org/running/container.html).
## [📔 Google Colab](https://colab.research.google.com/drive/1gWEwcA9y57EsxwOjmLNmNMXPsafw0kGo)
You can use Video2X on [Google Colab](https://colab.research.google.com/) **for free** if you don't have a powerful GPU of your own. You can borrow a powerful GPU (Tesla K80, T4, P4, or P100) on Google's server for free for a maximum of 12 hours per session. **Please use the free resource fairly** and do not create sessions back-to-back and run upscaling 24/7. This might result in you getting banned. You can get [Colab Pro/Pro+](https://colab.research.google.com/signup/pricing) if you'd like to use better GPUs and get longer runtimes. Usage instructions are embedded in the [Colab Notebook](https://colab.research.google.com/drive/1gWEwcA9y57EsxwOjmLNmNMXPsafw0kGo).
You can use Video2X on [Google Colab](https://colab.research.google.com/) **for free** if you don't have a powerful GPU of your own. You can borrow a powerful GPU (NVIDIA T4, L4, or A100) on Google's server for free for a maximum of 12 hours per session. **Please use the free resource fairly** and do not create sessions back-to-back and run upscaling 24/7. This might result in you getting banned. You can get [Colab Pro/Pro+](https://colab.research.google.com/signup/pricing) if you'd like to use better GPUs and get longer runtimes. Usage instructions are embedded in the [Colab Notebook](https://colab.research.google.com/drive/1gWEwcA9y57EsxwOjmLNmNMXPsafw0kGo).
## [🌙 Download Nightly Releases](https://github.com/k4yt3x/video2x/actions/workflows/ci.yml)
## [💬 Telegram Discussion Group](https://t.me/video2x)
Nightly releases are automatically created by the GitHub Actions CI/CD pipelines. They usually contain more experimental features and bug fixes. However, they are much less stable to the stable releases. **You must log in to GitHub to download CI build artifacts.**
Join our Telegram discussion group to ask any questions you have about Video2X, chat directly with the developers, or discuss super resolution, frame interpolation technologies, or the future of Video2X in general.
## [📦 Container Image](https://github.com/k4yt3x/video2x/pkgs/container/video2x)
## [📖 Documentation](https://docs.video2x.org/)
Video2X container images are available on the GitHub Container Registry for easy deployment on Linux and macOS. If you already have Docker/Podman installed, only one command is needed to start upscaling a video. For more information on how to use Video2X's Docker image, please refer to the [documentations](https://github.com/K4YT3X/video2x/wiki/Container).
Comprehensive documentation for Video2X is available at [https://docs.video2x.org/](https://docs.video2x.org/). It offers detailed instructions on how to [build](https://docs.video2x.org/building/index.html), [install](https://docs.video2x.org/installing/index.html), [use](https://docs.video2x.org/running/index.html), and [develop](https://docs.video2x.org/developing/index.html) with this program.
## [📖 Documentations](https://github.com/k4yt3x/video2x/wiki)
Video2X's documentations are hosted on this repository's [Wiki page](https://github.com/k4yt3x/video2x/wiki). It includes comprehensive explanations for how to use the [GUI](https://github.com/k4yt3x/video2x/wiki/GUI), the [CLI](https://github.com/k4yt3x/video2x/wiki/CLI), the [container image](https://github.com/K4YT3X/video2x/wiki/Container), the [library](https://github.com/k4yt3x/video2x/wiki/Library), and more. The Wiki is open to edits by the community, so you, yes you, can also correct errors or add new contents to the documentations.
## Introduction
Video2X is a video/GIF/image upscaling and frame interpolation software written in Python. It can use these following state-of-the-art algorithms to increase the resolution and frame rate of your video/GIF/image. More information about the algorithms that it supports can be found in [the documentations](https://github.com/k4yt3x/video2x/wiki/Algorithms).
### Video Upscaling
## 📽️ Video Demos (Outdated)
![Spirited Away Demo](https://user-images.githubusercontent.com/21986859/49412428-65083280-f73a-11e8-8237-bb34158a545e.png)\
_Upscale demo: Spirited Away's movie trailer_
@@ -45,80 +81,48 @@ _Upscale demo: Spirited Away's movie trailer_
- 360P to 4K
- The [original video](https://www.youtube.com/watch?v=ByXuk9QqQkk)'s copyright belongs to 株式会社スタジオジブリ
- **Bad Apple!!**: [YouTube](https://youtu.be/A81rW_FI3cw) | [Bilibili](https://www.bilibili.com/video/BV16K411K7ue)
- 384P to 4K 120FPS
- 384P 30 FPS to 4K 120 FPS with waifu2x and DAIN
- The [original video](https://www.nicovideo.jp/watch/sm8628149)'s copyright belongs to あにら
- **The Pet Girl of Sakurasou**: [YouTube](https://youtu.be/M0vDI1HH2_Y) | [Bilibili](https://www.bilibili.com/video/BV14k4y167KP/)
- 240P to 1080P 60FPS
- 240P 29.97 to 1080P 60 FPS with waifu2x and DAIN
- The original video's copyright belongs to ASCII Media Works
### GIF Upscaling
![catfru](https://user-images.githubusercontent.com/21986859/81631069-96d4fc80-93f6-11ea-92fb-33d6545055e7.gif)
![catfru4x](https://user-images.githubusercontent.com/21986859/81631070-976d9300-93f6-11ea-9137-072a3b386110.gif)\
_Catfru scaled up to 4x its original size using waifu2x [(original image)](https://gfycat.com/craftyeasygoingankole-capoo-bug-cat)_
### Image Upscaling
![Jill Comparison](https://user-images.githubusercontent.com/21986859/81631903-79a12d80-93f8-11ea-9c3c-f340240cf08c.png)\
_Image 8x upscaling demo ([original image](https://72915.tumblr.com/post/173793265673) by [nananicu](https://twitter.com/nananicu))_
### Standard Test Clip
The following clip can be used to test if your setup works properly. This is also the standard clip used for running performance benchmarks.
- [Standard Test Clip (240P)](https://files.k4yt3x.com/Resources/Videos/standard-test.mp4) 4.54 MiB
- [waifu2x Upscaled Sample (1080P)](https://files.k4yt3x.com/Resources/Videos/standard-waifu2x.mp4) 4.54 MiB
- [Original Ground Truth (1080P)](https://files.k4yt3x.com/Resources/Videos/standard-original.mp4) 22.2 MiB
- [Ground Truth (1080P)](https://files.k4yt3x.com/Resources/Videos/standard-original.mp4) 22.2 MiB
The original clip came from the anime "さくら荘のペットな彼女."\
Copyright of this clip belongs to 株式会社アニプレックス.
## License
## ⚖️ License
This project is licensed under the [GNU Affero General Public License Version 3 (GNU AGPL v3)](https://www.gnu.org/licenses/agpl-3.0.txt)\
Copyright (c) 2018-2022 K4YT3X and contributors.
This project is licensed under [GNU AGPL version 3](https://www.gnu.org/licenses/agpl-3.0.txt).\
Copyright (C) 2018-2024 K4YT3X and [contributors](https://github.com/k4yt3x/video2x/graphs/contributors).
![AGPLv3](https://www.gnu.org/graphics/agplv3-155x51.png)
This project includes or depends on these following projects:
| Project | License |
| ------------------------------------------------------------------- | --------------- |
| [FFmpeg](https://www.ffmpeg.org/) | LGPLv2.1, GPLv2 |
| [waifu2x-ncnn-vulkan](https://github.com/nihui/waifu2x-ncnn-vulkan) | MIT License |
| [srmd-ncnn-vulkan](https://github.com/nihui/srmd-ncnn-vulkan) | MIT License |
| [realsr-ncnn-vulkan](https://github.com/nihui/realsr-ncnn-vulkan) | MIT License |
| [rife-ncnn-vulkan](https://github.com/nihui/rife-ncnn-vulkan) | MIT License |
| [ffmpeg-python](https://github.com/kkroening/ffmpeg-python) | Apache-2.0 |
| [Loguru](https://github.com/Delgan/loguru) | MIT License |
| [opencv-python](https://github.com/opencv/opencv-python) | MIT License |
| [Pillow](https://github.com/python-pillow/Pillow) | HPND License |
| [Rich](https://github.com/Textualize/rich) | MIT License |
| Project | License |
| ------------------------------------------------------------------------------------- | --------------- |
| [bloc97/Anime4K](https://github.com/bloc97/Anime4K) | MIT License |
| [FFmpeg/FFmpeg](https://www.ffmpeg.org/) | LGPLv2.1, GPLv2 |
| [xinntao/Real-ESRGAN-ncnn-vulkan](https://github.com/xinntao/Real-ESRGAN-ncnn-vulkan) | MIT License |
| [Tencent/ncnn](https://github.com/Tencent/ncnn) | BSD 3-Clause |
Legacy versions of this project includes or depends on these following projects:
More licensing information can be found in the [NOTICE](NOTICE) file.
| Project | License |
| --------------------------------------------------------------------------- | -------------------- |
| [waifu2x-caffe](https://github.com/lltcggie/waifu2x-caffe) | MIT License |
| [waifu2x-converter-cpp](https://github.com/DeadSix27/waifu2x-converter-cpp) | MIT License |
| [Anime4K](https://github.com/bloc97/Anime4K) | MIT License |
| [Anime4KCPP](https://github.com/TianZerL/Anime4KCPP) | MIT License |
| [Gifski](https://github.com/ImageOptim/gifski) | AGPLv3 |
| [tqdm](https://github.com/tqdm/tqdm) | MPLv2.0, MIT License |
## 🌺 Special Thanks
More licensing information can be found in the [NOTICES](NOTICES) file.
## Special Thanks
Appreciations given to the following personnel who have contributed significantly to the project.
Special thanks to the following individuals for their significant contributions to the project, listed in alphabetical order.
- [@ArchieMeng](https://github.com/archiemeng)
- [@BrianPetkovsek](https://github.com/BrianPetkovsek)
- [@sat3ll](https://github.com/sat3ll)
- [@ddouglas87](https://github.com/ddouglas87)
- [@lhanjian](https://github.com/lhanjian)
- [@ArchieMeng](https://github.com/archiemeng)
## Similar Projects
- [Dandere2x](https://github.com/CardinalPanda/dandere2x): A lossy video upscaler also built around `waifu2x`, but with video compression techniques to shorten the time needed to process a video.
- [Waifu2x-Extension-GUI](https://github.com/AaronFeng753/Waifu2x-Extension-GUI): A similar project that focuses more and only on building a better graphical user interface. It is built using C++ and Qt5, and currently only supports the Windows platform.
- [@nihui](https://github.com/nihui)
- [@sat3ll](https://github.com/sat3ll)

14
SECURITY.md Normal file
View File

@@ -0,0 +1,14 @@
# Security Policy
## Reporting a Vulnerability
- **Email**: Send vulnerability reports via email to [github@k4yt3x.com](mailto:github@k4yt3x.com).
- **Details**: Include description, impact, reproduction steps, and proof-of-concept if applicable.
- **Confidentiality**: Do not disclose vulnerabilities publicly until a fix is released.
## Response Process
1. **Acknowledge**: We will acknowledge receipt within 48 hours.
2. **Assess**: Initial assessment and response within 7 days.
3. **Fix**: Develop and release a patch promptly.
4. **Credit**: Acknowledge contributors unless anonymity is requested.

1
docs/book/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
book

11
docs/book/book.toml Normal file
View File

@@ -0,0 +1,11 @@
[book]
authors = ["k4yt3x"]
language = "en"
multilingual = false
title = "Video2X Documentation"
[output.html]
default-theme = "ayu"
preferred-dark-theme = "ayu"
git-repository-url = "https://github.com/k4yt3x/video2x"
edit-url-template = "https://github.com/k4yt3x/video2x/edit/master/docs/book/{path}"

13
docs/book/src/README.md Normal file
View File

@@ -0,0 +1,13 @@
# Introduction
<p align="center">
<img src="https://github.com/user-attachments/assets/5cd63373-e806-474f-94ec-6e04963bf90f"/>
</p>
This site hosts the documentation for the Video2X project, a machine learning-based lossless video super-resolution and frame interpolation framework.
The project's homepage is located on GitHub at: [https://github.com/k4yt3x/video2x](https://github.com/k4yt3x/video2x).
If you have any questions, suggestions, or found any issues in the documentation, please [open an issue](https://github.com/k4yt3x/video2x/issues/new/choose) on GitHub.
> 🚧 Some pages are still under construction.

35
docs/book/src/SUMMARY.md Normal file
View File

@@ -0,0 +1,35 @@
# Summary
[Introduction](README.md)
# Building
- [Building](building/README.md)
- [Windows](building/windows.md)
- [Windows (Qt6)](building/windows-qt6.md)
- [Linux](building/linux.md)
# Installing
- [Installing](installing/README.md)
- [Windows (Command Line)](installing/windows.md)
- [Windows (Qt6 GUI)](installing/windows-qt6.md)
- [Linux](installing/linux.md)
# Running
- [Running](running/README.md)
- [Desktop](running/desktop.md)]
- [Command Line](running/command-line.md)
- [Container](running/container.md)
# Developing
- [Developing](developing/README.md)
- [Architecture](developing/architecture.md)
- [libvideo2x](developing/libvideo2x.md)
# Other
- [Other](other/README.md)
- [History](other/history.md)

View File

@@ -0,0 +1,3 @@
# Building
Instructions for building the project.

View File

@@ -0,0 +1,50 @@
# Linux
Instructions for building this project on Linux.
## Arch Linux
Arch users can build the latest version of the project from the AUR package `video2x-git`. The project's repository also contains another PKGBUILD example at `packaging/arch/PKGBUILD`.
```bash
# Build only
git clone https://aur.archlinux.org/video2x-git.git
cd video2x-git
makepkg -s
```
To build manually from the source, follow the instructions below.
```bash
# Install build and runtime dependencies
# See the PKGBUILD file for the list of up-to-date dependencies
pacman -Sy ffmpeg ncnn vulkan-driver opencv spdlog boost-libs
pacman -Sy git cmake make clang pkgconf vulkan-headers openmp boost
# Clone the repository
git clone --recurse-submodules https://github.com/k4yt3x/video2x.git
cd video2x
# Build the project
make build
```
The built binaries will be located in the `build` directory.
## Ubuntu
Ubuntu users can use the `Makefile` to build the project automatically. The `ubuntu2404` and `ubuntu2204` targets are available for Ubuntu 24.04 and 22.04, respectively. `make` will automatically install the required dependencies, build the project, and package it into a `.deb` package file. It is recommended to perform the build in a container to ensure the environment's consistency and to avoid leaving extra build packages on your system.
```bash
# make needs to be installed manually
sudo apt-get update && sudo apt-get install make
# Clone the repository
git clone --recurse-submodules https://github.com/k4yt3x/video2x.git
cd video2x
# Build the project
make ubuntu2404
```
The built `.deb` package will be located under the current directory.

View File

@@ -0,0 +1,55 @@
# Windows (Qt6)
Instructions for building the Qt6 GUI of this project on Windows.
## 1. Prerequisites
These dependencies must be installed before building the project. This tutorial assumes that Qt6 has been installed to the default location (`C:\Qt`).
- [Visual Studio 2022](https://visualstudio.microsoft.com/vs/)
- Workload: Desktop development with C++
- [winget-cli](https://github.com/microsoft/winget-cli)
- [Qt6](https://www.qt.io/download)
- Component: Qt6 with MSVC 2022 64-bit
- Component: Qt Creator
## 1. Clone the Repository
```bash
# Install Git if not already installed
winget install -e --id=Git.Git
# Clone the repository
git clone --recurse-submodules https://github.com/k4yt3x/video2x-qt6.git
cd video2x-qt6
```
## 2. Install Dependencies
You need to have the `libvideo2x` shared library built before building the Qt6 GUI. Put the built binaries in `third_party/libvideo2x-shared`.
```bash
# Versions of manually installed dependencies
$ffmpegVersion = "7.1"
# Download and extract FFmpeg
curl -Lo ffmpeg-shared.zip "https://github.com/GyanD/codexffmpeg/releases/download/$ffmpegVersion/ffmpeg-$ffmpegVersion-full_build-shared.zip"
Expand-Archive -Path ffmpeg-shared.zip -DestinationPath third_party
Rename-Item -Path "third_party/ffmpeg-$ffmpegVersion-full_build-shared" -NewName ffmpeg-shared
```
## 3. Build the Project
1. Open the `CMakeLists.txt` file in Qt Creator as the project file.
2. Click on the hammer icon at the bottom left of the window to build the project.
3. Built binaries will be located in the `build` directory.
After the build finishes, you will need to copy the Qt6 DLLs and other dependencies to the build directory to run the application. Before you run the following commands, remove everything in the release directory except for `video2x-qt6.exe` and the `.qm` files as they are not required for running the application. Then, run the following command to copy the Qt6 runtime DLLs:
```bash
C:\Qt\6.8.0\msvc2022_64\bin\windeployqt.exe --release --compiler-runtime .\build\Desktop_Qt_6_8_0_MSVC2022_64bit-Release\video2x-qt6.exe
```
You will also need to copy the `libvideo2x` shared library to the build directory. Copy all files under `third_party/libvideo2x-shared` to the release directory except for `include`, `libvideo2x.lib`, and `video2x.exe`.
Now you should be able to run the application by double-clicking on `video2x-qt6.exe`.

View File

@@ -0,0 +1,56 @@
# Windows
Instructions for building this project on Windows.
## 1. Prerequisites
The following tools must be installed manually:
- [Visual Studio 2022](https://visualstudio.microsoft.com/vs/)
- Workload: Desktop development with C++
- [winget-cli](https://github.com/microsoft/winget-cli)
## 2. Clone the Repository
```bash
# Install Git if not already installed
winget install -e --id=Git.Git
# Clone the repository
git clone --recurse-submodules https://github.com/k4yt3x/video2x.git
cd video2x
```
## 3. Install Dependencies
```bash
# Install CMake
winget install -e --id=Kitware.CMake
# Install Vulkan SDK
winget install -e --id=KhronosGroup.VulkanSDK
# Versions of manually installed dependencies
$ffmpegVersion = "7.1"
$ncnnVersion = "20240820"
# Download and extract FFmpeg
curl -Lo ffmpeg-shared.zip "https://github.com/GyanD/codexffmpeg/releases/download/$ffmpegVersion/ffmpeg-$ffmpegVersion-full_build-shared.zip"
Expand-Archive -Path ffmpeg-shared.zip -DestinationPath third_party
Rename-Item -Path "third_party/ffmpeg-$ffmpegVersion-full_build-shared" -NewName ffmpeg-shared
# Download and extract ncnn
curl -Lo ncnn-shared.zip "https://github.com/Tencent/ncnn/releases/download/$ncnnVersion/ncnn-$ncnnVersion-windows-vs2022-shared.zip"
Expand-Archive -Path ncnn-shared.zip -DestinationPath third_party
Rename-Item -Path "third_party/ncnn-$ncnnVersion-windows-vs2022-shared" -NewName ncnn-shared
```
## 4. Build the Project
```bash
cmake -S . -B build -DUSE_SYSTEM_NCNN=OFF -DUSE_SYSTEM_SPDLOG=OFF -DUSE_SYSTEM_BOOST=OFF `
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=build/libvideo2x-shared
cmake --build build --config Release --parallel --target install
```
The built binaries will be located in `build/libvideo2x-shared`.

View File

@@ -0,0 +1,3 @@
# Developing
Development-related instructions and guidelines for this project.

View File

@@ -0,0 +1,38 @@
# Architecture
The basic working principals of Video2X and its historical architectures.
## Video2X <=4.0.0 (Legacy)
Below is the earliest architecture of Video2X. It extracts all of the frames from the video using FFmpeg, processes all frames, and stores them into a folder before running FFmpeg again to convert all of the frames back into a video. The drawbacks of this approach are apparent:
- Storing all frames of the video on disk twice requires a huge amount of storage, often hundreds of gigabytes.
- A lot of disk I/O (reading from/writing to disks) operations occur, which is inefficient. Each step stores its processing results to disk, and the next step has to read them from disk again.
![Video2Xv4](https://github.com/user-attachments/assets/976a93ff-efad-418f-a3e2-272e84db2d74)\
_Video2X architecture before version 5.0.0_
## Video2X 5.0.0 (Legacy)
Video2X 5.0.0's architecture was designed to address the inefficient disk I/O issues. This version uses frame serving and streamlines the process. All stages are started simultaneously, and frames are passed between stages through stdin/stdout pipes. However, this architecture also has several issues:
- At least two instances of FFmpeg will be started, three in the case of Anime4K.
- Passing frames through stdin/stdout is unstable. If frame sizes are incorrect, FFmpeg will hang waiting for the next frame.
- The frames entering and leaving each stage must be RGB24, even if they don't need to be. For instance, if the upscaler used is Anime4K, yuv420p is acceptable, but the frame is first converted by the decoder to RGB24, then converted back into YUV colorspace for libplacebo.
![Video2Xv5](https://github.com/user-attachments/assets/d1f38034-a5d3-4c7e-92bf-a5b30fa9ac72)\
_Video2X 5.x.x architecture_
## Video2X 6.0.0 (Current)
Video2X 6.0.0 (Current)
The newest version of Video2X's architecture addresses the issues of the previous architecture while improving efficiency.
- Frames are only decoded once and encoded once with FFmpeg's libavformat.
- Frames are passed as `AVFrame` structs. Their pixel formats are only converted when needed.
- Frames always stay in RAM, avoiding bottlenecks from disk I/O and pipes.
- Frames always stay in the hardware (GPU) unless they need to be downloaded to be processed by software (partially implemented).
![Video2Xv6 drawio](https://github.com/user-attachments/assets/c5d5fc3b-8688-4d50-b7c0-3b5d825a8c69)\
_Video2X 6.0.0 architecture_

View File

@@ -0,0 +1,5 @@
# libvideo2x
Instructions for using libvideo2x's C API in your own projects.
libvideo2x's API is still highly volatile. This document will be updated as the API stabilizes.

View File

@@ -0,0 +1,3 @@
# Installing
Instructions for installing this project.

View File

@@ -0,0 +1,19 @@
# Linux
Instructions for installing this project on Linux systems.
## Arch Linux
Arch users can install the project from the AUR.
```bash
yay -S video2x-git
```
## Ubuntu
Ubuntu users can download the `.deb` packages from the [releases page](https://github.com/k4yt3x/video2x/releases/latest). Install the package with the APT package manager:
```bash
apt-get install ./video2x-linux-ubuntu2404-amd64.deb
```

View File

@@ -0,0 +1,7 @@
# Windows (Qt6)
You can download the installer for Video2X Qt6 from the [releases page](https://github.com/k4yt3x/video2x/releases/latest). The installer file's name is `video2x-qt6-windows-amd64-installer.exe`.
Download then double-click the installer to start the installation process. The installer will guide you through the installation process. You can choose the installation directory and whether to create a desktop shortcut during the installation.
After the installation is complete, you can start Video2X Qt6 by double-clicking the desktop shortcut.

View File

@@ -0,0 +1,12 @@
# Windows
You can download the latest version of the Windows build from the [releases page](https://github.com/k4yt3x/video2x/releases/latest). Here are the steps to download and install the pre-built binaries to `%LOCALAPPDATA%\Programs`.
```bash
$latestTag = (Invoke-RestMethod -Uri https://api.github.com/repos/k4yt3x/video2x/releases/latest).tag_name
curl -LO "https://github.com/k4yt3x/video2x/releases/download/$latestTag/video2x-windows-amd64.zip"
New-Item -Path "$env:LOCALAPPDATA\Programs\video2x" -ItemType Directory -Force
Expand-Archive -Path .\video2x-windows-amd64.zip -DestinationPath "$env:LOCALAPPDATA\Programs\video2x"
```
You can then add `%LOCALAPPDATA%\Programs\video2x` to your `PATH` environment variable to run `video2x` from the command line.

View File

@@ -0,0 +1 @@
# Other

View File

@@ -0,0 +1,47 @@
# History
Video2X came a long way from its original concepts to what it has become today. It started as a simple concept of "waifu2x can upscale images, and a video is just a sequence of images". Then, a PoC was made which can barely upscale a single video with waifu2x-caffe and with fixed settings. Now, Video2X has become a comprehensive and customizable video upscaling tool with a nice GUI and a community around it. This article documents in detail how Video2X's concept was born, and what happened during its development.
## Origin
The story started with me watching Bad Apple!!'s PV in early 2017. The original PV has a size of `512x384`, which is quite small and thus, quite blurry.
![vlcsnap-2020-05-15-20h41m36s060](https://user-images.githubusercontent.com/21986859/82106016-08ba8800-970e-11ea-85b5-d1b57d34e283.png)\
_A screenshot of the original Bad Apple!! PV_
Around the same time, I was introduced to this amazing project named waifu2x, which upscales (mostly anime) images using machine learning. This created a spark in my head: **if images can be upscaled, aren't videos just a sequence of images?** Then, I started making a proof-of-concept by manually extracting all frames from the original PV using FFmpeg, putting them through waifu2x-caffe, and assembling the frames back into a video again using FFmpeg. This was how the ["4K BadApple!! waifu2x Lossless Upscaled"](https://www.youtube.com/watch?v=FiX7ygnbAHw) video was created.
![4K BadApple waifu2x](https://img.youtube.com/vi/FiX7ygnbAHw/maxresdefault.jpg)\
_Thumbnail of the "4K BadApple!! waifu2x Lossless Upscaled" video_
After this experiment completed successfully, I started thinking about making an automation pipeline, where this manual process will be streamlined, and each of the steps will be handled automatically.
## Proof-of-Concept
When I signed up for Hack the Valley II in late 2017, I didn't know what I was going to make during that hackathon. Our team sat down and thought about what to make for around an hour, but no one came up with anything interesting. All of a sudden, I remembered, "Hey, isn't there a PoC I wanted to make? How about making that our hackathon project?" I then temporarily name the project Video2X, following waifu2x's scheme. Video2X was then born.
I originally wanted to write Video2X for Linux, but it's too complicated to get the original [nagadomi/waifu2x](https://github.com/nagadomi/waifu2x)'s version of waifu2x running, so waifu2x-caffe written for Windows was used to save time. This is why the first version of Video2X only supports Windows, and can only use waifu2x-caffe as its upscaling driver.
![the first commit of Video2X](https://user-images.githubusercontent.com/21986859/82105271-fcccc700-9709-11ea-8861-b22b807f885f.png)\
_video2x.py file in the first version of Video2X_
At the end of the hackathon, we managed to make a [sample comparison video](https://www.youtube.com/watch?v=mGEfasQl2Zo) based on [Spirited Away's official trailer](https://www.youtube.com/watch?v=ByXuk9QqQkk). This video was then published on YouTube and is the same demo video showcased in Video2X's repository. The original link was at [https://www.youtube.com/watch?v=PG94iPoeoZk](https://www.youtube.com/watch?v=PG94iPoeoZk), but it has been moved lately to another account under K4YT3X's name.
![Spirited Away Demo](https://user-images.githubusercontent.com/21986859/49412428-65083280-f73a-11e8-8237-bb34158a545e.png)\
_Upscale Comparison Demonstration_
When we demoed this project, there wasn't so much interest expressed by the judges. We were, however, suggested to pitch our project to Adobe. That didn't end up going anywhere, either. Like most of the other projects in a hackathon, this project didn't win any awards, and just almost vanished after the hackathon was over.
<!--![Hack the Valley II](https://files.k4yt3x.com/Resources/Images/htv2_team_photo.png)\-->
_[Image Removed]_\
_Our team in Hack the Valley II. You can see Video2X's demo video on the computer screens. Image blurred for privacy._
## Video2X 2.0
Roughly three months after the hackathon, I came back to this project and decided it was worth continuing. Although not many people in the hackathon found this project interesting or useful, I saw value in this project. This was further reinforced by the stars I've received in the project's repository.
I continued working on enhancing Video2X and fixing bugs, and Video2X 2.0 was released. The original version of Video2X was only made as a proof-of-concept for the hackathon. A lot of the usability and convenience aspects are ignored in exchange for development speed. The 2.0 version addressed a lot of these issues and made Video2X usable for regular users. Video2X has then also been converted from a hackathon project to a personal open-source project.
![screenshot of Video2X 2.0](https://user-images.githubusercontent.com/21986859/40265170-39c0caae-5b01-11e8-8371-8b6c24769639.png)\
_Screenshot of Video2X 2.0_

View File

@@ -0,0 +1,3 @@
# Running
Instructions for running and using this project.

View File

@@ -0,0 +1,49 @@
# Command Line
Instructions for running Video2X from the command line.
This page does not cover all the options available. For help with more options available, run Video2X with the `--help` argument.
## Basics
Use the following command to upscale a video by 4x with RealESRGAN:
```bash
video2x -i input.mp4 -o output.mp4 -f realesrgan -r 4 -m realesr-animevideov3
```
Use the following command to upscale a video to with libplacebo + Anime4Kv4 Mode A+A:
```bash
video2x -i input.mp4 -o output.mp4 -f libplacebo -s anime4k-v4-a+a -w 3840 -h 2160
```
## Advanced
It is possible to specify custom MPV-compatible GLSL shader files with the `--shader, -s` argument:
```bash
video2x -i input.mp4 -o output.mp4 -f libplacebo -s path/to/custom/shader.glsl -w 3840 -h 2160
```
List the available GPUs with `--list-gpus, -l`:
```bash
$video2x --list-gpus
0. NVIDIA RTX A6000
Type: Discrete GPU
Vulkan API Version: 1.3.289
Driver Version: 565.228.64
```
Select which GPU to use with the `--gpu, -g` argument:
```bash
video2x -i input.mp4 -o output.mp4 -f realesrgan -r 4 -m realesr-animevideov3 -g 1
```
Specify arbitrary extra FFmepg encoder options with the `--extra-encoder-options, -e` argument:
```bash
video2x -i input.mkv -o output.mkv -f realesrgan -m realesrgan-plus -r 4 -c libx264rgb -e crf=17 -e preset=veryslow -e tune=film
```

View File

@@ -0,0 +1,57 @@
# Container
Instructions for running the Video2X container.
## Prerequisites
- Docker, Podman, or another OCI-compatible runtime
- A GPU that supports the Vulkan API
- Check the [Vulkan Hardware Database](https://vulkan.gpuinfo.org/) to see if your GPU supports Vulkan
## Upscaling a Video
This section documents how to upscale a video. Replace `$TAG` with an appropriate container tag. A list of available tags can be found [here](https://github.com/k4yt3x/video2x/pkgs/container/video2x) (e.g., `6.1.1`).
### AMD GPUs
Make sure your host has the proper GPU and Vulkan libraries and drivers, then use the following command to launch the container:
```shell
docker run --gpus all -it --rm -v $PWD/data:/host ghcr.io/k4yt3x/video2x:$TAG -i standard-test.mp4 -o output.mp4 -f realesrgan -r 4 -m realesr-animevideov3
```
### NVIDIA GPUs
In addition to installing the proper drivers on your host, `nvidia-docker2` (NVIDIA Container Toolkit) must also be installed on the host to use NVIDIA GPUs in containers. Below are instructions for how to install it on some popular Linux distributions:
- Debian/Ubuntu
- Follow the [official guide](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/install-guide.html#setting-up-nvidia-container-toolkit) to install `nvidia-docker2`
- Arch/Manjaro
- Install `nvidia-container-toolkit` from the AUR
- E.g., `yay -S nvidia-container-toolkit`
Once all the prerequisites are installed, you can launch the container:
```shell
docker run --gpus all -it --rm -v $PWD:/host ghcr.io/k4yt3x/video2x:$TAG -i standard-test.mp4 -o output.mp4 -f realesrgan -r 4 -m realesr-animevideov3
```
Depending on the version of your nvidia-docker and some other mysterious factors, you can also try setting `no-cgroups = true` in `/etc/nvidia-container-runtime/config.toml` and adding the NVIDIA devices into the container if the command above doesn't work:
```shell
docker run --gpus all --device=/dev/nvidia0 --device=/dev/nvidiactl --runtime nvidia -it --rm -v $PWD:/host ghcr.io/k4yt3x/video2x:$TAG -i standard-test.mp4 -o output.mp4 -f realesrgan -r 4 -m realesr-animevideov3
```
If you are still getting a `vkEnumeratePhysicalDevices failed -3` error at this point, try adding the `--privileged` flag to give the container the same level of permissions as the host:
```shell
docker run --gpus all --privileged -it --rm -v $PWD:/host ghcr.io/k4yt3x/video2x:$TAG -i standard-test.mp4 -o output.mp4 -f realesrgan -r 4 -m realesr-animevideov3
```
### Intel GPUs
Similar to NVIDIA GPUs, you can add `--gpus all` or `--device /dev/dri` to pass the GPU into the container. Adding `--privileged` might help with the performance (thanks @NukeninDark).
```shell
docker run --gpus all --privileged -it --rm -v $PWD:/host ghcr.io/k4yt3x/video2x:$TAG -i standard-test.mp4 -o output.mp4 -f realesrgan -r 4 -m realesr-animevideov3
```

View File

@@ -0,0 +1,3 @@
# Desktop
TODO.

View File

@@ -1,10 +0,0 @@
#!/bin/sh
set -euxo pipefail
sudo podman run \
-it --rm --gpus all -v /dev/dri:/dev/dri \
-v $PWD/data:/host \
ghcr.io/k4yt3x/video2x:5.0.0-beta4-cuda \
-i input.mp4 -o output.mp4 \
interpolate

View File

@@ -1,11 +0,0 @@
#!/bin/sh
set -euxo pipefail
sudo podman run \
-it --rm --gpus all -v /dev/dri:/dev/dri \
-v $PWD/data:/host \
ghcr.io/k4yt3x/video2x:5.0.0-beta4-cuda \
-i input.mp4 -o output.mp4 \
-p5 upscale \
-h 720 -a waifu2x -n3

View File

@@ -1,21 +0,0 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
# built-in imports
import pathlib
# import video2x
from video2x import Video2X
# create video2x object
video2x = Video2X()
# run upscale
video2x.interpolate(
pathlib.Path("input.mp4"), # input video path
pathlib.Path("output.mp4"), # another
3, # processes: number of parallel processors
10, # threshold: adjacent frames with > n% diff won't be processed (100 == process all)
"rife", # algorithm: the algorithm to use to process the video
)

View File

@@ -1,24 +0,0 @@
#!/usr/bin/python
# -*- coding: utf-8 -*-
# built-in imports
import pathlib
# import video2x
from video2x import Video2X
# create video2x object
video2x = Video2X()
# run upscale
video2x.upscale(
pathlib.Path("input.mp4"), # input video path
pathlib.Path("output.mp4"), # another
None, # width: width of output, None == auto
720, # height: height of output, None == auto
3, # noise: noise level, algorithm-dependent
5, # processes: number of parallel processors
0, # threshold: adjacent frames with < n% diff won't be processed (0 == process all)
"waifu2x", # algorithm: the algorithm to use to process the video
)

View File

@@ -0,0 +1,19 @@
#pragma once
extern "C" {
#include <libavformat/avformat.h>
}
AVRational get_video_frame_rate(AVFormatContext *ifmt_ctx, int in_vstream_idx);
int64_t get_video_frame_count(AVFormatContext *ifmt_ctx, int in_vstream_idx);
AVPixelFormat get_encoder_default_pix_fmt(const AVCodec *encoder, AVPixelFormat target_pix_fmt);
float get_frame_diff(AVFrame *frame1, AVFrame *frame2);
void av_bufferref_deleter(AVBufferRef *bufferref);
void av_frame_deleter(AVFrame *frame);
void av_packet_deleter(AVPacket *packet);

View File

@@ -0,0 +1,17 @@
#pragma once
extern "C" {
#include <libavutil/frame.h>
#include <libswscale/swscale.h>
}
#include <mat.h>
// Convert AVFrame to another pixel format
AVFrame *convert_avframe_pix_fmt(AVFrame *src_frame, AVPixelFormat pix_fmt);
// Convert AVFrame to ncnn::Mat
ncnn::Mat avframe_to_ncnn_mat(AVFrame *frame);
// Convert ncnn::Mat to AVFrame
AVFrame *ncnn_mat_to_avframe(const ncnn::Mat &mat, AVPixelFormat pix_fmt);

View File

@@ -0,0 +1,28 @@
#pragma once
#include <filesystem>
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
}
class Decoder {
public:
Decoder();
~Decoder();
int init(AVHWDeviceType hw_type, AVBufferRef *hw_ctx, const std::filesystem::path &in_fpath);
AVFormatContext *get_format_context() const;
AVCodecContext *get_codec_context() const;
int get_video_stream_index() const;
private:
static AVPixelFormat hw_pix_fmt_;
static AVPixelFormat get_hw_format(AVCodecContext *ctx, const AVPixelFormat *pix_fmts);
AVFormatContext *fmt_ctx_;
AVCodecContext *dec_ctx_;
int in_vstream_idx_;
};

View File

@@ -0,0 +1,78 @@
#pragma once
#include <cstdint>
#include <filesystem>
#include <vector>
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libavutil/pixdesc.h>
}
#include "fsutils.h"
// Encoder configurations
struct EncoderConfig {
// Non-AVCodecContext options
AVCodecID codec = AV_CODEC_ID_NONE;
bool copy_streams = true;
// Basic video options
AVPixelFormat pix_fmt = AV_PIX_FMT_NONE;
// Rate control and compression
int64_t bit_rate = 0;
int rc_buffer_size = 0;
int rc_min_rate = 0;
int rc_max_rate = 0;
int qmin = -1;
int qmax = -1;
// GOP and frame structure
int gop_size = -1;
int max_b_frames = -1;
int keyint_min = -1;
int refs = -1;
// Performance and threading
int thread_count = 0;
// Latency and buffering
int delay = -1;
// Extra AVOptions
std::vector<std::pair<StringType, StringType>> extra_opts;
};
class Encoder {
public:
Encoder();
~Encoder();
int init(
AVBufferRef *hw_ctx,
const std::filesystem::path &out_fpath,
AVFormatContext *ifmt_ctx,
AVCodecContext *dec_ctx,
EncoderConfig &enc_cfg,
int width,
int height,
int frm_rate_mul,
int in_vstream_idx
);
int write_frame(AVFrame *frame, int64_t frame_idx);
int flush();
AVCodecContext *get_encoder_context() const;
AVFormatContext *get_format_context() const;
int *get_stream_map() const;
int get_output_video_stream_index() const;
private:
AVFormatContext *ofmt_ctx_;
AVCodecContext *enc_ctx_;
int out_vstream_idx_;
int *stream_map_;
};

View File

@@ -0,0 +1,58 @@
#pragma once
#include <filesystem>
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavfilter/buffersink.h>
#include <libavfilter/buffersrc.h>
}
#include "processor.h"
// FilterLibplacebo class definition
class FilterLibplacebo : public Filter {
public:
// Constructor
FilterLibplacebo(
uint32_t vk_device_index,
const std::filesystem::path &shader_path,
int width,
int height
);
// Destructor
virtual ~FilterLibplacebo() override;
// Initializes the filter with decoder and encoder contexts
int init(AVCodecContext *dec_ctx, AVCodecContext *enc_ctx, AVBufferRef *hw_ctx) override;
// Processes an input frame and returns the processed frame
int filter(AVFrame *in_frame, AVFrame **out_frame) override;
// Flushes any remaining frames
int flush(std::vector<AVFrame *> &flushed_frames) override;
// Returns the filter's type
ProcessorType get_processor_type() const override { return ProcessorType::Libplacebo; }
// Returns the filter's output dimensions
void get_output_dimensions(
const ProcessorConfig &proc_cfg,
int in_width,
int in_height,
int &out_width,
int &out_height
) const override;
private:
AVFilterGraph *filter_graph_;
AVFilterContext *buffersrc_ctx_;
AVFilterContext *buffersink_ctx_;
uint32_t vk_device_index_;
const std::filesystem::path shader_path_;
int width_;
int height_;
AVRational in_time_base_;
AVRational out_time_base_;
};

View File

@@ -0,0 +1,51 @@
#pragma once
extern "C" {
#include <libavcodec/avcodec.h>
}
#include "processor.h"
#include "realesrgan.h"
// FilterRealesrgan class definition
class FilterRealesrgan : public Filter {
public:
// Constructor
FilterRealesrgan(
int gpuid = 0,
bool tta_mode = false,
int scaling_factor = 4,
const StringType model_name = STR("realesr-animevideov3")
);
// Destructor
virtual ~FilterRealesrgan() override;
// Initializes the filter with decoder and encoder contexts
int init(AVCodecContext *dec_ctx, AVCodecContext *enc_ctx, AVBufferRef *hw_ctx) override;
// Processes an input frame and returns the processed frame
int filter(AVFrame *in_frame, AVFrame **out_frame) override;
// Returns the filter's type
ProcessorType get_processor_type() const override { return ProcessorType::RealESRGAN; }
// Returns the filter's output dimensions
void get_output_dimensions(
const ProcessorConfig &proc_cfg,
int in_width,
int in_height,
int &out_width,
int &out_height
) const override;
private:
RealESRGAN *realesrgan_;
int gpuid_;
bool tta_mode_;
int scaling_factor_;
const StringType model_name_;
AVRational in_time_base_;
AVRational out_time_base_;
AVPixelFormat out_pix_fmt_;
};

View File

@@ -0,0 +1,30 @@
#pragma once
#include <filesystem>
#include <string>
#ifdef _WIN32
typedef wchar_t CharType;
#define STR(x) L##x
#else
typedef char CharType;
#define STR(x) x
#endif
#ifdef _WIN32
typedef std::wstring StringType;
#else
typedef std::string StringType;
#endif
bool filepath_is_readable(const std::filesystem::path &path);
std::filesystem::path find_resource_file(const std::filesystem::path &path);
std::string path_to_u8string(const std::filesystem::path &path);
std::string wstring_to_u8string(const StringType &wstr);
StringType path_to_string_type(const std::filesystem::path &path);
StringType to_string_type(int value);

View File

@@ -0,0 +1,56 @@
#pragma once
extern "C" {
#include <libavcodec/avcodec.h>
}
#include "processor.h"
#include "rife.h"
// InterpolatorRIFE class definition
class InterpolatorRIFE : public Interpolator {
public:
// Constructor
InterpolatorRIFE(
int gpuid = 0,
bool tta_mode = false,
bool tta_temporal_mode = false,
bool uhd_mode = false,
int num_threads = 1,
const StringType model_name = STR("rife-v4.6")
);
// Destructor
virtual ~InterpolatorRIFE() override;
// Initializes the interpolator with decoder and encoder contexts
int init(AVCodecContext *dec_ctx, AVCodecContext *enc_ctx, AVBufferRef *hw_ctx) override;
// Processes an input frame and returns the processed frame
int interpolate(AVFrame *prev_frame, AVFrame *in_frame, AVFrame **out_frame, float time_step)
override;
// Returns the interpolator's type
ProcessorType get_processor_type() const override { return ProcessorType::RIFE; }
// Returns the interpolator's output dimensions
void get_output_dimensions(
const ProcessorConfig &proc_cfg,
int in_width,
int in_height,
int &out_width,
int &out_height
) const override;
private:
RIFE *rife_;
int gpuid_;
bool tta_mode_;
bool tta_temporal_mode_;
bool uhd_mode_;
int num_threads_;
const StringType model_name_;
AVRational in_time_base_;
AVRational out_time_base_;
AVPixelFormat out_pix_fmt_;
};

View File

@@ -0,0 +1,19 @@
#pragma once
#include <filesystem>
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavfilter/avfilter.h>
}
int init_libplacebo(
AVFilterGraph **filter_graph,
AVFilterContext **buffersrc_ctx,
AVFilterContext **buffersink_ctx,
AVCodecContext *dec_ctx,
int out_width,
int out_height,
uint32_t vk_device_index,
const std::filesystem::path &shader_path
);

View File

@@ -0,0 +1,98 @@
#pragma once
#include <atomic>
#include <cstdint>
#include <memory>
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
}
#include "avutils.h"
#include "decoder.h"
#include "encoder.h"
#include "logging.h"
#include "processor.h"
#ifdef _WIN32
#ifdef LIBVIDEO2X_EXPORTS
#define LIBVIDEO2X_API __declspec(dllexport)
#else
#define LIBVIDEO2X_API __declspec(dllimport)
#endif
#else
#define LIBVIDEO2X_API
#endif
enum class VideoProcessorState {
Idle,
Running,
Paused,
Failed,
Aborted,
Completed
};
class LIBVIDEO2X_API VideoProcessor {
public:
VideoProcessor(
const ProcessorConfig proc_cfg,
const EncoderConfig enc_cfg,
const uint32_t vk_device_index = 0,
const AVHWDeviceType hw_device_type = AV_HWDEVICE_TYPE_NONE,
const Video2xLogLevel = Video2xLogLevel::Info,
const bool benchmark = false
);
virtual ~VideoProcessor() = default;
[[nodiscard]] int
process(const std::filesystem::path in_fname, const std::filesystem::path out_fname);
void pause() { state_.store(VideoProcessorState::Paused); }
void resume() { state_.store(VideoProcessorState::Running); }
void abort() { state_.store(VideoProcessorState::Aborted); }
VideoProcessorState get_state() const { return state_.load(); }
int64_t get_processed_frames() const { return frame_index_.load(); }
int64_t get_total_frames() const { return total_frames_.load(); }
private:
[[nodiscard]] int
process_frames(Decoder &decoder, Encoder &encoder, std::unique_ptr<Processor> &processor);
[[nodiscard]] int write_frame(AVFrame *frame, Encoder &encoder);
[[nodiscard]] inline int write_raw_packet(
AVPacket *packet,
AVFormatContext *ifmt_ctx,
AVFormatContext *ofmt_ctx,
int *stream_map
);
[[nodiscard]] inline int process_filtering(
std::unique_ptr<Processor> &processor,
Encoder &encoder,
AVFrame *frame,
AVFrame *proc_frame
);
[[nodiscard]] inline int process_interpolation(
std::unique_ptr<Processor> &processor,
Encoder &encoder,
std::unique_ptr<AVFrame, decltype(&av_frame_deleter)> &prev_frame,
AVFrame *frame,
AVFrame *proc_frame
);
ProcessorConfig proc_cfg_;
EncoderConfig enc_cfg_;
uint32_t vk_device_index_ = 0;
AVHWDeviceType hw_device_type_ = AV_HWDEVICE_TYPE_NONE;
bool benchmark_ = false;
std::atomic<VideoProcessorState> state_ = VideoProcessorState::Idle;
std::atomic<int64_t> frame_index_ = 0;
std::atomic<int64_t> total_frames_ = 0;
};

View File

@@ -0,0 +1,20 @@
#pragma once
#include <optional>
#include "fsutils.h"
enum class Video2xLogLevel {
Unknown,
Trace,
Debug,
Info,
Warning,
Error,
Critical,
Off
};
void set_log_level(Video2xLogLevel log_level);
std::optional<Video2xLogLevel> find_log_level_by_name(const StringType &log_level_name);

View File

@@ -0,0 +1,83 @@
#pragma once
#include <variant>
#include <vector>
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavfilter/avfilter.h>
#include <libavutil/buffer.h>
}
#include "fsutils.h"
enum class ProcessingMode {
Filter,
Interpolate,
};
enum class ProcessorType {
None,
Libplacebo,
RealESRGAN,
RIFE,
};
struct LibplaceboConfig {
StringType shader_path;
};
struct RealESRGANConfig {
bool tta_mode = false;
StringType model_name;
};
struct RIFEConfig {
bool tta_mode = false;
bool tta_temporal_mode = false;
bool uhd_mode = false;
int num_threads = 0;
StringType model_name;
};
// Unified filter configuration
struct ProcessorConfig {
ProcessorType processor_type = ProcessorType::None;
int width = 0;
int height = 0;
int scaling_factor = 0;
int frm_rate_mul = 0;
float scn_det_thresh = 0.0f;
std::variant<LibplaceboConfig, RealESRGANConfig, RIFEConfig> config;
};
class Processor {
public:
virtual ~Processor() = default;
virtual int init(AVCodecContext *dec_ctx, AVCodecContext *enc_ctx, AVBufferRef *hw_ctx) = 0;
virtual int flush(std::vector<AVFrame *> &_) { return 0; }
virtual ProcessingMode get_processing_mode() const = 0;
virtual ProcessorType get_processor_type() const = 0;
virtual void get_output_dimensions(
const ProcessorConfig &proc_cfg,
int in_width,
int in_height,
int &width,
int &height
) const = 0;
};
// Abstract base class for filters
class Filter : public Processor {
public:
ProcessingMode get_processing_mode() const override { return ProcessingMode::Filter; }
virtual int filter(AVFrame *in_frame, AVFrame **out_frame) = 0;
};
// Abstract base class for interpolators
class Interpolator : public Processor {
public:
ProcessingMode get_processing_mode() const override { return ProcessingMode::Interpolate; }
virtual int
interpolate(AVFrame *prev_frame, AVFrame *in_frame, AVFrame **out_frame, float time_step) = 0;
};

View File

@@ -0,0 +1,33 @@
#pragma once
#include <functional>
#include <memory>
#include <unordered_map>
#include "processor.h"
// Processor Factory Class
class ProcessorFactory {
public:
using Creator = std::function<std::unique_ptr<Processor>(const ProcessorConfig &, uint32_t)>;
// Singleton instance accessor
static ProcessorFactory &instance();
// Register a processor type with its creation function
void register_processor(ProcessorType type, Creator creator);
// Create a processor instance based on configuration
std::unique_ptr<Processor>
create_processor(const ProcessorConfig &proc_cfg, uint32_t vk_device_index) const;
private:
// Private constructor for Singleton
ProcessorFactory() = default;
// Map of processor types to their creation functions
std::unordered_map<ProcessorType, Creator> creators;
// Static initializer for default processors
static void init_default_processors(ProcessorFactory &factory);
};

View File

@@ -0,0 +1,3 @@
#pragma once
#define LIBVIDEO2X_VERSION_STRING "@PROJECT_VERSION@"

View File

@@ -1,30 +0,0 @@
The Python Imaging Library (PIL) is
Copyright © 1997-2011 by Secret Labs AB
Copyright © 1995-2011 by Fredrik Lundh
Pillow is the friendly PIL fork. It is
Copyright © 2010-2022 by Alex Clark and contributors
Like PIL, Pillow is licensed under the open source HPND License:
By obtaining, using, and/or copying this software and/or its associated
documentation, you agree that you have read, understood, and will comply
with the following terms and conditions:
Permission to use, copy, modify, and distribute this software and its
associated documentation for any purpose and without fee is hereby granted,
provided that the above copyright notice appears in all copies, and that
both that copyright notice and this permission notice appear in supporting
documentation, and that the name of Secret Labs AB or the author not be
used in advertising or publicity pertaining to distribution of the software
without specific, written prior permission.
SECRET LABS AB AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
IN NO EVENT SHALL SECRET LABS AB OR THE AUTHOR BE LIABLE FOR ANY SPECIAL,
INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.

View File

@@ -1,21 +0,0 @@
MIT License
Copyright (c) Olli-Pekka Heinisuo
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -1,21 +0,0 @@
The MIT License (MIT)
Copyright (c) 2019 nihui
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

File diff suppressed because one or more lines are too long

View File

@@ -1,21 +0,0 @@
The MIT License (MIT)
Copyright (c) 2019 nihui
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -1,21 +0,0 @@
The MIT License (MIT)
Copyright (c) 2019 nihui
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -1,21 +0,0 @@
The MIT License (MIT)
Copyright (c) 2019 nihui
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

View File

@@ -1,661 +0,0 @@
GNU AFFERO GENERAL PUBLIC LICENSE
Version 3, 19 November 2007
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU Affero General Public License is a free, copyleft license for
software and other kinds of works, specifically designed to ensure
cooperation with the community in the case of network server software.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
our General Public Licenses are intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
Developers that use our General Public Licenses protect your rights
with two steps: (1) assert copyright on the software, and (2) offer
you this License which gives you legal permission to copy, distribute
and/or modify the software.
A secondary benefit of defending all users' freedom is that
improvements made in alternate versions of the program, if they
receive widespread use, become available for other developers to
incorporate. Many developers of free software are heartened and
encouraged by the resulting cooperation. However, in the case of
software used on network servers, this result may fail to come about.
The GNU General Public License permits making a modified version and
letting the public access it on a server without ever releasing its
source code to the public.
The GNU Affero General Public License is designed specifically to
ensure that, in such cases, the modified source code becomes available
to the community. It requires the operator of a network server to
provide the source code of the modified version running there to the
users of that server. Therefore, public use of a modified version, on
a publicly accessible server, gives the public access to the source
code of the modified version.
An older license, called the Affero General Public License and
published by Affero, was designed to accomplish similar goals. This is
a different license, not a version of the Affero GPL, but Affero has
released a new version of the Affero GPL which permits relicensing under
this license.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU Affero General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Remote Network Interaction; Use with the GNU General Public License.
Notwithstanding any other provision of this License, if you modify the
Program, your modified version must prominently offer all users
interacting with it remotely through a computer network (if your version
supports such interaction) an opportunity to receive the Corresponding
Source of your version by providing access to the Corresponding Source
from a network server at no charge, through some standard or customary
means of facilitating copying of software. This Corresponding Source
shall include the Corresponding Source for any work covered by version 3
of the GNU General Public License that is incorporated pursuant to the
following paragraph.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the work with which it is combined will remain governed by version
3 of the GNU General Public License.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU Affero General Public License from time to time. Such new versions
will be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU Affero General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU Affero General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU Affero General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If your software can interact with users remotely through a computer
network, you should also make sure that it provides a way for users to
get its source. For example, if your program is a web application, its
interface could display a "Source" link that leads users to an archive
of the code. There are many ways you could offer source, and different
solutions will be better for different programs; see section 13 for the
specific requirements.
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU AGPL, see
<https://www.gnu.org/licenses/>.

View File

@@ -1,201 +0,0 @@
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright 2017 Karl Kroening
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

View File

@@ -1,21 +0,0 @@
MIT License
Copyright (c) 2017
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

2585
models/libplacebo/anime4k-v4-a+a.glsl vendored Normal file

File diff suppressed because it is too large Load Diff

2309
models/libplacebo/anime4k-v4-a.glsl vendored Normal file

File diff suppressed because it is too large Load Diff

2585
models/libplacebo/anime4k-v4-b+b.glsl vendored Normal file

File diff suppressed because it is too large Load Diff

2309
models/libplacebo/anime4k-v4-b.glsl vendored Normal file

File diff suppressed because it is too large Load Diff

1711
models/libplacebo/anime4k-v4-c+a.glsl vendored Normal file

File diff suppressed because it is too large Load Diff

1435
models/libplacebo/anime4k-v4-c.glsl vendored Normal file

File diff suppressed because it is too large Load Diff

9173
models/libplacebo/anime4k-v4.1-gan.glsl vendored Normal file

File diff suppressed because it is too large Load Diff

Binary file not shown.

View File

@@ -0,0 +1,43 @@
7767517
41 42
Input input.1 0 1 data
Split splitncnn_input0 1 2 data input.1_splitncnn_0 input.1_splitncnn_1
Convolution Conv_0 1 1 input.1_splitncnn_1 54 0=64 1=3 4=1 5=1 6=1728
PReLU PRelu_1 1 1 54 56 0=64
Convolution Conv_2 1 1 56 57 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_3 1 1 57 59 0=64
Convolution Conv_4 1 1 59 60 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_5 1 1 60 62 0=64
Convolution Conv_6 1 1 62 63 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_7 1 1 63 65 0=64
Convolution Conv_8 1 1 65 66 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_9 1 1 66 68 0=64
Convolution Conv_10 1 1 68 69 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_11 1 1 69 71 0=64
Convolution Conv_12 1 1 71 72 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_13 1 1 72 74 0=64
Convolution Conv_14 1 1 74 75 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_15 1 1 75 77 0=64
Convolution Conv_16 1 1 77 78 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_17 1 1 78 80 0=64
Convolution Conv_18 1 1 80 81 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_19 1 1 81 83 0=64
Convolution Conv_20 1 1 83 84 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_21 1 1 84 86 0=64
Convolution Conv_22 1 1 86 87 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_23 1 1 87 89 0=64
Convolution Conv_24 1 1 89 90 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_25 1 1 90 92 0=64
Convolution Conv_26 1 1 92 93 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_27 1 1 93 95 0=64
Convolution Conv_28 1 1 95 96 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_29 1 1 96 98 0=64
Convolution Conv_30 1 1 98 99 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_31 1 1 99 101 0=64
Convolution Conv_32 1 1 101 102 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_33 1 1 102 104 0=64
Convolution Conv_34 1 1 104 105 0=48 1=3 4=1 5=1 6=27648
PixelShuffle DepthToSpace_35 1 1 105 106 0=4
Interp Resize_37 1 1 input.1_splitncnn_0 111 0=1 1=4.000000e+00 2=4.000000e+00
BinaryOp Add_38 2 1 106 111 112
Interp Resize_40 1 1 112 output 0=3 1=5.000000e-01 2=5.000000e-01

Binary file not shown.

View File

@@ -0,0 +1,43 @@
7767517
41 42
Input input.1 0 1 data
Split splitncnn_input0 1 2 data input.1_splitncnn_0 input.1_splitncnn_1
Convolution Conv_0 1 1 input.1_splitncnn_1 54 0=64 1=3 4=1 5=1 6=1728
PReLU PRelu_1 1 1 54 56 0=64
Convolution Conv_2 1 1 56 57 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_3 1 1 57 59 0=64
Convolution Conv_4 1 1 59 60 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_5 1 1 60 62 0=64
Convolution Conv_6 1 1 62 63 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_7 1 1 63 65 0=64
Convolution Conv_8 1 1 65 66 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_9 1 1 66 68 0=64
Convolution Conv_10 1 1 68 69 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_11 1 1 69 71 0=64
Convolution Conv_12 1 1 71 72 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_13 1 1 72 74 0=64
Convolution Conv_14 1 1 74 75 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_15 1 1 75 77 0=64
Convolution Conv_16 1 1 77 78 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_17 1 1 78 80 0=64
Convolution Conv_18 1 1 80 81 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_19 1 1 81 83 0=64
Convolution Conv_20 1 1 83 84 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_21 1 1 84 86 0=64
Convolution Conv_22 1 1 86 87 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_23 1 1 87 89 0=64
Convolution Conv_24 1 1 89 90 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_25 1 1 90 92 0=64
Convolution Conv_26 1 1 92 93 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_27 1 1 93 95 0=64
Convolution Conv_28 1 1 95 96 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_29 1 1 96 98 0=64
Convolution Conv_30 1 1 98 99 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_31 1 1 99 101 0=64
Convolution Conv_32 1 1 101 102 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_33 1 1 102 104 0=64
Convolution Conv_34 1 1 104 105 0=48 1=3 4=1 5=1 6=27648
PixelShuffle DepthToSpace_35 1 1 105 106 0=4
Interp Resize_37 1 1 input.1_splitncnn_0 111 0=1 1=4.000000e+00 2=4.000000e+00
BinaryOp Add_38 2 1 106 111 112
Interp Resize_40 1 1 112 output 0=3 1=7.500000e-01 2=7.500000e-01

Binary file not shown.

View File

@@ -0,0 +1,42 @@
7767517
40 41
Input input.1 0 1 data
Split splitncnn_input0 1 2 data input.1_splitncnn_0 input.1_splitncnn_1
Convolution Conv_0 1 1 input.1_splitncnn_1 54 0=64 1=3 4=1 5=1 6=1728
PReLU PRelu_1 1 1 54 56 0=64
Convolution Conv_2 1 1 56 57 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_3 1 1 57 59 0=64
Convolution Conv_4 1 1 59 60 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_5 1 1 60 62 0=64
Convolution Conv_6 1 1 62 63 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_7 1 1 63 65 0=64
Convolution Conv_8 1 1 65 66 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_9 1 1 66 68 0=64
Convolution Conv_10 1 1 68 69 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_11 1 1 69 71 0=64
Convolution Conv_12 1 1 71 72 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_13 1 1 72 74 0=64
Convolution Conv_14 1 1 74 75 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_15 1 1 75 77 0=64
Convolution Conv_16 1 1 77 78 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_17 1 1 78 80 0=64
Convolution Conv_18 1 1 80 81 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_19 1 1 81 83 0=64
Convolution Conv_20 1 1 83 84 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_21 1 1 84 86 0=64
Convolution Conv_22 1 1 86 87 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_23 1 1 87 89 0=64
Convolution Conv_24 1 1 89 90 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_25 1 1 90 92 0=64
Convolution Conv_26 1 1 92 93 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_27 1 1 93 95 0=64
Convolution Conv_28 1 1 95 96 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_29 1 1 96 98 0=64
Convolution Conv_30 1 1 98 99 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_31 1 1 99 101 0=64
Convolution Conv_32 1 1 101 102 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_33 1 1 102 104 0=64
Convolution Conv_34 1 1 104 105 0=48 1=3 4=1 5=1 6=27648
PixelShuffle DepthToSpace_35 1 1 105 106 0=4
Interp Resize_37 1 1 input.1_splitncnn_0 111 0=1 1=4.000000e+00 2=4.000000e+00
BinaryOp Add_38 2 1 106 111 output

Binary file not shown.

View File

@@ -0,0 +1,270 @@
7767517
268 473
Input input.1 0 1 data
Convolution Conv_0 1 1 data 193 0=64 1=3 4=1 5=1 6=1728
Split splitncnn_0 1 8 193 193_splitncnn_0 193_splitncnn_1 193_splitncnn_2 193_splitncnn_3 193_splitncnn_4 193_splitncnn_5 193_splitncnn_6 193_splitncnn_7
Convolution Conv_1 1 1 193_splitncnn_7 195 0=32 1=3 4=1 5=1 6=18432 9=2 -23310=1,2.000000e-01
Split splitncnn_1 1 4 195 195_splitncnn_0 195_splitncnn_1 195_splitncnn_2 195_splitncnn_3
Concat Concat_3 2 1 193_splitncnn_6 195_splitncnn_3 196
Convolution Conv_4 1 1 196 198 0=32 1=3 4=1 5=1 6=27648 9=2 -23310=1,2.000000e-01
Split splitncnn_2 1 3 198 198_splitncnn_0 198_splitncnn_1 198_splitncnn_2
Concat Concat_6 3 1 193_splitncnn_5 195_splitncnn_2 198_splitncnn_2 199
Convolution Conv_7 1 1 199 201 0=32 1=3 4=1 5=1 6=36864 9=2 -23310=1,2.000000e-01
Split splitncnn_3 1 2 201 201_splitncnn_0 201_splitncnn_1
Concat Concat_9 4 1 193_splitncnn_4 195_splitncnn_1 198_splitncnn_1 201_splitncnn_1 202
Convolution Conv_10 1 1 202 204 0=32 1=3 4=1 5=1 6=46080 9=2 -23310=1,2.000000e-01
Concat Concat_12 5 1 193_splitncnn_3 195_splitncnn_0 198_splitncnn_0 201_splitncnn_0 204 205
Convolution Conv_13 1 1 205 206 0=64 1=3 4=1 5=1 6=110592
Eltwise Add_16 2 1 206 193_splitncnn_2 209 0=1 -23301=2,2.000000e-01,1.000000e+00
Split splitncnn_4 1 6 209 209_splitncnn_0 209_splitncnn_1 209_splitncnn_2 209_splitncnn_3 209_splitncnn_4 209_splitncnn_5
Convolution Conv_17 1 1 209_splitncnn_5 211 0=32 1=3 4=1 5=1 6=18432 9=2 -23310=1,2.000000e-01
Split splitncnn_5 1 4 211 211_splitncnn_0 211_splitncnn_1 211_splitncnn_2 211_splitncnn_3
Concat Concat_19 2 1 209_splitncnn_4 211_splitncnn_3 212
Convolution Conv_20 1 1 212 214 0=32 1=3 4=1 5=1 6=27648 9=2 -23310=1,2.000000e-01
Split splitncnn_6 1 3 214 214_splitncnn_0 214_splitncnn_1 214_splitncnn_2
Concat Concat_22 3 1 209_splitncnn_3 211_splitncnn_2 214_splitncnn_2 215
Convolution Conv_23 1 1 215 217 0=32 1=3 4=1 5=1 6=36864 9=2 -23310=1,2.000000e-01
Split splitncnn_7 1 2 217 217_splitncnn_0 217_splitncnn_1
Concat Concat_25 4 1 209_splitncnn_2 211_splitncnn_1 214_splitncnn_1 217_splitncnn_1 218
Convolution Conv_26 1 1 218 220 0=32 1=3 4=1 5=1 6=46080 9=2 -23310=1,2.000000e-01
Concat Concat_28 5 1 209_splitncnn_1 211_splitncnn_0 214_splitncnn_0 217_splitncnn_0 220 221
Convolution Conv_29 1 1 221 222 0=64 1=3 4=1 5=1 6=110592
Eltwise Add_32 2 1 222 209_splitncnn_0 225 0=1 -23301=2,2.000000e-01,1.000000e+00
Split splitncnn_8 1 6 225 225_splitncnn_0 225_splitncnn_1 225_splitncnn_2 225_splitncnn_3 225_splitncnn_4 225_splitncnn_5
Convolution Conv_33 1 1 225_splitncnn_5 227 0=32 1=3 4=1 5=1 6=18432 9=2 -23310=1,2.000000e-01
Split splitncnn_9 1 4 227 227_splitncnn_0 227_splitncnn_1 227_splitncnn_2 227_splitncnn_3
Concat Concat_35 2 1 225_splitncnn_4 227_splitncnn_3 228
Convolution Conv_36 1 1 228 230 0=32 1=3 4=1 5=1 6=27648 9=2 -23310=1,2.000000e-01
Split splitncnn_10 1 3 230 230_splitncnn_0 230_splitncnn_1 230_splitncnn_2
Concat Concat_38 3 1 225_splitncnn_3 227_splitncnn_2 230_splitncnn_2 231
Convolution Conv_39 1 1 231 233 0=32 1=3 4=1 5=1 6=36864 9=2 -23310=1,2.000000e-01
Split splitncnn_11 1 2 233 233_splitncnn_0 233_splitncnn_1
Concat Concat_41 4 1 225_splitncnn_2 227_splitncnn_1 230_splitncnn_1 233_splitncnn_1 234
Convolution Conv_42 1 1 234 236 0=32 1=3 4=1 5=1 6=46080 9=2 -23310=1,2.000000e-01
Concat Concat_44 5 1 225_splitncnn_1 227_splitncnn_0 230_splitncnn_0 233_splitncnn_0 236 237
Convolution Conv_45 1 1 237 238 0=64 1=3 4=1 5=1 6=110592
Eltwise Add_48 2 1 238 225_splitncnn_0 241 0=1 -23301=2,2.000000e-01,1.000000e+00
Eltwise Add_51 2 1 241 193_splitncnn_1 244 0=1 -23301=2,2.000000e-01,1.000000e+00
Split splitncnn_12 1 7 244 244_splitncnn_0 244_splitncnn_1 244_splitncnn_2 244_splitncnn_3 244_splitncnn_4 244_splitncnn_5 244_splitncnn_6
Convolution Conv_52 1 1 244_splitncnn_6 246 0=32 1=3 4=1 5=1 6=18432 9=2 -23310=1,2.000000e-01
Split splitncnn_13 1 4 246 246_splitncnn_0 246_splitncnn_1 246_splitncnn_2 246_splitncnn_3
Concat Concat_54 2 1 244_splitncnn_5 246_splitncnn_3 247
Convolution Conv_55 1 1 247 249 0=32 1=3 4=1 5=1 6=27648 9=2 -23310=1,2.000000e-01
Split splitncnn_14 1 3 249 249_splitncnn_0 249_splitncnn_1 249_splitncnn_2
Concat Concat_57 3 1 244_splitncnn_4 246_splitncnn_2 249_splitncnn_2 250
Convolution Conv_58 1 1 250 252 0=32 1=3 4=1 5=1 6=36864 9=2 -23310=1,2.000000e-01
Split splitncnn_15 1 2 252 252_splitncnn_0 252_splitncnn_1
Concat Concat_60 4 1 244_splitncnn_3 246_splitncnn_1 249_splitncnn_1 252_splitncnn_1 253
Convolution Conv_61 1 1 253 255 0=32 1=3 4=1 5=1 6=46080 9=2 -23310=1,2.000000e-01
Concat Concat_63 5 1 244_splitncnn_2 246_splitncnn_0 249_splitncnn_0 252_splitncnn_0 255 256
Convolution Conv_64 1 1 256 257 0=64 1=3 4=1 5=1 6=110592
Eltwise Add_67 2 1 257 244_splitncnn_1 260 0=1 -23301=2,2.000000e-01,1.000000e+00
Split splitncnn_16 1 6 260 260_splitncnn_0 260_splitncnn_1 260_splitncnn_2 260_splitncnn_3 260_splitncnn_4 260_splitncnn_5
Convolution Conv_68 1 1 260_splitncnn_5 262 0=32 1=3 4=1 5=1 6=18432 9=2 -23310=1,2.000000e-01
Split splitncnn_17 1 4 262 262_splitncnn_0 262_splitncnn_1 262_splitncnn_2 262_splitncnn_3
Concat Concat_70 2 1 260_splitncnn_4 262_splitncnn_3 263
Convolution Conv_71 1 1 263 265 0=32 1=3 4=1 5=1 6=27648 9=2 -23310=1,2.000000e-01
Split splitncnn_18 1 3 265 265_splitncnn_0 265_splitncnn_1 265_splitncnn_2
Concat Concat_73 3 1 260_splitncnn_3 262_splitncnn_2 265_splitncnn_2 266
Convolution Conv_74 1 1 266 268 0=32 1=3 4=1 5=1 6=36864 9=2 -23310=1,2.000000e-01
Split splitncnn_19 1 2 268 268_splitncnn_0 268_splitncnn_1
Concat Concat_76 4 1 260_splitncnn_2 262_splitncnn_1 265_splitncnn_1 268_splitncnn_1 269
Convolution Conv_77 1 1 269 271 0=32 1=3 4=1 5=1 6=46080 9=2 -23310=1,2.000000e-01
Concat Concat_79 5 1 260_splitncnn_1 262_splitncnn_0 265_splitncnn_0 268_splitncnn_0 271 272
Convolution Conv_80 1 1 272 273 0=64 1=3 4=1 5=1 6=110592
Eltwise Add_83 2 1 273 260_splitncnn_0 276 0=1 -23301=2,2.000000e-01,1.000000e+00
Split splitncnn_20 1 6 276 276_splitncnn_0 276_splitncnn_1 276_splitncnn_2 276_splitncnn_3 276_splitncnn_4 276_splitncnn_5
Convolution Conv_84 1 1 276_splitncnn_5 278 0=32 1=3 4=1 5=1 6=18432 9=2 -23310=1,2.000000e-01
Split splitncnn_21 1 4 278 278_splitncnn_0 278_splitncnn_1 278_splitncnn_2 278_splitncnn_3
Concat Concat_86 2 1 276_splitncnn_4 278_splitncnn_3 279
Convolution Conv_87 1 1 279 281 0=32 1=3 4=1 5=1 6=27648 9=2 -23310=1,2.000000e-01
Split splitncnn_22 1 3 281 281_splitncnn_0 281_splitncnn_1 281_splitncnn_2
Concat Concat_89 3 1 276_splitncnn_3 278_splitncnn_2 281_splitncnn_2 282
Convolution Conv_90 1 1 282 284 0=32 1=3 4=1 5=1 6=36864 9=2 -23310=1,2.000000e-01
Split splitncnn_23 1 2 284 284_splitncnn_0 284_splitncnn_1
Concat Concat_92 4 1 276_splitncnn_2 278_splitncnn_1 281_splitncnn_1 284_splitncnn_1 285
Convolution Conv_93 1 1 285 287 0=32 1=3 4=1 5=1 6=46080 9=2 -23310=1,2.000000e-01
Concat Concat_95 5 1 276_splitncnn_1 278_splitncnn_0 281_splitncnn_0 284_splitncnn_0 287 288
Convolution Conv_96 1 1 288 289 0=64 1=3 4=1 5=1 6=110592
Eltwise Add_99 2 1 289 276_splitncnn_0 292 0=1 -23301=2,2.000000e-01,1.000000e+00
Eltwise Add_102 2 1 292 244_splitncnn_0 295 0=1 -23301=2,2.000000e-01,1.000000e+00
Split splitncnn_24 1 7 295 295_splitncnn_0 295_splitncnn_1 295_splitncnn_2 295_splitncnn_3 295_splitncnn_4 295_splitncnn_5 295_splitncnn_6
Convolution Conv_103 1 1 295_splitncnn_6 297 0=32 1=3 4=1 5=1 6=18432 9=2 -23310=1,2.000000e-01
Split splitncnn_25 1 4 297 297_splitncnn_0 297_splitncnn_1 297_splitncnn_2 297_splitncnn_3
Concat Concat_105 2 1 295_splitncnn_5 297_splitncnn_3 298
Convolution Conv_106 1 1 298 300 0=32 1=3 4=1 5=1 6=27648 9=2 -23310=1,2.000000e-01
Split splitncnn_26 1 3 300 300_splitncnn_0 300_splitncnn_1 300_splitncnn_2
Concat Concat_108 3 1 295_splitncnn_4 297_splitncnn_2 300_splitncnn_2 301
Convolution Conv_109 1 1 301 303 0=32 1=3 4=1 5=1 6=36864 9=2 -23310=1,2.000000e-01
Split splitncnn_27 1 2 303 303_splitncnn_0 303_splitncnn_1
Concat Concat_111 4 1 295_splitncnn_3 297_splitncnn_1 300_splitncnn_1 303_splitncnn_1 304
Convolution Conv_112 1 1 304 306 0=32 1=3 4=1 5=1 6=46080 9=2 -23310=1,2.000000e-01
Concat Concat_114 5 1 295_splitncnn_2 297_splitncnn_0 300_splitncnn_0 303_splitncnn_0 306 307
Convolution Conv_115 1 1 307 308 0=64 1=3 4=1 5=1 6=110592
Eltwise Add_118 2 1 308 295_splitncnn_1 311 0=1 -23301=2,2.000000e-01,1.000000e+00
Split splitncnn_28 1 6 311 311_splitncnn_0 311_splitncnn_1 311_splitncnn_2 311_splitncnn_3 311_splitncnn_4 311_splitncnn_5
Convolution Conv_119 1 1 311_splitncnn_5 313 0=32 1=3 4=1 5=1 6=18432 9=2 -23310=1,2.000000e-01
Split splitncnn_29 1 4 313 313_splitncnn_0 313_splitncnn_1 313_splitncnn_2 313_splitncnn_3
Concat Concat_121 2 1 311_splitncnn_4 313_splitncnn_3 314
Convolution Conv_122 1 1 314 316 0=32 1=3 4=1 5=1 6=27648 9=2 -23310=1,2.000000e-01
Split splitncnn_30 1 3 316 316_splitncnn_0 316_splitncnn_1 316_splitncnn_2
Concat Concat_124 3 1 311_splitncnn_3 313_splitncnn_2 316_splitncnn_2 317
Convolution Conv_125 1 1 317 319 0=32 1=3 4=1 5=1 6=36864 9=2 -23310=1,2.000000e-01
Split splitncnn_31 1 2 319 319_splitncnn_0 319_splitncnn_1
Concat Concat_127 4 1 311_splitncnn_2 313_splitncnn_1 316_splitncnn_1 319_splitncnn_1 320
Convolution Conv_128 1 1 320 322 0=32 1=3 4=1 5=1 6=46080 9=2 -23310=1,2.000000e-01
Concat Concat_130 5 1 311_splitncnn_1 313_splitncnn_0 316_splitncnn_0 319_splitncnn_0 322 323
Convolution Conv_131 1 1 323 324 0=64 1=3 4=1 5=1 6=110592
Eltwise Add_134 2 1 324 311_splitncnn_0 327 0=1 -23301=2,2.000000e-01,1.000000e+00
Split splitncnn_32 1 6 327 327_splitncnn_0 327_splitncnn_1 327_splitncnn_2 327_splitncnn_3 327_splitncnn_4 327_splitncnn_5
Convolution Conv_135 1 1 327_splitncnn_5 329 0=32 1=3 4=1 5=1 6=18432 9=2 -23310=1,2.000000e-01
Split splitncnn_33 1 4 329 329_splitncnn_0 329_splitncnn_1 329_splitncnn_2 329_splitncnn_3
Concat Concat_137 2 1 327_splitncnn_4 329_splitncnn_3 330
Convolution Conv_138 1 1 330 332 0=32 1=3 4=1 5=1 6=27648 9=2 -23310=1,2.000000e-01
Split splitncnn_34 1 3 332 332_splitncnn_0 332_splitncnn_1 332_splitncnn_2
Concat Concat_140 3 1 327_splitncnn_3 329_splitncnn_2 332_splitncnn_2 333
Convolution Conv_141 1 1 333 335 0=32 1=3 4=1 5=1 6=36864 9=2 -23310=1,2.000000e-01
Split splitncnn_35 1 2 335 335_splitncnn_0 335_splitncnn_1
Concat Concat_143 4 1 327_splitncnn_2 329_splitncnn_1 332_splitncnn_1 335_splitncnn_1 336
Convolution Conv_144 1 1 336 338 0=32 1=3 4=1 5=1 6=46080 9=2 -23310=1,2.000000e-01
Concat Concat_146 5 1 327_splitncnn_1 329_splitncnn_0 332_splitncnn_0 335_splitncnn_0 338 339
Convolution Conv_147 1 1 339 340 0=64 1=3 4=1 5=1 6=110592
Eltwise Add_150 2 1 340 327_splitncnn_0 343 0=1 -23301=2,2.000000e-01,1.000000e+00
Eltwise Add_153 2 1 343 295_splitncnn_0 346 0=1 -23301=2,2.000000e-01,1.000000e+00
Split splitncnn_36 1 7 346 346_splitncnn_0 346_splitncnn_1 346_splitncnn_2 346_splitncnn_3 346_splitncnn_4 346_splitncnn_5 346_splitncnn_6
Convolution Conv_154 1 1 346_splitncnn_6 348 0=32 1=3 4=1 5=1 6=18432 9=2 -23310=1,2.000000e-01
Split splitncnn_37 1 4 348 348_splitncnn_0 348_splitncnn_1 348_splitncnn_2 348_splitncnn_3
Concat Concat_156 2 1 346_splitncnn_5 348_splitncnn_3 349
Convolution Conv_157 1 1 349 351 0=32 1=3 4=1 5=1 6=27648 9=2 -23310=1,2.000000e-01
Split splitncnn_38 1 3 351 351_splitncnn_0 351_splitncnn_1 351_splitncnn_2
Concat Concat_159 3 1 346_splitncnn_4 348_splitncnn_2 351_splitncnn_2 352
Convolution Conv_160 1 1 352 354 0=32 1=3 4=1 5=1 6=36864 9=2 -23310=1,2.000000e-01
Split splitncnn_39 1 2 354 354_splitncnn_0 354_splitncnn_1
Concat Concat_162 4 1 346_splitncnn_3 348_splitncnn_1 351_splitncnn_1 354_splitncnn_1 355
Convolution Conv_163 1 1 355 357 0=32 1=3 4=1 5=1 6=46080 9=2 -23310=1,2.000000e-01
Concat Concat_165 5 1 346_splitncnn_2 348_splitncnn_0 351_splitncnn_0 354_splitncnn_0 357 358
Convolution Conv_166 1 1 358 359 0=64 1=3 4=1 5=1 6=110592
Eltwise Add_169 2 1 359 346_splitncnn_1 362 0=1 -23301=2,2.000000e-01,1.000000e+00
Split splitncnn_40 1 6 362 362_splitncnn_0 362_splitncnn_1 362_splitncnn_2 362_splitncnn_3 362_splitncnn_4 362_splitncnn_5
Convolution Conv_170 1 1 362_splitncnn_5 364 0=32 1=3 4=1 5=1 6=18432 9=2 -23310=1,2.000000e-01
Split splitncnn_41 1 4 364 364_splitncnn_0 364_splitncnn_1 364_splitncnn_2 364_splitncnn_3
Concat Concat_172 2 1 362_splitncnn_4 364_splitncnn_3 365
Convolution Conv_173 1 1 365 367 0=32 1=3 4=1 5=1 6=27648 9=2 -23310=1,2.000000e-01
Split splitncnn_42 1 3 367 367_splitncnn_0 367_splitncnn_1 367_splitncnn_2
Concat Concat_175 3 1 362_splitncnn_3 364_splitncnn_2 367_splitncnn_2 368
Convolution Conv_176 1 1 368 370 0=32 1=3 4=1 5=1 6=36864 9=2 -23310=1,2.000000e-01
Split splitncnn_43 1 2 370 370_splitncnn_0 370_splitncnn_1
Concat Concat_178 4 1 362_splitncnn_2 364_splitncnn_1 367_splitncnn_1 370_splitncnn_1 371
Convolution Conv_179 1 1 371 373 0=32 1=3 4=1 5=1 6=46080 9=2 -23310=1,2.000000e-01
Concat Concat_181 5 1 362_splitncnn_1 364_splitncnn_0 367_splitncnn_0 370_splitncnn_0 373 374
Convolution Conv_182 1 1 374 375 0=64 1=3 4=1 5=1 6=110592
Eltwise Add_185 2 1 375 362_splitncnn_0 378 0=1 -23301=2,2.000000e-01,1.000000e+00
Split splitncnn_44 1 6 378 378_splitncnn_0 378_splitncnn_1 378_splitncnn_2 378_splitncnn_3 378_splitncnn_4 378_splitncnn_5
Convolution Conv_186 1 1 378_splitncnn_5 380 0=32 1=3 4=1 5=1 6=18432 9=2 -23310=1,2.000000e-01
Split splitncnn_45 1 4 380 380_splitncnn_0 380_splitncnn_1 380_splitncnn_2 380_splitncnn_3
Concat Concat_188 2 1 378_splitncnn_4 380_splitncnn_3 381
Convolution Conv_189 1 1 381 383 0=32 1=3 4=1 5=1 6=27648 9=2 -23310=1,2.000000e-01
Split splitncnn_46 1 3 383 383_splitncnn_0 383_splitncnn_1 383_splitncnn_2
Concat Concat_191 3 1 378_splitncnn_3 380_splitncnn_2 383_splitncnn_2 384
Convolution Conv_192 1 1 384 386 0=32 1=3 4=1 5=1 6=36864 9=2 -23310=1,2.000000e-01
Split splitncnn_47 1 2 386 386_splitncnn_0 386_splitncnn_1
Concat Concat_194 4 1 378_splitncnn_2 380_splitncnn_1 383_splitncnn_1 386_splitncnn_1 387
Convolution Conv_195 1 1 387 389 0=32 1=3 4=1 5=1 6=46080 9=2 -23310=1,2.000000e-01
Concat Concat_197 5 1 378_splitncnn_1 380_splitncnn_0 383_splitncnn_0 386_splitncnn_0 389 390
Convolution Conv_198 1 1 390 391 0=64 1=3 4=1 5=1 6=110592
Eltwise Add_201 2 1 391 378_splitncnn_0 394 0=1 -23301=2,2.000000e-01,1.000000e+00
Eltwise Add_204 2 1 394 346_splitncnn_0 397 0=1 -23301=2,2.000000e-01,1.000000e+00
Split splitncnn_48 1 7 397 397_splitncnn_0 397_splitncnn_1 397_splitncnn_2 397_splitncnn_3 397_splitncnn_4 397_splitncnn_5 397_splitncnn_6
Convolution Conv_205 1 1 397_splitncnn_6 399 0=32 1=3 4=1 5=1 6=18432 9=2 -23310=1,2.000000e-01
Split splitncnn_49 1 4 399 399_splitncnn_0 399_splitncnn_1 399_splitncnn_2 399_splitncnn_3
Concat Concat_207 2 1 397_splitncnn_5 399_splitncnn_3 400
Convolution Conv_208 1 1 400 402 0=32 1=3 4=1 5=1 6=27648 9=2 -23310=1,2.000000e-01
Split splitncnn_50 1 3 402 402_splitncnn_0 402_splitncnn_1 402_splitncnn_2
Concat Concat_210 3 1 397_splitncnn_4 399_splitncnn_2 402_splitncnn_2 403
Convolution Conv_211 1 1 403 405 0=32 1=3 4=1 5=1 6=36864 9=2 -23310=1,2.000000e-01
Split splitncnn_51 1 2 405 405_splitncnn_0 405_splitncnn_1
Concat Concat_213 4 1 397_splitncnn_3 399_splitncnn_1 402_splitncnn_1 405_splitncnn_1 406
Convolution Conv_214 1 1 406 408 0=32 1=3 4=1 5=1 6=46080 9=2 -23310=1,2.000000e-01
Concat Concat_216 5 1 397_splitncnn_2 399_splitncnn_0 402_splitncnn_0 405_splitncnn_0 408 409
Convolution Conv_217 1 1 409 410 0=64 1=3 4=1 5=1 6=110592
Eltwise Add_220 2 1 410 397_splitncnn_1 413 0=1 -23301=2,2.000000e-01,1.000000e+00
Split splitncnn_52 1 6 413 413_splitncnn_0 413_splitncnn_1 413_splitncnn_2 413_splitncnn_3 413_splitncnn_4 413_splitncnn_5
Convolution Conv_221 1 1 413_splitncnn_5 415 0=32 1=3 4=1 5=1 6=18432 9=2 -23310=1,2.000000e-01
Split splitncnn_53 1 4 415 415_splitncnn_0 415_splitncnn_1 415_splitncnn_2 415_splitncnn_3
Concat Concat_223 2 1 413_splitncnn_4 415_splitncnn_3 416
Convolution Conv_224 1 1 416 418 0=32 1=3 4=1 5=1 6=27648 9=2 -23310=1,2.000000e-01
Split splitncnn_54 1 3 418 418_splitncnn_0 418_splitncnn_1 418_splitncnn_2
Concat Concat_226 3 1 413_splitncnn_3 415_splitncnn_2 418_splitncnn_2 419
Convolution Conv_227 1 1 419 421 0=32 1=3 4=1 5=1 6=36864 9=2 -23310=1,2.000000e-01
Split splitncnn_55 1 2 421 421_splitncnn_0 421_splitncnn_1
Concat Concat_229 4 1 413_splitncnn_2 415_splitncnn_1 418_splitncnn_1 421_splitncnn_1 422
Convolution Conv_230 1 1 422 424 0=32 1=3 4=1 5=1 6=46080 9=2 -23310=1,2.000000e-01
Concat Concat_232 5 1 413_splitncnn_1 415_splitncnn_0 418_splitncnn_0 421_splitncnn_0 424 425
Convolution Conv_233 1 1 425 426 0=64 1=3 4=1 5=1 6=110592
Eltwise Add_236 2 1 426 413_splitncnn_0 429 0=1 -23301=2,2.000000e-01,1.000000e+00
Split splitncnn_56 1 6 429 429_splitncnn_0 429_splitncnn_1 429_splitncnn_2 429_splitncnn_3 429_splitncnn_4 429_splitncnn_5
Convolution Conv_237 1 1 429_splitncnn_5 431 0=32 1=3 4=1 5=1 6=18432 9=2 -23310=1,2.000000e-01
Split splitncnn_57 1 4 431 431_splitncnn_0 431_splitncnn_1 431_splitncnn_2 431_splitncnn_3
Concat Concat_239 2 1 429_splitncnn_4 431_splitncnn_3 432
Convolution Conv_240 1 1 432 434 0=32 1=3 4=1 5=1 6=27648 9=2 -23310=1,2.000000e-01
Split splitncnn_58 1 3 434 434_splitncnn_0 434_splitncnn_1 434_splitncnn_2
Concat Concat_242 3 1 429_splitncnn_3 431_splitncnn_2 434_splitncnn_2 435
Convolution Conv_243 1 1 435 437 0=32 1=3 4=1 5=1 6=36864 9=2 -23310=1,2.000000e-01
Split splitncnn_59 1 2 437 437_splitncnn_0 437_splitncnn_1
Concat Concat_245 4 1 429_splitncnn_2 431_splitncnn_1 434_splitncnn_1 437_splitncnn_1 438
Convolution Conv_246 1 1 438 440 0=32 1=3 4=1 5=1 6=46080 9=2 -23310=1,2.000000e-01
Concat Concat_248 5 1 429_splitncnn_1 431_splitncnn_0 434_splitncnn_0 437_splitncnn_0 440 441
Convolution Conv_249 1 1 441 442 0=64 1=3 4=1 5=1 6=110592
Eltwise Add_252 2 1 442 429_splitncnn_0 445 0=1 -23301=2,2.000000e-01,1.000000e+00
Eltwise Add_255 2 1 445 397_splitncnn_0 448 0=1 -23301=2,2.000000e-01,1.000000e+00
Split splitncnn_60 1 7 448 448_splitncnn_0 448_splitncnn_1 448_splitncnn_2 448_splitncnn_3 448_splitncnn_4 448_splitncnn_5 448_splitncnn_6
Convolution Conv_256 1 1 448_splitncnn_6 450 0=32 1=3 4=1 5=1 6=18432 9=2 -23310=1,2.000000e-01
Split splitncnn_61 1 4 450 450_splitncnn_0 450_splitncnn_1 450_splitncnn_2 450_splitncnn_3
Concat Concat_258 2 1 448_splitncnn_5 450_splitncnn_3 451
Convolution Conv_259 1 1 451 453 0=32 1=3 4=1 5=1 6=27648 9=2 -23310=1,2.000000e-01
Split splitncnn_62 1 3 453 453_splitncnn_0 453_splitncnn_1 453_splitncnn_2
Concat Concat_261 3 1 448_splitncnn_4 450_splitncnn_2 453_splitncnn_2 454
Convolution Conv_262 1 1 454 456 0=32 1=3 4=1 5=1 6=36864 9=2 -23310=1,2.000000e-01
Split splitncnn_63 1 2 456 456_splitncnn_0 456_splitncnn_1
Concat Concat_264 4 1 448_splitncnn_3 450_splitncnn_1 453_splitncnn_1 456_splitncnn_1 457
Convolution Conv_265 1 1 457 459 0=32 1=3 4=1 5=1 6=46080 9=2 -23310=1,2.000000e-01
Concat Concat_267 5 1 448_splitncnn_2 450_splitncnn_0 453_splitncnn_0 456_splitncnn_0 459 460
Convolution Conv_268 1 1 460 461 0=64 1=3 4=1 5=1 6=110592
Eltwise Add_271 2 1 461 448_splitncnn_1 464 0=1 -23301=2,2.000000e-01,1.000000e+00
Split splitncnn_64 1 6 464 464_splitncnn_0 464_splitncnn_1 464_splitncnn_2 464_splitncnn_3 464_splitncnn_4 464_splitncnn_5
Convolution Conv_272 1 1 464_splitncnn_5 466 0=32 1=3 4=1 5=1 6=18432 9=2 -23310=1,2.000000e-01
Split splitncnn_65 1 4 466 466_splitncnn_0 466_splitncnn_1 466_splitncnn_2 466_splitncnn_3
Concat Concat_274 2 1 464_splitncnn_4 466_splitncnn_3 467
Convolution Conv_275 1 1 467 469 0=32 1=3 4=1 5=1 6=27648 9=2 -23310=1,2.000000e-01
Split splitncnn_66 1 3 469 469_splitncnn_0 469_splitncnn_1 469_splitncnn_2
Concat Concat_277 3 1 464_splitncnn_3 466_splitncnn_2 469_splitncnn_2 470
Convolution Conv_278 1 1 470 472 0=32 1=3 4=1 5=1 6=36864 9=2 -23310=1,2.000000e-01
Split splitncnn_67 1 2 472 472_splitncnn_0 472_splitncnn_1
Concat Concat_280 4 1 464_splitncnn_2 466_splitncnn_1 469_splitncnn_1 472_splitncnn_1 473
Convolution Conv_281 1 1 473 475 0=32 1=3 4=1 5=1 6=46080 9=2 -23310=1,2.000000e-01
Concat Concat_283 5 1 464_splitncnn_1 466_splitncnn_0 469_splitncnn_0 472_splitncnn_0 475 476
Convolution Conv_284 1 1 476 477 0=64 1=3 4=1 5=1 6=110592
Eltwise Add_287 2 1 477 464_splitncnn_0 480 0=1 -23301=2,2.000000e-01,1.000000e+00
Split splitncnn_68 1 6 480 480_splitncnn_0 480_splitncnn_1 480_splitncnn_2 480_splitncnn_3 480_splitncnn_4 480_splitncnn_5
Convolution Conv_288 1 1 480_splitncnn_5 482 0=32 1=3 4=1 5=1 6=18432 9=2 -23310=1,2.000000e-01
Split splitncnn_69 1 4 482 482_splitncnn_0 482_splitncnn_1 482_splitncnn_2 482_splitncnn_3
Concat Concat_290 2 1 480_splitncnn_4 482_splitncnn_3 483
Convolution Conv_291 1 1 483 485 0=32 1=3 4=1 5=1 6=27648 9=2 -23310=1,2.000000e-01
Split splitncnn_70 1 3 485 485_splitncnn_0 485_splitncnn_1 485_splitncnn_2
Concat Concat_293 3 1 480_splitncnn_3 482_splitncnn_2 485_splitncnn_2 486
Convolution Conv_294 1 1 486 488 0=32 1=3 4=1 5=1 6=36864 9=2 -23310=1,2.000000e-01
Split splitncnn_71 1 2 488 488_splitncnn_0 488_splitncnn_1
Concat Concat_296 4 1 480_splitncnn_2 482_splitncnn_1 485_splitncnn_1 488_splitncnn_1 489
Convolution Conv_297 1 1 489 491 0=32 1=3 4=1 5=1 6=46080 9=2 -23310=1,2.000000e-01
Concat Concat_299 5 1 480_splitncnn_1 482_splitncnn_0 485_splitncnn_0 488_splitncnn_0 491 492
Convolution Conv_300 1 1 492 493 0=64 1=3 4=1 5=1 6=110592
Eltwise Add_303 2 1 493 480_splitncnn_0 496 0=1 -23301=2,2.000000e-01,1.000000e+00
Eltwise Add_306 2 1 496 448_splitncnn_0 499 0=1 -23301=2,2.000000e-01,1.000000e+00
Convolution Conv_307 1 1 499 500 0=64 1=3 4=1 5=1 6=36864
BinaryOp Add_308 2 1 193_splitncnn_0 500 501
Interp Resize_310 1 1 501 506 0=1 1=2.000000e+00 2=2.000000e+00
Convolution Conv_311 1 1 506 508 0=64 1=3 4=1 5=1 6=36864 9=2 -23310=1,2.000000e-01
Interp Resize_314 1 1 508 513 0=1 1=2.000000e+00 2=2.000000e+00
Convolution Conv_315 1 1 513 515 0=64 1=3 4=1 5=1 6=36864 9=2 -23310=1,2.000000e-01
Convolution Conv_317 1 1 515 517 0=64 1=3 4=1 5=1 6=36864 9=2 -23310=1,2.000000e-01
Convolution Conv_319 1 1 517 output 0=3 1=3 4=1 5=1 6=1728

BIN
models/realesrgan/realesrgan-plus-x4.bin vendored Normal file

Binary file not shown.

1001
models/realesrgan/realesrgan-plus-x4.param vendored Normal file

File diff suppressed because it is too large Load Diff

BIN
models/rife/rife-HD/contextnet.bin vendored Normal file

Binary file not shown.

70
models/rife/rife-HD/contextnet.param vendored Normal file
View File

@@ -0,0 +1,70 @@
7767517
68 82
Input input.1 0 1 input.1
Input flow.1 0 1 flow.1
UnaryOp flow.0 1 1 flow.1 flow.0 0=1
Convolution Conv_0 1 1 input.1 45 0=32 1=3 3=2 4=1 5=1 6=864
PReLU PRelu_1 1 1 45 47 0=32
Split splitncnn_0 1 2 47 47_splitncnn_0 47_splitncnn_1
Convolution Conv_2 1 1 47_splitncnn_1 48 0=32 1=3 3=2 4=1 6=9216
Convolution Conv_3 1 1 47_splitncnn_0 49 0=32 1=3 3=2 4=1 5=1 6=9216
PReLU PRelu_4 1 1 49 51 0=32
Convolution Conv_5 1 1 51 52 0=32 1=3 4=1 5=1 6=9216
Split splitncnn_1 1 2 52 52_splitncnn_0 52_splitncnn_1
Pooling ReduceMean_7 1 1 52_splitncnn_1 54 0=1 4=1
InnerProduct Conv_8 1 1 54 57 0=16 2=512 9=2 -23310=1,1.143919e+00
InnerProduct Conv_10 1 1 57 59 0=32 2=512 9=4
BinaryOp Mul_12 2 1 52_splitncnn_0 59 60 0=2
BinaryOp Add_13 2 1 60 48 61
PReLU PRelu_14 1 1 61 63 0=32
Split splitncnn_2 1 3 63 63_splitncnn_0 63_splitncnn_1 63_splitncnn_2
Interp Resize_16 1 1 flow.0 73 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_18 1 1 73 75 0=2 1=1 2=5.000000e-01
Split splitncnn_3 1 2 75 75_splitncnn_0 75_splitncnn_1
rife.Warp Warp_24 2 1 63_splitncnn_2 75_splitncnn_1 f1
Convolution Conv_25 1 1 63_splitncnn_1 82 0=64 1=3 3=2 4=1 6=18432
Convolution Conv_26 1 1 63_splitncnn_0 83 0=64 1=3 3=2 4=1 5=1 6=18432
PReLU PRelu_27 1 1 83 85 0=64
Convolution Conv_28 1 1 85 86 0=64 1=3 4=1 5=1 6=36864
Split splitncnn_4 1 2 86 86_splitncnn_0 86_splitncnn_1
Pooling ReduceMean_30 1 1 86_splitncnn_1 88 0=1 4=1
InnerProduct Conv_31 1 1 88 91 0=16 2=1024 9=2 -23310=1,3.006833e-01
InnerProduct Conv_33 1 1 91 93 0=64 2=1024 9=4
BinaryOp Mul_35 2 1 86_splitncnn_0 93 94 0=2
BinaryOp Add_36 2 1 94 82 95
PReLU PRelu_37 1 1 95 97 0=64
Split splitncnn_5 1 3 97 97_splitncnn_0 97_splitncnn_1 97_splitncnn_2
Interp Resize_39 1 1 75_splitncnn_0 107 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_41 1 1 107 109 0=2 1=1 2=5.000000e-01
Split splitncnn_6 1 2 109 109_splitncnn_0 109_splitncnn_1
rife.Warp Warp_47 2 1 97_splitncnn_2 109_splitncnn_1 f2
Convolution Conv_48 1 1 97_splitncnn_1 116 0=128 1=3 3=2 4=1 6=73728
Convolution Conv_49 1 1 97_splitncnn_0 117 0=128 1=3 3=2 4=1 5=1 6=73728
PReLU PRelu_50 1 1 117 119 0=128
Convolution Conv_51 1 1 119 120 0=128 1=3 4=1 5=1 6=147456
Split splitncnn_7 1 2 120 120_splitncnn_0 120_splitncnn_1
Pooling ReduceMean_53 1 1 120_splitncnn_1 122 0=1 4=1
InnerProduct Conv_54 1 1 122 125 0=16 2=2048 9=2 -23310=1,7.002444e-02
InnerProduct Conv_56 1 1 125 127 0=128 2=2048 9=4
BinaryOp Mul_58 2 1 120_splitncnn_0 127 128 0=2
BinaryOp Add_59 2 1 128 116 129
PReLU PRelu_60 1 1 129 131 0=128
Split splitncnn_8 1 3 131 131_splitncnn_0 131_splitncnn_1 131_splitncnn_2
Interp Resize_62 1 1 109_splitncnn_0 141 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_64 1 1 141 143 0=2 1=1 2=5.000000e-01
Split splitncnn_9 1 2 143 143_splitncnn_0 143_splitncnn_1
rife.Warp Warp_70 2 1 131_splitncnn_2 143_splitncnn_1 f3
Convolution Conv_71 1 1 131_splitncnn_1 150 0=256 1=3 3=2 4=1 6=294912
Convolution Conv_72 1 1 131_splitncnn_0 151 0=256 1=3 3=2 4=1 5=1 6=294912
PReLU PRelu_73 1 1 151 153 0=256
Convolution Conv_74 1 1 153 154 0=256 1=3 4=1 5=1 6=589824
Split splitncnn_10 1 2 154 154_splitncnn_0 154_splitncnn_1
Pooling ReduceMean_76 1 1 154_splitncnn_1 156 0=1 4=1
InnerProduct Conv_77 1 1 156 159 0=16 2=4096 9=2 -23310=1,6.568319e-02
InnerProduct Conv_79 1 1 159 161 0=256 2=4096 9=4
BinaryOp Mul_81 2 1 154_splitncnn_0 161 162 0=2
BinaryOp Add_82 2 1 162 150 163
PReLU PRelu_83 1 1 163 165 0=256
Interp Resize_85 1 1 143_splitncnn_0 175 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_87 1 1 175 177 0=2 1=1 2=5.000000e-01
rife.Warp Warp_93 2 1 165 177 f4

BIN
models/rife/rife-HD/flownet.bin vendored Normal file

Binary file not shown.

322
models/rife/rife-HD/flownet.param vendored Normal file
View File

@@ -0,0 +1,322 @@
7767517
320 386
Input input0 0 1 input0
Input input1 0 1 input1
Concat input.1 2 1 input0 input1 input.1
Interp Resize_1 1 1 input.1 454 0=2 1=5.000000e-01 2=5.000000e-01
Split splitncnn_0 1 7 454 454_splitncnn_0 454_splitncnn_1 454_splitncnn_2 454_splitncnn_3 454_splitncnn_4 454_splitncnn_5 454_splitncnn_6
Interp Resize_3 1 1 454_splitncnn_6 464 0=2 1=1.250000e-01 2=1.250000e-01
Convolution Conv_4 1 1 464 466 0=192 1=5 3=2 4=2 5=1 6=28800
PReLU PRelu_6 1 1 466 468 0=192
Split splitncnn_1 1 2 468 468_splitncnn_0 468_splitncnn_1
Convolution Conv_7 1 1 468_splitncnn_1 470 0=192 1=5 4=2 5=1 6=921600
PReLU PRelu_9 1 1 470 472 0=192
Convolution Conv_10 1 1 472 474 0=192 1=3 4=1 5=1 6=331776
Split splitncnn_2 1 2 474 474_splitncnn_0 474_splitncnn_1
Pooling ReduceMean_13 1 1 474_splitncnn_1 476 0=1 4=1
InnerProduct Conv_14 1 1 476 479 0=16 2=3072 9=2 -23310=1,1.428942e-02
InnerProduct Conv_16 1 1 479 481 0=192 2=3072 9=4
BinaryOp Mul_18 2 1 474_splitncnn_0 481 482 0=2
BinaryOp Add_19 2 1 482 468_splitncnn_0 483
PReLU PRelu_20 1 1 483 485 0=192
Split splitncnn_3 1 2 485 485_splitncnn_0 485_splitncnn_1
Convolution Conv_21 1 1 485_splitncnn_1 487 0=192 1=5 4=2 5=1 6=921600
PReLU PRelu_23 1 1 487 489 0=192
Convolution Conv_24 1 1 489 491 0=192 1=3 4=1 5=1 6=331776
Split splitncnn_4 1 2 491 491_splitncnn_0 491_splitncnn_1
Pooling ReduceMean_27 1 1 491_splitncnn_1 493 0=1 4=1
InnerProduct Conv_28 1 1 493 496 0=16 2=3072 9=2 -23310=1,3.543398e-01
InnerProduct Conv_30 1 1 496 498 0=192 2=3072 9=4
BinaryOp Mul_32 2 1 491_splitncnn_0 498 499 0=2
BinaryOp Add_33 2 1 499 485_splitncnn_0 500
PReLU PRelu_34 1 1 500 502 0=192
Split splitncnn_5 1 2 502 502_splitncnn_0 502_splitncnn_1
Convolution Conv_35 1 1 502_splitncnn_1 504 0=192 1=5 4=2 5=1 6=921600
PReLU PRelu_37 1 1 504 506 0=192
Convolution Conv_38 1 1 506 508 0=192 1=3 4=1 5=1 6=331776
Split splitncnn_6 1 2 508 508_splitncnn_0 508_splitncnn_1
Pooling ReduceMean_41 1 1 508_splitncnn_1 510 0=1 4=1
InnerProduct Conv_42 1 1 510 513 0=16 2=3072 9=2 -23310=1,5.366787e-01
InnerProduct Conv_44 1 1 513 515 0=192 2=3072 9=4
BinaryOp Mul_46 2 1 508_splitncnn_0 515 516 0=2
BinaryOp Add_47 2 1 516 502_splitncnn_0 517
PReLU PRelu_48 1 1 517 519 0=192
Split splitncnn_7 1 2 519 519_splitncnn_0 519_splitncnn_1
Convolution Conv_49 1 1 519_splitncnn_1 521 0=192 1=5 4=2 5=1 6=921600
PReLU PRelu_51 1 1 521 523 0=192
Convolution Conv_52 1 1 523 525 0=192 1=3 4=1 5=1 6=331776
Split splitncnn_8 1 2 525 525_splitncnn_0 525_splitncnn_1
Pooling ReduceMean_55 1 1 525_splitncnn_1 527 0=1 4=1
InnerProduct Conv_56 1 1 527 530 0=16 2=3072 9=2 -23310=1,-4.889974e-03
InnerProduct Conv_58 1 1 530 532 0=192 2=3072 9=4
BinaryOp Mul_60 2 1 525_splitncnn_0 532 533 0=2
BinaryOp Add_61 2 1 533 519_splitncnn_0 534
PReLU PRelu_62 1 1 534 536 0=192
Split splitncnn_9 1 2 536 536_splitncnn_0 536_splitncnn_1
Convolution Conv_63 1 1 536_splitncnn_1 538 0=192 1=5 4=2 5=1 6=921600
PReLU PRelu_65 1 1 538 540 0=192
Convolution Conv_66 1 1 540 542 0=192 1=3 4=1 5=1 6=331776
Split splitncnn_10 1 2 542 542_splitncnn_0 542_splitncnn_1
Pooling ReduceMean_69 1 1 542_splitncnn_1 544 0=1 4=1
InnerProduct Conv_70 1 1 544 547 0=16 2=3072 9=2 -23310=1,-1.182169e-02
InnerProduct Conv_72 1 1 547 549 0=192 2=3072 9=4
BinaryOp Mul_74 2 1 542_splitncnn_0 549 550 0=2
BinaryOp Add_75 2 1 550 536_splitncnn_0 551
PReLU PRelu_76 1 1 551 553 0=192
Split splitncnn_11 1 2 553 553_splitncnn_0 553_splitncnn_1
Convolution Conv_77 1 1 553_splitncnn_1 555 0=192 1=5 4=2 5=1 6=921600
PReLU PRelu_79 1 1 555 557 0=192
Convolution Conv_80 1 1 557 559 0=192 1=3 4=1 5=1 6=331776
Split splitncnn_12 1 2 559 559_splitncnn_0 559_splitncnn_1
Pooling ReduceMean_83 1 1 559_splitncnn_1 561 0=1 4=1
InnerProduct Conv_84 1 1 561 564 0=16 2=3072 9=2 -23310=1,2.179182e-01
InnerProduct Conv_86 1 1 564 566 0=192 2=3072 9=4
BinaryOp Mul_88 2 1 559_splitncnn_0 566 567 0=2
BinaryOp Add_89 2 1 567 553_splitncnn_0 568
PReLU PRelu_90 1 1 568 570 0=192
Convolution Conv_91 1 1 570 571 0=8 1=3 4=1 5=1 6=13824
PixelShuffle DepthToSpace_92 1 1 571 572 0=2
Interp Resize_94 1 1 572 582 0=2 1=8.000000e+00 2=8.000000e+00
Split splitncnn_13 1 6 582 582_splitncnn_0 582_splitncnn_1 582_splitncnn_2 582_splitncnn_3 582_splitncnn_4 582_splitncnn_5
Crop Slice_99 1 1 454_splitncnn_5 587 -23309=1,0 -23310=1,3 -23311=1,0
rife.Warp Warp_105 2 1 587 582_splitncnn_5 593
Crop Slice_110 1 1 454_splitncnn_4 598 -23309=1,3 -23310=1,2147483647 -23311=1,0
UnaryOp Neg_111 1 1 582_splitncnn_4 599 0=1
rife.Warp Warp_117 2 1 598 599 605
Concat Concat_118 3 1 593 605 582_splitncnn_3 606
Interp Resize_120 1 1 606 616 0=2 1=2.500000e-01 2=2.500000e-01
Convolution Conv_121 1 1 616 618 0=128 1=5 3=2 4=2 5=1 6=25600
PReLU PRelu_123 1 1 618 620 0=128
Split splitncnn_14 1 2 620 620_splitncnn_0 620_splitncnn_1
Convolution Conv_124 1 1 620_splitncnn_1 622 0=128 1=5 4=2 5=1 6=409600
PReLU PRelu_126 1 1 622 624 0=128
Convolution Conv_127 1 1 624 626 0=128 1=3 4=1 5=1 6=147456
Split splitncnn_15 1 2 626 626_splitncnn_0 626_splitncnn_1
Pooling ReduceMean_130 1 1 626_splitncnn_1 628 0=1 4=1
InnerProduct Conv_131 1 1 628 631 0=16 2=2048 9=2 -23310=1,-3.599843e-03
InnerProduct Conv_133 1 1 631 633 0=128 2=2048 9=4
BinaryOp Mul_135 2 1 626_splitncnn_0 633 634 0=2
BinaryOp Add_136 2 1 634 620_splitncnn_0 635
PReLU PRelu_137 1 1 635 637 0=128
Split splitncnn_16 1 2 637 637_splitncnn_0 637_splitncnn_1
Convolution Conv_138 1 1 637_splitncnn_1 639 0=128 1=5 4=2 5=1 6=409600
PReLU PRelu_140 1 1 639 641 0=128
Convolution Conv_141 1 1 641 643 0=128 1=3 4=1 5=1 6=147456
Split splitncnn_17 1 2 643 643_splitncnn_0 643_splitncnn_1
Pooling ReduceMean_144 1 1 643_splitncnn_1 645 0=1 4=1
InnerProduct Conv_145 1 1 645 648 0=16 2=2048 9=2 -23310=1,2.117399e-01
InnerProduct Conv_147 1 1 648 650 0=128 2=2048 9=4
BinaryOp Mul_149 2 1 643_splitncnn_0 650 651 0=2
BinaryOp Add_150 2 1 651 637_splitncnn_0 652
PReLU PRelu_151 1 1 652 654 0=128
Split splitncnn_18 1 2 654 654_splitncnn_0 654_splitncnn_1
Convolution Conv_152 1 1 654_splitncnn_1 656 0=128 1=5 4=2 5=1 6=409600
PReLU PRelu_154 1 1 656 658 0=128
Convolution Conv_155 1 1 658 660 0=128 1=3 4=1 5=1 6=147456
Split splitncnn_19 1 2 660 660_splitncnn_0 660_splitncnn_1
Pooling ReduceMean_158 1 1 660_splitncnn_1 662 0=1 4=1
InnerProduct Conv_159 1 1 662 665 0=16 2=2048 9=2 -23310=1,2.712289e-01
InnerProduct Conv_161 1 1 665 667 0=128 2=2048 9=4
BinaryOp Mul_163 2 1 660_splitncnn_0 667 668 0=2
BinaryOp Add_164 2 1 668 654_splitncnn_0 669
PReLU PRelu_165 1 1 669 671 0=128
Split splitncnn_20 1 2 671 671_splitncnn_0 671_splitncnn_1
Convolution Conv_166 1 1 671_splitncnn_1 673 0=128 1=5 4=2 5=1 6=409600
PReLU PRelu_168 1 1 673 675 0=128
Convolution Conv_169 1 1 675 677 0=128 1=3 4=1 5=1 6=147456
Split splitncnn_21 1 2 677 677_splitncnn_0 677_splitncnn_1
Pooling ReduceMean_172 1 1 677_splitncnn_1 679 0=1 4=1
InnerProduct Conv_173 1 1 679 682 0=16 2=2048 9=2 -23310=1,8.141350e-02
InnerProduct Conv_175 1 1 682 684 0=128 2=2048 9=4
BinaryOp Mul_177 2 1 677_splitncnn_0 684 685 0=2
BinaryOp Add_178 2 1 685 671_splitncnn_0 686
PReLU PRelu_179 1 1 686 688 0=128
Split splitncnn_22 1 2 688 688_splitncnn_0 688_splitncnn_1
Convolution Conv_180 1 1 688_splitncnn_1 690 0=128 1=5 4=2 5=1 6=409600
PReLU PRelu_182 1 1 690 692 0=128
Convolution Conv_183 1 1 692 694 0=128 1=3 4=1 5=1 6=147456
Split splitncnn_23 1 2 694 694_splitncnn_0 694_splitncnn_1
Pooling ReduceMean_186 1 1 694_splitncnn_1 696 0=1 4=1
InnerProduct Conv_187 1 1 696 699 0=16 2=2048 9=2 -23310=1,4.956326e-02
InnerProduct Conv_189 1 1 699 701 0=128 2=2048 9=4
BinaryOp Mul_191 2 1 694_splitncnn_0 701 702 0=2
BinaryOp Add_192 2 1 702 688_splitncnn_0 703
PReLU PRelu_193 1 1 703 705 0=128
Split splitncnn_24 1 2 705 705_splitncnn_0 705_splitncnn_1
Convolution Conv_194 1 1 705_splitncnn_1 707 0=128 1=5 4=2 5=1 6=409600
PReLU PRelu_196 1 1 707 709 0=128
Convolution Conv_197 1 1 709 711 0=128 1=3 4=1 5=1 6=147456
Split splitncnn_25 1 2 711 711_splitncnn_0 711_splitncnn_1
Pooling ReduceMean_200 1 1 711_splitncnn_1 713 0=1 4=1
InnerProduct Conv_201 1 1 713 716 0=16 2=2048 9=2 -23310=1,1.553750e-01
InnerProduct Conv_203 1 1 716 718 0=128 2=2048 9=4
BinaryOp Mul_205 2 1 711_splitncnn_0 718 719 0=2
BinaryOp Add_206 2 1 719 705_splitncnn_0 720
PReLU PRelu_207 1 1 720 722 0=128
Convolution Conv_208 1 1 722 723 0=8 1=3 4=1 5=1 6=9216
PixelShuffle DepthToSpace_209 1 1 723 724 0=2
Interp Resize_211 1 1 724 734 0=2 1=4.000000e+00 2=4.000000e+00
Split splitncnn_26 1 3 734 734_splitncnn_0 734_splitncnn_1 734_splitncnn_2
BinaryOp Add_212 2 1 582_splitncnn_2 734_splitncnn_2 735
Split splitncnn_27 1 3 735 735_splitncnn_0 735_splitncnn_1 735_splitncnn_2
Crop Slice_217 1 1 454_splitncnn_3 740 -23309=1,0 -23310=1,3 -23311=1,0
rife.Warp Warp_223 2 1 740 735_splitncnn_2 746
Crop Slice_228 1 1 454_splitncnn_2 751 -23309=1,3 -23310=1,2147483647 -23311=1,0
UnaryOp Neg_229 1 1 735_splitncnn_1 752 0=1
rife.Warp Warp_235 2 1 751 752 758
Concat Concat_236 3 1 746 758 735_splitncnn_0 759
Interp Resize_238 1 1 759 769 0=2 1=5.000000e-01 2=5.000000e-01
Convolution Conv_239 1 1 769 771 0=96 1=5 3=2 4=2 5=1 6=19200
PReLU PRelu_241 1 1 771 773 0=96
Split splitncnn_28 1 2 773 773_splitncnn_0 773_splitncnn_1
Convolution Conv_242 1 1 773_splitncnn_1 775 0=96 1=5 4=2 5=1 6=230400
PReLU PRelu_244 1 1 775 777 0=96
Convolution Conv_245 1 1 777 779 0=96 1=3 4=1 5=1 6=82944
Split splitncnn_29 1 2 779 779_splitncnn_0 779_splitncnn_1
Pooling ReduceMean_248 1 1 779_splitncnn_1 781 0=1 4=1
InnerProduct Conv_249 1 1 781 784 0=16 2=1536 9=2 -23310=1,1.670981e-03
InnerProduct Conv_251 1 1 784 786 0=96 2=1536 9=4
BinaryOp Mul_253 2 1 779_splitncnn_0 786 787 0=2
BinaryOp Add_254 2 1 787 773_splitncnn_0 788
PReLU PRelu_255 1 1 788 790 0=96
Split splitncnn_30 1 2 790 790_splitncnn_0 790_splitncnn_1
Convolution Conv_256 1 1 790_splitncnn_1 792 0=96 1=5 4=2 5=1 6=230400
PReLU PRelu_258 1 1 792 794 0=96
Convolution Conv_259 1 1 794 796 0=96 1=3 4=1 5=1 6=82944
Split splitncnn_31 1 2 796 796_splitncnn_0 796_splitncnn_1
Pooling ReduceMean_262 1 1 796_splitncnn_1 798 0=1 4=1
InnerProduct Conv_263 1 1 798 801 0=16 2=1536 9=2 -23310=1,3.868800e-01
InnerProduct Conv_265 1 1 801 803 0=96 2=1536 9=4
BinaryOp Mul_267 2 1 796_splitncnn_0 803 804 0=2
BinaryOp Add_268 2 1 804 790_splitncnn_0 805
PReLU PRelu_269 1 1 805 807 0=96
Split splitncnn_32 1 2 807 807_splitncnn_0 807_splitncnn_1
Convolution Conv_270 1 1 807_splitncnn_1 809 0=96 1=5 4=2 5=1 6=230400
PReLU PRelu_272 1 1 809 811 0=96
Convolution Conv_273 1 1 811 813 0=96 1=3 4=1 5=1 6=82944
Split splitncnn_33 1 2 813 813_splitncnn_0 813_splitncnn_1
Pooling ReduceMean_276 1 1 813_splitncnn_1 815 0=1 4=1
InnerProduct Conv_277 1 1 815 818 0=16 2=1536 9=2 -23310=1,3.475277e-01
InnerProduct Conv_279 1 1 818 820 0=96 2=1536 9=4
BinaryOp Mul_281 2 1 813_splitncnn_0 820 821 0=2
BinaryOp Add_282 2 1 821 807_splitncnn_0 822
PReLU PRelu_283 1 1 822 824 0=96
Split splitncnn_34 1 2 824 824_splitncnn_0 824_splitncnn_1
Convolution Conv_284 1 1 824_splitncnn_1 826 0=96 1=5 4=2 5=1 6=230400
PReLU PRelu_286 1 1 826 828 0=96
Convolution Conv_287 1 1 828 830 0=96 1=3 4=1 5=1 6=82944
Split splitncnn_35 1 2 830 830_splitncnn_0 830_splitncnn_1
Pooling ReduceMean_290 1 1 830_splitncnn_1 832 0=1 4=1
InnerProduct Conv_291 1 1 832 835 0=16 2=1536 9=2 -23310=1,7.044167e-02
InnerProduct Conv_293 1 1 835 837 0=96 2=1536 9=4
BinaryOp Mul_295 2 1 830_splitncnn_0 837 838 0=2
BinaryOp Add_296 2 1 838 824_splitncnn_0 839
PReLU PRelu_297 1 1 839 841 0=96
Split splitncnn_36 1 2 841 841_splitncnn_0 841_splitncnn_1
Convolution Conv_298 1 1 841_splitncnn_1 843 0=96 1=5 4=2 5=1 6=230400
PReLU PRelu_300 1 1 843 845 0=96
Convolution Conv_301 1 1 845 847 0=96 1=3 4=1 5=1 6=82944
Split splitncnn_37 1 2 847 847_splitncnn_0 847_splitncnn_1
Pooling ReduceMean_304 1 1 847_splitncnn_1 849 0=1 4=1
InnerProduct Conv_305 1 1 849 852 0=16 2=1536 9=2 -23310=1,1.834324e-01
InnerProduct Conv_307 1 1 852 854 0=96 2=1536 9=4
BinaryOp Mul_309 2 1 847_splitncnn_0 854 855 0=2
BinaryOp Add_310 2 1 855 841_splitncnn_0 856
PReLU PRelu_311 1 1 856 858 0=96
Split splitncnn_38 1 2 858 858_splitncnn_0 858_splitncnn_1
Convolution Conv_312 1 1 858_splitncnn_1 860 0=96 1=5 4=2 5=1 6=230400
PReLU PRelu_314 1 1 860 862 0=96
Convolution Conv_315 1 1 862 864 0=96 1=3 4=1 5=1 6=82944
Split splitncnn_39 1 2 864 864_splitncnn_0 864_splitncnn_1
Pooling ReduceMean_318 1 1 864_splitncnn_1 866 0=1 4=1
InnerProduct Conv_319 1 1 866 869 0=16 2=1536 9=2 -23310=1,3.572731e-01
InnerProduct Conv_321 1 1 869 871 0=96 2=1536 9=4
BinaryOp Mul_323 2 1 864_splitncnn_0 871 872 0=2
BinaryOp Add_324 2 1 872 858_splitncnn_0 873
PReLU PRelu_325 1 1 873 875 0=96
Convolution Conv_326 1 1 875 876 0=8 1=3 4=1 5=1 6=6912
PixelShuffle DepthToSpace_327 1 1 876 877 0=2
Interp Resize_329 1 1 877 887 0=2 1=2.000000e+00 2=2.000000e+00
Split splitncnn_40 1 2 887 887_splitncnn_0 887_splitncnn_1
BinaryOp Add_330 2 1 582_splitncnn_1 734_splitncnn_1 888
BinaryOp Add_331 2 1 888 887_splitncnn_1 889
Split splitncnn_41 1 3 889 889_splitncnn_0 889_splitncnn_1 889_splitncnn_2
Crop Slice_336 1 1 454_splitncnn_1 894 -23309=1,0 -23310=1,3 -23311=1,0
rife.Warp Warp_342 2 1 894 889_splitncnn_2 900
Crop Slice_347 1 1 454_splitncnn_0 905 -23309=1,3 -23310=1,2147483647 -23311=1,0
UnaryOp Neg_348 1 1 889_splitncnn_1 906 0=1
rife.Warp Warp_354 2 1 905 906 912
Concat Concat_355 3 1 900 912 889_splitncnn_0 913
Convolution Conv_356 1 1 913 915 0=48 1=5 3=2 4=2 5=1 6=9600
PReLU PRelu_358 1 1 915 917 0=48
Split splitncnn_42 1 2 917 917_splitncnn_0 917_splitncnn_1
Convolution Conv_359 1 1 917_splitncnn_1 919 0=48 1=5 4=2 5=1 6=57600
PReLU PRelu_361 1 1 919 921 0=48
Convolution Conv_362 1 1 921 923 0=48 1=3 4=1 5=1 6=20736
Split splitncnn_43 1 2 923 923_splitncnn_0 923_splitncnn_1
Pooling ReduceMean_365 1 1 923_splitncnn_1 925 0=1 4=1
InnerProduct Conv_366 1 1 925 928 0=16 2=768 9=2 -23310=1,2.075541e-02
InnerProduct Conv_368 1 1 928 930 0=48 2=768 9=4
BinaryOp Mul_370 2 1 923_splitncnn_0 930 931 0=2
BinaryOp Add_371 2 1 931 917_splitncnn_0 932
PReLU PRelu_372 1 1 932 934 0=48
Split splitncnn_44 1 2 934 934_splitncnn_0 934_splitncnn_1
Convolution Conv_373 1 1 934_splitncnn_1 936 0=48 1=5 4=2 5=1 6=57600
PReLU PRelu_375 1 1 936 938 0=48
Convolution Conv_376 1 1 938 940 0=48 1=3 4=1 5=1 6=20736
Split splitncnn_45 1 2 940 940_splitncnn_0 940_splitncnn_1
Pooling ReduceMean_379 1 1 940_splitncnn_1 942 0=1 4=1
InnerProduct Conv_380 1 1 942 945 0=16 2=768 9=2 -23310=1,7.201483e-01
InnerProduct Conv_382 1 1 945 947 0=48 2=768 9=4
BinaryOp Mul_384 2 1 940_splitncnn_0 947 948 0=2
BinaryOp Add_385 2 1 948 934_splitncnn_0 949
PReLU PRelu_386 1 1 949 951 0=48
Split splitncnn_46 1 2 951 951_splitncnn_0 951_splitncnn_1
Convolution Conv_387 1 1 951_splitncnn_1 953 0=48 1=5 4=2 5=1 6=57600
PReLU PRelu_389 1 1 953 955 0=48
Convolution Conv_390 1 1 955 957 0=48 1=3 4=1 5=1 6=20736
Split splitncnn_47 1 2 957 957_splitncnn_0 957_splitncnn_1
Pooling ReduceMean_393 1 1 957_splitncnn_1 959 0=1 4=1
InnerProduct Conv_394 1 1 959 962 0=16 2=768 9=2 -23310=1,2.671039e-01
InnerProduct Conv_396 1 1 962 964 0=48 2=768 9=4
BinaryOp Mul_398 2 1 957_splitncnn_0 964 965 0=2
BinaryOp Add_399 2 1 965 951_splitncnn_0 966
PReLU PRelu_400 1 1 966 968 0=48
Split splitncnn_48 1 2 968 968_splitncnn_0 968_splitncnn_1
Convolution Conv_401 1 1 968_splitncnn_1 970 0=48 1=5 4=2 5=1 6=57600
PReLU PRelu_403 1 1 970 972 0=48
Convolution Conv_404 1 1 972 974 0=48 1=3 4=1 5=1 6=20736
Split splitncnn_49 1 2 974 974_splitncnn_0 974_splitncnn_1
Pooling ReduceMean_407 1 1 974_splitncnn_1 976 0=1 4=1
InnerProduct Conv_408 1 1 976 979 0=16 2=768 9=2 -23310=1,1.908224e-01
InnerProduct Conv_410 1 1 979 981 0=48 2=768 9=4
BinaryOp Mul_412 2 1 974_splitncnn_0 981 982 0=2
BinaryOp Add_413 2 1 982 968_splitncnn_0 983
PReLU PRelu_414 1 1 983 985 0=48
Split splitncnn_50 1 2 985 985_splitncnn_0 985_splitncnn_1
Convolution Conv_415 1 1 985_splitncnn_1 987 0=48 1=5 4=2 5=1 6=57600
PReLU PRelu_417 1 1 987 989 0=48
Convolution Conv_418 1 1 989 991 0=48 1=3 4=1 5=1 6=20736
Split splitncnn_51 1 2 991 991_splitncnn_0 991_splitncnn_1
Pooling ReduceMean_421 1 1 991_splitncnn_1 993 0=1 4=1
InnerProduct Conv_422 1 1 993 996 0=16 2=768 9=2 -23310=1,6.525763e-01
InnerProduct Conv_424 1 1 996 998 0=48 2=768 9=4
BinaryOp Mul_426 2 1 991_splitncnn_0 998 999 0=2
BinaryOp Add_427 2 1 999 985_splitncnn_0 1000
PReLU PRelu_428 1 1 1000 1002 0=48
Split splitncnn_52 1 2 1002 1002_splitncnn_0 1002_splitncnn_1
Convolution Conv_429 1 1 1002_splitncnn_1 1004 0=48 1=5 4=2 5=1 6=57600
PReLU PRelu_431 1 1 1004 1006 0=48
Convolution Conv_432 1 1 1006 1008 0=48 1=3 4=1 5=1 6=20736
Split splitncnn_53 1 2 1008 1008_splitncnn_0 1008_splitncnn_1
Pooling ReduceMean_435 1 1 1008_splitncnn_1 1010 0=1 4=1
InnerProduct Conv_436 1 1 1010 1013 0=16 2=768 9=2 -23310=1,5.485489e-01
InnerProduct Conv_438 1 1 1013 1015 0=48 2=768 9=4
BinaryOp Mul_440 2 1 1008_splitncnn_0 1015 1016 0=2
BinaryOp Add_441 2 1 1016 1002_splitncnn_0 1017
PReLU PRelu_442 1 1 1017 1019 0=48
Convolution Conv_443 1 1 1019 1020 0=8 1=3 4=1 5=1 6=3456
PixelShuffle DepthToSpace_444 1 1 1020 1021 0=2
BinaryOp Add_445 2 1 582_splitncnn_0 734_splitncnn_0 1022
BinaryOp Add_446 2 1 1022 887_splitncnn_0 1023
BinaryOp Add_447 2 1 1023 1021 flow

BIN
models/rife/rife-HD/fusionnet.bin vendored Normal file

Binary file not shown.

105
models/rife/rife-HD/fusionnet.param vendored Normal file
View File

@@ -0,0 +1,105 @@
7767517
103 120
Input img0 0 1 img0
Input img1 0 1 img1
Input flow 0 1 flow
Input 3 0 1 3
Input 4 0 1 4
Input 5 0 1 5
Input 6 0 1 6
Input 7 0 1 7
Input 8 0 1 8
Input 9 0 1 9
Input 10 0 1 10
Interp Resize_1 1 1 flow 77 0=2 1=2.000000e+00 2=2.000000e+00
BinaryOp Mul_3 1 1 77 79 0=2 1=1 2=2.000000e+00
Split splitncnn_0 1 3 79 79_splitncnn_0 79_splitncnn_1 79_splitncnn_2
rife.Warp Warp_9 2 1 img0 79_splitncnn_2 85
Split splitncnn_1 1 2 85 85_splitncnn_0 85_splitncnn_1
UnaryOp Neg_10 1 1 79_splitncnn_1 86 0=1
rife.Warp Warp_16 2 1 img1 86 92
Split splitncnn_2 1 2 92 92_splitncnn_0 92_splitncnn_1
Concat Concat_17 3 1 85_splitncnn_1 92_splitncnn_1 79_splitncnn_0 93
Convolution Conv_18 1 1 93 94 0=32 1=3 3=2 4=1 5=1 6=2304
PReLU PRelu_19 1 1 94 96 0=32
Split splitncnn_3 1 2 96 96_splitncnn_0 96_splitncnn_1
Convolution Conv_20 1 1 96_splitncnn_1 97 0=64 1=3 3=2 4=1 6=18432
Convolution Conv_21 1 1 96_splitncnn_0 98 0=64 1=3 3=2 4=1 5=1 6=18432
PReLU PRelu_22 1 1 98 100 0=64
Convolution Conv_23 1 1 100 101 0=64 1=3 4=1 5=1 6=36864
Split splitncnn_4 1 2 101 101_splitncnn_0 101_splitncnn_1
Pooling ReduceMean_25 1 1 101_splitncnn_1 103 0=1 4=1
InnerProduct Conv_26 1 1 103 106 0=16 2=1024 9=2 -23310=1,1.541520e-01
InnerProduct Conv_28 1 1 106 108 0=64 2=1024 9=4
BinaryOp Mul_30 2 1 101_splitncnn_0 108 109 0=2
BinaryOp Add_31 2 1 109 97 110
PReLU PRelu_32 1 1 110 112 0=64
Split splitncnn_5 1 2 112 112_splitncnn_0 112_splitncnn_1
Concat Concat_33 3 1 112_splitncnn_1 3 7 113
Split splitncnn_6 1 2 113 113_splitncnn_0 113_splitncnn_1
Convolution Conv_34 1 1 113_splitncnn_1 114 0=128 1=3 3=2 4=1 6=147456
Convolution Conv_35 1 1 113_splitncnn_0 115 0=128 1=3 3=2 4=1 5=1 6=147456
PReLU PRelu_36 1 1 115 117 0=128
Convolution Conv_37 1 1 117 118 0=128 1=3 4=1 5=1 6=147456
Split splitncnn_7 1 2 118 118_splitncnn_0 118_splitncnn_1
Pooling ReduceMean_39 1 1 118_splitncnn_1 120 0=1 4=1
InnerProduct Conv_40 1 1 120 123 0=16 2=2048 9=2 -23310=1,4.722085e-02
InnerProduct Conv_42 1 1 123 125 0=128 2=2048 9=4
BinaryOp Mul_44 2 1 118_splitncnn_0 125 126 0=2
BinaryOp Add_45 2 1 126 114 127
PReLU PRelu_46 1 1 127 129 0=128
Split splitncnn_8 1 2 129 129_splitncnn_0 129_splitncnn_1
Concat Concat_47 3 1 129_splitncnn_1 4 8 130
Split splitncnn_9 1 2 130 130_splitncnn_0 130_splitncnn_1
Convolution Conv_48 1 1 130_splitncnn_1 131 0=256 1=3 3=2 4=1 6=589824
Convolution Conv_49 1 1 130_splitncnn_0 132 0=256 1=3 3=2 4=1 5=1 6=589824
PReLU PRelu_50 1 1 132 134 0=256
Convolution Conv_51 1 1 134 135 0=256 1=3 4=1 5=1 6=589824
Split splitncnn_10 1 2 135 135_splitncnn_0 135_splitncnn_1
Pooling ReduceMean_53 1 1 135_splitncnn_1 137 0=1 4=1
InnerProduct Conv_54 1 1 137 140 0=16 2=4096 9=2 -23310=1,8.144739e-02
InnerProduct Conv_56 1 1 140 142 0=256 2=4096 9=4
BinaryOp Mul_58 2 1 135_splitncnn_0 142 143 0=2
BinaryOp Add_59 2 1 143 131 144
PReLU PRelu_60 1 1 144 146 0=256
Split splitncnn_11 1 2 146 146_splitncnn_0 146_splitncnn_1
Concat Concat_61 3 1 146_splitncnn_1 5 9 147
Split splitncnn_12 1 2 147 147_splitncnn_0 147_splitncnn_1
Convolution Conv_62 1 1 147_splitncnn_1 148 0=512 1=3 3=2 4=1 6=2359296
Convolution Conv_63 1 1 147_splitncnn_0 149 0=512 1=3 3=2 4=1 5=1 6=2359296
PReLU PRelu_64 1 1 149 151 0=512
Convolution Conv_65 1 1 151 152 0=512 1=3 4=1 5=1 6=2359296
Split splitncnn_13 1 2 152 152_splitncnn_0 152_splitncnn_1
Pooling ReduceMean_67 1 1 152_splitncnn_1 154 0=1 4=1
InnerProduct Conv_68 1 1 154 157 0=16 2=8192 9=2 -23310=1,7.700763e-02
InnerProduct Conv_70 1 1 157 159 0=512 2=8192 9=4
BinaryOp Mul_72 2 1 152_splitncnn_0 159 160 0=2
BinaryOp Add_73 2 1 160 148 161
PReLU PRelu_74 1 1 161 163 0=512
Concat Concat_75 3 1 163 6 10 164
Deconvolution ConvTranspose_76 1 1 164 165 0=256 1=4 3=2 4=1 5=1 6=4194304
PReLU PRelu_77 1 1 165 167 0=256
Concat Concat_78 2 1 167 146_splitncnn_0 168
Deconvolution ConvTranspose_79 1 1 168 169 0=128 1=4 3=2 4=1 5=1 6=1048576
PReLU PRelu_80 1 1 169 171 0=128
Concat Concat_81 2 1 171 129_splitncnn_0 172
Deconvolution ConvTranspose_82 1 1 172 173 0=64 1=4 3=2 4=1 5=1 6=262144
PReLU PRelu_83 1 1 173 175 0=64
Concat Concat_84 2 1 175 112_splitncnn_0 176
Deconvolution ConvTranspose_85 1 1 176 177 0=32 1=4 3=2 4=1 5=1 6=65536
PReLU PRelu_86 1 1 177 179 0=32
Convolution Conv_87 1 1 179 180 0=16 1=3 4=1 5=1 6=4608
PixelShuffle DepthToSpace_88 1 1 180 181 0=2
Sigmoid Sigmoid_89 1 1 181 182
Split splitncnn_14 1 2 182 182_splitncnn_0 182_splitncnn_1
Crop Slice_94 1 1 182_splitncnn_1 187 -23309=1,0 -23310=1,3 -23311=1,0
BinaryOp Mul_96 1 1 187 189 0=2 1=1 2=2.000000e+00
BinaryOp Sub_98 1 1 189 191 0=1 1=1 2=1.000000e+00
Crop Slice_103 1 1 182_splitncnn_0 196 -23309=1,3 -23310=1,4 -23311=1,0
Split splitncnn_15 1 2 196 196_splitncnn_0 196_splitncnn_1
BinaryOp Mul_104 2 1 85_splitncnn_0 196_splitncnn_1 197 0=2
BinaryOp Sub_106 1 1 196_splitncnn_0 199 0=7 1=1 2=1.000000e+00
BinaryOp Mul_107 2 1 92_splitncnn_0 199 200 0=2
BinaryOp Add_108 2 1 197 200 201
BinaryOp Add_109 2 1 201 191 202
Clip Clip_110 1 1 202 output 0=0.000000e+00 1=1.000000e+00

BIN
models/rife/rife-UHD/contextnet.bin vendored Normal file

Binary file not shown.

70
models/rife/rife-UHD/contextnet.param vendored Normal file
View File

@@ -0,0 +1,70 @@
7767517
68 82
Input input.1 0 1 input.1
Input flow.1 0 1 flow.1
UnaryOp flow.0 1 1 flow.1 flow.0 0=1
Convolution Conv_0 1 1 input.1 45 0=32 1=3 3=2 4=1 5=1 6=864
PReLU PRelu_1 1 1 45 47 0=32
Split splitncnn_0 1 2 47 47_splitncnn_0 47_splitncnn_1
Convolution Conv_2 1 1 47_splitncnn_1 48 0=32 1=3 3=2 4=1 6=9216
Convolution Conv_3 1 1 47_splitncnn_0 49 0=32 1=3 3=2 4=1 5=1 6=9216
PReLU PRelu_4 1 1 49 51 0=32
Convolution Conv_5 1 1 51 52 0=32 1=3 4=1 5=1 6=9216
Split splitncnn_1 1 2 52 52_splitncnn_0 52_splitncnn_1
Pooling ReduceMean_7 1 1 52_splitncnn_1 54 0=1 4=1
InnerProduct Conv_8 1 1 54 57 0=16 2=512 9=2 -23310=1,1.143919e+00
InnerProduct Conv_10 1 1 57 59 0=32 2=512 9=4
BinaryOp Mul_12 2 1 52_splitncnn_0 59 60 0=2
BinaryOp Add_13 2 1 60 48 61
PReLU PRelu_14 1 1 61 63 0=32
Split splitncnn_2 1 3 63 63_splitncnn_0 63_splitncnn_1 63_splitncnn_2
Interp Resize_16 1 1 flow.0 73 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_18 1 1 73 75 0=2 1=1 2=5.000000e-01
Split splitncnn_3 1 2 75 75_splitncnn_0 75_splitncnn_1
rife.Warp Warp_24 2 1 63_splitncnn_2 75_splitncnn_1 f1
Convolution Conv_25 1 1 63_splitncnn_1 82 0=64 1=3 3=2 4=1 6=18432
Convolution Conv_26 1 1 63_splitncnn_0 83 0=64 1=3 3=2 4=1 5=1 6=18432
PReLU PRelu_27 1 1 83 85 0=64
Convolution Conv_28 1 1 85 86 0=64 1=3 4=1 5=1 6=36864
Split splitncnn_4 1 2 86 86_splitncnn_0 86_splitncnn_1
Pooling ReduceMean_30 1 1 86_splitncnn_1 88 0=1 4=1
InnerProduct Conv_31 1 1 88 91 0=16 2=1024 9=2 -23310=1,3.006833e-01
InnerProduct Conv_33 1 1 91 93 0=64 2=1024 9=4
BinaryOp Mul_35 2 1 86_splitncnn_0 93 94 0=2
BinaryOp Add_36 2 1 94 82 95
PReLU PRelu_37 1 1 95 97 0=64
Split splitncnn_5 1 3 97 97_splitncnn_0 97_splitncnn_1 97_splitncnn_2
Interp Resize_39 1 1 75_splitncnn_0 107 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_41 1 1 107 109 0=2 1=1 2=5.000000e-01
Split splitncnn_6 1 2 109 109_splitncnn_0 109_splitncnn_1
rife.Warp Warp_47 2 1 97_splitncnn_2 109_splitncnn_1 f2
Convolution Conv_48 1 1 97_splitncnn_1 116 0=128 1=3 3=2 4=1 6=73728
Convolution Conv_49 1 1 97_splitncnn_0 117 0=128 1=3 3=2 4=1 5=1 6=73728
PReLU PRelu_50 1 1 117 119 0=128
Convolution Conv_51 1 1 119 120 0=128 1=3 4=1 5=1 6=147456
Split splitncnn_7 1 2 120 120_splitncnn_0 120_splitncnn_1
Pooling ReduceMean_53 1 1 120_splitncnn_1 122 0=1 4=1
InnerProduct Conv_54 1 1 122 125 0=16 2=2048 9=2 -23310=1,7.002444e-02
InnerProduct Conv_56 1 1 125 127 0=128 2=2048 9=4
BinaryOp Mul_58 2 1 120_splitncnn_0 127 128 0=2
BinaryOp Add_59 2 1 128 116 129
PReLU PRelu_60 1 1 129 131 0=128
Split splitncnn_8 1 3 131 131_splitncnn_0 131_splitncnn_1 131_splitncnn_2
Interp Resize_62 1 1 109_splitncnn_0 141 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_64 1 1 141 143 0=2 1=1 2=5.000000e-01
Split splitncnn_9 1 2 143 143_splitncnn_0 143_splitncnn_1
rife.Warp Warp_70 2 1 131_splitncnn_2 143_splitncnn_1 f3
Convolution Conv_71 1 1 131_splitncnn_1 150 0=256 1=3 3=2 4=1 6=294912
Convolution Conv_72 1 1 131_splitncnn_0 151 0=256 1=3 3=2 4=1 5=1 6=294912
PReLU PRelu_73 1 1 151 153 0=256
Convolution Conv_74 1 1 153 154 0=256 1=3 4=1 5=1 6=589824
Split splitncnn_10 1 2 154 154_splitncnn_0 154_splitncnn_1
Pooling ReduceMean_76 1 1 154_splitncnn_1 156 0=1 4=1
InnerProduct Conv_77 1 1 156 159 0=16 2=4096 9=2 -23310=1,6.568319e-02
InnerProduct Conv_79 1 1 159 161 0=256 2=4096 9=4
BinaryOp Mul_81 2 1 154_splitncnn_0 161 162 0=2
BinaryOp Add_82 2 1 162 150 163
PReLU PRelu_83 1 1 163 165 0=256
Interp Resize_85 1 1 143_splitncnn_0 175 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_87 1 1 175 177 0=2 1=1 2=5.000000e-01
rife.Warp Warp_93 2 1 165 177 f4

BIN
models/rife/rife-UHD/flownet.bin vendored Normal file

Binary file not shown.

322
models/rife/rife-UHD/flownet.param vendored Normal file
View File

@@ -0,0 +1,322 @@
7767517
320 386
Input input0 0 1 input0
Input input1 0 1 input1
Concat input.1 2 1 input0 input1 input.1
Interp Resize_1 1 1 input.1 454 0=2 1=5.000000e-01 2=5.000000e-01
Split splitncnn_0 1 7 454 454_splitncnn_0 454_splitncnn_1 454_splitncnn_2 454_splitncnn_3 454_splitncnn_4 454_splitncnn_5 454_splitncnn_6
Interp Resize_3 1 1 454_splitncnn_6 464 0=2 1=1.250000e-01 2=1.250000e-01
Convolution Conv_4 1 1 464 466 0=192 1=5 3=2 4=2 5=1 6=28800
PReLU PRelu_6 1 1 466 468 0=192
Split splitncnn_1 1 2 468 468_splitncnn_0 468_splitncnn_1
Convolution Conv_7 1 1 468_splitncnn_1 470 0=192 1=5 4=2 5=1 6=921600
PReLU PRelu_9 1 1 470 472 0=192
Convolution Conv_10 1 1 472 474 0=192 1=3 4=1 5=1 6=331776
Split splitncnn_2 1 2 474 474_splitncnn_0 474_splitncnn_1
Pooling ReduceMean_13 1 1 474_splitncnn_1 476 0=1 4=1
InnerProduct Conv_14 1 1 476 479 0=16 2=3072 9=2 -23310=1,1.428942e-02
InnerProduct Conv_16 1 1 479 481 0=192 2=3072 9=4
BinaryOp Mul_18 2 1 474_splitncnn_0 481 482 0=2
BinaryOp Add_19 2 1 482 468_splitncnn_0 483
PReLU PRelu_20 1 1 483 485 0=192
Split splitncnn_3 1 2 485 485_splitncnn_0 485_splitncnn_1
Convolution Conv_21 1 1 485_splitncnn_1 487 0=192 1=5 4=2 5=1 6=921600
PReLU PRelu_23 1 1 487 489 0=192
Convolution Conv_24 1 1 489 491 0=192 1=3 4=1 5=1 6=331776
Split splitncnn_4 1 2 491 491_splitncnn_0 491_splitncnn_1
Pooling ReduceMean_27 1 1 491_splitncnn_1 493 0=1 4=1
InnerProduct Conv_28 1 1 493 496 0=16 2=3072 9=2 -23310=1,3.543398e-01
InnerProduct Conv_30 1 1 496 498 0=192 2=3072 9=4
BinaryOp Mul_32 2 1 491_splitncnn_0 498 499 0=2
BinaryOp Add_33 2 1 499 485_splitncnn_0 500
PReLU PRelu_34 1 1 500 502 0=192
Split splitncnn_5 1 2 502 502_splitncnn_0 502_splitncnn_1
Convolution Conv_35 1 1 502_splitncnn_1 504 0=192 1=5 4=2 5=1 6=921600
PReLU PRelu_37 1 1 504 506 0=192
Convolution Conv_38 1 1 506 508 0=192 1=3 4=1 5=1 6=331776
Split splitncnn_6 1 2 508 508_splitncnn_0 508_splitncnn_1
Pooling ReduceMean_41 1 1 508_splitncnn_1 510 0=1 4=1
InnerProduct Conv_42 1 1 510 513 0=16 2=3072 9=2 -23310=1,5.366787e-01
InnerProduct Conv_44 1 1 513 515 0=192 2=3072 9=4
BinaryOp Mul_46 2 1 508_splitncnn_0 515 516 0=2
BinaryOp Add_47 2 1 516 502_splitncnn_0 517
PReLU PRelu_48 1 1 517 519 0=192
Split splitncnn_7 1 2 519 519_splitncnn_0 519_splitncnn_1
Convolution Conv_49 1 1 519_splitncnn_1 521 0=192 1=5 4=2 5=1 6=921600
PReLU PRelu_51 1 1 521 523 0=192
Convolution Conv_52 1 1 523 525 0=192 1=3 4=1 5=1 6=331776
Split splitncnn_8 1 2 525 525_splitncnn_0 525_splitncnn_1
Pooling ReduceMean_55 1 1 525_splitncnn_1 527 0=1 4=1
InnerProduct Conv_56 1 1 527 530 0=16 2=3072 9=2 -23310=1,-4.889974e-03
InnerProduct Conv_58 1 1 530 532 0=192 2=3072 9=4
BinaryOp Mul_60 2 1 525_splitncnn_0 532 533 0=2
BinaryOp Add_61 2 1 533 519_splitncnn_0 534
PReLU PRelu_62 1 1 534 536 0=192
Split splitncnn_9 1 2 536 536_splitncnn_0 536_splitncnn_1
Convolution Conv_63 1 1 536_splitncnn_1 538 0=192 1=5 4=2 5=1 6=921600
PReLU PRelu_65 1 1 538 540 0=192
Convolution Conv_66 1 1 540 542 0=192 1=3 4=1 5=1 6=331776
Split splitncnn_10 1 2 542 542_splitncnn_0 542_splitncnn_1
Pooling ReduceMean_69 1 1 542_splitncnn_1 544 0=1 4=1
InnerProduct Conv_70 1 1 544 547 0=16 2=3072 9=2 -23310=1,-1.182169e-02
InnerProduct Conv_72 1 1 547 549 0=192 2=3072 9=4
BinaryOp Mul_74 2 1 542_splitncnn_0 549 550 0=2
BinaryOp Add_75 2 1 550 536_splitncnn_0 551
PReLU PRelu_76 1 1 551 553 0=192
Split splitncnn_11 1 2 553 553_splitncnn_0 553_splitncnn_1
Convolution Conv_77 1 1 553_splitncnn_1 555 0=192 1=5 4=2 5=1 6=921600
PReLU PRelu_79 1 1 555 557 0=192
Convolution Conv_80 1 1 557 559 0=192 1=3 4=1 5=1 6=331776
Split splitncnn_12 1 2 559 559_splitncnn_0 559_splitncnn_1
Pooling ReduceMean_83 1 1 559_splitncnn_1 561 0=1 4=1
InnerProduct Conv_84 1 1 561 564 0=16 2=3072 9=2 -23310=1,2.179182e-01
InnerProduct Conv_86 1 1 564 566 0=192 2=3072 9=4
BinaryOp Mul_88 2 1 559_splitncnn_0 566 567 0=2
BinaryOp Add_89 2 1 567 553_splitncnn_0 568
PReLU PRelu_90 1 1 568 570 0=192
Convolution Conv_91 1 1 570 571 0=8 1=3 4=1 5=1 6=13824
PixelShuffle DepthToSpace_92 1 1 571 572 0=2
Interp Resize_94 1 1 572 582 0=2 1=8.000000e+00 2=8.000000e+00
Split splitncnn_13 1 6 582 582_splitncnn_0 582_splitncnn_1 582_splitncnn_2 582_splitncnn_3 582_splitncnn_4 582_splitncnn_5
Crop Slice_99 1 1 454_splitncnn_5 587 -23309=1,0 -23310=1,3 -23311=1,0
rife.Warp Warp_105 2 1 587 582_splitncnn_5 593
Crop Slice_110 1 1 454_splitncnn_4 598 -23309=1,3 -23310=1,2147483647 -23311=1,0
UnaryOp Neg_111 1 1 582_splitncnn_4 599 0=1
rife.Warp Warp_117 2 1 598 599 605
Concat Concat_118 3 1 593 605 582_splitncnn_3 606
Interp Resize_120 1 1 606 616 0=2 1=2.500000e-01 2=2.500000e-01
Convolution Conv_121 1 1 616 618 0=128 1=5 3=2 4=2 5=1 6=25600
PReLU PRelu_123 1 1 618 620 0=128
Split splitncnn_14 1 2 620 620_splitncnn_0 620_splitncnn_1
Convolution Conv_124 1 1 620_splitncnn_1 622 0=128 1=5 4=2 5=1 6=409600
PReLU PRelu_126 1 1 622 624 0=128
Convolution Conv_127 1 1 624 626 0=128 1=3 4=1 5=1 6=147456
Split splitncnn_15 1 2 626 626_splitncnn_0 626_splitncnn_1
Pooling ReduceMean_130 1 1 626_splitncnn_1 628 0=1 4=1
InnerProduct Conv_131 1 1 628 631 0=16 2=2048 9=2 -23310=1,-3.599843e-03
InnerProduct Conv_133 1 1 631 633 0=128 2=2048 9=4
BinaryOp Mul_135 2 1 626_splitncnn_0 633 634 0=2
BinaryOp Add_136 2 1 634 620_splitncnn_0 635
PReLU PRelu_137 1 1 635 637 0=128
Split splitncnn_16 1 2 637 637_splitncnn_0 637_splitncnn_1
Convolution Conv_138 1 1 637_splitncnn_1 639 0=128 1=5 4=2 5=1 6=409600
PReLU PRelu_140 1 1 639 641 0=128
Convolution Conv_141 1 1 641 643 0=128 1=3 4=1 5=1 6=147456
Split splitncnn_17 1 2 643 643_splitncnn_0 643_splitncnn_1
Pooling ReduceMean_144 1 1 643_splitncnn_1 645 0=1 4=1
InnerProduct Conv_145 1 1 645 648 0=16 2=2048 9=2 -23310=1,2.117399e-01
InnerProduct Conv_147 1 1 648 650 0=128 2=2048 9=4
BinaryOp Mul_149 2 1 643_splitncnn_0 650 651 0=2
BinaryOp Add_150 2 1 651 637_splitncnn_0 652
PReLU PRelu_151 1 1 652 654 0=128
Split splitncnn_18 1 2 654 654_splitncnn_0 654_splitncnn_1
Convolution Conv_152 1 1 654_splitncnn_1 656 0=128 1=5 4=2 5=1 6=409600
PReLU PRelu_154 1 1 656 658 0=128
Convolution Conv_155 1 1 658 660 0=128 1=3 4=1 5=1 6=147456
Split splitncnn_19 1 2 660 660_splitncnn_0 660_splitncnn_1
Pooling ReduceMean_158 1 1 660_splitncnn_1 662 0=1 4=1
InnerProduct Conv_159 1 1 662 665 0=16 2=2048 9=2 -23310=1,2.712289e-01
InnerProduct Conv_161 1 1 665 667 0=128 2=2048 9=4
BinaryOp Mul_163 2 1 660_splitncnn_0 667 668 0=2
BinaryOp Add_164 2 1 668 654_splitncnn_0 669
PReLU PRelu_165 1 1 669 671 0=128
Split splitncnn_20 1 2 671 671_splitncnn_0 671_splitncnn_1
Convolution Conv_166 1 1 671_splitncnn_1 673 0=128 1=5 4=2 5=1 6=409600
PReLU PRelu_168 1 1 673 675 0=128
Convolution Conv_169 1 1 675 677 0=128 1=3 4=1 5=1 6=147456
Split splitncnn_21 1 2 677 677_splitncnn_0 677_splitncnn_1
Pooling ReduceMean_172 1 1 677_splitncnn_1 679 0=1 4=1
InnerProduct Conv_173 1 1 679 682 0=16 2=2048 9=2 -23310=1,8.141350e-02
InnerProduct Conv_175 1 1 682 684 0=128 2=2048 9=4
BinaryOp Mul_177 2 1 677_splitncnn_0 684 685 0=2
BinaryOp Add_178 2 1 685 671_splitncnn_0 686
PReLU PRelu_179 1 1 686 688 0=128
Split splitncnn_22 1 2 688 688_splitncnn_0 688_splitncnn_1
Convolution Conv_180 1 1 688_splitncnn_1 690 0=128 1=5 4=2 5=1 6=409600
PReLU PRelu_182 1 1 690 692 0=128
Convolution Conv_183 1 1 692 694 0=128 1=3 4=1 5=1 6=147456
Split splitncnn_23 1 2 694 694_splitncnn_0 694_splitncnn_1
Pooling ReduceMean_186 1 1 694_splitncnn_1 696 0=1 4=1
InnerProduct Conv_187 1 1 696 699 0=16 2=2048 9=2 -23310=1,4.956326e-02
InnerProduct Conv_189 1 1 699 701 0=128 2=2048 9=4
BinaryOp Mul_191 2 1 694_splitncnn_0 701 702 0=2
BinaryOp Add_192 2 1 702 688_splitncnn_0 703
PReLU PRelu_193 1 1 703 705 0=128
Split splitncnn_24 1 2 705 705_splitncnn_0 705_splitncnn_1
Convolution Conv_194 1 1 705_splitncnn_1 707 0=128 1=5 4=2 5=1 6=409600
PReLU PRelu_196 1 1 707 709 0=128
Convolution Conv_197 1 1 709 711 0=128 1=3 4=1 5=1 6=147456
Split splitncnn_25 1 2 711 711_splitncnn_0 711_splitncnn_1
Pooling ReduceMean_200 1 1 711_splitncnn_1 713 0=1 4=1
InnerProduct Conv_201 1 1 713 716 0=16 2=2048 9=2 -23310=1,1.553750e-01
InnerProduct Conv_203 1 1 716 718 0=128 2=2048 9=4
BinaryOp Mul_205 2 1 711_splitncnn_0 718 719 0=2
BinaryOp Add_206 2 1 719 705_splitncnn_0 720
PReLU PRelu_207 1 1 720 722 0=128
Convolution Conv_208 1 1 722 723 0=8 1=3 4=1 5=1 6=9216
PixelShuffle DepthToSpace_209 1 1 723 724 0=2
Interp Resize_211 1 1 724 734 0=2 1=4.000000e+00 2=4.000000e+00
Split splitncnn_26 1 3 734 734_splitncnn_0 734_splitncnn_1 734_splitncnn_2
BinaryOp Add_212 2 1 582_splitncnn_2 734_splitncnn_2 735
Split splitncnn_27 1 3 735 735_splitncnn_0 735_splitncnn_1 735_splitncnn_2
Crop Slice_217 1 1 454_splitncnn_3 740 -23309=1,0 -23310=1,3 -23311=1,0
rife.Warp Warp_223 2 1 740 735_splitncnn_2 746
Crop Slice_228 1 1 454_splitncnn_2 751 -23309=1,3 -23310=1,2147483647 -23311=1,0
UnaryOp Neg_229 1 1 735_splitncnn_1 752 0=1
rife.Warp Warp_235 2 1 751 752 758
Concat Concat_236 3 1 746 758 735_splitncnn_0 759
Interp Resize_238 1 1 759 769 0=2 1=5.000000e-01 2=5.000000e-01
Convolution Conv_239 1 1 769 771 0=96 1=5 3=2 4=2 5=1 6=19200
PReLU PRelu_241 1 1 771 773 0=96
Split splitncnn_28 1 2 773 773_splitncnn_0 773_splitncnn_1
Convolution Conv_242 1 1 773_splitncnn_1 775 0=96 1=5 4=2 5=1 6=230400
PReLU PRelu_244 1 1 775 777 0=96
Convolution Conv_245 1 1 777 779 0=96 1=3 4=1 5=1 6=82944
Split splitncnn_29 1 2 779 779_splitncnn_0 779_splitncnn_1
Pooling ReduceMean_248 1 1 779_splitncnn_1 781 0=1 4=1
InnerProduct Conv_249 1 1 781 784 0=16 2=1536 9=2 -23310=1,1.670981e-03
InnerProduct Conv_251 1 1 784 786 0=96 2=1536 9=4
BinaryOp Mul_253 2 1 779_splitncnn_0 786 787 0=2
BinaryOp Add_254 2 1 787 773_splitncnn_0 788
PReLU PRelu_255 1 1 788 790 0=96
Split splitncnn_30 1 2 790 790_splitncnn_0 790_splitncnn_1
Convolution Conv_256 1 1 790_splitncnn_1 792 0=96 1=5 4=2 5=1 6=230400
PReLU PRelu_258 1 1 792 794 0=96
Convolution Conv_259 1 1 794 796 0=96 1=3 4=1 5=1 6=82944
Split splitncnn_31 1 2 796 796_splitncnn_0 796_splitncnn_1
Pooling ReduceMean_262 1 1 796_splitncnn_1 798 0=1 4=1
InnerProduct Conv_263 1 1 798 801 0=16 2=1536 9=2 -23310=1,3.868800e-01
InnerProduct Conv_265 1 1 801 803 0=96 2=1536 9=4
BinaryOp Mul_267 2 1 796_splitncnn_0 803 804 0=2
BinaryOp Add_268 2 1 804 790_splitncnn_0 805
PReLU PRelu_269 1 1 805 807 0=96
Split splitncnn_32 1 2 807 807_splitncnn_0 807_splitncnn_1
Convolution Conv_270 1 1 807_splitncnn_1 809 0=96 1=5 4=2 5=1 6=230400
PReLU PRelu_272 1 1 809 811 0=96
Convolution Conv_273 1 1 811 813 0=96 1=3 4=1 5=1 6=82944
Split splitncnn_33 1 2 813 813_splitncnn_0 813_splitncnn_1
Pooling ReduceMean_276 1 1 813_splitncnn_1 815 0=1 4=1
InnerProduct Conv_277 1 1 815 818 0=16 2=1536 9=2 -23310=1,3.475277e-01
InnerProduct Conv_279 1 1 818 820 0=96 2=1536 9=4
BinaryOp Mul_281 2 1 813_splitncnn_0 820 821 0=2
BinaryOp Add_282 2 1 821 807_splitncnn_0 822
PReLU PRelu_283 1 1 822 824 0=96
Split splitncnn_34 1 2 824 824_splitncnn_0 824_splitncnn_1
Convolution Conv_284 1 1 824_splitncnn_1 826 0=96 1=5 4=2 5=1 6=230400
PReLU PRelu_286 1 1 826 828 0=96
Convolution Conv_287 1 1 828 830 0=96 1=3 4=1 5=1 6=82944
Split splitncnn_35 1 2 830 830_splitncnn_0 830_splitncnn_1
Pooling ReduceMean_290 1 1 830_splitncnn_1 832 0=1 4=1
InnerProduct Conv_291 1 1 832 835 0=16 2=1536 9=2 -23310=1,7.044167e-02
InnerProduct Conv_293 1 1 835 837 0=96 2=1536 9=4
BinaryOp Mul_295 2 1 830_splitncnn_0 837 838 0=2
BinaryOp Add_296 2 1 838 824_splitncnn_0 839
PReLU PRelu_297 1 1 839 841 0=96
Split splitncnn_36 1 2 841 841_splitncnn_0 841_splitncnn_1
Convolution Conv_298 1 1 841_splitncnn_1 843 0=96 1=5 4=2 5=1 6=230400
PReLU PRelu_300 1 1 843 845 0=96
Convolution Conv_301 1 1 845 847 0=96 1=3 4=1 5=1 6=82944
Split splitncnn_37 1 2 847 847_splitncnn_0 847_splitncnn_1
Pooling ReduceMean_304 1 1 847_splitncnn_1 849 0=1 4=1
InnerProduct Conv_305 1 1 849 852 0=16 2=1536 9=2 -23310=1,1.834324e-01
InnerProduct Conv_307 1 1 852 854 0=96 2=1536 9=4
BinaryOp Mul_309 2 1 847_splitncnn_0 854 855 0=2
BinaryOp Add_310 2 1 855 841_splitncnn_0 856
PReLU PRelu_311 1 1 856 858 0=96
Split splitncnn_38 1 2 858 858_splitncnn_0 858_splitncnn_1
Convolution Conv_312 1 1 858_splitncnn_1 860 0=96 1=5 4=2 5=1 6=230400
PReLU PRelu_314 1 1 860 862 0=96
Convolution Conv_315 1 1 862 864 0=96 1=3 4=1 5=1 6=82944
Split splitncnn_39 1 2 864 864_splitncnn_0 864_splitncnn_1
Pooling ReduceMean_318 1 1 864_splitncnn_1 866 0=1 4=1
InnerProduct Conv_319 1 1 866 869 0=16 2=1536 9=2 -23310=1,3.572731e-01
InnerProduct Conv_321 1 1 869 871 0=96 2=1536 9=4
BinaryOp Mul_323 2 1 864_splitncnn_0 871 872 0=2
BinaryOp Add_324 2 1 872 858_splitncnn_0 873
PReLU PRelu_325 1 1 873 875 0=96
Convolution Conv_326 1 1 875 876 0=8 1=3 4=1 5=1 6=6912
PixelShuffle DepthToSpace_327 1 1 876 877 0=2
Interp Resize_329 1 1 877 887 0=2 1=2.000000e+00 2=2.000000e+00
Split splitncnn_40 1 2 887 887_splitncnn_0 887_splitncnn_1
BinaryOp Add_330 2 1 582_splitncnn_1 734_splitncnn_1 888
BinaryOp Add_331 2 1 888 887_splitncnn_1 889
Split splitncnn_41 1 3 889 889_splitncnn_0 889_splitncnn_1 889_splitncnn_2
Crop Slice_336 1 1 454_splitncnn_1 894 -23309=1,0 -23310=1,3 -23311=1,0
rife.Warp Warp_342 2 1 894 889_splitncnn_2 900
Crop Slice_347 1 1 454_splitncnn_0 905 -23309=1,3 -23310=1,2147483647 -23311=1,0
UnaryOp Neg_348 1 1 889_splitncnn_1 906 0=1
rife.Warp Warp_354 2 1 905 906 912
Concat Concat_355 3 1 900 912 889_splitncnn_0 913
Convolution Conv_356 1 1 913 915 0=48 1=5 3=2 4=2 5=1 6=9600
PReLU PRelu_358 1 1 915 917 0=48
Split splitncnn_42 1 2 917 917_splitncnn_0 917_splitncnn_1
Convolution Conv_359 1 1 917_splitncnn_1 919 0=48 1=5 4=2 5=1 6=57600
PReLU PRelu_361 1 1 919 921 0=48
Convolution Conv_362 1 1 921 923 0=48 1=3 4=1 5=1 6=20736
Split splitncnn_43 1 2 923 923_splitncnn_0 923_splitncnn_1
Pooling ReduceMean_365 1 1 923_splitncnn_1 925 0=1 4=1
InnerProduct Conv_366 1 1 925 928 0=16 2=768 9=2 -23310=1,2.075541e-02
InnerProduct Conv_368 1 1 928 930 0=48 2=768 9=4
BinaryOp Mul_370 2 1 923_splitncnn_0 930 931 0=2
BinaryOp Add_371 2 1 931 917_splitncnn_0 932
PReLU PRelu_372 1 1 932 934 0=48
Split splitncnn_44 1 2 934 934_splitncnn_0 934_splitncnn_1
Convolution Conv_373 1 1 934_splitncnn_1 936 0=48 1=5 4=2 5=1 6=57600
PReLU PRelu_375 1 1 936 938 0=48
Convolution Conv_376 1 1 938 940 0=48 1=3 4=1 5=1 6=20736
Split splitncnn_45 1 2 940 940_splitncnn_0 940_splitncnn_1
Pooling ReduceMean_379 1 1 940_splitncnn_1 942 0=1 4=1
InnerProduct Conv_380 1 1 942 945 0=16 2=768 9=2 -23310=1,7.201483e-01
InnerProduct Conv_382 1 1 945 947 0=48 2=768 9=4
BinaryOp Mul_384 2 1 940_splitncnn_0 947 948 0=2
BinaryOp Add_385 2 1 948 934_splitncnn_0 949
PReLU PRelu_386 1 1 949 951 0=48
Split splitncnn_46 1 2 951 951_splitncnn_0 951_splitncnn_1
Convolution Conv_387 1 1 951_splitncnn_1 953 0=48 1=5 4=2 5=1 6=57600
PReLU PRelu_389 1 1 953 955 0=48
Convolution Conv_390 1 1 955 957 0=48 1=3 4=1 5=1 6=20736
Split splitncnn_47 1 2 957 957_splitncnn_0 957_splitncnn_1
Pooling ReduceMean_393 1 1 957_splitncnn_1 959 0=1 4=1
InnerProduct Conv_394 1 1 959 962 0=16 2=768 9=2 -23310=1,2.671039e-01
InnerProduct Conv_396 1 1 962 964 0=48 2=768 9=4
BinaryOp Mul_398 2 1 957_splitncnn_0 964 965 0=2
BinaryOp Add_399 2 1 965 951_splitncnn_0 966
PReLU PRelu_400 1 1 966 968 0=48
Split splitncnn_48 1 2 968 968_splitncnn_0 968_splitncnn_1
Convolution Conv_401 1 1 968_splitncnn_1 970 0=48 1=5 4=2 5=1 6=57600
PReLU PRelu_403 1 1 970 972 0=48
Convolution Conv_404 1 1 972 974 0=48 1=3 4=1 5=1 6=20736
Split splitncnn_49 1 2 974 974_splitncnn_0 974_splitncnn_1
Pooling ReduceMean_407 1 1 974_splitncnn_1 976 0=1 4=1
InnerProduct Conv_408 1 1 976 979 0=16 2=768 9=2 -23310=1,1.908224e-01
InnerProduct Conv_410 1 1 979 981 0=48 2=768 9=4
BinaryOp Mul_412 2 1 974_splitncnn_0 981 982 0=2
BinaryOp Add_413 2 1 982 968_splitncnn_0 983
PReLU PRelu_414 1 1 983 985 0=48
Split splitncnn_50 1 2 985 985_splitncnn_0 985_splitncnn_1
Convolution Conv_415 1 1 985_splitncnn_1 987 0=48 1=5 4=2 5=1 6=57600
PReLU PRelu_417 1 1 987 989 0=48
Convolution Conv_418 1 1 989 991 0=48 1=3 4=1 5=1 6=20736
Split splitncnn_51 1 2 991 991_splitncnn_0 991_splitncnn_1
Pooling ReduceMean_421 1 1 991_splitncnn_1 993 0=1 4=1
InnerProduct Conv_422 1 1 993 996 0=16 2=768 9=2 -23310=1,6.525763e-01
InnerProduct Conv_424 1 1 996 998 0=48 2=768 9=4
BinaryOp Mul_426 2 1 991_splitncnn_0 998 999 0=2
BinaryOp Add_427 2 1 999 985_splitncnn_0 1000
PReLU PRelu_428 1 1 1000 1002 0=48
Split splitncnn_52 1 2 1002 1002_splitncnn_0 1002_splitncnn_1
Convolution Conv_429 1 1 1002_splitncnn_1 1004 0=48 1=5 4=2 5=1 6=57600
PReLU PRelu_431 1 1 1004 1006 0=48
Convolution Conv_432 1 1 1006 1008 0=48 1=3 4=1 5=1 6=20736
Split splitncnn_53 1 2 1008 1008_splitncnn_0 1008_splitncnn_1
Pooling ReduceMean_435 1 1 1008_splitncnn_1 1010 0=1 4=1
InnerProduct Conv_436 1 1 1010 1013 0=16 2=768 9=2 -23310=1,5.485489e-01
InnerProduct Conv_438 1 1 1013 1015 0=48 2=768 9=4
BinaryOp Mul_440 2 1 1008_splitncnn_0 1015 1016 0=2
BinaryOp Add_441 2 1 1016 1002_splitncnn_0 1017
PReLU PRelu_442 1 1 1017 1019 0=48
Convolution Conv_443 1 1 1019 1020 0=8 1=3 4=1 5=1 6=3456
PixelShuffle DepthToSpace_444 1 1 1020 1021 0=2
BinaryOp Add_445 2 1 582_splitncnn_0 734_splitncnn_0 1022
BinaryOp Add_446 2 1 1022 887_splitncnn_0 1023
BinaryOp Add_447 2 1 1023 1021 flow

BIN
models/rife/rife-UHD/fusionnet.bin vendored Normal file

Binary file not shown.

105
models/rife/rife-UHD/fusionnet.param vendored Normal file
View File

@@ -0,0 +1,105 @@
7767517
103 120
Input img0 0 1 img0
Input img1 0 1 img1
Input flow 0 1 flow
Input 3 0 1 3
Input 4 0 1 4
Input 5 0 1 5
Input 6 0 1 6
Input 7 0 1 7
Input 8 0 1 8
Input 9 0 1 9
Input 10 0 1 10
Interp Resize_1 1 1 flow 77 0=2 1=2.000000e+00 2=2.000000e+00
BinaryOp Mul_3 1 1 77 79 0=2 1=1 2=2.000000e+00
Split splitncnn_0 1 3 79 79_splitncnn_0 79_splitncnn_1 79_splitncnn_2
rife.Warp Warp_9 2 1 img0 79_splitncnn_2 85
Split splitncnn_1 1 2 85 85_splitncnn_0 85_splitncnn_1
UnaryOp Neg_10 1 1 79_splitncnn_1 86 0=1
rife.Warp Warp_16 2 1 img1 86 92
Split splitncnn_2 1 2 92 92_splitncnn_0 92_splitncnn_1
Concat Concat_17 3 1 85_splitncnn_1 92_splitncnn_1 79_splitncnn_0 93
Convolution Conv_18 1 1 93 94 0=32 1=3 3=2 4=1 5=1 6=2304
PReLU PRelu_19 1 1 94 96 0=32
Split splitncnn_3 1 2 96 96_splitncnn_0 96_splitncnn_1
Convolution Conv_20 1 1 96_splitncnn_1 97 0=64 1=3 3=2 4=1 6=18432
Convolution Conv_21 1 1 96_splitncnn_0 98 0=64 1=3 3=2 4=1 5=1 6=18432
PReLU PRelu_22 1 1 98 100 0=64
Convolution Conv_23 1 1 100 101 0=64 1=3 4=1 5=1 6=36864
Split splitncnn_4 1 2 101 101_splitncnn_0 101_splitncnn_1
Pooling ReduceMean_25 1 1 101_splitncnn_1 103 0=1 4=1
InnerProduct Conv_26 1 1 103 106 0=16 2=1024 9=2 -23310=1,1.541520e-01
InnerProduct Conv_28 1 1 106 108 0=64 2=1024 9=4
BinaryOp Mul_30 2 1 101_splitncnn_0 108 109 0=2
BinaryOp Add_31 2 1 109 97 110
PReLU PRelu_32 1 1 110 112 0=64
Split splitncnn_5 1 2 112 112_splitncnn_0 112_splitncnn_1
Concat Concat_33 3 1 112_splitncnn_1 3 7 113
Split splitncnn_6 1 2 113 113_splitncnn_0 113_splitncnn_1
Convolution Conv_34 1 1 113_splitncnn_1 114 0=128 1=3 3=2 4=1 6=147456
Convolution Conv_35 1 1 113_splitncnn_0 115 0=128 1=3 3=2 4=1 5=1 6=147456
PReLU PRelu_36 1 1 115 117 0=128
Convolution Conv_37 1 1 117 118 0=128 1=3 4=1 5=1 6=147456
Split splitncnn_7 1 2 118 118_splitncnn_0 118_splitncnn_1
Pooling ReduceMean_39 1 1 118_splitncnn_1 120 0=1 4=1
InnerProduct Conv_40 1 1 120 123 0=16 2=2048 9=2 -23310=1,4.722085e-02
InnerProduct Conv_42 1 1 123 125 0=128 2=2048 9=4
BinaryOp Mul_44 2 1 118_splitncnn_0 125 126 0=2
BinaryOp Add_45 2 1 126 114 127
PReLU PRelu_46 1 1 127 129 0=128
Split splitncnn_8 1 2 129 129_splitncnn_0 129_splitncnn_1
Concat Concat_47 3 1 129_splitncnn_1 4 8 130
Split splitncnn_9 1 2 130 130_splitncnn_0 130_splitncnn_1
Convolution Conv_48 1 1 130_splitncnn_1 131 0=256 1=3 3=2 4=1 6=589824
Convolution Conv_49 1 1 130_splitncnn_0 132 0=256 1=3 3=2 4=1 5=1 6=589824
PReLU PRelu_50 1 1 132 134 0=256
Convolution Conv_51 1 1 134 135 0=256 1=3 4=1 5=1 6=589824
Split splitncnn_10 1 2 135 135_splitncnn_0 135_splitncnn_1
Pooling ReduceMean_53 1 1 135_splitncnn_1 137 0=1 4=1
InnerProduct Conv_54 1 1 137 140 0=16 2=4096 9=2 -23310=1,8.144739e-02
InnerProduct Conv_56 1 1 140 142 0=256 2=4096 9=4
BinaryOp Mul_58 2 1 135_splitncnn_0 142 143 0=2
BinaryOp Add_59 2 1 143 131 144
PReLU PRelu_60 1 1 144 146 0=256
Split splitncnn_11 1 2 146 146_splitncnn_0 146_splitncnn_1
Concat Concat_61 3 1 146_splitncnn_1 5 9 147
Split splitncnn_12 1 2 147 147_splitncnn_0 147_splitncnn_1
Convolution Conv_62 1 1 147_splitncnn_1 148 0=512 1=3 3=2 4=1 6=2359296
Convolution Conv_63 1 1 147_splitncnn_0 149 0=512 1=3 3=2 4=1 5=1 6=2359296
PReLU PRelu_64 1 1 149 151 0=512
Convolution Conv_65 1 1 151 152 0=512 1=3 4=1 5=1 6=2359296
Split splitncnn_13 1 2 152 152_splitncnn_0 152_splitncnn_1
Pooling ReduceMean_67 1 1 152_splitncnn_1 154 0=1 4=1
InnerProduct Conv_68 1 1 154 157 0=16 2=8192 9=2 -23310=1,7.700763e-02
InnerProduct Conv_70 1 1 157 159 0=512 2=8192 9=4
BinaryOp Mul_72 2 1 152_splitncnn_0 159 160 0=2
BinaryOp Add_73 2 1 160 148 161
PReLU PRelu_74 1 1 161 163 0=512
Concat Concat_75 3 1 163 6 10 164
Deconvolution ConvTranspose_76 1 1 164 165 0=256 1=4 3=2 4=1 5=1 6=4194304
PReLU PRelu_77 1 1 165 167 0=256
Concat Concat_78 2 1 167 146_splitncnn_0 168
Deconvolution ConvTranspose_79 1 1 168 169 0=128 1=4 3=2 4=1 5=1 6=1048576
PReLU PRelu_80 1 1 169 171 0=128
Concat Concat_81 2 1 171 129_splitncnn_0 172
Deconvolution ConvTranspose_82 1 1 172 173 0=64 1=4 3=2 4=1 5=1 6=262144
PReLU PRelu_83 1 1 173 175 0=64
Concat Concat_84 2 1 175 112_splitncnn_0 176
Deconvolution ConvTranspose_85 1 1 176 177 0=32 1=4 3=2 4=1 5=1 6=65536
PReLU PRelu_86 1 1 177 179 0=32
Convolution Conv_87 1 1 179 180 0=16 1=3 4=1 5=1 6=4608
PixelShuffle DepthToSpace_88 1 1 180 181 0=2
Sigmoid Sigmoid_89 1 1 181 182
Split splitncnn_14 1 2 182 182_splitncnn_0 182_splitncnn_1
Crop Slice_94 1 1 182_splitncnn_1 187 -23309=1,0 -23310=1,3 -23311=1,0
BinaryOp Mul_96 1 1 187 189 0=2 1=1 2=2.000000e+00
BinaryOp Sub_98 1 1 189 191 0=1 1=1 2=1.000000e+00
Crop Slice_103 1 1 182_splitncnn_0 196 -23309=1,3 -23310=1,4 -23311=1,0
Split splitncnn_15 1 2 196 196_splitncnn_0 196_splitncnn_1
BinaryOp Mul_104 2 1 85_splitncnn_0 196_splitncnn_1 197 0=2
BinaryOp Sub_106 1 1 196_splitncnn_0 199 0=7 1=1 2=1.000000e+00
BinaryOp Mul_107 2 1 92_splitncnn_0 199 200 0=2
BinaryOp Add_108 2 1 197 200 201
BinaryOp Add_109 2 1 201 191 202
Clip Clip_110 1 1 202 output 0=0.000000e+00 1=1.000000e+00

BIN
models/rife/rife-anime/contextnet.bin vendored Normal file

Binary file not shown.

70
models/rife/rife-anime/contextnet.param vendored Normal file
View File

@@ -0,0 +1,70 @@
7767517
68 82
Input input.1 0 1 input.1
Input flow.1 0 1 flow.1
UnaryOp flow.0 1 1 flow.1 flow.0 0=1
Convolution Conv_0 1 1 input.1 45 0=32 1=3 3=2 4=1 5=1 6=864
PReLU PRelu_1 1 1 45 47 0=32
Split splitncnn_0 1 2 47 47_splitncnn_0 47_splitncnn_1
Convolution Conv_2 1 1 47_splitncnn_1 48 0=32 1=3 3=2 4=1 6=9216
Convolution Conv_3 1 1 47_splitncnn_0 49 0=32 1=3 3=2 4=1 5=1 6=9216
PReLU PRelu_4 1 1 49 51 0=32
Convolution Conv_5 1 1 51 52 0=32 1=3 4=1 5=1 6=9216
Split splitncnn_1 1 2 52 52_splitncnn_0 52_splitncnn_1
Pooling ReduceMean_7 1 1 52_splitncnn_1 54 0=1 4=1
InnerProduct Conv_8 1 1 54 57 0=16 2=512 9=2 -23310=1,1.143919e+00
InnerProduct Conv_10 1 1 57 59 0=32 2=512 9=4
BinaryOp Mul_12 2 1 52_splitncnn_0 59 60 0=2
BinaryOp Add_13 2 1 60 48 61
PReLU PRelu_14 1 1 61 63 0=32
Split splitncnn_2 1 3 63 63_splitncnn_0 63_splitncnn_1 63_splitncnn_2
Interp Resize_16 1 1 flow.0 73 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_18 1 1 73 75 0=2 1=1 2=5.000000e-01
Split splitncnn_3 1 2 75 75_splitncnn_0 75_splitncnn_1
rife.Warp Warp_24 2 1 63_splitncnn_2 75_splitncnn_1 f1
Convolution Conv_25 1 1 63_splitncnn_1 82 0=64 1=3 3=2 4=1 6=18432
Convolution Conv_26 1 1 63_splitncnn_0 83 0=64 1=3 3=2 4=1 5=1 6=18432
PReLU PRelu_27 1 1 83 85 0=64
Convolution Conv_28 1 1 85 86 0=64 1=3 4=1 5=1 6=36864
Split splitncnn_4 1 2 86 86_splitncnn_0 86_splitncnn_1
Pooling ReduceMean_30 1 1 86_splitncnn_1 88 0=1 4=1
InnerProduct Conv_31 1 1 88 91 0=16 2=1024 9=2 -23310=1,3.006833e-01
InnerProduct Conv_33 1 1 91 93 0=64 2=1024 9=4
BinaryOp Mul_35 2 1 86_splitncnn_0 93 94 0=2
BinaryOp Add_36 2 1 94 82 95
PReLU PRelu_37 1 1 95 97 0=64
Split splitncnn_5 1 3 97 97_splitncnn_0 97_splitncnn_1 97_splitncnn_2
Interp Resize_39 1 1 75_splitncnn_0 107 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_41 1 1 107 109 0=2 1=1 2=5.000000e-01
Split splitncnn_6 1 2 109 109_splitncnn_0 109_splitncnn_1
rife.Warp Warp_47 2 1 97_splitncnn_2 109_splitncnn_1 f2
Convolution Conv_48 1 1 97_splitncnn_1 116 0=128 1=3 3=2 4=1 6=73728
Convolution Conv_49 1 1 97_splitncnn_0 117 0=128 1=3 3=2 4=1 5=1 6=73728
PReLU PRelu_50 1 1 117 119 0=128
Convolution Conv_51 1 1 119 120 0=128 1=3 4=1 5=1 6=147456
Split splitncnn_7 1 2 120 120_splitncnn_0 120_splitncnn_1
Pooling ReduceMean_53 1 1 120_splitncnn_1 122 0=1 4=1
InnerProduct Conv_54 1 1 122 125 0=16 2=2048 9=2 -23310=1,7.002444e-02
InnerProduct Conv_56 1 1 125 127 0=128 2=2048 9=4
BinaryOp Mul_58 2 1 120_splitncnn_0 127 128 0=2
BinaryOp Add_59 2 1 128 116 129
PReLU PRelu_60 1 1 129 131 0=128
Split splitncnn_8 1 3 131 131_splitncnn_0 131_splitncnn_1 131_splitncnn_2
Interp Resize_62 1 1 109_splitncnn_0 141 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_64 1 1 141 143 0=2 1=1 2=5.000000e-01
Split splitncnn_9 1 2 143 143_splitncnn_0 143_splitncnn_1
rife.Warp Warp_70 2 1 131_splitncnn_2 143_splitncnn_1 f3
Convolution Conv_71 1 1 131_splitncnn_1 150 0=256 1=3 3=2 4=1 6=294912
Convolution Conv_72 1 1 131_splitncnn_0 151 0=256 1=3 3=2 4=1 5=1 6=294912
PReLU PRelu_73 1 1 151 153 0=256
Convolution Conv_74 1 1 153 154 0=256 1=3 4=1 5=1 6=589824
Split splitncnn_10 1 2 154 154_splitncnn_0 154_splitncnn_1
Pooling ReduceMean_76 1 1 154_splitncnn_1 156 0=1 4=1
InnerProduct Conv_77 1 1 156 159 0=16 2=4096 9=2 -23310=1,6.568319e-02
InnerProduct Conv_79 1 1 159 161 0=256 2=4096 9=4
BinaryOp Mul_81 2 1 154_splitncnn_0 161 162 0=2
BinaryOp Add_82 2 1 162 150 163
PReLU PRelu_83 1 1 163 165 0=256
Interp Resize_85 1 1 143_splitncnn_0 175 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_87 1 1 175 177 0=2 1=1 2=5.000000e-01
rife.Warp Warp_93 2 1 165 177 f4

BIN
models/rife/rife-anime/flownet.bin vendored Normal file

Binary file not shown.

322
models/rife/rife-anime/flownet.param vendored Normal file
View File

@@ -0,0 +1,322 @@
7767517
320 386
Input input0 0 1 input0
Input input1 0 1 input1
Concat input.1 2 1 input0 input1 input.1
Interp Resize_1 1 1 input.1 454 0=2 1=5.000000e-01 2=5.000000e-01
Split splitncnn_0 1 7 454 454_splitncnn_0 454_splitncnn_1 454_splitncnn_2 454_splitncnn_3 454_splitncnn_4 454_splitncnn_5 454_splitncnn_6
Interp Resize_3 1 1 454_splitncnn_6 464 0=2 1=1.250000e-01 2=1.250000e-01
Convolution Conv_4 1 1 464 466 0=192 1=5 3=2 4=2 5=1 6=28800
PReLU PRelu_6 1 1 466 468 0=192
Split splitncnn_1 1 2 468 468_splitncnn_0 468_splitncnn_1
Convolution Conv_7 1 1 468_splitncnn_1 470 0=192 1=5 4=2 5=1 6=921600
PReLU PRelu_9 1 1 470 472 0=192
Convolution Conv_10 1 1 472 474 0=192 1=3 4=1 5=1 6=331776
Split splitncnn_2 1 2 474 474_splitncnn_0 474_splitncnn_1
Pooling ReduceMean_13 1 1 474_splitncnn_1 476 0=1 4=1
InnerProduct Conv_14 1 1 476 479 0=16 2=3072 9=2 -23310=1,1.428942e-02
InnerProduct Conv_16 1 1 479 481 0=192 2=3072 9=4
BinaryOp Mul_18 2 1 474_splitncnn_0 481 482 0=2
BinaryOp Add_19 2 1 482 468_splitncnn_0 483
PReLU PRelu_20 1 1 483 485 0=192
Split splitncnn_3 1 2 485 485_splitncnn_0 485_splitncnn_1
Convolution Conv_21 1 1 485_splitncnn_1 487 0=192 1=5 4=2 5=1 6=921600
PReLU PRelu_23 1 1 487 489 0=192
Convolution Conv_24 1 1 489 491 0=192 1=3 4=1 5=1 6=331776
Split splitncnn_4 1 2 491 491_splitncnn_0 491_splitncnn_1
Pooling ReduceMean_27 1 1 491_splitncnn_1 493 0=1 4=1
InnerProduct Conv_28 1 1 493 496 0=16 2=3072 9=2 -23310=1,3.543398e-01
InnerProduct Conv_30 1 1 496 498 0=192 2=3072 9=4
BinaryOp Mul_32 2 1 491_splitncnn_0 498 499 0=2
BinaryOp Add_33 2 1 499 485_splitncnn_0 500
PReLU PRelu_34 1 1 500 502 0=192
Split splitncnn_5 1 2 502 502_splitncnn_0 502_splitncnn_1
Convolution Conv_35 1 1 502_splitncnn_1 504 0=192 1=5 4=2 5=1 6=921600
PReLU PRelu_37 1 1 504 506 0=192
Convolution Conv_38 1 1 506 508 0=192 1=3 4=1 5=1 6=331776
Split splitncnn_6 1 2 508 508_splitncnn_0 508_splitncnn_1
Pooling ReduceMean_41 1 1 508_splitncnn_1 510 0=1 4=1
InnerProduct Conv_42 1 1 510 513 0=16 2=3072 9=2 -23310=1,5.366787e-01
InnerProduct Conv_44 1 1 513 515 0=192 2=3072 9=4
BinaryOp Mul_46 2 1 508_splitncnn_0 515 516 0=2
BinaryOp Add_47 2 1 516 502_splitncnn_0 517
PReLU PRelu_48 1 1 517 519 0=192
Split splitncnn_7 1 2 519 519_splitncnn_0 519_splitncnn_1
Convolution Conv_49 1 1 519_splitncnn_1 521 0=192 1=5 4=2 5=1 6=921600
PReLU PRelu_51 1 1 521 523 0=192
Convolution Conv_52 1 1 523 525 0=192 1=3 4=1 5=1 6=331776
Split splitncnn_8 1 2 525 525_splitncnn_0 525_splitncnn_1
Pooling ReduceMean_55 1 1 525_splitncnn_1 527 0=1 4=1
InnerProduct Conv_56 1 1 527 530 0=16 2=3072 9=2 -23310=1,-4.889974e-03
InnerProduct Conv_58 1 1 530 532 0=192 2=3072 9=4
BinaryOp Mul_60 2 1 525_splitncnn_0 532 533 0=2
BinaryOp Add_61 2 1 533 519_splitncnn_0 534
PReLU PRelu_62 1 1 534 536 0=192
Split splitncnn_9 1 2 536 536_splitncnn_0 536_splitncnn_1
Convolution Conv_63 1 1 536_splitncnn_1 538 0=192 1=5 4=2 5=1 6=921600
PReLU PRelu_65 1 1 538 540 0=192
Convolution Conv_66 1 1 540 542 0=192 1=3 4=1 5=1 6=331776
Split splitncnn_10 1 2 542 542_splitncnn_0 542_splitncnn_1
Pooling ReduceMean_69 1 1 542_splitncnn_1 544 0=1 4=1
InnerProduct Conv_70 1 1 544 547 0=16 2=3072 9=2 -23310=1,-1.182169e-02
InnerProduct Conv_72 1 1 547 549 0=192 2=3072 9=4
BinaryOp Mul_74 2 1 542_splitncnn_0 549 550 0=2
BinaryOp Add_75 2 1 550 536_splitncnn_0 551
PReLU PRelu_76 1 1 551 553 0=192
Split splitncnn_11 1 2 553 553_splitncnn_0 553_splitncnn_1
Convolution Conv_77 1 1 553_splitncnn_1 555 0=192 1=5 4=2 5=1 6=921600
PReLU PRelu_79 1 1 555 557 0=192
Convolution Conv_80 1 1 557 559 0=192 1=3 4=1 5=1 6=331776
Split splitncnn_12 1 2 559 559_splitncnn_0 559_splitncnn_1
Pooling ReduceMean_83 1 1 559_splitncnn_1 561 0=1 4=1
InnerProduct Conv_84 1 1 561 564 0=16 2=3072 9=2 -23310=1,2.179182e-01
InnerProduct Conv_86 1 1 564 566 0=192 2=3072 9=4
BinaryOp Mul_88 2 1 559_splitncnn_0 566 567 0=2
BinaryOp Add_89 2 1 567 553_splitncnn_0 568
PReLU PRelu_90 1 1 568 570 0=192
Convolution Conv_91 1 1 570 571 0=8 1=3 4=1 5=1 6=13824
PixelShuffle DepthToSpace_92 1 1 571 572 0=2
Interp Resize_94 1 1 572 582 0=2 1=8.000000e+00 2=8.000000e+00
Split splitncnn_13 1 6 582 582_splitncnn_0 582_splitncnn_1 582_splitncnn_2 582_splitncnn_3 582_splitncnn_4 582_splitncnn_5
Crop Slice_99 1 1 454_splitncnn_5 587 -23309=1,0 -23310=1,3 -23311=1,0
rife.Warp Warp_105 2 1 587 582_splitncnn_5 593
Crop Slice_110 1 1 454_splitncnn_4 598 -23309=1,3 -23310=1,2147483647 -23311=1,0
UnaryOp Neg_111 1 1 582_splitncnn_4 599 0=1
rife.Warp Warp_117 2 1 598 599 605
Concat Concat_118 3 1 593 605 582_splitncnn_3 606
Interp Resize_120 1 1 606 616 0=2 1=2.500000e-01 2=2.500000e-01
Convolution Conv_121 1 1 616 618 0=128 1=5 3=2 4=2 5=1 6=25600
PReLU PRelu_123 1 1 618 620 0=128
Split splitncnn_14 1 2 620 620_splitncnn_0 620_splitncnn_1
Convolution Conv_124 1 1 620_splitncnn_1 622 0=128 1=5 4=2 5=1 6=409600
PReLU PRelu_126 1 1 622 624 0=128
Convolution Conv_127 1 1 624 626 0=128 1=3 4=1 5=1 6=147456
Split splitncnn_15 1 2 626 626_splitncnn_0 626_splitncnn_1
Pooling ReduceMean_130 1 1 626_splitncnn_1 628 0=1 4=1
InnerProduct Conv_131 1 1 628 631 0=16 2=2048 9=2 -23310=1,-3.599843e-03
InnerProduct Conv_133 1 1 631 633 0=128 2=2048 9=4
BinaryOp Mul_135 2 1 626_splitncnn_0 633 634 0=2
BinaryOp Add_136 2 1 634 620_splitncnn_0 635
PReLU PRelu_137 1 1 635 637 0=128
Split splitncnn_16 1 2 637 637_splitncnn_0 637_splitncnn_1
Convolution Conv_138 1 1 637_splitncnn_1 639 0=128 1=5 4=2 5=1 6=409600
PReLU PRelu_140 1 1 639 641 0=128
Convolution Conv_141 1 1 641 643 0=128 1=3 4=1 5=1 6=147456
Split splitncnn_17 1 2 643 643_splitncnn_0 643_splitncnn_1
Pooling ReduceMean_144 1 1 643_splitncnn_1 645 0=1 4=1
InnerProduct Conv_145 1 1 645 648 0=16 2=2048 9=2 -23310=1,2.117399e-01
InnerProduct Conv_147 1 1 648 650 0=128 2=2048 9=4
BinaryOp Mul_149 2 1 643_splitncnn_0 650 651 0=2
BinaryOp Add_150 2 1 651 637_splitncnn_0 652
PReLU PRelu_151 1 1 652 654 0=128
Split splitncnn_18 1 2 654 654_splitncnn_0 654_splitncnn_1
Convolution Conv_152 1 1 654_splitncnn_1 656 0=128 1=5 4=2 5=1 6=409600
PReLU PRelu_154 1 1 656 658 0=128
Convolution Conv_155 1 1 658 660 0=128 1=3 4=1 5=1 6=147456
Split splitncnn_19 1 2 660 660_splitncnn_0 660_splitncnn_1
Pooling ReduceMean_158 1 1 660_splitncnn_1 662 0=1 4=1
InnerProduct Conv_159 1 1 662 665 0=16 2=2048 9=2 -23310=1,2.712289e-01
InnerProduct Conv_161 1 1 665 667 0=128 2=2048 9=4
BinaryOp Mul_163 2 1 660_splitncnn_0 667 668 0=2
BinaryOp Add_164 2 1 668 654_splitncnn_0 669
PReLU PRelu_165 1 1 669 671 0=128
Split splitncnn_20 1 2 671 671_splitncnn_0 671_splitncnn_1
Convolution Conv_166 1 1 671_splitncnn_1 673 0=128 1=5 4=2 5=1 6=409600
PReLU PRelu_168 1 1 673 675 0=128
Convolution Conv_169 1 1 675 677 0=128 1=3 4=1 5=1 6=147456
Split splitncnn_21 1 2 677 677_splitncnn_0 677_splitncnn_1
Pooling ReduceMean_172 1 1 677_splitncnn_1 679 0=1 4=1
InnerProduct Conv_173 1 1 679 682 0=16 2=2048 9=2 -23310=1,8.141350e-02
InnerProduct Conv_175 1 1 682 684 0=128 2=2048 9=4
BinaryOp Mul_177 2 1 677_splitncnn_0 684 685 0=2
BinaryOp Add_178 2 1 685 671_splitncnn_0 686
PReLU PRelu_179 1 1 686 688 0=128
Split splitncnn_22 1 2 688 688_splitncnn_0 688_splitncnn_1
Convolution Conv_180 1 1 688_splitncnn_1 690 0=128 1=5 4=2 5=1 6=409600
PReLU PRelu_182 1 1 690 692 0=128
Convolution Conv_183 1 1 692 694 0=128 1=3 4=1 5=1 6=147456
Split splitncnn_23 1 2 694 694_splitncnn_0 694_splitncnn_1
Pooling ReduceMean_186 1 1 694_splitncnn_1 696 0=1 4=1
InnerProduct Conv_187 1 1 696 699 0=16 2=2048 9=2 -23310=1,4.956326e-02
InnerProduct Conv_189 1 1 699 701 0=128 2=2048 9=4
BinaryOp Mul_191 2 1 694_splitncnn_0 701 702 0=2
BinaryOp Add_192 2 1 702 688_splitncnn_0 703
PReLU PRelu_193 1 1 703 705 0=128
Split splitncnn_24 1 2 705 705_splitncnn_0 705_splitncnn_1
Convolution Conv_194 1 1 705_splitncnn_1 707 0=128 1=5 4=2 5=1 6=409600
PReLU PRelu_196 1 1 707 709 0=128
Convolution Conv_197 1 1 709 711 0=128 1=3 4=1 5=1 6=147456
Split splitncnn_25 1 2 711 711_splitncnn_0 711_splitncnn_1
Pooling ReduceMean_200 1 1 711_splitncnn_1 713 0=1 4=1
InnerProduct Conv_201 1 1 713 716 0=16 2=2048 9=2 -23310=1,1.553750e-01
InnerProduct Conv_203 1 1 716 718 0=128 2=2048 9=4
BinaryOp Mul_205 2 1 711_splitncnn_0 718 719 0=2
BinaryOp Add_206 2 1 719 705_splitncnn_0 720
PReLU PRelu_207 1 1 720 722 0=128
Convolution Conv_208 1 1 722 723 0=8 1=3 4=1 5=1 6=9216
PixelShuffle DepthToSpace_209 1 1 723 724 0=2
Interp Resize_211 1 1 724 734 0=2 1=4.000000e+00 2=4.000000e+00
Split splitncnn_26 1 3 734 734_splitncnn_0 734_splitncnn_1 734_splitncnn_2
BinaryOp Add_212 2 1 582_splitncnn_2 734_splitncnn_2 735
Split splitncnn_27 1 3 735 735_splitncnn_0 735_splitncnn_1 735_splitncnn_2
Crop Slice_217 1 1 454_splitncnn_3 740 -23309=1,0 -23310=1,3 -23311=1,0
rife.Warp Warp_223 2 1 740 735_splitncnn_2 746
Crop Slice_228 1 1 454_splitncnn_2 751 -23309=1,3 -23310=1,2147483647 -23311=1,0
UnaryOp Neg_229 1 1 735_splitncnn_1 752 0=1
rife.Warp Warp_235 2 1 751 752 758
Concat Concat_236 3 1 746 758 735_splitncnn_0 759
Interp Resize_238 1 1 759 769 0=2 1=5.000000e-01 2=5.000000e-01
Convolution Conv_239 1 1 769 771 0=96 1=5 3=2 4=2 5=1 6=19200
PReLU PRelu_241 1 1 771 773 0=96
Split splitncnn_28 1 2 773 773_splitncnn_0 773_splitncnn_1
Convolution Conv_242 1 1 773_splitncnn_1 775 0=96 1=5 4=2 5=1 6=230400
PReLU PRelu_244 1 1 775 777 0=96
Convolution Conv_245 1 1 777 779 0=96 1=3 4=1 5=1 6=82944
Split splitncnn_29 1 2 779 779_splitncnn_0 779_splitncnn_1
Pooling ReduceMean_248 1 1 779_splitncnn_1 781 0=1 4=1
InnerProduct Conv_249 1 1 781 784 0=16 2=1536 9=2 -23310=1,1.670981e-03
InnerProduct Conv_251 1 1 784 786 0=96 2=1536 9=4
BinaryOp Mul_253 2 1 779_splitncnn_0 786 787 0=2
BinaryOp Add_254 2 1 787 773_splitncnn_0 788
PReLU PRelu_255 1 1 788 790 0=96
Split splitncnn_30 1 2 790 790_splitncnn_0 790_splitncnn_1
Convolution Conv_256 1 1 790_splitncnn_1 792 0=96 1=5 4=2 5=1 6=230400
PReLU PRelu_258 1 1 792 794 0=96
Convolution Conv_259 1 1 794 796 0=96 1=3 4=1 5=1 6=82944
Split splitncnn_31 1 2 796 796_splitncnn_0 796_splitncnn_1
Pooling ReduceMean_262 1 1 796_splitncnn_1 798 0=1 4=1
InnerProduct Conv_263 1 1 798 801 0=16 2=1536 9=2 -23310=1,3.868800e-01
InnerProduct Conv_265 1 1 801 803 0=96 2=1536 9=4
BinaryOp Mul_267 2 1 796_splitncnn_0 803 804 0=2
BinaryOp Add_268 2 1 804 790_splitncnn_0 805
PReLU PRelu_269 1 1 805 807 0=96
Split splitncnn_32 1 2 807 807_splitncnn_0 807_splitncnn_1
Convolution Conv_270 1 1 807_splitncnn_1 809 0=96 1=5 4=2 5=1 6=230400
PReLU PRelu_272 1 1 809 811 0=96
Convolution Conv_273 1 1 811 813 0=96 1=3 4=1 5=1 6=82944
Split splitncnn_33 1 2 813 813_splitncnn_0 813_splitncnn_1
Pooling ReduceMean_276 1 1 813_splitncnn_1 815 0=1 4=1
InnerProduct Conv_277 1 1 815 818 0=16 2=1536 9=2 -23310=1,3.475277e-01
InnerProduct Conv_279 1 1 818 820 0=96 2=1536 9=4
BinaryOp Mul_281 2 1 813_splitncnn_0 820 821 0=2
BinaryOp Add_282 2 1 821 807_splitncnn_0 822
PReLU PRelu_283 1 1 822 824 0=96
Split splitncnn_34 1 2 824 824_splitncnn_0 824_splitncnn_1
Convolution Conv_284 1 1 824_splitncnn_1 826 0=96 1=5 4=2 5=1 6=230400
PReLU PRelu_286 1 1 826 828 0=96
Convolution Conv_287 1 1 828 830 0=96 1=3 4=1 5=1 6=82944
Split splitncnn_35 1 2 830 830_splitncnn_0 830_splitncnn_1
Pooling ReduceMean_290 1 1 830_splitncnn_1 832 0=1 4=1
InnerProduct Conv_291 1 1 832 835 0=16 2=1536 9=2 -23310=1,7.044167e-02
InnerProduct Conv_293 1 1 835 837 0=96 2=1536 9=4
BinaryOp Mul_295 2 1 830_splitncnn_0 837 838 0=2
BinaryOp Add_296 2 1 838 824_splitncnn_0 839
PReLU PRelu_297 1 1 839 841 0=96
Split splitncnn_36 1 2 841 841_splitncnn_0 841_splitncnn_1
Convolution Conv_298 1 1 841_splitncnn_1 843 0=96 1=5 4=2 5=1 6=230400
PReLU PRelu_300 1 1 843 845 0=96
Convolution Conv_301 1 1 845 847 0=96 1=3 4=1 5=1 6=82944
Split splitncnn_37 1 2 847 847_splitncnn_0 847_splitncnn_1
Pooling ReduceMean_304 1 1 847_splitncnn_1 849 0=1 4=1
InnerProduct Conv_305 1 1 849 852 0=16 2=1536 9=2 -23310=1,1.834324e-01
InnerProduct Conv_307 1 1 852 854 0=96 2=1536 9=4
BinaryOp Mul_309 2 1 847_splitncnn_0 854 855 0=2
BinaryOp Add_310 2 1 855 841_splitncnn_0 856
PReLU PRelu_311 1 1 856 858 0=96
Split splitncnn_38 1 2 858 858_splitncnn_0 858_splitncnn_1
Convolution Conv_312 1 1 858_splitncnn_1 860 0=96 1=5 4=2 5=1 6=230400
PReLU PRelu_314 1 1 860 862 0=96
Convolution Conv_315 1 1 862 864 0=96 1=3 4=1 5=1 6=82944
Split splitncnn_39 1 2 864 864_splitncnn_0 864_splitncnn_1
Pooling ReduceMean_318 1 1 864_splitncnn_1 866 0=1 4=1
InnerProduct Conv_319 1 1 866 869 0=16 2=1536 9=2 -23310=1,3.572731e-01
InnerProduct Conv_321 1 1 869 871 0=96 2=1536 9=4
BinaryOp Mul_323 2 1 864_splitncnn_0 871 872 0=2
BinaryOp Add_324 2 1 872 858_splitncnn_0 873
PReLU PRelu_325 1 1 873 875 0=96
Convolution Conv_326 1 1 875 876 0=8 1=3 4=1 5=1 6=6912
PixelShuffle DepthToSpace_327 1 1 876 877 0=2
Interp Resize_329 1 1 877 887 0=2 1=2.000000e+00 2=2.000000e+00
Split splitncnn_40 1 2 887 887_splitncnn_0 887_splitncnn_1
BinaryOp Add_330 2 1 582_splitncnn_1 734_splitncnn_1 888
BinaryOp Add_331 2 1 888 887_splitncnn_1 889
Split splitncnn_41 1 3 889 889_splitncnn_0 889_splitncnn_1 889_splitncnn_2
Crop Slice_336 1 1 454_splitncnn_1 894 -23309=1,0 -23310=1,3 -23311=1,0
rife.Warp Warp_342 2 1 894 889_splitncnn_2 900
Crop Slice_347 1 1 454_splitncnn_0 905 -23309=1,3 -23310=1,2147483647 -23311=1,0
UnaryOp Neg_348 1 1 889_splitncnn_1 906 0=1
rife.Warp Warp_354 2 1 905 906 912
Concat Concat_355 3 1 900 912 889_splitncnn_0 913
Convolution Conv_356 1 1 913 915 0=48 1=5 3=2 4=2 5=1 6=9600
PReLU PRelu_358 1 1 915 917 0=48
Split splitncnn_42 1 2 917 917_splitncnn_0 917_splitncnn_1
Convolution Conv_359 1 1 917_splitncnn_1 919 0=48 1=5 4=2 5=1 6=57600
PReLU PRelu_361 1 1 919 921 0=48
Convolution Conv_362 1 1 921 923 0=48 1=3 4=1 5=1 6=20736
Split splitncnn_43 1 2 923 923_splitncnn_0 923_splitncnn_1
Pooling ReduceMean_365 1 1 923_splitncnn_1 925 0=1 4=1
InnerProduct Conv_366 1 1 925 928 0=16 2=768 9=2 -23310=1,2.075541e-02
InnerProduct Conv_368 1 1 928 930 0=48 2=768 9=4
BinaryOp Mul_370 2 1 923_splitncnn_0 930 931 0=2
BinaryOp Add_371 2 1 931 917_splitncnn_0 932
PReLU PRelu_372 1 1 932 934 0=48
Split splitncnn_44 1 2 934 934_splitncnn_0 934_splitncnn_1
Convolution Conv_373 1 1 934_splitncnn_1 936 0=48 1=5 4=2 5=1 6=57600
PReLU PRelu_375 1 1 936 938 0=48
Convolution Conv_376 1 1 938 940 0=48 1=3 4=1 5=1 6=20736
Split splitncnn_45 1 2 940 940_splitncnn_0 940_splitncnn_1
Pooling ReduceMean_379 1 1 940_splitncnn_1 942 0=1 4=1
InnerProduct Conv_380 1 1 942 945 0=16 2=768 9=2 -23310=1,7.201483e-01
InnerProduct Conv_382 1 1 945 947 0=48 2=768 9=4
BinaryOp Mul_384 2 1 940_splitncnn_0 947 948 0=2
BinaryOp Add_385 2 1 948 934_splitncnn_0 949
PReLU PRelu_386 1 1 949 951 0=48
Split splitncnn_46 1 2 951 951_splitncnn_0 951_splitncnn_1
Convolution Conv_387 1 1 951_splitncnn_1 953 0=48 1=5 4=2 5=1 6=57600
PReLU PRelu_389 1 1 953 955 0=48
Convolution Conv_390 1 1 955 957 0=48 1=3 4=1 5=1 6=20736
Split splitncnn_47 1 2 957 957_splitncnn_0 957_splitncnn_1
Pooling ReduceMean_393 1 1 957_splitncnn_1 959 0=1 4=1
InnerProduct Conv_394 1 1 959 962 0=16 2=768 9=2 -23310=1,2.671039e-01
InnerProduct Conv_396 1 1 962 964 0=48 2=768 9=4
BinaryOp Mul_398 2 1 957_splitncnn_0 964 965 0=2
BinaryOp Add_399 2 1 965 951_splitncnn_0 966
PReLU PRelu_400 1 1 966 968 0=48
Split splitncnn_48 1 2 968 968_splitncnn_0 968_splitncnn_1
Convolution Conv_401 1 1 968_splitncnn_1 970 0=48 1=5 4=2 5=1 6=57600
PReLU PRelu_403 1 1 970 972 0=48
Convolution Conv_404 1 1 972 974 0=48 1=3 4=1 5=1 6=20736
Split splitncnn_49 1 2 974 974_splitncnn_0 974_splitncnn_1
Pooling ReduceMean_407 1 1 974_splitncnn_1 976 0=1 4=1
InnerProduct Conv_408 1 1 976 979 0=16 2=768 9=2 -23310=1,1.908224e-01
InnerProduct Conv_410 1 1 979 981 0=48 2=768 9=4
BinaryOp Mul_412 2 1 974_splitncnn_0 981 982 0=2
BinaryOp Add_413 2 1 982 968_splitncnn_0 983
PReLU PRelu_414 1 1 983 985 0=48
Split splitncnn_50 1 2 985 985_splitncnn_0 985_splitncnn_1
Convolution Conv_415 1 1 985_splitncnn_1 987 0=48 1=5 4=2 5=1 6=57600
PReLU PRelu_417 1 1 987 989 0=48
Convolution Conv_418 1 1 989 991 0=48 1=3 4=1 5=1 6=20736
Split splitncnn_51 1 2 991 991_splitncnn_0 991_splitncnn_1
Pooling ReduceMean_421 1 1 991_splitncnn_1 993 0=1 4=1
InnerProduct Conv_422 1 1 993 996 0=16 2=768 9=2 -23310=1,6.525763e-01
InnerProduct Conv_424 1 1 996 998 0=48 2=768 9=4
BinaryOp Mul_426 2 1 991_splitncnn_0 998 999 0=2
BinaryOp Add_427 2 1 999 985_splitncnn_0 1000
PReLU PRelu_428 1 1 1000 1002 0=48
Split splitncnn_52 1 2 1002 1002_splitncnn_0 1002_splitncnn_1
Convolution Conv_429 1 1 1002_splitncnn_1 1004 0=48 1=5 4=2 5=1 6=57600
PReLU PRelu_431 1 1 1004 1006 0=48
Convolution Conv_432 1 1 1006 1008 0=48 1=3 4=1 5=1 6=20736
Split splitncnn_53 1 2 1008 1008_splitncnn_0 1008_splitncnn_1
Pooling ReduceMean_435 1 1 1008_splitncnn_1 1010 0=1 4=1
InnerProduct Conv_436 1 1 1010 1013 0=16 2=768 9=2 -23310=1,5.485489e-01
InnerProduct Conv_438 1 1 1013 1015 0=48 2=768 9=4
BinaryOp Mul_440 2 1 1008_splitncnn_0 1015 1016 0=2
BinaryOp Add_441 2 1 1016 1002_splitncnn_0 1017
PReLU PRelu_442 1 1 1017 1019 0=48
Convolution Conv_443 1 1 1019 1020 0=8 1=3 4=1 5=1 6=3456
PixelShuffle DepthToSpace_444 1 1 1020 1021 0=2
BinaryOp Add_445 2 1 582_splitncnn_0 734_splitncnn_0 1022
BinaryOp Add_446 2 1 1022 887_splitncnn_0 1023
BinaryOp Add_447 2 1 1023 1021 flow

Some files were not shown because too many files have changed in this diff Show More