46 Commits
6.1.0 ... 6.2.0

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
137 changed files with 7126 additions and 1851 deletions

View File

@@ -1,11 +1,23 @@
name: build
name: Build
on:
push:
branches:
- master
- dev
pull_request: {}
workflow_dispatch: {}
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:
@@ -17,6 +29,7 @@ jobs:
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install dependencies
run: |
git submodule update --init --recursive
@@ -31,8 +44,8 @@ jobs:
libvulkan-dev \
glslang-tools \
libomp-dev \
libopencv-dev \
libboost-program-options-dev
- name: Build Video2X
run: |
mkdir -p /tmp/build /tmp/install
@@ -42,6 +55,7 @@ jobs:
-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:
@@ -55,18 +69,19 @@ jobs:
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"
$opencvVersion = "4.10.0"
git submodule update --init --recursive
@@ -78,16 +93,14 @@ jobs:
Expand-Archive -Path ncnn-shared.zip -DestinationPath third_party
Rename-Item -Path "third_party/ncnn-$ncnnVersion-windows-vs2022-shared" -NewName ncnn-shared
curl -Lo opencv-shared.exe "https://github.com/opencv/opencv/releases/download/$opencvVersion/opencv-$opencvVersion-windows.exe"
7z x opencv-shared.exe -y
Move-Item -Path opencv -Destination third_party\opencv-shared
- name: Build Video2X
shell: pwsh
run: |
cmake -S . -B build `
-DUSE_SYSTEM_NCNN=OFF -DUSE_SYSTEM_SPDLOG=OFF -DUSE_SYSTEM_OPENCV=OFF -DUSE_SYSTEM_BOOST=OFF `
-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:
@@ -99,6 +112,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
- uses: mr-smithers-excellent/docker-build-push@v5
name: Build the Docker image
with:

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,4 +1,5 @@
name: Release
on:
push:
tags:
@@ -33,6 +34,7 @@ jobs:
uses: actions/checkout@v4
with:
submodules: recursive
- name: Install dependencies
run: |
git submodule update --init --recursive
@@ -47,8 +49,8 @@ jobs:
libvulkan-dev \
glslang-tools \
libomp-dev \
libopencv-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 \
@@ -58,6 +60,7 @@ jobs:
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:
@@ -74,18 +77,19 @@ jobs:
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"
$opencvVersion = "4.10.0"
git submodule update --init --recursive
@@ -97,19 +101,18 @@ jobs:
Expand-Archive -Path ncnn-shared.zip -DestinationPath third_party
Rename-Item -Path "third_party/ncnn-$ncnnVersion-windows-vs2022-shared" -NewName ncnn-shared
curl -Lo opencv-shared.exe "https://github.com/opencv/opencv/releases/download/$opencvVersion/opencv-$opencvVersion-windows.exe"
7z x opencv-shared.exe -y
Move-Item -Path opencv -Destination third_party\opencv-shared
- name: Build Video2X
shell: pwsh
run: |
cmake -S . -B build `
-DUSE_SYSTEM_NCNN=OFF -DUSE_SYSTEM_SPDLOG=OFF -DUSE_SYSTEM_OPENCV=OFF -DUSE_SYSTEM_BOOST=OFF `
-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:
@@ -124,6 +127,7 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v4
- uses: mr-smithers-excellent/docker-build-push@v5
name: Build & push the Docker image
with:
@@ -147,6 +151,7 @@ jobs:
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
- name: Create release
id: create_release
uses: softprops/action-gh-release@v2

6
.gitmodules vendored
View File

@@ -7,9 +7,9 @@
[submodule "third_party/spdlog"]
path = third_party/spdlog
url = https://github.com/gabime/spdlog.git
[submodule "third_party/opencv"]
path = third_party/opencv
url = https://github.com/opencv/opencv.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

View File

@@ -5,4 +5,65 @@ 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).
## [Unreleased]
## [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.

View File

@@ -1,5 +1,9 @@
cmake_minimum_required(VERSION 3.10)
project(video2x VERSION 6.1.0 LANGUAGES CXX)
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)
@@ -13,9 +17,9 @@ endif()
# Set the default optimization flags for Release builds
if(CMAKE_BUILD_TYPE STREQUAL "Release")
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
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")
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")
@@ -23,16 +27,15 @@ if(CMAKE_BUILD_TYPE STREQUAL "Release")
endif()
# Set global compile options for all targets
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
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")
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_OPENCV "Use system OpenCV library" 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)
@@ -53,7 +56,6 @@ 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)
set(OPENCV_BASE_PATH ${PROJECT_SOURCE_DIR}/third_party/opencv-shared)
# FFmpeg
set(FFMPEG_LIB
@@ -72,7 +74,7 @@ if(WIN32)
set(SPIRV_BUILD_PATH
${CMAKE_BINARY_DIR}/realesrgan-prefix/src/realesrgan-build/ncnn/glslang/SPIRV
)
if (CMAKE_BUILD_TYPE STREQUAL "Release")
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)
@@ -83,14 +85,10 @@ if(WIN32)
${SPIRV_LIB}
)
list(APPEND ALL_INCLUDE_DIRS ${NCNN_BASE_PATH}/include/ncnn)
# OpenCV
# list(APPEND ALL_LIBRARIES ${OPENCV_BASE_PATH}/build/x64/vc16/lib/opencv_world4100.lib)
list(APPEND ALL_INCLUDE_DIRS ${OPENCV_BASE_PATH}/build/include)
else()
# FFmpeg
find_package(PkgConfig REQUIRED)
set(FFMPEG_REQUIRED_PKGS REQUIRED
set(FFMPEG_REQUIRED_PKGS
libavcodec
libavdevice
libavfilter
@@ -107,54 +105,6 @@ else()
list(APPEND FFMPEG_LIB ${${PKG}_LIBRARIES})
endforeach()
list(APPEND ALL_LIBRARIES ${FFMPEG_LIB})
# OpenCV
if (USE_SYSTEM_OPENCV)
find_package(OpenCV REQUIRED)
list(APPEND ALL_INCLUDE_DIRS ${OpenCV_INCLUDE_DIRS}/opencv2)
# list(APPEND ALL_LIBRARIES opencv_core opencv_videoio)
else()
option(BUILD_opencv_calib3d "" OFF)
option(BUILD_opencv_core "" ON)
option(BUILD_opencv_dnn "" OFF)
option(BUILD_opencv_features2d "" OFF)
option(BUILD_opencv_flann "" OFF)
option(BUILD_opencv_gapi "" OFF)
option(BUILD_opencv_highgui "" OFF)
option(BUILD_opencv_imgcodecs "" OFF)
option(BUILD_opencv_imgproc "" OFF)
option(BUILD_opencv_java "" OFF)
option(BUILD_opencv_js "" OFF)
option(BUILD_opencv_ml "" OFF)
option(BUILD_opencv_objc "" OFF)
option(BUILD_opencv_objdetect "" OFF)
option(BUILD_opencv_photo "" OFF)
option(BUILD_opencv_python "" OFF)
option(BUILD_opencv_python2 "" OFF)
option(BUILD_opencv_python3 "" OFF)
option(BUILD_opencv_stitching "" OFF)
option(BUILD_opencv_ts "" OFF)
option(BUILD_opencv_video "" OFF)
option(BUILD_opencv_videoio "" ON)
option(BUILD_opencv_world "" OFF)
option(WITH_PNG "" OFF)
option(WITH_JPEG "" OFF)
option(WITH_TIFF "" OFF)
option(WITH_WEBP "" OFF)
option(WITH_OPENJPEG "" OFF)
option(WITH_JASPER "" OFF)
option(WITH_OPENEXR "" OFF)
option(WITH_IMGCODEC "" OFF)
add_subdirectory(third_party/opencv)
list(APPEND ALL_INCLUDE_DIRS
${PROJECT_SOURCE_DIR}/third_party/opencv/include
${PROJECT_SOURCE_DIR}/third_party/opencv/modules/core/include
${PROJECT_SOURCE_DIR}/third_party/opencv/modules/videoio/include
)
# list(APPEND ALL_LIBRARIES opencv_core opencv_videoio)
endif() # USE_SYSTEM_OPENCV
endif() # WIN32
# Find ncnn package
@@ -257,7 +207,7 @@ else()
endif()
# spdlog
if (USE_SYSTEM_SPDLOG)
if(USE_SYSTEM_SPDLOG)
find_package(spdlog REQUIRED)
list(APPEND ALL_INCLUDE_DIRS ${spdlog_INCLUDE_DIRS})
set(SPDLOG_LIB spdlog::spdlog)
@@ -268,7 +218,7 @@ endif()
list(APPEND ALL_LIBRARIES ${SPDLOG_LIB})
# Boost
if (USE_SYSTEM_BOOST)
if(USE_SYSTEM_BOOST)
find_package(Boost REQUIRED COMPONENTS program_options)
list(APPEND ALL_INCLUDE_DIRS ${Boost_INCLUDE_DIRS})
else()
@@ -282,7 +232,7 @@ else()
endif()
set(BOOST_LIB Boost::program_options)
if (BUILD_VIDEO2X_CLI)
if(BUILD_VIDEO2X_CLI)
find_package(Vulkan REQUIRED)
set(VULKAN_LIB Vulkan::Vulkan)
endif()
@@ -303,21 +253,26 @@ ExternalProject_Add(
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'
add_library(libvideo2x
src/conversions.cpp
src/decoder.cpp
src/encoder.cpp
src/fsutils.cpp
src/libplacebo_filter.cpp
src/libplacebo.cpp
src/libvideo2x.cpp
src/realesrgan_filter.cpp
)
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)
@@ -325,8 +280,8 @@ else()
set_target_properties(libvideo2x PROPERTIES OUTPUT_NAME video2x)
endif()
# Ensure libvideo2x depends on realesrgan being built and installed
add_dependencies(libvideo2x realesrgan)
# 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
@@ -335,6 +290,7 @@ target_include_directories(libvideo2x PRIVATE
${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
@@ -344,20 +300,21 @@ target_compile_options(libvideo2x PRIVATE
$<$<CONFIG:Debug>:-g -DDEBUG>
)
# Define the path to the built libresrgan-ncnn-vulkan library
# Define the paths to the shared libraries
if(WIN32)
set(REALESRGAN_LIB ${CMAKE_BINARY_DIR}/realesrgan_install/lib/librealesrgan-ncnn-vulkan.lib)
list(APPEND ALL_LIBRARIES ${REALESRGAN_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)
list(APPEND ALL_LIBRARIES ${REALESRGAN_LIB})
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)
if(USE_SYSTEM_NCNN)
target_link_libraries(libvideo2x PUBLIC ncnn)
else()
target_link_libraries(libvideo2x PRIVATE ncnn)
@@ -365,8 +322,9 @@ if(NOT WIN32)
endif()
# Create the executable 'video2x'
if (BUILD_VIDEO2X_CLI)
add_executable(video2x src/video2x.cpp src/timer.cpp)
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
@@ -374,7 +332,7 @@ if (BUILD_VIDEO2X_CLI)
${ALL_INCLUDE_DIRS}
${CMAKE_CURRENT_BINARY_DIR}
${PROJECT_SOURCE_DIR}/include
${PROJECT_SOURCE_DIR}/include/libvideo2x
${PROJECT_SOURCE_DIR}/tools/video2x/include
)
# Compile options for the executable
@@ -403,10 +361,6 @@ else()
set(MODEL_DESTINATION_DEFAULT "share/video2x")
endif()
# Explicitly set the output paths since OpenCV changes these variables
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR})
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR})
# Set the installation directories
set(INSTALL_BIN_DESTINATION ${BIN_DESTINATION_DEFAULT} CACHE STRING "")
set(INSTALL_INCLUDE_DESTINATION ${INCLUDE_DESTINATION_DEFAULT} CACHE STRING "")
@@ -432,34 +386,26 @@ if(BUILD_VIDEO2X_CLI)
endif()
# Install the header files
file(GLOB HEADER_FILES ${PROJECT_SOURCE_DIR}/include/libvideo2x/*.h)
install(FILES
${PROJECT_SOURCE_DIR}/include/libvideo2x/libvideo2x.h
${PROJECT_SOURCE_DIR}/include/libvideo2x/char_defs.h
${HEADER_FILES}
${CMAKE_CURRENT_BINARY_DIR}/libvideo2x/version.h
DESTINATION ${INSTALL_INCLUDE_DESTINATION}
)
# Platform-specific installation rules
if(WIN32)
# Install Windows-specific dependencies
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
${FFMPEG_BASE_PATH}/bin/swscale-8.dll
${FFMPEG_BASE_PATH}/bin/avcodec-61.dll
${FFMPEG_BASE_PATH}/bin/avdevice-61.dll
${FFMPEG_BASE_PATH}/bin/avfilter-10.dll
${FFMPEG_BASE_PATH}/bin/avformat-61.dll
${FFMPEG_BASE_PATH}/bin/avutil-59.dll
${FFMPEG_BASE_PATH}/bin/postproc-58.dll
${FFMPEG_BASE_PATH}/bin/swresample-5.dll
# ${OPENCV_BASE_PATH}/build/x64/vc16/bin/opencv_world4100.dll
# ${OPENCV_BASE_PATH}/build/x64/vc16/bin/opencv_videoio_msmf4100_64.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}
@@ -468,8 +414,7 @@ if(WIN32)
WORLD_READ WORLD_EXECUTE
)
else()
# Install Unix-specific dependencies
install(FILES ${REALESRGAN_LIB}
install(FILES ${REALESRGAN_LIB} ${RIFE_LIB}
DESTINATION ${INSTALL_LIB_DESTINATION}
PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE

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,7 +1,7 @@
.PHONY: build static debug windows windows-debug debian ubuntu clean \
test-realesrgan test-libplacebo \
memcheck-realesrgan memcheck-libplacebo \
heaptrack-realesrgan heaptrack-libplacebo
test-realesrgan test-libplacebo test-rife \
memcheck-realesrgan memcheck-libplacebo memcheck-rife \
heaptrack-realesrgan heaptrack-libplacebo heaptrack-rife
BINDIR=build
CC=clang
@@ -41,7 +41,6 @@ debug:
windows:
cmake -S . -B $(BINDIR) \
-DUSE_SYSTEM_NCNN=OFF \
-DUSE_SYSTEM_OPENCV=OFF \
-DUSE_SYSTEM_SPDLOG=OFF \
-DUSE_SYSTEM_BOOST=OFF \
-DCMAKE_BUILD_TYPE=Release \
@@ -51,7 +50,6 @@ windows:
windows-debug:
cmake -S . -B $(BINDIR) \
-DUSE_SYSTEM_NCNN=OFF \
-DUSE_SYSTEM_OPENCV=OFF \
-DUSE_SYSTEM_SPDLOG=OFF \
-DUSE_SYSTEM_BOOST=OFF \
-DCMAKE_BUILD_TYPE=Debug \
@@ -72,7 +70,6 @@ debian:
glslang-tools \
libomp-dev \
libspdlog-dev \
libopencv-dev \
libboost-program-options-dev
cmake -B /tmp/build -S . -DUSE_SYSTEM_NCNN=OFF \
-DCMAKE_C_COMPILER=$(CC) -DCMAKE_CXX_COMPILER=$(CXX) \
@@ -81,10 +78,9 @@ debian:
-DINSTALL_LIB_DESTINATION=. -DINSTALL_MODEL_DESTINATION=.
cmake --build /tmp/build --config Release --target install --parallel
ubuntu:
export DEBIAN_FRONTEND=noninteractive
ubuntu2404:
apt-get update
apt-get install -y --no-install-recommends \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
build-essential cmake pkg-config \
libavcodec-dev \
libavdevice-dev \
@@ -95,26 +91,54 @@ ubuntu:
libvulkan-dev \
glslang-tools \
libomp-dev \
libopencv-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=build/video2x_package/usr
-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=video2x-linux-ubuntu-amd64/usr
cmake --build build --config Release --target install --parallel
mkdir -p build/video2x_package/DEBIAN
cp packaging/debian/control build/video2x_package/DEBIAN/control
dpkg-deb --build build/video2x_package
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) \
-f realesrgan -r 4 -m realesr-animevideov3
-p realesrgan -s 4 --realesrgan-model realesr-animevideov3
test-libplacebo:
LD_LIBRARY_PATH=$(BINDIR) $(BINDIR)/video2x -i $(TEST_VIDEO) -o $(TEST_OUTPUT) \
-f libplacebo -w 1920 -h 1080 -s anime4k-v4-a
-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 \
@@ -126,8 +150,8 @@ memcheck-realesrgan:
--verbose --log-file="valgrind.log" \
$(BINDIR)/video2x \
-i $(TEST_VIDEO) -o $(TEST_OUTPUT) \
-f realesrgan -r 2 -m realesr-animevideov3 \
-p veryfast -b 1000000 -q 30
-p realesrgan -s 2 --realesrgan-model realesr-animevideov3 \
-e preset=veryfast -e crf=30
memcheck-libplacebo:
LD_LIBRARY_PATH=$(BINDIR) valgrind \
@@ -139,19 +163,39 @@ memcheck-libplacebo:
--verbose --log-file="valgrind.log" \
$(BINDIR)/video2x \
-i $(TEST_VIDEO) -o $(TEST_OUTPUT) \
-f libplacebo -w 1920 -h 1080 -s anime4k-v4-a \
-p veryfast -b 1000000 -q 30
-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) \
-f realesrgan -r 4 -m realesr-animevideov3 \
-p veryfast -b 1000000 -q 30
-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) \
-f libplacebo -w 1920 -h 1080 -s anime4k-v4-a \
-p veryfast -b 1000000 -q 30
-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

View File

@@ -1,75 +1,78 @@
<p align="center">
<img src="https://github.com/user-attachments/assets/5cd63373-e806-474f-94ec-6e04963bf90f"/>
<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/actions/workflow/status/k4yt3x/video2x/build.yml?label=Build&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>
> [!IMPORTANT]
> Versions 4 and 5 have reached end-of-life (EOL) status. Due to limited development resources, issues related to any version earlier than 6 will no longer be addressed.
## 🌟 Version 6.0.0
**[Download Windows Installer](https://github.com/k4yt3x/video2x/releases/download/6.0.0/video2x-qt6-windows-amd64-installer.exe)**
Video2X 6.0.0 highlights:
**TL;DR: Version 6.0.0 is a complete rewrite of the Video2X project in C/C++, featuring a faster, more efficient architecture, cross-platform support, vastly improved output quality, and a new GUI and installer for easy setup on Windows.**
- 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.
![6.0.0-screenshot](https://github.com/user-attachments/assets/7c6f4cd9-2cca-4deb-a886-f9f225962866)
<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 and RealESRGAN;
- 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;
- includes support for RealESRGAN (all three models) via ncnn and Vulkan;
- 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! (documentations are on the way)
- exports a standard C function for easy integration into other projects! (documentation is on the way)
Support for RealCUGAN and frame interpolation with RIFE are coming soon.
Support for RealCUGAN is coming soon.
## [🪟 Download for Windows](https://github.com/k4yt3x/video2x/releases/latest)
</details>
You can download the latest Windows release from the [releases page](https://github.com/k4yt3x/video2x/releases/latest). For basic GUI usage, refer to the [GUI wiki page](https://github.com/k4yt3x/video2x/wiki/GUI). If you're unable to download directly from GitHub, try the [mirror](https://files.k4yt3x.com/Projects/Video2X/latest). The GUI currently supports the following languages:
![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://aur.archlinux.org/packages/video2x-git)
## [🐧 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) package or download pre-compiled binaries 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.
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://github.com/k4yt3x/video2x/pkgs/container/video2x)
## [📦 Container Image](https://docs.video2x.org/running/container.html)
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).
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) (Outdated: 5.0.0-beta7)
## [📔 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 (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).
## [💬 Telegram Discussion Group](https://t.me/video2x)
Join our Telegram discussion group to ask any questions you have about Video2X, chat directly with the developers, or discuss about super resolution technologies and the future of Video2X in general.
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.
## [📖 Documentations](https://github.com/k4yt3x/video2x/wiki)
## [📖 Documentation](https://docs.video2x.org/)
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.
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.
## Introduction
Video2X is a machine-learning-powered framework for video upscaling and frame interpolation, built around three main components:
- [libvideo2x](https://github.com/k4yt3x/video2x/blob/master/src/libvideo2x.cpp): The core C++ library providing upscaling and frame interpolation capabilities.
- [Video2X CLI](https://github.com/k4yt3x/video2x/blob/master/src/video2x.c): A command-line interface that utilizes `libvideo2x` for video processing.
- [Video2X Qt6](https://github.com/k4yt3x/video2x-qt6): A Qt6-based graphical interface that utilizes `libvideo2x` for video processing.
### Video Demos
## 📽️ 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_
@@ -95,7 +98,7 @@ The following clip can be used to test if your setup works properly. This is als
The original clip came from the anime "さくら荘のペットな彼女."\
Copyright of this clip belongs to 株式会社アニプレックス.
## License
## ⚖️ License
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).
@@ -113,7 +116,7 @@ This project includes or depends on these following projects:
More licensing information can be found in the [NOTICE](NOTICE) file.
## Special Thanks
## 🌺 Special Thanks
Special thanks to the following individuals for their significant contributions to the project, listed in alphabetical order.

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

@@ -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

@@ -1,22 +0,0 @@
#ifndef CHAR_DEFS_H
#define CHAR_DEFS_H
#ifdef _WIN32
typedef wchar_t CharType;
#define STR(x) L##x
#else
typedef char CharType;
#define STR(x) x
#endif
#ifdef __cplusplus
#include <string>
#ifdef _WIN32
typedef std::wstring StringType;
#else
typedef std::string StringType;
#endif
#endif // __cplusplus
#endif // CHAR_DEFS_H

View File

@@ -1,5 +1,4 @@
#ifndef CONVERSIONS_H
#define CONVERSIONS_H
#pragma once
extern "C" {
#include <libavutil/frame.h>
@@ -16,5 +15,3 @@ 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);
#endif // CONVERSIONS_H

View File

@@ -1,5 +1,4 @@
#ifndef DECODER_H
#define DECODER_H
#pragma once
#include <filesystem>
@@ -8,13 +7,22 @@ extern "C" {
#include <libavformat/avformat.h>
}
int init_decoder(
AVHWDeviceType hw_type,
AVBufferRef *hw_ctx,
std::filesystem::path in_fpath,
AVFormatContext **fmt_ctx,
AVCodecContext **dec_ctx,
int *vstream_idx
);
class Decoder {
public:
Decoder();
~Decoder();
#endif // DECODER_H
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

@@ -1,35 +1,78 @@
#ifndef ENCODER_H
#define ENCODER_H
#pragma once
#include <cstdint>
#include <filesystem>
#include <vector>
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libavutil/opt.h>
#include <libavutil/pixdesc.h>
}
#include "libvideo2x.h"
#include "fsutils.h"
int init_encoder(
AVBufferRef *hw_ctx,
std::filesystem::path out_fpath,
AVFormatContext *ifmt_ctx,
AVFormatContext **ofmt_ctx,
AVCodecContext **enc_ctx,
AVCodecContext *dec_ctx,
EncoderConfig *encoder_config,
int vstream_idx,
int **stream_map
);
// Encoder configurations
struct EncoderConfig {
// Non-AVCodecContext options
AVCodecID codec = AV_CODEC_ID_NONE;
bool copy_streams = true;
int write_frame(
AVFrame *frame,
AVCodecContext *enc_ctx,
AVFormatContext *ofmt_ctx,
int vstream_idx
);
// Basic video options
AVPixelFormat pix_fmt = AV_PIX_FMT_NONE;
int flush_encoder(AVCodecContext *enc_ctx, AVFormatContext *ofmt_ctx);
// 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;
#endif // ENCODER_H
// 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

@@ -1,21 +0,0 @@
#ifndef FILTER_H
#define FILTER_H
#include <vector>
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavfilter/avfilter.h>
#include <libavutil/buffer.h>
}
// Abstract base class for filters
class Filter {
public:
virtual ~Filter() = default;
virtual int init(AVCodecContext *dec_ctx, AVCodecContext *enc_ctx, AVBufferRef *hw_ctx) = 0;
virtual int process_frame(AVFrame *in_frame, AVFrame **out_frame) = 0;
virtual int flush(std::vector<AVFrame *> &_) { return 0; }
};
#endif // FILTER_H

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

@@ -1,10 +1,21 @@
#ifndef FSUTILS_H
#define FSUTILS_H
#pragma once
#include <filesystem>
#include <string>
#include "char_defs.h"
#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);
@@ -12,8 +23,8 @@ 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);
#endif // FSUTILS_H

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

@@ -1,5 +1,4 @@
#ifndef PLACEBO_H
#define PLACEBO_H
#pragma once
#include <filesystem>
@@ -18,5 +17,3 @@ int init_libplacebo(
uint32_t vk_device_index,
const std::filesystem::path &shader_path
);
#endif // PLACEBO_H

View File

@@ -1,49 +0,0 @@
#ifndef LIBPLACEBO_FILTER_H
#define LIBPLACEBO_FILTER_H
#include <filesystem>
extern "C" {
#include <libavcodec/avcodec.h>
#include <libavfilter/buffersink.h>
#include <libavfilter/buffersrc.h>
}
#include "filter.h"
// LibplaceboFilter class definition
class LibplaceboFilter : public Filter {
private:
AVFilterGraph *filter_graph;
AVFilterContext *buffersrc_ctx;
AVFilterContext *buffersink_ctx;
uint32_t vk_device_index;
const std::filesystem::path shader_path;
int out_width;
int out_height;
AVRational in_time_base;
AVRational out_time_base;
public:
// Constructor
LibplaceboFilter(
uint32_t vk_device_index,
const std::filesystem::path &shader_path,
int width,
int height
);
// Destructor
virtual ~LibplaceboFilter() 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 process_frame(AVFrame *in_frame, AVFrame **out_frame) override;
// Flushes any remaining frames
int flush(std::vector<AVFrame *> &flushed_frames) override;
};
#endif // LIBPLACEBO_FILTER_H

View File

@@ -1,20 +1,19 @@
#ifndef LIBVIDEO2X_H
#define LIBVIDEO2X_H
#pragma once
#include <stdbool.h>
#include <stdint.h>
#include <time.h>
#include <atomic>
#include <cstdint>
#include <memory>
#ifdef __cplusplus
extern "C" {
#endif
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#ifdef __cplusplus
}
#endif
#include "char_defs.h"
#include "avutils.h"
#include "decoder.h"
#include "encoder.h"
#include "logging.h"
#include "processor.h"
#ifdef _WIN32
#ifdef LIBVIDEO2X_EXPORTS
@@ -26,100 +25,74 @@ extern "C" {
#define LIBVIDEO2X_API
#endif
#ifdef __cplusplus
extern "C" {
#endif
// Enum to specify filter type
enum FilterType {
FILTER_LIBPLACEBO,
FILTER_REALESRGAN
enum class VideoProcessorState {
Idle,
Running,
Paused,
Failed,
Aborted,
Completed
};
// Enum to specify log level
enum Libvideo2xLogLevel {
LIBVIDEO2X_LOG_LEVEL_TRACE,
LIBVIDEO2X_LOG_LEVEL_DEBUG,
LIBVIDEO2X_LOG_LEVEL_INFO,
LIBVIDEO2X_LOG_LEVEL_WARNING,
LIBVIDEO2X_LOG_LEVEL_ERROR,
LIBVIDEO2X_LOG_LEVEL_CRITICAL,
LIBVIDEO2X_LOG_LEVEL_OFF
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;
};
// Configuration for Libplacebo filter
struct LibplaceboConfig {
int out_width;
int out_height;
const CharType *shader_path;
};
// Configuration for RealESRGAN filter
struct RealESRGANConfig {
bool tta_mode;
int scaling_factor;
const CharType *model_name;
};
// Unified filter configuration
struct FilterConfig {
enum FilterType filter_type;
union {
struct LibplaceboConfig libplacebo;
struct RealESRGANConfig realesrgan;
} config;
};
// Encoder configuration
struct EncoderConfig {
int out_width;
int out_height;
bool copy_streams;
enum AVCodecID codec;
enum AVPixelFormat pix_fmt;
const char *preset;
int64_t bit_rate;
float crf;
};
// Video processing context
struct VideoProcessingContext {
int64_t processed_frames;
int64_t total_frames;
time_t start_time;
bool pause;
bool abort;
bool completed;
};
/**
* @brief Process a video file using the selected filter and encoder settings.
*
* @param[in] in_fname Path to the input video file
* @param[in] out_fname Path to the output video file
* @param[in] log_level Log level
* @param[in] benchmark Flag to enable benchmarking mode
* @param[in] vk_device_index Vulkan device index
* @param[in] hw_type Hardware device type
* @param[in] filter_config Filter configurations
* @param[in] encoder_config Encoder configurations
* @param[in,out] proc_ctx Video processing context
* @return int 0 on success, non-zero value on error
*/
LIBVIDEO2X_API int process_video(
const CharType *in_fname,
const CharType *out_fname,
enum Libvideo2xLogLevel log_level,
bool benchmark,
uint32_t vk_device_index,
enum AVHWDeviceType hw_device_type,
const struct FilterConfig *filter_config,
struct EncoderConfig *encoder_config,
struct VideoProcessingContext *proc_ctx
);
#ifdef __cplusplus
}
#endif
#endif // LIBVIDEO2X_H

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

@@ -1,43 +0,0 @@
#ifndef REALSRGAN_FILTER_H
#define REALSRGAN_FILTER_H
extern "C" {
#include <libavcodec/avcodec.h>
}
#include "char_defs.h"
#include "filter.h"
#include "realesrgan.h"
// RealesrganFilter class definition
class RealesrganFilter : public Filter {
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;
public:
// Constructor
RealesrganFilter(
int gpuid = 0,
bool tta_mode = false,
int scaling_factor = 4,
const StringType model_name = STR("realesr-animevideov3")
);
// Destructor
virtual ~RealesrganFilter() 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 process_frame(AVFrame *in_frame, AVFrame **out_frame) override;
};
#endif

View File

@@ -1,6 +1,3 @@
#ifndef VERSION_H
#define VERSION_H
#pragma once
#define LIBVIDEO2X_VERSION_STRING "@PROJECT_VERSION@"
#endif // VERSION_H

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

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

Binary file not shown.

105
models/rife/rife-anime/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-v2.3/contextnet.bin vendored Normal file

Binary file not shown.

42
models/rife/rife-v2.3/contextnet.param vendored Normal file
View File

@@ -0,0 +1,42 @@
7767517
40 46
Input input.1 0 1 input.1
Input flow.0 0 1 flow.0
Convolution Conv_0 1 1 input.1 32 0=32 1=3 3=2 4=1 5=1 6=864
PReLU PRelu_1 1 1 32 34 0=32
Convolution Conv_2 1 1 34 35 0=32 1=3 4=1 5=1 6=9216
PReLU PRelu_3 1 1 35 37 0=32
Convolution Conv_4 1 1 37 38 0=32 1=3 3=2 4=1 5=1 6=9216
PReLU PRelu_5 1 1 38 40 0=32
Convolution Conv_6 1 1 40 41 0=32 1=3 4=1 5=1 6=9216
PReLU PRelu_7 1 1 41 43 0=32
Split splitncnn_0 1 2 43 43_splitncnn_0 43_splitncnn_1
Interp Resize_9 1 1 flow.0 53 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_11 1 1 53 55 0=2 1=1 2=5.000000e-01
Split splitncnn_1 1 2 55 55_splitncnn_0 55_splitncnn_1
rife.Warp Warp_17 2 1 43_splitncnn_1 55_splitncnn_1 f1
Convolution Conv_18 1 1 43_splitncnn_0 62 0=64 1=3 3=2 4=1 5=1 6=18432
PReLU PRelu_19 1 1 62 64 0=64
Convolution Conv_20 1 1 64 65 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_21 1 1 65 67 0=64
Split splitncnn_2 1 2 67 67_splitncnn_0 67_splitncnn_1
Interp Resize_23 1 1 55_splitncnn_0 77 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_25 1 1 77 79 0=2 1=1 2=5.000000e-01
Split splitncnn_3 1 2 79 79_splitncnn_0 79_splitncnn_1
rife.Warp Warp_31 2 1 67_splitncnn_1 79_splitncnn_1 f2
Convolution Conv_32 1 1 67_splitncnn_0 86 0=128 1=3 3=2 4=1 5=1 6=73728
PReLU PRelu_33 1 1 86 88 0=128
Convolution Conv_34 1 1 88 89 0=128 1=3 4=1 5=1 6=147456
PReLU PRelu_35 1 1 89 91 0=128
Split splitncnn_4 1 2 91 91_splitncnn_0 91_splitncnn_1
Interp Resize_37 1 1 79_splitncnn_0 101 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_39 1 1 101 103 0=2 1=1 2=5.000000e-01
Split splitncnn_5 1 2 103 103_splitncnn_0 103_splitncnn_1
rife.Warp Warp_31a 2 1 91_splitncnn_1 103_splitncnn_1 f3
Convolution Conv_46 1 1 91_splitncnn_0 110 0=256 1=3 3=2 4=1 5=1 6=294912
PReLU PRelu_47 1 1 110 112 0=256
Convolution Conv_48 1 1 112 113 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_49 1 1 113 115 0=256
Interp Resize_51 1 1 103_splitncnn_0 125 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_53 1 1 125 127 0=2 1=1 2=5.000000e-01
rife.Warp Warp_ss 2 1 115 127 f4

BIN
models/rife/rife-v2.3/flownet.bin vendored Normal file

Binary file not shown.

119
models/rife/rife-v2.3/flownet.param vendored Normal file
View File

@@ -0,0 +1,119 @@
7767517
117 135
Input input0 0 1 input0
Input input1 0 1 input1
Concat input.1 2 1 input0 input1 input.1
Split splitncnn_input0 1 7 input.1 input.1_splitncnn_0 input.1_splitncnn_1 input.1_splitncnn_2 input.1_splitncnn_3 input.1_splitncnn_4 input.1_splitncnn_5 input.1_splitncnn_6
Interp Resize_1 1 1 input.1_splitncnn_6 114 0=2 1=1.250000e-01 2=1.250000e-01
Convolution Conv_2 1 1 114 115 0=192 1=3 3=2 4=1 5=1 6=10368
PReLU PRelu_3 1 1 115 117 0=192
Convolution Conv_4 1 1 117 118 0=384 1=3 3=2 4=1 5=1 6=663552
PReLU PRelu_5 1 1 118 120 0=384
Convolution Conv_6 1 1 120 121 0=384 1=3 4=1 5=1 6=1327104
PReLU PRelu_7 1 1 121 123 0=384
Convolution Conv_8 1 1 123 124 0=384 1=3 4=1 5=1 6=1327104
PReLU PRelu_9 1 1 124 126 0=384
Convolution Conv_10 1 1 126 127 0=384 1=3 4=1 5=1 6=1327104
PReLU PRelu_11 1 1 127 129 0=384
Convolution Conv_12 1 1 129 130 0=384 1=3 4=1 5=1 6=1327104
PReLU PRelu_13 1 1 130 132 0=384
Convolution Conv_14 1 1 132 133 0=384 1=3 4=1 5=1 6=1327104
PReLU PRelu_15 1 1 133 135 0=384
Convolution Conv_16 1 1 135 136 0=384 1=3 4=1 5=1 6=1327104
PReLU PRelu_17 1 1 136 138 0=384
Deconvolution ConvTranspose_18 1 1 138 139 0=4 1=4 3=2 4=1 5=1 6=24576
Interp Resize_20 1 1 139 149 0=2 1=8.000000e+00 2=8.000000e+00
Split splitncnn_0 1 4 149 149_splitncnn_0 149_splitncnn_1 149_splitncnn_2 149_splitncnn_3
Interp Resize_22 1 1 149_splitncnn_3 159 0=2 1=2.000000e+00 2=2.000000e+00
BinaryOp Mul_24 1 1 159 161 0=2 1=1 2=2.000000e+00
Split splitncnn_1 1 3 161 161_splitncnn_0 161_splitncnn_1 161_splitncnn_2
Crop Slice_29 1 1 input.1_splitncnn_5 166 -23309=1,0 -23310=1,3 -23311=1,0
Crop Slice_34 1 1 161_splitncnn_2 171 -23309=1,0 -23310=1,2 -23311=1,0
rife.Warp Warp_40 2 1 166 171 177
Crop Slice_45 1 1 input.1_splitncnn_4 182 -23309=1,3 -23310=1,2147483647 -23311=1,0
Crop Slice_50 1 1 161_splitncnn_1 187 -23309=1,2 -23310=1,4 -23311=1,0
rife.Warp Warp_56 2 1 182 187 193
Concat Concat_57 3 1 177 193 161_splitncnn_0 194
Interp Resize_59 1 1 194 204 0=2 1=2.500000e-01 2=2.500000e-01
Convolution Conv_60 1 1 204 205 0=128 1=3 3=2 4=1 5=1 6=11520
PReLU PRelu_61 1 1 205 207 0=128
Convolution Conv_62 1 1 207 208 0=256 1=3 3=2 4=1 5=1 6=294912
PReLU PRelu_63 1 1 208 210 0=256
Convolution Conv_64 1 1 210 211 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_65 1 1 211 213 0=256
Convolution Conv_66 1 1 213 214 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_67 1 1 214 216 0=256
Convolution Conv_68 1 1 216 217 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_69 1 1 217 219 0=256
Convolution Conv_70 1 1 219 220 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_71 1 1 220 222 0=256
Convolution Conv_72 1 1 222 223 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_73 1 1 223 225 0=256
Convolution Conv_74 1 1 225 226 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_75 1 1 226 228 0=256
Deconvolution ConvTranspose_76 1 1 228 229 0=4 1=4 3=2 4=1 5=1 6=16384
Interp Resize_78 1 1 229 239 0=2 1=4.000000e+00 2=4.000000e+00
Split splitncnn_2 1 3 239 239_splitncnn_0 239_splitncnn_1 239_splitncnn_2
BinaryOp Add_79 2 1 149_splitncnn_2 239_splitncnn_2 240
Interp Resize_81 1 1 240 250 0=2 1=2.000000e+00 2=2.000000e+00
BinaryOp Mul_83 1 1 250 252 0=2 1=1 2=2.000000e+00
Split splitncnn_3 1 3 252 252_splitncnn_0 252_splitncnn_1 252_splitncnn_2
Crop Slice_88 1 1 input.1_splitncnn_3 257 -23309=1,0 -23310=1,3 -23311=1,0
Crop Slice_93 1 1 252_splitncnn_2 262 -23309=1,0 -23310=1,2 -23311=1,0
rife.Warp Warp_99 2 1 257 262 268
Crop Slice_104 1 1 input.1_splitncnn_2 273 -23309=1,3 -23310=1,2147483647 -23311=1,0
Crop Slice_109 1 1 252_splitncnn_1 278 -23309=1,2 -23310=1,4 -23311=1,0
rife.Warp Warp_115 2 1 273 278 284
Concat Concat_116 3 1 268 284 252_splitncnn_0 285
Interp Resize_118 1 1 285 295 0=2 1=5.000000e-01 2=5.000000e-01
Convolution Conv_119 1 1 295 296 0=96 1=3 3=2 4=1 5=1 6=8640
PReLU PRelu_120 1 1 296 298 0=96
Convolution Conv_121 1 1 298 299 0=192 1=3 3=2 4=1 5=1 6=165888
PReLU PRelu_122 1 1 299 301 0=192
Convolution Conv_123 1 1 301 302 0=192 1=3 4=1 5=1 6=331776
PReLU PRelu_124 1 1 302 304 0=192
Convolution Conv_125 1 1 304 305 0=192 1=3 4=1 5=1 6=331776
PReLU PRelu_126 1 1 305 307 0=192
Convolution Conv_127 1 1 307 308 0=192 1=3 4=1 5=1 6=331776
PReLU PRelu_128 1 1 308 310 0=192
Convolution Conv_129 1 1 310 311 0=192 1=3 4=1 5=1 6=331776
PReLU PRelu_130 1 1 311 313 0=192
Convolution Conv_131 1 1 313 314 0=192 1=3 4=1 5=1 6=331776
PReLU PRelu_132 1 1 314 316 0=192
Convolution Conv_133 1 1 316 317 0=192 1=3 4=1 5=1 6=331776
PReLU PRelu_134 1 1 317 319 0=192
Deconvolution ConvTranspose_135 1 1 319 320 0=4 1=4 3=2 4=1 5=1 6=12288
Interp Resize_137 1 1 320 330 0=2 1=2.000000e+00 2=2.000000e+00
Split splitncnn_4 1 2 330 330_splitncnn_0 330_splitncnn_1
BinaryOp Add_138 2 1 149_splitncnn_1 239_splitncnn_1 331
BinaryOp Add_139 2 1 331 330_splitncnn_1 332
Interp Resize_141 1 1 332 342 0=2 1=2.000000e+00 2=2.000000e+00
BinaryOp Mul_143 1 1 342 344 0=2 1=1 2=2.000000e+00
Split splitncnn_5 1 3 344 344_splitncnn_0 344_splitncnn_1 344_splitncnn_2
Crop Slice_148 1 1 input.1_splitncnn_1 349 -23309=1,0 -23310=1,3 -23311=1,0
Crop Slice_153 1 1 344_splitncnn_2 354 -23309=1,0 -23310=1,2 -23311=1,0
rife.Warp Warp_159 2 1 349 354 360
Crop Slice_164 1 1 input.1_splitncnn_0 365 -23309=1,3 -23310=1,2147483647 -23311=1,0
Crop Slice_169 1 1 344_splitncnn_1 370 -23309=1,2 -23310=1,4 -23311=1,0
rife.Warp Warp_175 2 1 365 370 376
Concat Concat_176 3 1 360 376 344_splitncnn_0 377
Convolution Conv_177 1 1 377 378 0=48 1=3 3=2 4=1 5=1 6=4320
PReLU PRelu_178 1 1 378 380 0=48
Convolution Conv_179 1 1 380 381 0=96 1=3 3=2 4=1 5=1 6=41472
PReLU PRelu_180 1 1 381 383 0=96
Convolution Conv_181 1 1 383 384 0=96 1=3 4=1 5=1 6=82944
PReLU PRelu_182 1 1 384 386 0=96
Convolution Conv_183 1 1 386 387 0=96 1=3 4=1 5=1 6=82944
PReLU PRelu_184 1 1 387 389 0=96
Convolution Conv_185 1 1 389 390 0=96 1=3 4=1 5=1 6=82944
PReLU PRelu_186 1 1 390 392 0=96
Convolution Conv_187 1 1 392 393 0=96 1=3 4=1 5=1 6=82944
PReLU PRelu_188 1 1 393 395 0=96
Convolution Conv_189 1 1 395 396 0=96 1=3 4=1 5=1 6=82944
PReLU PRelu_190 1 1 396 398 0=96
Convolution Conv_191 1 1 398 399 0=96 1=3 4=1 5=1 6=82944
PReLU PRelu_192 1 1 399 401 0=96
Deconvolution ConvTranspose_193 1 1 401 402 0=4 1=4 3=2 4=1 5=1 6=6144
BinaryOp Add_194 2 1 149_splitncnn_0 239_splitncnn_0 403
BinaryOp Add_195 2 1 403 330_splitncnn_0 404
BinaryOp Add_196 2 1 404 402 flow

BIN
models/rife/rife-v2.3/fusionnet.bin vendored Normal file

Binary file not shown.

74
models/rife/rife-v2.3/fusionnet.param vendored Normal file
View File

@@ -0,0 +1,74 @@
7767517
72 81
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 64 0=2 1=2.000000e+00 2=2.000000e+00
BinaryOp Mul_3 1 1 64 66 0=2 1=1 2=2.000000e+00
Split splitncnn_0 1 3 66 66_splitncnn_0 66_splitncnn_1 66_splitncnn_2
Crop Slice_8 1 1 66_splitncnn_2 71 -23309=1,0 -23310=1,2 -23311=1,0
rife.Warp Warp_14 2 1 img0 71 77
Split splitncnn_1 1 2 77 77_splitncnn_0 77_splitncnn_1
Crop Slice_19 1 1 66_splitncnn_1 82 -23309=1,2 -23310=1,4 -23311=1,0
rife.Warp Warp_14 2 1 img1 82 88
Split splitncnn_2 1 2 88 88_splitncnn_0 88_splitncnn_1
Concat Concat_26 3 1 77_splitncnn_1 88_splitncnn_1 66_splitncnn_0 89
Convolution Conv_27 1 1 89 90 0=32 1=3 3=2 4=1 5=1 6=2880
PReLU PRelu_28 1 1 90 92 0=32
Convolution Conv_29 1 1 92 93 0=32 1=3 4=1 5=1 6=9216
PReLU PRelu_30 1 1 93 95 0=32
Convolution Conv_31 1 1 95 96 0=64 1=3 3=2 4=1 5=1 6=18432
PReLU PRelu_32 1 1 96 98 0=64
Convolution Conv_33 1 1 98 99 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_34 1 1 99 101 0=64
Split splitncnn_3 1 2 101 101_splitncnn_0 101_splitncnn_1
Concat Concat_35 3 1 101_splitncnn_1 3 7 102
Convolution Conv_36 1 1 102 103 0=128 1=3 3=2 4=1 5=1 6=147456
PReLU PRelu_37 1 1 103 105 0=128
Convolution Conv_38 1 1 105 106 0=128 1=3 4=1 5=1 6=147456
PReLU PRelu_39 1 1 106 108 0=128
Split splitncnn_4 1 2 108 108_splitncnn_0 108_splitncnn_1
Concat Concat_40 3 1 108_splitncnn_1 4 8 109
Convolution Conv_41 1 1 109 110 0=256 1=3 3=2 4=1 5=1 6=589824
PReLU PRelu_42 1 1 110 112 0=256
Convolution Conv_43 1 1 112 113 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_44 1 1 113 115 0=256
Split splitncnn_5 1 2 115 115_splitncnn_0 115_splitncnn_1
Concat Concat_45 3 1 115_splitncnn_1 5 9 116
Convolution Conv_46 1 1 116 117 0=512 1=3 3=2 4=1 5=1 6=2359296
PReLU PRelu_47 1 1 117 119 0=512
Convolution Conv_48 1 1 119 120 0=512 1=3 4=1 5=1 6=2359296
PReLU PRelu_49 1 1 120 122 0=512
Concat Concat_50 3 1 122 6 10 123
Deconvolution ConvTranspose_51 1 1 123 124 0=256 1=4 3=2 4=1 5=1 6=4194304
PReLU PRelu_52 1 1 124 126 0=256
Concat Concat_53 2 1 126 115_splitncnn_0 127
Deconvolution ConvTranspose_54 1 1 127 128 0=128 1=4 3=2 4=1 5=1 6=1048576
PReLU PRelu_55 1 1 128 130 0=128
Concat Concat_56 2 1 130 108_splitncnn_0 131
Deconvolution ConvTranspose_57 1 1 131 132 0=64 1=4 3=2 4=1 5=1 6=262144
PReLU PRelu_58 1 1 132 134 0=64
Concat Concat_59 2 1 134 101_splitncnn_0 135
Deconvolution ConvTranspose_60 1 1 135 136 0=32 1=4 3=2 4=1 5=1 6=65536
PReLU PRelu_61 1 1 136 138 0=32
Deconvolution ConvTranspose_62 1 1 138 140 0=4 1=4 3=2 4=1 5=1 6=2048 9=4
Split splitncnn_6 1 2 140 140_splitncnn_0 140_splitncnn_1
Crop Slice_68 1 1 140_splitncnn_1 145 -23309=1,0 -23310=1,3 -23311=1,0
BinaryOp Mul_70 1 1 145 147 0=2 1=1 2=2.000000e+00
BinaryOp Sub_72 1 1 147 149 0=1 1=1 2=1.000000e+00
Crop Slice_77 1 1 140_splitncnn_0 154 -23309=1,3 -23310=1,4 -23311=1,0
Split splitncnn_7 1 2 154 154_splitncnn_0 154_splitncnn_1
BinaryOp Mul_78 2 1 77_splitncnn_0 154_splitncnn_1 155 0=2
BinaryOp Sub_80 1 1 154_splitncnn_0 157 0=7 1=1 2=1.000000e+00
BinaryOp Mul_81 2 1 88_splitncnn_0 157 158 0=2
BinaryOp Add_82 2 1 155 158 159
BinaryOp Add_83 2 1 159 149 160
Clip Clip_84 1 1 160 output 0=0.000000e+00 1=1.000000e+00

BIN
models/rife/rife-v2.4/contextnet.bin vendored Normal file

Binary file not shown.

42
models/rife/rife-v2.4/contextnet.param vendored Normal file
View File

@@ -0,0 +1,42 @@
7767517
40 46
Input input.1 0 1 input.1
Input flow.0 0 1 flow.0
Convolution Conv_0 1 1 input.1 32 0=32 1=3 3=2 4=1 5=1 6=864
PReLU PRelu_1 1 1 32 34 0=32
Convolution Conv_2 1 1 34 35 0=32 1=3 4=1 5=1 6=9216
PReLU PRelu_3 1 1 35 37 0=32
Convolution Conv_4 1 1 37 38 0=32 1=3 3=2 4=1 5=1 6=9216
PReLU PRelu_5 1 1 38 40 0=32
Convolution Conv_6 1 1 40 41 0=32 1=3 4=1 5=1 6=9216
PReLU PRelu_7 1 1 41 43 0=32
Split splitncnn_0 1 2 43 43_splitncnn_0 43_splitncnn_1
Interp Resize_9 1 1 flow.0 53 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_11 1 1 53 55 0=2 1=1 2=5.000000e-01
Split splitncnn_1 1 2 55 55_splitncnn_0 55_splitncnn_1
rife.Warp Warp_17 2 1 43_splitncnn_1 55_splitncnn_1 f1
Convolution Conv_18 1 1 43_splitncnn_0 62 0=64 1=3 3=2 4=1 5=1 6=18432
PReLU PRelu_19 1 1 62 64 0=64
Convolution Conv_20 1 1 64 65 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_21 1 1 65 67 0=64
Split splitncnn_2 1 2 67 67_splitncnn_0 67_splitncnn_1
Interp Resize_23 1 1 55_splitncnn_0 77 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_25 1 1 77 79 0=2 1=1 2=5.000000e-01
Split splitncnn_3 1 2 79 79_splitncnn_0 79_splitncnn_1
rife.Warp Warp_31 2 1 67_splitncnn_1 79_splitncnn_1 f2
Convolution Conv_32 1 1 67_splitncnn_0 86 0=128 1=3 3=2 4=1 5=1 6=73728
PReLU PRelu_33 1 1 86 88 0=128
Convolution Conv_34 1 1 88 89 0=128 1=3 4=1 5=1 6=147456
PReLU PRelu_35 1 1 89 91 0=128
Split splitncnn_4 1 2 91 91_splitncnn_0 91_splitncnn_1
Interp Resize_37 1 1 79_splitncnn_0 101 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_39 1 1 101 103 0=2 1=1 2=5.000000e-01
Split splitncnn_5 1 2 103 103_splitncnn_0 103_splitncnn_1
rife.Warp Warp_31a 2 1 91_splitncnn_1 103_splitncnn_1 f3
Convolution Conv_46 1 1 91_splitncnn_0 110 0=256 1=3 3=2 4=1 5=1 6=294912
PReLU PRelu_47 1 1 110 112 0=256
Convolution Conv_48 1 1 112 113 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_49 1 1 113 115 0=256
Interp Resize_51 1 1 103_splitncnn_0 125 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_53 1 1 125 127 0=2 1=1 2=5.000000e-01
rife.Warp Warp_ss 2 1 115 127 f4

BIN
models/rife/rife-v2.4/flownet.bin vendored Normal file

Binary file not shown.

119
models/rife/rife-v2.4/flownet.param vendored Normal file
View File

@@ -0,0 +1,119 @@
7767517
117 135
Input input0 0 1 input0
Input input1 0 1 input1
Concat input.1 2 1 input0 input1 input.1
Split splitncnn_input0 1 7 input.1 input.1_splitncnn_0 input.1_splitncnn_1 input.1_splitncnn_2 input.1_splitncnn_3 input.1_splitncnn_4 input.1_splitncnn_5 input.1_splitncnn_6
Interp Resize_1 1 1 input.1_splitncnn_6 114 0=2 1=1.250000e-01 2=1.250000e-01
Convolution Conv_2 1 1 114 115 0=192 1=3 3=2 4=1 5=1 6=10368
PReLU PRelu_3 1 1 115 117 0=192
Convolution Conv_4 1 1 117 118 0=384 1=3 3=2 4=1 5=1 6=663552
PReLU PRelu_5 1 1 118 120 0=384
Convolution Conv_6 1 1 120 121 0=384 1=3 4=1 5=1 6=1327104
PReLU PRelu_7 1 1 121 123 0=384
Convolution Conv_8 1 1 123 124 0=384 1=3 4=1 5=1 6=1327104
PReLU PRelu_9 1 1 124 126 0=384
Convolution Conv_10 1 1 126 127 0=384 1=3 4=1 5=1 6=1327104
PReLU PRelu_11 1 1 127 129 0=384
Convolution Conv_12 1 1 129 130 0=384 1=3 4=1 5=1 6=1327104
PReLU PRelu_13 1 1 130 132 0=384
Convolution Conv_14 1 1 132 133 0=384 1=3 4=1 5=1 6=1327104
PReLU PRelu_15 1 1 133 135 0=384
Convolution Conv_16 1 1 135 136 0=384 1=3 4=1 5=1 6=1327104
PReLU PRelu_17 1 1 136 138 0=384
Deconvolution ConvTranspose_18 1 1 138 139 0=4 1=4 3=2 4=1 5=1 6=24576
Interp Resize_20 1 1 139 149 0=2 1=8.000000e+00 2=8.000000e+00
Split splitncnn_0 1 4 149 149_splitncnn_0 149_splitncnn_1 149_splitncnn_2 149_splitncnn_3
Interp Resize_22 1 1 149_splitncnn_3 159 0=2 1=2.000000e+00 2=2.000000e+00
BinaryOp Mul_24 1 1 159 161 0=2 1=1 2=2.000000e+00
Split splitncnn_1 1 3 161 161_splitncnn_0 161_splitncnn_1 161_splitncnn_2
Crop Slice_29 1 1 input.1_splitncnn_5 166 -23309=1,0 -23310=1,3 -23311=1,0
Crop Slice_34 1 1 161_splitncnn_2 171 -23309=1,0 -23310=1,2 -23311=1,0
rife.Warp Warp_40 2 1 166 171 177
Crop Slice_45 1 1 input.1_splitncnn_4 182 -23309=1,3 -23310=1,2147483647 -23311=1,0
Crop Slice_50 1 1 161_splitncnn_1 187 -23309=1,2 -23310=1,4 -23311=1,0
rife.Warp Warp_56 2 1 182 187 193
Concat Concat_57 3 1 177 193 161_splitncnn_0 194
Interp Resize_59 1 1 194 204 0=2 1=2.500000e-01 2=2.500000e-01
Convolution Conv_60 1 1 204 205 0=128 1=3 3=2 4=1 5=1 6=11520
PReLU PRelu_61 1 1 205 207 0=128
Convolution Conv_62 1 1 207 208 0=256 1=3 3=2 4=1 5=1 6=294912
PReLU PRelu_63 1 1 208 210 0=256
Convolution Conv_64 1 1 210 211 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_65 1 1 211 213 0=256
Convolution Conv_66 1 1 213 214 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_67 1 1 214 216 0=256
Convolution Conv_68 1 1 216 217 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_69 1 1 217 219 0=256
Convolution Conv_70 1 1 219 220 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_71 1 1 220 222 0=256
Convolution Conv_72 1 1 222 223 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_73 1 1 223 225 0=256
Convolution Conv_74 1 1 225 226 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_75 1 1 226 228 0=256
Deconvolution ConvTranspose_76 1 1 228 229 0=4 1=4 3=2 4=1 5=1 6=16384
Interp Resize_78 1 1 229 239 0=2 1=4.000000e+00 2=4.000000e+00
Split splitncnn_2 1 3 239 239_splitncnn_0 239_splitncnn_1 239_splitncnn_2
BinaryOp Add_79 2 1 149_splitncnn_2 239_splitncnn_2 240
Interp Resize_81 1 1 240 250 0=2 1=2.000000e+00 2=2.000000e+00
BinaryOp Mul_83 1 1 250 252 0=2 1=1 2=2.000000e+00
Split splitncnn_3 1 3 252 252_splitncnn_0 252_splitncnn_1 252_splitncnn_2
Crop Slice_88 1 1 input.1_splitncnn_3 257 -23309=1,0 -23310=1,3 -23311=1,0
Crop Slice_93 1 1 252_splitncnn_2 262 -23309=1,0 -23310=1,2 -23311=1,0
rife.Warp Warp_99 2 1 257 262 268
Crop Slice_104 1 1 input.1_splitncnn_2 273 -23309=1,3 -23310=1,2147483647 -23311=1,0
Crop Slice_109 1 1 252_splitncnn_1 278 -23309=1,2 -23310=1,4 -23311=1,0
rife.Warp Warp_115 2 1 273 278 284
Concat Concat_116 3 1 268 284 252_splitncnn_0 285
Interp Resize_118 1 1 285 295 0=2 1=5.000000e-01 2=5.000000e-01
Convolution Conv_119 1 1 295 296 0=96 1=3 3=2 4=1 5=1 6=8640
PReLU PRelu_120 1 1 296 298 0=96
Convolution Conv_121 1 1 298 299 0=192 1=3 3=2 4=1 5=1 6=165888
PReLU PRelu_122 1 1 299 301 0=192
Convolution Conv_123 1 1 301 302 0=192 1=3 4=1 5=1 6=331776
PReLU PRelu_124 1 1 302 304 0=192
Convolution Conv_125 1 1 304 305 0=192 1=3 4=1 5=1 6=331776
PReLU PRelu_126 1 1 305 307 0=192
Convolution Conv_127 1 1 307 308 0=192 1=3 4=1 5=1 6=331776
PReLU PRelu_128 1 1 308 310 0=192
Convolution Conv_129 1 1 310 311 0=192 1=3 4=1 5=1 6=331776
PReLU PRelu_130 1 1 311 313 0=192
Convolution Conv_131 1 1 313 314 0=192 1=3 4=1 5=1 6=331776
PReLU PRelu_132 1 1 314 316 0=192
Convolution Conv_133 1 1 316 317 0=192 1=3 4=1 5=1 6=331776
PReLU PRelu_134 1 1 317 319 0=192
Deconvolution ConvTranspose_135 1 1 319 320 0=4 1=4 3=2 4=1 5=1 6=12288
Interp Resize_137 1 1 320 330 0=2 1=2.000000e+00 2=2.000000e+00
Split splitncnn_4 1 2 330 330_splitncnn_0 330_splitncnn_1
BinaryOp Add_138 2 1 149_splitncnn_1 239_splitncnn_1 331
BinaryOp Add_139 2 1 331 330_splitncnn_1 332
Interp Resize_141 1 1 332 342 0=2 1=2.000000e+00 2=2.000000e+00
BinaryOp Mul_143 1 1 342 344 0=2 1=1 2=2.000000e+00
Split splitncnn_5 1 3 344 344_splitncnn_0 344_splitncnn_1 344_splitncnn_2
Crop Slice_148 1 1 input.1_splitncnn_1 349 -23309=1,0 -23310=1,3 -23311=1,0
Crop Slice_153 1 1 344_splitncnn_2 354 -23309=1,0 -23310=1,2 -23311=1,0
rife.Warp Warp_159 2 1 349 354 360
Crop Slice_164 1 1 input.1_splitncnn_0 365 -23309=1,3 -23310=1,2147483647 -23311=1,0
Crop Slice_169 1 1 344_splitncnn_1 370 -23309=1,2 -23310=1,4 -23311=1,0
rife.Warp Warp_175 2 1 365 370 376
Concat Concat_176 3 1 360 376 344_splitncnn_0 377
Convolution Conv_177 1 1 377 378 0=48 1=3 3=2 4=1 5=1 6=4320
PReLU PRelu_178 1 1 378 380 0=48
Convolution Conv_179 1 1 380 381 0=96 1=3 3=2 4=1 5=1 6=41472
PReLU PRelu_180 1 1 381 383 0=96
Convolution Conv_181 1 1 383 384 0=96 1=3 4=1 5=1 6=82944
PReLU PRelu_182 1 1 384 386 0=96
Convolution Conv_183 1 1 386 387 0=96 1=3 4=1 5=1 6=82944
PReLU PRelu_184 1 1 387 389 0=96
Convolution Conv_185 1 1 389 390 0=96 1=3 4=1 5=1 6=82944
PReLU PRelu_186 1 1 390 392 0=96
Convolution Conv_187 1 1 392 393 0=96 1=3 4=1 5=1 6=82944
PReLU PRelu_188 1 1 393 395 0=96
Convolution Conv_189 1 1 395 396 0=96 1=3 4=1 5=1 6=82944
PReLU PRelu_190 1 1 396 398 0=96
Convolution Conv_191 1 1 398 399 0=96 1=3 4=1 5=1 6=82944
PReLU PRelu_192 1 1 399 401 0=96
Deconvolution ConvTranspose_193 1 1 401 402 0=4 1=4 3=2 4=1 5=1 6=6144
BinaryOp Add_194 2 1 149_splitncnn_0 239_splitncnn_0 403
BinaryOp Add_195 2 1 403 330_splitncnn_0 404
BinaryOp Add_196 2 1 404 402 flow

BIN
models/rife/rife-v2.4/fusionnet.bin vendored Normal file

Binary file not shown.

74
models/rife/rife-v2.4/fusionnet.param vendored Normal file
View File

@@ -0,0 +1,74 @@
7767517
72 81
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 64 0=2 1=2.000000e+00 2=2.000000e+00
BinaryOp Mul_3 1 1 64 66 0=2 1=1 2=2.000000e+00
Split splitncnn_0 1 3 66 66_splitncnn_0 66_splitncnn_1 66_splitncnn_2
Crop Slice_8 1 1 66_splitncnn_2 71 -23309=1,0 -23310=1,2 -23311=1,0
rife.Warp Warp_14 2 1 img0 71 77
Split splitncnn_1 1 2 77 77_splitncnn_0 77_splitncnn_1
Crop Slice_19 1 1 66_splitncnn_1 82 -23309=1,2 -23310=1,4 -23311=1,0
rife.Warp Warp_14 2 1 img1 82 88
Split splitncnn_2 1 2 88 88_splitncnn_0 88_splitncnn_1
Concat Concat_26 3 1 77_splitncnn_1 88_splitncnn_1 66_splitncnn_0 89
Convolution Conv_27 1 1 89 90 0=32 1=3 3=2 4=1 5=1 6=2880
PReLU PRelu_28 1 1 90 92 0=32
Convolution Conv_29 1 1 92 93 0=32 1=3 4=1 5=1 6=9216
PReLU PRelu_30 1 1 93 95 0=32
Convolution Conv_31 1 1 95 96 0=64 1=3 3=2 4=1 5=1 6=18432
PReLU PRelu_32 1 1 96 98 0=64
Convolution Conv_33 1 1 98 99 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_34 1 1 99 101 0=64
Split splitncnn_3 1 2 101 101_splitncnn_0 101_splitncnn_1
Concat Concat_35 3 1 101_splitncnn_1 3 7 102
Convolution Conv_36 1 1 102 103 0=128 1=3 3=2 4=1 5=1 6=147456
PReLU PRelu_37 1 1 103 105 0=128
Convolution Conv_38 1 1 105 106 0=128 1=3 4=1 5=1 6=147456
PReLU PRelu_39 1 1 106 108 0=128
Split splitncnn_4 1 2 108 108_splitncnn_0 108_splitncnn_1
Concat Concat_40 3 1 108_splitncnn_1 4 8 109
Convolution Conv_41 1 1 109 110 0=256 1=3 3=2 4=1 5=1 6=589824
PReLU PRelu_42 1 1 110 112 0=256
Convolution Conv_43 1 1 112 113 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_44 1 1 113 115 0=256
Split splitncnn_5 1 2 115 115_splitncnn_0 115_splitncnn_1
Concat Concat_45 3 1 115_splitncnn_1 5 9 116
Convolution Conv_46 1 1 116 117 0=512 1=3 3=2 4=1 5=1 6=2359296
PReLU PRelu_47 1 1 117 119 0=512
Convolution Conv_48 1 1 119 120 0=512 1=3 4=1 5=1 6=2359296
PReLU PRelu_49 1 1 120 122 0=512
Concat Concat_50 3 1 122 6 10 123
Deconvolution ConvTranspose_51 1 1 123 124 0=256 1=4 3=2 4=1 5=1 6=4194304
PReLU PRelu_52 1 1 124 126 0=256
Concat Concat_53 2 1 126 115_splitncnn_0 127
Deconvolution ConvTranspose_54 1 1 127 128 0=128 1=4 3=2 4=1 5=1 6=1048576
PReLU PRelu_55 1 1 128 130 0=128
Concat Concat_56 2 1 130 108_splitncnn_0 131
Deconvolution ConvTranspose_57 1 1 131 132 0=64 1=4 3=2 4=1 5=1 6=262144
PReLU PRelu_58 1 1 132 134 0=64
Concat Concat_59 2 1 134 101_splitncnn_0 135
Deconvolution ConvTranspose_60 1 1 135 136 0=32 1=4 3=2 4=1 5=1 6=65536
PReLU PRelu_61 1 1 136 138 0=32
Deconvolution ConvTranspose_62 1 1 138 140 0=4 1=4 3=2 4=1 5=1 6=2048 9=4
Split splitncnn_6 1 2 140 140_splitncnn_0 140_splitncnn_1
Crop Slice_68 1 1 140_splitncnn_1 145 -23309=1,0 -23310=1,3 -23311=1,0
BinaryOp Mul_70 1 1 145 147 0=2 1=1 2=2.000000e+00
BinaryOp Sub_72 1 1 147 149 0=1 1=1 2=1.000000e+00
Crop Slice_77 1 1 140_splitncnn_0 154 -23309=1,3 -23310=1,4 -23311=1,0
Split splitncnn_7 1 2 154 154_splitncnn_0 154_splitncnn_1
BinaryOp Mul_78 2 1 77_splitncnn_0 154_splitncnn_1 155 0=2
BinaryOp Sub_80 1 1 154_splitncnn_0 157 0=7 1=1 2=1.000000e+00
BinaryOp Mul_81 2 1 88_splitncnn_0 157 158 0=2
BinaryOp Add_82 2 1 155 158 159
BinaryOp Add_83 2 1 159 149 160
Clip Clip_84 1 1 160 output 0=0.000000e+00 1=1.000000e+00

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

Binary file not shown.

42
models/rife/rife-v2/contextnet.param vendored Normal file
View File

@@ -0,0 +1,42 @@
7767517
40 46
Input input.1 0 1 input.1
Input flow.0 0 1 flow.0
Convolution Conv_0 1 1 input.1 32 0=32 1=3 3=2 4=1 5=1 6=864
PReLU PRelu_1 1 1 32 34 0=32
Convolution Conv_2 1 1 34 35 0=32 1=3 4=1 5=1 6=9216
PReLU PRelu_3 1 1 35 37 0=32
Convolution Conv_4 1 1 37 38 0=32 1=3 3=2 4=1 5=1 6=9216
PReLU PRelu_5 1 1 38 40 0=32
Convolution Conv_6 1 1 40 41 0=32 1=3 4=1 5=1 6=9216
PReLU PRelu_7 1 1 41 43 0=32
Split splitncnn_0 1 2 43 43_splitncnn_0 43_splitncnn_1
Interp Resize_9 1 1 flow.0 53 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_11 1 1 53 55 0=2 1=1 2=5.000000e-01
Split splitncnn_1 1 2 55 55_splitncnn_0 55_splitncnn_1
rife.Warp Warp_17 2 1 43_splitncnn_1 55_splitncnn_1 f1
Convolution Conv_18 1 1 43_splitncnn_0 62 0=64 1=3 3=2 4=1 5=1 6=18432
PReLU PRelu_19 1 1 62 64 0=64
Convolution Conv_20 1 1 64 65 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_21 1 1 65 67 0=64
Split splitncnn_2 1 2 67 67_splitncnn_0 67_splitncnn_1
Interp Resize_23 1 1 55_splitncnn_0 77 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_25 1 1 77 79 0=2 1=1 2=5.000000e-01
Split splitncnn_3 1 2 79 79_splitncnn_0 79_splitncnn_1
rife.Warp Warp_31 2 1 67_splitncnn_1 79_splitncnn_1 f2
Convolution Conv_32 1 1 67_splitncnn_0 86 0=128 1=3 3=2 4=1 5=1 6=73728
PReLU PRelu_33 1 1 86 88 0=128
Convolution Conv_34 1 1 88 89 0=128 1=3 4=1 5=1 6=147456
PReLU PRelu_35 1 1 89 91 0=128
Split splitncnn_4 1 2 91 91_splitncnn_0 91_splitncnn_1
Interp Resize_37 1 1 79_splitncnn_0 101 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_39 1 1 101 103 0=2 1=1 2=5.000000e-01
Split splitncnn_5 1 2 103 103_splitncnn_0 103_splitncnn_1
rife.Warp Warp_31a 2 1 91_splitncnn_1 103_splitncnn_1 f3
Convolution Conv_46 1 1 91_splitncnn_0 110 0=256 1=3 3=2 4=1 5=1 6=294912
PReLU PRelu_47 1 1 110 112 0=256
Convolution Conv_48 1 1 112 113 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_49 1 1 113 115 0=256
Interp Resize_51 1 1 103_splitncnn_0 125 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_53 1 1 125 127 0=2 1=1 2=5.000000e-01
rife.Warp Warp_ss 2 1 115 127 f4

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

Binary file not shown.

119
models/rife/rife-v2/flownet.param vendored Normal file
View File

@@ -0,0 +1,119 @@
7767517
117 135
Input input0 0 1 input0
Input input1 0 1 input1
Concat input.1 2 1 input0 input1 input.1
Split splitncnn_input0 1 7 input.1 input.1_splitncnn_0 input.1_splitncnn_1 input.1_splitncnn_2 input.1_splitncnn_3 input.1_splitncnn_4 input.1_splitncnn_5 input.1_splitncnn_6
Interp Resize_1 1 1 input.1_splitncnn_6 114 0=2 1=1.250000e-01 2=1.250000e-01
Convolution Conv_2 1 1 114 115 0=192 1=3 3=2 4=1 5=1 6=10368
PReLU PRelu_3 1 1 115 117 0=192
Convolution Conv_4 1 1 117 118 0=384 1=3 3=2 4=1 5=1 6=663552
PReLU PRelu_5 1 1 118 120 0=384
Convolution Conv_6 1 1 120 121 0=384 1=3 4=1 5=1 6=1327104
PReLU PRelu_7 1 1 121 123 0=384
Convolution Conv_8 1 1 123 124 0=384 1=3 4=1 5=1 6=1327104
PReLU PRelu_9 1 1 124 126 0=384
Convolution Conv_10 1 1 126 127 0=384 1=3 4=1 5=1 6=1327104
PReLU PRelu_11 1 1 127 129 0=384
Convolution Conv_12 1 1 129 130 0=384 1=3 4=1 5=1 6=1327104
PReLU PRelu_13 1 1 130 132 0=384
Convolution Conv_14 1 1 132 133 0=384 1=3 4=1 5=1 6=1327104
PReLU PRelu_15 1 1 133 135 0=384
Convolution Conv_16 1 1 135 136 0=384 1=3 4=1 5=1 6=1327104
PReLU PRelu_17 1 1 136 138 0=384
Deconvolution ConvTranspose_18 1 1 138 139 0=4 1=4 3=2 4=1 5=1 6=24576
Interp Resize_20 1 1 139 149 0=2 1=8.000000e+00 2=8.000000e+00
Split splitncnn_0 1 4 149 149_splitncnn_0 149_splitncnn_1 149_splitncnn_2 149_splitncnn_3
Interp Resize_22 1 1 149_splitncnn_3 159 0=2 1=2.000000e+00 2=2.000000e+00
BinaryOp Mul_24 1 1 159 161 0=2 1=1 2=2.000000e+00
Split splitncnn_1 1 3 161 161_splitncnn_0 161_splitncnn_1 161_splitncnn_2
Crop Slice_29 1 1 input.1_splitncnn_5 166 -23309=1,0 -23310=1,3 -23311=1,0
Crop Slice_34 1 1 161_splitncnn_2 171 -23309=1,0 -23310=1,2 -23311=1,0
rife.Warp Warp_40 2 1 166 171 177
Crop Slice_45 1 1 input.1_splitncnn_4 182 -23309=1,3 -23310=1,2147483647 -23311=1,0
Crop Slice_50 1 1 161_splitncnn_1 187 -23309=1,2 -23310=1,4 -23311=1,0
rife.Warp Warp_56 2 1 182 187 193
Concat Concat_57 3 1 177 193 161_splitncnn_0 194
Interp Resize_59 1 1 194 204 0=2 1=2.500000e-01 2=2.500000e-01
Convolution Conv_60 1 1 204 205 0=128 1=3 3=2 4=1 5=1 6=11520
PReLU PRelu_61 1 1 205 207 0=128
Convolution Conv_62 1 1 207 208 0=256 1=3 3=2 4=1 5=1 6=294912
PReLU PRelu_63 1 1 208 210 0=256
Convolution Conv_64 1 1 210 211 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_65 1 1 211 213 0=256
Convolution Conv_66 1 1 213 214 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_67 1 1 214 216 0=256
Convolution Conv_68 1 1 216 217 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_69 1 1 217 219 0=256
Convolution Conv_70 1 1 219 220 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_71 1 1 220 222 0=256
Convolution Conv_72 1 1 222 223 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_73 1 1 223 225 0=256
Convolution Conv_74 1 1 225 226 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_75 1 1 226 228 0=256
Deconvolution ConvTranspose_76 1 1 228 229 0=4 1=4 3=2 4=1 5=1 6=16384
Interp Resize_78 1 1 229 239 0=2 1=4.000000e+00 2=4.000000e+00
Split splitncnn_2 1 3 239 239_splitncnn_0 239_splitncnn_1 239_splitncnn_2
BinaryOp Add_79 2 1 149_splitncnn_2 239_splitncnn_2 240
Interp Resize_81 1 1 240 250 0=2 1=2.000000e+00 2=2.000000e+00
BinaryOp Mul_83 1 1 250 252 0=2 1=1 2=2.000000e+00
Split splitncnn_3 1 3 252 252_splitncnn_0 252_splitncnn_1 252_splitncnn_2
Crop Slice_88 1 1 input.1_splitncnn_3 257 -23309=1,0 -23310=1,3 -23311=1,0
Crop Slice_93 1 1 252_splitncnn_2 262 -23309=1,0 -23310=1,2 -23311=1,0
rife.Warp Warp_99 2 1 257 262 268
Crop Slice_104 1 1 input.1_splitncnn_2 273 -23309=1,3 -23310=1,2147483647 -23311=1,0
Crop Slice_109 1 1 252_splitncnn_1 278 -23309=1,2 -23310=1,4 -23311=1,0
rife.Warp Warp_115 2 1 273 278 284
Concat Concat_116 3 1 268 284 252_splitncnn_0 285
Interp Resize_118 1 1 285 295 0=2 1=5.000000e-01 2=5.000000e-01
Convolution Conv_119 1 1 295 296 0=96 1=3 3=2 4=1 5=1 6=8640
PReLU PRelu_120 1 1 296 298 0=96
Convolution Conv_121 1 1 298 299 0=192 1=3 3=2 4=1 5=1 6=165888
PReLU PRelu_122 1 1 299 301 0=192
Convolution Conv_123 1 1 301 302 0=192 1=3 4=1 5=1 6=331776
PReLU PRelu_124 1 1 302 304 0=192
Convolution Conv_125 1 1 304 305 0=192 1=3 4=1 5=1 6=331776
PReLU PRelu_126 1 1 305 307 0=192
Convolution Conv_127 1 1 307 308 0=192 1=3 4=1 5=1 6=331776
PReLU PRelu_128 1 1 308 310 0=192
Convolution Conv_129 1 1 310 311 0=192 1=3 4=1 5=1 6=331776
PReLU PRelu_130 1 1 311 313 0=192
Convolution Conv_131 1 1 313 314 0=192 1=3 4=1 5=1 6=331776
PReLU PRelu_132 1 1 314 316 0=192
Convolution Conv_133 1 1 316 317 0=192 1=3 4=1 5=1 6=331776
PReLU PRelu_134 1 1 317 319 0=192
Deconvolution ConvTranspose_135 1 1 319 320 0=4 1=4 3=2 4=1 5=1 6=12288
Interp Resize_137 1 1 320 330 0=2 1=2.000000e+00 2=2.000000e+00
Split splitncnn_4 1 2 330 330_splitncnn_0 330_splitncnn_1
BinaryOp Add_138 2 1 149_splitncnn_1 239_splitncnn_1 331
BinaryOp Add_139 2 1 331 330_splitncnn_1 332
Interp Resize_141 1 1 332 342 0=2 1=2.000000e+00 2=2.000000e+00
BinaryOp Mul_143 1 1 342 344 0=2 1=1 2=2.000000e+00
Split splitncnn_5 1 3 344 344_splitncnn_0 344_splitncnn_1 344_splitncnn_2
Crop Slice_148 1 1 input.1_splitncnn_1 349 -23309=1,0 -23310=1,3 -23311=1,0
Crop Slice_153 1 1 344_splitncnn_2 354 -23309=1,0 -23310=1,2 -23311=1,0
rife.Warp Warp_159 2 1 349 354 360
Crop Slice_164 1 1 input.1_splitncnn_0 365 -23309=1,3 -23310=1,2147483647 -23311=1,0
Crop Slice_169 1 1 344_splitncnn_1 370 -23309=1,2 -23310=1,4 -23311=1,0
rife.Warp Warp_175 2 1 365 370 376
Concat Concat_176 3 1 360 376 344_splitncnn_0 377
Convolution Conv_177 1 1 377 378 0=48 1=3 3=2 4=1 5=1 6=4320
PReLU PRelu_178 1 1 378 380 0=48
Convolution Conv_179 1 1 380 381 0=96 1=3 3=2 4=1 5=1 6=41472
PReLU PRelu_180 1 1 381 383 0=96
Convolution Conv_181 1 1 383 384 0=96 1=3 4=1 5=1 6=82944
PReLU PRelu_182 1 1 384 386 0=96
Convolution Conv_183 1 1 386 387 0=96 1=3 4=1 5=1 6=82944
PReLU PRelu_184 1 1 387 389 0=96
Convolution Conv_185 1 1 389 390 0=96 1=3 4=1 5=1 6=82944
PReLU PRelu_186 1 1 390 392 0=96
Convolution Conv_187 1 1 392 393 0=96 1=3 4=1 5=1 6=82944
PReLU PRelu_188 1 1 393 395 0=96
Convolution Conv_189 1 1 395 396 0=96 1=3 4=1 5=1 6=82944
PReLU PRelu_190 1 1 396 398 0=96
Convolution Conv_191 1 1 398 399 0=96 1=3 4=1 5=1 6=82944
PReLU PRelu_192 1 1 399 401 0=96
Deconvolution ConvTranspose_193 1 1 401 402 0=4 1=4 3=2 4=1 5=1 6=6144
BinaryOp Add_194 2 1 149_splitncnn_0 239_splitncnn_0 403
BinaryOp Add_195 2 1 403 330_splitncnn_0 404
BinaryOp Add_196 2 1 404 402 flow

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

Binary file not shown.

74
models/rife/rife-v2/fusionnet.param vendored Normal file
View File

@@ -0,0 +1,74 @@
7767517
72 81
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 64 0=2 1=2.000000e+00 2=2.000000e+00
BinaryOp Mul_3 1 1 64 66 0=2 1=1 2=2.000000e+00
Split splitncnn_0 1 3 66 66_splitncnn_0 66_splitncnn_1 66_splitncnn_2
Crop Slice_8 1 1 66_splitncnn_2 71 -23309=1,0 -23310=1,2 -23311=1,0
rife.Warp Warp_14 2 1 img0 71 77
Split splitncnn_1 1 2 77 77_splitncnn_0 77_splitncnn_1
Crop Slice_19 1 1 66_splitncnn_1 82 -23309=1,2 -23310=1,4 -23311=1,0
rife.Warp Warp_14 2 1 img1 82 88
Split splitncnn_2 1 2 88 88_splitncnn_0 88_splitncnn_1
Concat Concat_26 3 1 77_splitncnn_1 88_splitncnn_1 66_splitncnn_0 89
Convolution Conv_27 1 1 89 90 0=32 1=3 3=2 4=1 5=1 6=2880
PReLU PRelu_28 1 1 90 92 0=32
Convolution Conv_29 1 1 92 93 0=32 1=3 4=1 5=1 6=9216
PReLU PRelu_30 1 1 93 95 0=32
Convolution Conv_31 1 1 95 96 0=64 1=3 3=2 4=1 5=1 6=18432
PReLU PRelu_32 1 1 96 98 0=64
Convolution Conv_33 1 1 98 99 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_34 1 1 99 101 0=64
Split splitncnn_3 1 2 101 101_splitncnn_0 101_splitncnn_1
Concat Concat_35 3 1 101_splitncnn_1 3 7 102
Convolution Conv_36 1 1 102 103 0=128 1=3 3=2 4=1 5=1 6=147456
PReLU PRelu_37 1 1 103 105 0=128
Convolution Conv_38 1 1 105 106 0=128 1=3 4=1 5=1 6=147456
PReLU PRelu_39 1 1 106 108 0=128
Split splitncnn_4 1 2 108 108_splitncnn_0 108_splitncnn_1
Concat Concat_40 3 1 108_splitncnn_1 4 8 109
Convolution Conv_41 1 1 109 110 0=256 1=3 3=2 4=1 5=1 6=589824
PReLU PRelu_42 1 1 110 112 0=256
Convolution Conv_43 1 1 112 113 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_44 1 1 113 115 0=256
Split splitncnn_5 1 2 115 115_splitncnn_0 115_splitncnn_1
Concat Concat_45 3 1 115_splitncnn_1 5 9 116
Convolution Conv_46 1 1 116 117 0=512 1=3 3=2 4=1 5=1 6=2359296
PReLU PRelu_47 1 1 117 119 0=512
Convolution Conv_48 1 1 119 120 0=512 1=3 4=1 5=1 6=2359296
PReLU PRelu_49 1 1 120 122 0=512
Concat Concat_50 3 1 122 6 10 123
Deconvolution ConvTranspose_51 1 1 123 124 0=256 1=4 3=2 4=1 5=1 6=4194304
PReLU PRelu_52 1 1 124 126 0=256
Concat Concat_53 2 1 126 115_splitncnn_0 127
Deconvolution ConvTranspose_54 1 1 127 128 0=128 1=4 3=2 4=1 5=1 6=1048576
PReLU PRelu_55 1 1 128 130 0=128
Concat Concat_56 2 1 130 108_splitncnn_0 131
Deconvolution ConvTranspose_57 1 1 131 132 0=64 1=4 3=2 4=1 5=1 6=262144
PReLU PRelu_58 1 1 132 134 0=64
Concat Concat_59 2 1 134 101_splitncnn_0 135
Deconvolution ConvTranspose_60 1 1 135 136 0=32 1=4 3=2 4=1 5=1 6=65536
PReLU PRelu_61 1 1 136 138 0=32
Deconvolution ConvTranspose_62 1 1 138 140 0=4 1=4 3=2 4=1 5=1 6=2048 9=4
Split splitncnn_6 1 2 140 140_splitncnn_0 140_splitncnn_1
Crop Slice_68 1 1 140_splitncnn_1 145 -23309=1,0 -23310=1,3 -23311=1,0
BinaryOp Mul_70 1 1 145 147 0=2 1=1 2=2.000000e+00
BinaryOp Sub_72 1 1 147 149 0=1 1=1 2=1.000000e+00
Crop Slice_77 1 1 140_splitncnn_0 154 -23309=1,3 -23310=1,4 -23311=1,0
Split splitncnn_7 1 2 154 154_splitncnn_0 154_splitncnn_1
BinaryOp Mul_78 2 1 77_splitncnn_0 154_splitncnn_1 155 0=2
BinaryOp Sub_80 1 1 154_splitncnn_0 157 0=7 1=1 2=1.000000e+00
BinaryOp Mul_81 2 1 88_splitncnn_0 157 158 0=2
BinaryOp Add_82 2 1 155 158 159
BinaryOp Add_83 2 1 159 149 160
Clip Clip_84 1 1 160 output 0=0.000000e+00 1=1.000000e+00

BIN
models/rife/rife-v3.0/contextnet.bin vendored Normal file

Binary file not shown.

42
models/rife/rife-v3.0/contextnet.param vendored Normal file
View File

@@ -0,0 +1,42 @@
7767517
40 46
Input input.1 0 1 input.1
Input flow.0 0 1 flow.0
Convolution Conv_0 1 1 input.1 32 0=32 1=3 3=2 4=1 5=1 6=864
PReLU PRelu_1 1 1 32 34 0=32
Convolution Conv_2 1 1 34 35 0=32 1=3 4=1 5=1 6=9216
PReLU PRelu_3 1 1 35 37 0=32
Convolution Conv_4 1 1 37 38 0=32 1=3 3=2 4=1 5=1 6=9216
PReLU PRelu_5 1 1 38 40 0=32
Convolution Conv_6 1 1 40 41 0=32 1=3 4=1 5=1 6=9216
PReLU PRelu_7 1 1 41 43 0=32
Split splitncnn_0 1 2 43 43_splitncnn_0 43_splitncnn_1
Interp Resize_9 1 1 flow.0 53 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_11 1 1 53 55 0=2 1=1 2=5.000000e-01
Split splitncnn_1 1 2 55 55_splitncnn_0 55_splitncnn_1
rife.Warp Warp_17 2 1 43_splitncnn_1 55_splitncnn_1 f1
Convolution Conv_18 1 1 43_splitncnn_0 62 0=64 1=3 3=2 4=1 5=1 6=18432
PReLU PRelu_19 1 1 62 64 0=64
Convolution Conv_20 1 1 64 65 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_21 1 1 65 67 0=64
Split splitncnn_2 1 2 67 67_splitncnn_0 67_splitncnn_1
Interp Resize_23 1 1 55_splitncnn_0 77 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_25 1 1 77 79 0=2 1=1 2=5.000000e-01
Split splitncnn_3 1 2 79 79_splitncnn_0 79_splitncnn_1
rife.Warp Warp_31 2 1 67_splitncnn_1 79_splitncnn_1 f2
Convolution Conv_32 1 1 67_splitncnn_0 86 0=128 1=3 3=2 4=1 5=1 6=73728
PReLU PRelu_33 1 1 86 88 0=128
Convolution Conv_34 1 1 88 89 0=128 1=3 4=1 5=1 6=147456
PReLU PRelu_35 1 1 89 91 0=128
Split splitncnn_4 1 2 91 91_splitncnn_0 91_splitncnn_1
Interp Resize_37 1 1 79_splitncnn_0 101 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_39 1 1 101 103 0=2 1=1 2=5.000000e-01
Split splitncnn_5 1 2 103 103_splitncnn_0 103_splitncnn_1
rife.Warp Warp_45 2 1 91_splitncnn_1 103_splitncnn_1 f3
Convolution Conv_46 1 1 91_splitncnn_0 110 0=256 1=3 3=2 4=1 5=1 6=294912
PReLU PRelu_47 1 1 110 112 0=256
Convolution Conv_48 1 1 112 113 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_49 1 1 113 115 0=256
Interp Resize_51 1 1 103_splitncnn_0 125 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_53 1 1 125 127 0=2 1=1 2=5.000000e-01
rife.Warp Warp_59 2 1 115 127 f4

BIN
models/rife/rife-v3.0/flownet.bin vendored Normal file

Binary file not shown.

114
models/rife/rife-v3.0/flownet.param vendored Normal file
View File

@@ -0,0 +1,114 @@
7767517
112 132
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 88 0=2
Split splitncnn_0 1 5 88 88_splitncnn_0 88_splitncnn_1 88_splitncnn_2 88_splitncnn_3 88_splitncnn_4
Interp Resize_3 1 1 88_splitncnn_4 98 0=2 1=2.500000e-01 2=2.500000e-01
Convolution Conv_4 1 1 98 99 0=80 1=3 3=2 4=1 5=1 6=4320
PReLU PRelu_5 1 1 99 101 0=80
Convolution Conv_6 1 1 101 102 0=160 1=3 3=2 4=1 5=1 6=115200
PReLU PRelu_7 1 1 102 104 0=160
Split splitncnn_1 1 2 104 104_splitncnn_0 104_splitncnn_1
Convolution Conv_8 1 1 104_splitncnn_1 105 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_9 1 1 105 107 0=160
Convolution Conv_10 1 1 107 108 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_11 1 1 108 110 0=160
BinaryOp Add_12 2 1 110 104_splitncnn_0 111
Split splitncnn_2 1 2 111 111_splitncnn_0 111_splitncnn_1
Convolution Conv_13 1 1 111_splitncnn_1 112 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_14 1 1 112 114 0=160
Convolution Conv_15 1 1 114 115 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_16 1 1 115 117 0=160
BinaryOp Add_17 2 1 117 111_splitncnn_0 118
Split splitncnn_3 1 2 118 118_splitncnn_0 118_splitncnn_1
Convolution Conv_18 1 1 118_splitncnn_1 119 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_19 1 1 119 121 0=160
Convolution Conv_20 1 1 121 122 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_21 1 1 122 124 0=160
BinaryOp Add_22 2 1 124 118_splitncnn_0 125
Deconvolution ConvTranspose_23 1 1 125 126 0=4 1=4 3=2 4=1 5=1 6=10240
Interp Resize_25 1 1 126 136 0=2 1=4.000000e+00 2=4.000000e+00
BinaryOp Mul_27 1 1 136 138 0=2 1=1 2=4.000000e+00
Split splitncnn_4 1 3 138 138_splitncnn_0 138_splitncnn_1 138_splitncnn_2
Interp Resize_29 1 1 138_splitncnn_2 148 0=2 1=2.000000e+00 2=2.000000e+00
BinaryOp Mul_31 1 1 148 150 0=2 1=1 2=2.000000e+00
Split splitncnn_5 1 3 150 150_splitncnn_0 150_splitncnn_1 150_splitncnn_2
Crop Slice_36 1 1 88_splitncnn_3 155 -23309=1,0 -23310=1,3 -23311=1,0
Crop Slice_41 1 1 150_splitncnn_2 160 -23309=1,0 -23310=1,2 -23311=1,0
rife.Warp Warp_47 2 1 155 160 166
Crop Slice_52 1 1 88_splitncnn_2 171 -23309=1,3 -23310=1,2147483647 -23311=1,0
Crop Slice_57 1 1 150_splitncnn_1 176 -23309=1,2 -23310=1,4 -23311=1,0
rife.Warp Warp_63 2 1 171 176 182
Concat Concat_64 2 1 166 182 183
Interp Resize_66 1 1 183 193 0=2 1=5.000000e-01 2=5.000000e-01
Interp Resize_68 1 1 150_splitncnn_0 203 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_70 1 1 203 205 0=2 1=1 2=5.000000e-01
Concat Concat_71 2 1 193 205 206
Convolution Conv_72 1 1 206 207 0=80 1=3 3=2 4=1 5=1 6=7200
PReLU PRelu_73 1 1 207 209 0=80
Convolution Conv_74 1 1 209 210 0=160 1=3 3=2 4=1 5=1 6=115200
PReLU PRelu_75 1 1 210 212 0=160
Split splitncnn_6 1 2 212 212_splitncnn_0 212_splitncnn_1
Convolution Conv_76 1 1 212_splitncnn_1 213 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_77 1 1 213 215 0=160
Convolution Conv_78 1 1 215 216 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_79 1 1 216 218 0=160
BinaryOp Add_80 2 1 218 212_splitncnn_0 219
Split splitncnn_7 1 2 219 219_splitncnn_0 219_splitncnn_1
Convolution Conv_81 1 1 219_splitncnn_1 220 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_82 1 1 220 222 0=160
Convolution Conv_83 1 1 222 223 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_84 1 1 223 225 0=160
BinaryOp Add_85 2 1 225 219_splitncnn_0 226
Split splitncnn_8 1 2 226 226_splitncnn_0 226_splitncnn_1
Convolution Conv_86 1 1 226_splitncnn_1 227 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_87 1 1 227 229 0=160
Convolution Conv_88 1 1 229 230 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_89 1 1 230 232 0=160
BinaryOp Add_90 2 1 232 226_splitncnn_0 233
Deconvolution ConvTranspose_91 1 1 233 234 0=4 1=4 3=2 4=1 5=1 6=10240
Interp Resize_93 1 1 234 244 0=2 1=2.000000e+00 2=2.000000e+00
BinaryOp Mul_95 1 1 244 246 0=2 1=1 2=2.000000e+00
Split splitncnn_9 1 2 246 246_splitncnn_0 246_splitncnn_1
BinaryOp Add_96 2 1 138_splitncnn_1 246_splitncnn_1 247
Interp Resize_98 1 1 247 257 0=2 1=2.000000e+00 2=2.000000e+00
BinaryOp Mul_100 1 1 257 259 0=2 1=1 2=2.000000e+00
Split splitncnn_10 1 3 259 259_splitncnn_0 259_splitncnn_1 259_splitncnn_2
Crop Slice_105 1 1 88_splitncnn_1 264 -23309=1,0 -23310=1,3 -23311=1,0
Crop Slice_110 1 1 259_splitncnn_2 269 -23309=1,0 -23310=1,2 -23311=1,0
rife.Warp Warp_116 2 1 264 269 275
Crop Slice_121 1 1 88_splitncnn_0 280 -23309=1,3 -23310=1,2147483647 -23311=1,0
Crop Slice_126 1 1 259_splitncnn_1 285 -23309=1,2 -23310=1,4 -23311=1,0
rife.Warp Warp_132 2 1 280 285 291
Concat Concat_133 2 1 275 291 292
Interp Resize_135 1 1 292 302 0=2
Interp Resize_137 1 1 259_splitncnn_0 312 0=2
BinaryOp Mul_139 1 1 312 314 0=2 1=1 2=1.000000e+00
Concat Concat_140 2 1 302 314 315
Convolution Conv_141 1 1 315 316 0=80 1=3 3=2 4=1 5=1 6=7200
PReLU PRelu_142 1 1 316 318 0=80
Convolution Conv_143 1 1 318 319 0=160 1=3 3=2 4=1 5=1 6=115200
PReLU PRelu_144 1 1 319 321 0=160
Split splitncnn_11 1 2 321 321_splitncnn_0 321_splitncnn_1
Convolution Conv_145 1 1 321_splitncnn_1 322 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_146 1 1 322 324 0=160
Convolution Conv_147 1 1 324 325 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_148 1 1 325 327 0=160
BinaryOp Add_149 2 1 327 321_splitncnn_0 328
Split splitncnn_12 1 2 328 328_splitncnn_0 328_splitncnn_1
Convolution Conv_150 1 1 328_splitncnn_1 329 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_151 1 1 329 331 0=160
Convolution Conv_152 1 1 331 332 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_153 1 1 332 334 0=160
BinaryOp Add_154 2 1 334 328_splitncnn_0 335
Split splitncnn_13 1 2 335 335_splitncnn_0 335_splitncnn_1
Convolution Conv_155 1 1 335_splitncnn_1 336 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_156 1 1 336 338 0=160
Convolution Conv_157 1 1 338 339 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_158 1 1 339 341 0=160
BinaryOp Add_159 2 1 341 335_splitncnn_0 342
Deconvolution ConvTranspose_160 1 1 342 343 0=4 1=4 3=2 4=1 5=1 6=10240
BinaryOp Add_161 2 1 138_splitncnn_0 246_splitncnn_0 344
BinaryOp Add_162 2 1 344 343 flow

BIN
models/rife/rife-v3.0/fusionnet.bin vendored Normal file

Binary file not shown.

74
models/rife/rife-v3.0/fusionnet.param vendored Normal file
View File

@@ -0,0 +1,74 @@
7767517
72 81
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 64 0=2 1=2.000000e+00 2=2.000000e+00
BinaryOp Mul_3 1 1 64 66 0=2 1=1 2=2.000000e+00
Split splitncnn_0 1 3 66 66_splitncnn_0 66_splitncnn_1 66_splitncnn_2
Crop Slice_8 1 1 66_splitncnn_2 71 -23309=1,0 -23310=1,2 -23311=1,0
rife.Warp Warp_14 2 1 img0 71 77
Split splitncnn_1 1 2 77 77_splitncnn_0 77_splitncnn_1
Crop Slice_19 1 1 66_splitncnn_1 82 -23309=1,2 -23310=1,4 -23311=1,0
rife.Warp Warp_14 2 1 img1 82 88
Split splitncnn_2 1 2 88 88_splitncnn_0 88_splitncnn_1
Concat Concat_26 3 1 77_splitncnn_1 88_splitncnn_1 66_splitncnn_0 89
Convolution Conv_27 1 1 89 90 0=32 1=3 3=2 4=1 5=1 6=2880
PReLU PRelu_28 1 1 90 92 0=32
Convolution Conv_29 1 1 92 93 0=32 1=3 4=1 5=1 6=9216
PReLU PRelu_30 1 1 93 95 0=32
Convolution Conv_31 1 1 95 96 0=64 1=3 3=2 4=1 5=1 6=18432
PReLU PRelu_32 1 1 96 98 0=64
Convolution Conv_33 1 1 98 99 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_34 1 1 99 101 0=64
Split splitncnn_3 1 2 101 101_splitncnn_0 101_splitncnn_1
Concat Concat_35 3 1 101_splitncnn_1 3 7 102
Convolution Conv_36 1 1 102 103 0=128 1=3 3=2 4=1 5=1 6=147456
PReLU PRelu_37 1 1 103 105 0=128
Convolution Conv_38 1 1 105 106 0=128 1=3 4=1 5=1 6=147456
PReLU PRelu_39 1 1 106 108 0=128
Split splitncnn_4 1 2 108 108_splitncnn_0 108_splitncnn_1
Concat Concat_40 3 1 108_splitncnn_1 4 8 109
Convolution Conv_41 1 1 109 110 0=256 1=3 3=2 4=1 5=1 6=589824
PReLU PRelu_42 1 1 110 112 0=256
Convolution Conv_43 1 1 112 113 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_44 1 1 113 115 0=256
Split splitncnn_5 1 2 115 115_splitncnn_0 115_splitncnn_1
Concat Concat_45 3 1 115_splitncnn_1 5 9 116
Convolution Conv_46 1 1 116 117 0=512 1=3 3=2 4=1 5=1 6=2359296
PReLU PRelu_47 1 1 117 119 0=512
Convolution Conv_48 1 1 119 120 0=512 1=3 4=1 5=1 6=2359296
PReLU PRelu_49 1 1 120 122 0=512
Concat Concat_50 3 1 122 6 10 123
Deconvolution ConvTranspose_51 1 1 123 124 0=256 1=4 3=2 4=1 5=1 6=4194304
PReLU PRelu_52 1 1 124 126 0=256
Concat Concat_53 2 1 126 115_splitncnn_0 127
Deconvolution ConvTranspose_54 1 1 127 128 0=128 1=4 3=2 4=1 5=1 6=1048576
PReLU PRelu_55 1 1 128 130 0=128
Concat Concat_56 2 1 130 108_splitncnn_0 131
Deconvolution ConvTranspose_57 1 1 131 132 0=64 1=4 3=2 4=1 5=1 6=262144
PReLU PRelu_58 1 1 132 134 0=64
Concat Concat_59 2 1 134 101_splitncnn_0 135
Deconvolution ConvTranspose_60 1 1 135 136 0=32 1=4 3=2 4=1 5=1 6=65536
PReLU PRelu_61 1 1 136 138 0=32
Deconvolution ConvTranspose_62 1 1 138 140 0=4 1=4 3=2 4=1 5=1 6=2048 9=4
Split splitncnn_6 1 2 140 140_splitncnn_0 140_splitncnn_1
Crop Slice_68 1 1 140_splitncnn_1 145 -23309=1,0 -23310=1,3 -23311=1,0
BinaryOp Mul_70 1 1 145 147 0=2 1=1 2=2.000000e+00
BinaryOp Sub_72 1 1 147 149 0=1 1=1 2=1.000000e+00
Crop Slice_77 1 1 140_splitncnn_0 154 -23309=1,3 -23310=1,4 -23311=1,0
Split splitncnn_7 1 2 154 154_splitncnn_0 154_splitncnn_1
BinaryOp Mul_78 2 1 77_splitncnn_0 154_splitncnn_1 155 0=2
BinaryOp Sub_80 1 1 154_splitncnn_0 157 0=7 1=1 2=1.000000e+00
BinaryOp Mul_81 2 1 88_splitncnn_0 157 158 0=2
BinaryOp Add_82 2 1 155 158 159
BinaryOp Add_83 2 1 159 149 160
Clip Clip_84 1 1 160 output 0=0.000000e+00 1=1.000000e+00

BIN
models/rife/rife-v3.1/contextnet.bin vendored Normal file

Binary file not shown.

42
models/rife/rife-v3.1/contextnet.param vendored Normal file
View File

@@ -0,0 +1,42 @@
7767517
40 46
Input input.1 0 1 input.1
Input flow.0 0 1 flow.0
Convolution Conv_0 1 1 input.1 32 0=32 1=3 3=2 4=1 5=1 6=864
PReLU PRelu_1 1 1 32 34 0=32
Convolution Conv_2 1 1 34 35 0=32 1=3 4=1 5=1 6=9216
PReLU PRelu_3 1 1 35 37 0=32
Convolution Conv_4 1 1 37 38 0=32 1=3 3=2 4=1 5=1 6=9216
PReLU PRelu_5 1 1 38 40 0=32
Convolution Conv_6 1 1 40 41 0=32 1=3 4=1 5=1 6=9216
PReLU PRelu_7 1 1 41 43 0=32
Split splitncnn_0 1 2 43 43_splitncnn_0 43_splitncnn_1
Interp Resize_9 1 1 flow.0 53 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_11 1 1 53 55 0=2 1=1 2=5.000000e-01
Split splitncnn_1 1 2 55 55_splitncnn_0 55_splitncnn_1
rife.Warp Warp_17 2 1 43_splitncnn_1 55_splitncnn_1 f1
Convolution Conv_18 1 1 43_splitncnn_0 62 0=64 1=3 3=2 4=1 5=1 6=18432
PReLU PRelu_19 1 1 62 64 0=64
Convolution Conv_20 1 1 64 65 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_21 1 1 65 67 0=64
Split splitncnn_2 1 2 67 67_splitncnn_0 67_splitncnn_1
Interp Resize_23 1 1 55_splitncnn_0 77 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_25 1 1 77 79 0=2 1=1 2=5.000000e-01
Split splitncnn_3 1 2 79 79_splitncnn_0 79_splitncnn_1
rife.Warp Warp_31 2 1 67_splitncnn_1 79_splitncnn_1 f2
Convolution Conv_32 1 1 67_splitncnn_0 86 0=128 1=3 3=2 4=1 5=1 6=73728
PReLU PRelu_33 1 1 86 88 0=128
Convolution Conv_34 1 1 88 89 0=128 1=3 4=1 5=1 6=147456
PReLU PRelu_35 1 1 89 91 0=128
Split splitncnn_4 1 2 91 91_splitncnn_0 91_splitncnn_1
Interp Resize_37 1 1 79_splitncnn_0 101 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_39 1 1 101 103 0=2 1=1 2=5.000000e-01
Split splitncnn_5 1 2 103 103_splitncnn_0 103_splitncnn_1
rife.Warp Warp_45 2 1 91_splitncnn_1 103_splitncnn_1 f3
Convolution Conv_46 1 1 91_splitncnn_0 110 0=256 1=3 3=2 4=1 5=1 6=294912
PReLU PRelu_47 1 1 110 112 0=256
Convolution Conv_48 1 1 112 113 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_49 1 1 113 115 0=256
Interp Resize_51 1 1 103_splitncnn_0 125 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_53 1 1 125 127 0=2 1=1 2=5.000000e-01
rife.Warp Warp_59 2 1 115 127 f4

BIN
models/rife/rife-v3.1/flownet.bin vendored Normal file

Binary file not shown.

114
models/rife/rife-v3.1/flownet.param vendored Normal file
View File

@@ -0,0 +1,114 @@
7767517
112 132
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 88 0=2
Split splitncnn_0 1 5 88 88_splitncnn_0 88_splitncnn_1 88_splitncnn_2 88_splitncnn_3 88_splitncnn_4
Interp Resize_3 1 1 88_splitncnn_4 98 0=2 1=2.500000e-01 2=2.500000e-01
Convolution Conv_4 1 1 98 99 0=80 1=3 3=2 4=1 5=1 6=4320
PReLU PRelu_5 1 1 99 101 0=80
Convolution Conv_6 1 1 101 102 0=160 1=3 3=2 4=1 5=1 6=115200
PReLU PRelu_7 1 1 102 104 0=160
Split splitncnn_1 1 2 104 104_splitncnn_0 104_splitncnn_1
Convolution Conv_8 1 1 104_splitncnn_1 105 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_9 1 1 105 107 0=160
Convolution Conv_10 1 1 107 108 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_11 1 1 108 110 0=160
BinaryOp Add_12 2 1 110 104_splitncnn_0 111
Split splitncnn_2 1 2 111 111_splitncnn_0 111_splitncnn_1
Convolution Conv_13 1 1 111_splitncnn_1 112 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_14 1 1 112 114 0=160
Convolution Conv_15 1 1 114 115 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_16 1 1 115 117 0=160
BinaryOp Add_17 2 1 117 111_splitncnn_0 118
Split splitncnn_3 1 2 118 118_splitncnn_0 118_splitncnn_1
Convolution Conv_18 1 1 118_splitncnn_1 119 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_19 1 1 119 121 0=160
Convolution Conv_20 1 1 121 122 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_21 1 1 122 124 0=160
BinaryOp Add_22 2 1 124 118_splitncnn_0 125
Deconvolution ConvTranspose_23 1 1 125 126 0=4 1=4 3=2 4=1 5=1 6=10240
Interp Resize_25 1 1 126 136 0=2 1=4.000000e+00 2=4.000000e+00
BinaryOp Mul_27 1 1 136 138 0=2 1=1 2=4.000000e+00
Split splitncnn_4 1 3 138 138_splitncnn_0 138_splitncnn_1 138_splitncnn_2
Interp Resize_29 1 1 138_splitncnn_2 148 0=2 1=2.000000e+00 2=2.000000e+00
BinaryOp Mul_31 1 1 148 150 0=2 1=1 2=2.000000e+00
Split splitncnn_5 1 3 150 150_splitncnn_0 150_splitncnn_1 150_splitncnn_2
Crop Slice_36 1 1 88_splitncnn_3 155 -23309=1,0 -23310=1,3 -23311=1,0
Crop Slice_41 1 1 150_splitncnn_2 160 -23309=1,0 -23310=1,2 -23311=1,0
rife.Warp Warp_47 2 1 155 160 166
Crop Slice_52 1 1 88_splitncnn_2 171 -23309=1,3 -23310=1,2147483647 -23311=1,0
Crop Slice_57 1 1 150_splitncnn_1 176 -23309=1,2 -23310=1,4 -23311=1,0
rife.Warp Warp_63 2 1 171 176 182
Concat Concat_64 2 1 166 182 183
Interp Resize_66 1 1 183 193 0=2 1=5.000000e-01 2=5.000000e-01
Interp Resize_68 1 1 150_splitncnn_0 203 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp Mul_70 1 1 203 205 0=2 1=1 2=5.000000e-01
Concat Concat_71 2 1 193 205 206
Convolution Conv_72 1 1 206 207 0=80 1=3 3=2 4=1 5=1 6=7200
PReLU PRelu_73 1 1 207 209 0=80
Convolution Conv_74 1 1 209 210 0=160 1=3 3=2 4=1 5=1 6=115200
PReLU PRelu_75 1 1 210 212 0=160
Split splitncnn_6 1 2 212 212_splitncnn_0 212_splitncnn_1
Convolution Conv_76 1 1 212_splitncnn_1 213 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_77 1 1 213 215 0=160
Convolution Conv_78 1 1 215 216 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_79 1 1 216 218 0=160
BinaryOp Add_80 2 1 218 212_splitncnn_0 219
Split splitncnn_7 1 2 219 219_splitncnn_0 219_splitncnn_1
Convolution Conv_81 1 1 219_splitncnn_1 220 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_82 1 1 220 222 0=160
Convolution Conv_83 1 1 222 223 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_84 1 1 223 225 0=160
BinaryOp Add_85 2 1 225 219_splitncnn_0 226
Split splitncnn_8 1 2 226 226_splitncnn_0 226_splitncnn_1
Convolution Conv_86 1 1 226_splitncnn_1 227 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_87 1 1 227 229 0=160
Convolution Conv_88 1 1 229 230 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_89 1 1 230 232 0=160
BinaryOp Add_90 2 1 232 226_splitncnn_0 233
Deconvolution ConvTranspose_91 1 1 233 234 0=4 1=4 3=2 4=1 5=1 6=10240
Interp Resize_93 1 1 234 244 0=2 1=2.000000e+00 2=2.000000e+00
BinaryOp Mul_95 1 1 244 246 0=2 1=1 2=2.000000e+00
Split splitncnn_9 1 2 246 246_splitncnn_0 246_splitncnn_1
BinaryOp Add_96 2 1 138_splitncnn_1 246_splitncnn_1 247
Interp Resize_98 1 1 247 257 0=2 1=2.000000e+00 2=2.000000e+00
BinaryOp Mul_100 1 1 257 259 0=2 1=1 2=2.000000e+00
Split splitncnn_10 1 3 259 259_splitncnn_0 259_splitncnn_1 259_splitncnn_2
Crop Slice_105 1 1 88_splitncnn_1 264 -23309=1,0 -23310=1,3 -23311=1,0
Crop Slice_110 1 1 259_splitncnn_2 269 -23309=1,0 -23310=1,2 -23311=1,0
rife.Warp Warp_116 2 1 264 269 275
Crop Slice_121 1 1 88_splitncnn_0 280 -23309=1,3 -23310=1,2147483647 -23311=1,0
Crop Slice_126 1 1 259_splitncnn_1 285 -23309=1,2 -23310=1,4 -23311=1,0
rife.Warp Warp_132 2 1 280 285 291
Concat Concat_133 2 1 275 291 292
Interp Resize_135 1 1 292 302 0=2
Interp Resize_137 1 1 259_splitncnn_0 312 0=2
BinaryOp Mul_139 1 1 312 314 0=2 1=1 2=1.000000e+00
Concat Concat_140 2 1 302 314 315
Convolution Conv_141 1 1 315 316 0=80 1=3 3=2 4=1 5=1 6=7200
PReLU PRelu_142 1 1 316 318 0=80
Convolution Conv_143 1 1 318 319 0=160 1=3 3=2 4=1 5=1 6=115200
PReLU PRelu_144 1 1 319 321 0=160
Split splitncnn_11 1 2 321 321_splitncnn_0 321_splitncnn_1
Convolution Conv_145 1 1 321_splitncnn_1 322 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_146 1 1 322 324 0=160
Convolution Conv_147 1 1 324 325 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_148 1 1 325 327 0=160
BinaryOp Add_149 2 1 327 321_splitncnn_0 328
Split splitncnn_12 1 2 328 328_splitncnn_0 328_splitncnn_1
Convolution Conv_150 1 1 328_splitncnn_1 329 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_151 1 1 329 331 0=160
Convolution Conv_152 1 1 331 332 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_153 1 1 332 334 0=160
BinaryOp Add_154 2 1 334 328_splitncnn_0 335
Split splitncnn_13 1 2 335 335_splitncnn_0 335_splitncnn_1
Convolution Conv_155 1 1 335_splitncnn_1 336 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_156 1 1 336 338 0=160
Convolution Conv_157 1 1 338 339 0=160 1=3 4=1 5=1 6=230400
PReLU PRelu_158 1 1 339 341 0=160
BinaryOp Add_159 2 1 341 335_splitncnn_0 342
Deconvolution ConvTranspose_160 1 1 342 343 0=4 1=4 3=2 4=1 5=1 6=10240
BinaryOp Add_161 2 1 138_splitncnn_0 246_splitncnn_0 344
BinaryOp Add_162 2 1 344 343 flow

BIN
models/rife/rife-v3.1/fusionnet.bin vendored Normal file

Binary file not shown.

74
models/rife/rife-v3.1/fusionnet.param vendored Normal file
View File

@@ -0,0 +1,74 @@
7767517
72 81
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 64 0=2 1=2.000000e+00 2=2.000000e+00
BinaryOp Mul_3 1 1 64 66 0=2 1=1 2=2.000000e+00
Split splitncnn_0 1 3 66 66_splitncnn_0 66_splitncnn_1 66_splitncnn_2
Crop Slice_8 1 1 66_splitncnn_2 71 -23309=1,0 -23310=1,2 -23311=1,0
rife.Warp Warp_14 2 1 img0 71 77
Split splitncnn_1 1 2 77 77_splitncnn_0 77_splitncnn_1
Crop Slice_19 1 1 66_splitncnn_1 82 -23309=1,2 -23310=1,4 -23311=1,0
rife.Warp Warp_14 2 1 img1 82 88
Split splitncnn_2 1 2 88 88_splitncnn_0 88_splitncnn_1
Concat Concat_26 3 1 77_splitncnn_1 88_splitncnn_1 66_splitncnn_0 89
Convolution Conv_27 1 1 89 90 0=32 1=3 3=2 4=1 5=1 6=2880
PReLU PRelu_28 1 1 90 92 0=32
Convolution Conv_29 1 1 92 93 0=32 1=3 4=1 5=1 6=9216
PReLU PRelu_30 1 1 93 95 0=32
Convolution Conv_31 1 1 95 96 0=64 1=3 3=2 4=1 5=1 6=18432
PReLU PRelu_32 1 1 96 98 0=64
Convolution Conv_33 1 1 98 99 0=64 1=3 4=1 5=1 6=36864
PReLU PRelu_34 1 1 99 101 0=64
Split splitncnn_3 1 2 101 101_splitncnn_0 101_splitncnn_1
Concat Concat_35 3 1 101_splitncnn_1 3 7 102
Convolution Conv_36 1 1 102 103 0=128 1=3 3=2 4=1 5=1 6=147456
PReLU PRelu_37 1 1 103 105 0=128
Convolution Conv_38 1 1 105 106 0=128 1=3 4=1 5=1 6=147456
PReLU PRelu_39 1 1 106 108 0=128
Split splitncnn_4 1 2 108 108_splitncnn_0 108_splitncnn_1
Concat Concat_40 3 1 108_splitncnn_1 4 8 109
Convolution Conv_41 1 1 109 110 0=256 1=3 3=2 4=1 5=1 6=589824
PReLU PRelu_42 1 1 110 112 0=256
Convolution Conv_43 1 1 112 113 0=256 1=3 4=1 5=1 6=589824
PReLU PRelu_44 1 1 113 115 0=256
Split splitncnn_5 1 2 115 115_splitncnn_0 115_splitncnn_1
Concat Concat_45 3 1 115_splitncnn_1 5 9 116
Convolution Conv_46 1 1 116 117 0=512 1=3 3=2 4=1 5=1 6=2359296
PReLU PRelu_47 1 1 117 119 0=512
Convolution Conv_48 1 1 119 120 0=512 1=3 4=1 5=1 6=2359296
PReLU PRelu_49 1 1 120 122 0=512
Concat Concat_50 3 1 122 6 10 123
Deconvolution ConvTranspose_51 1 1 123 124 0=256 1=4 3=2 4=1 5=1 6=4194304
PReLU PRelu_52 1 1 124 126 0=256
Concat Concat_53 2 1 126 115_splitncnn_0 127
Deconvolution ConvTranspose_54 1 1 127 128 0=128 1=4 3=2 4=1 5=1 6=1048576
PReLU PRelu_55 1 1 128 130 0=128
Concat Concat_56 2 1 130 108_splitncnn_0 131
Deconvolution ConvTranspose_57 1 1 131 132 0=64 1=4 3=2 4=1 5=1 6=262144
PReLU PRelu_58 1 1 132 134 0=64
Concat Concat_59 2 1 134 101_splitncnn_0 135
Deconvolution ConvTranspose_60 1 1 135 136 0=32 1=4 3=2 4=1 5=1 6=65536
PReLU PRelu_61 1 1 136 138 0=32
Deconvolution ConvTranspose_62 1 1 138 140 0=4 1=4 3=2 4=1 5=1 6=2048 9=4
Split splitncnn_6 1 2 140 140_splitncnn_0 140_splitncnn_1
Crop Slice_68 1 1 140_splitncnn_1 145 -23309=1,0 -23310=1,3 -23311=1,0
BinaryOp Mul_70 1 1 145 147 0=2 1=1 2=2.000000e+00
BinaryOp Sub_72 1 1 147 149 0=1 1=1 2=1.000000e+00
Crop Slice_77 1 1 140_splitncnn_0 154 -23309=1,3 -23310=1,4 -23311=1,0
Split splitncnn_7 1 2 154 154_splitncnn_0 154_splitncnn_1
BinaryOp Mul_78 2 1 77_splitncnn_0 154_splitncnn_1 155 0=2
BinaryOp Sub_80 1 1 154_splitncnn_0 157 0=7 1=1 2=1.000000e+00
BinaryOp Mul_81 2 1 88_splitncnn_0 157 158 0=2
BinaryOp Add_82 2 1 155 158 159
BinaryOp Add_83 2 1 159 149 160
Clip Clip_84 1 1 160 output 0=0.000000e+00 1=1.000000e+00

BIN
models/rife/rife-v4.6/flownet.bin vendored Normal file

Binary file not shown.

217
models/rife/rife-v4.6/flownet.param vendored Normal file
View File

@@ -0,0 +1,217 @@
7767517
215 276
Input in0 0 1 in0
Split splitncnn_0 1 5 in0 1 2 3 4 5
Input in1 0 1 in1
Split splitncnn_1 1 5 in1 7 8 9 10 11
Input in2 0 1 in2
Split splitncnn_2 1 4 in2 13 14 15 16
Concat cat_0 3 1 1 7 13 17
Interp upsample_9 1 1 17 18 0=2 1=1.250000e-01 2=1.250000e-01
Convolution convrelu_0 1 1 18 20 0=96 1=3 3=2 4=1 5=1 6=6048 9=2 -23310=1,2.000000e-01
Convolution convrelu_1 1 1 20 21 0=192 1=3 3=2 4=1 5=1 6=165888 9=2 -23310=1,2.000000e-01
Split splitncnn_3 1 2 21 22 23
Convolution conv_22 1 1 23 25 0=192 1=3 4=1 5=1 6=331776
BinaryOp add_1 2 1 25 22 26
ReLU leakyrelu_66 1 1 26 28 0=2.000000e-01
Split splitncnn_4 1 2 28 29 30
Convolution conv_23 1 1 30 32 0=192 1=3 4=1 5=1 6=331776
BinaryOp add_3 2 1 32 29 33
ReLU leakyrelu_67 1 1 33 35 0=2.000000e-01
Split splitncnn_5 1 2 35 36 37
Convolution conv_24 1 1 37 39 0=192 1=3 4=1 5=1 6=331776
BinaryOp add_5 2 1 39 36 40
ReLU leakyrelu_68 1 1 40 42 0=2.000000e-01
Split splitncnn_6 1 2 42 43 44
Convolution conv_25 1 1 44 46 0=192 1=3 4=1 5=1 6=331776
BinaryOp add_7 2 1 46 43 47
ReLU leakyrelu_69 1 1 47 49 0=2.000000e-01
Split splitncnn_7 1 2 49 50 51
Convolution conv_26 1 1 51 53 0=192 1=3 4=1 5=1 6=331776
BinaryOp add_9 2 1 53 50 54
ReLU leakyrelu_70 1 1 54 56 0=2.000000e-01
Split splitncnn_8 1 2 56 57 58
Convolution conv_27 1 1 58 60 0=192 1=3 4=1 5=1 6=331776
BinaryOp add_11 2 1 60 57 61
ReLU leakyrelu_71 1 1 61 63 0=2.000000e-01
Split splitncnn_9 1 2 63 64 65
Convolution conv_28 1 1 65 67 0=192 1=3 4=1 5=1 6=331776
BinaryOp add_13 2 1 67 64 68
ReLU leakyrelu_72 1 1 68 70 0=2.000000e-01
Split splitncnn_10 1 2 70 71 72
Convolution conv_29 1 1 72 74 0=192 1=3 4=1 5=1 6=331776
BinaryOp add_15 2 1 74 71 75
ReLU leakyrelu_73 1 1 75 76 0=2.000000e-01
Deconvolution deconv_60 1 1 76 77 0=24 1=4 3=2 4=1 5=1 6=73728
PixelShuffle pixelshuffle_104 1 1 77 flow0 0=2
Interp upsample_10 1 1 flow0 79 0=2 1=8.000000e+00 2=8.000000e+00
Split splitncnn_11 1 2 79 80 81
Crop slice_108 1 1 81 82 -23309=1,0 -23310=1,4 -23311=1,0
BinaryOp mul_16 1 1 82 83 0=2 1=1 2=8.000000e+00
Split splitncnn_12 1 4 83 84 85 86 87
Interp upsample_11 1 1 85 88 0=2 1=2.500000e-01 2=2.500000e-01
BinaryOp div_17 1 1 88 89 0=3 1=1 2=4.000000e+00
Crop slice_109 1 1 87 90 -23309=1,2 -23310=1,4 -23311=1,0
rife.Warp warp_1 2 1 11 90 91
Crop slice_110 1 1 86 92 -23309=1,0 -23310=1,2 -23311=1,0
rife.Warp warp_0 2 1 5 92 93
Crop slice_111 1 1 80 94 -23309=1,4 -23310=1,5 -23311=1,0
Split splitncnn_13 1 2 94 95 96
Concat cat_3 4 1 93 91 14 95 97
Interp upsample_12 1 1 97 98 0=2 1=2.500000e-01 2=2.500000e-01
Concat cat_4 2 1 98 89 99
Convolution convrelu_2 1 1 99 101 0=64 1=3 3=2 4=1 5=1 6=6912 9=2 -23310=1,2.000000e-01
Convolution convrelu_3 1 1 101 102 0=128 1=3 3=2 4=1 5=1 6=73728 9=2 -23310=1,2.000000e-01
Split splitncnn_14 1 2 102 103 104
Convolution conv_32 1 1 104 106 0=128 1=3 4=1 5=1 6=147456
BinaryOp add_19 2 1 106 103 107
ReLU leakyrelu_76 1 1 107 109 0=2.000000e-01
Split splitncnn_15 1 2 109 110 111
Convolution conv_33 1 1 111 113 0=128 1=3 4=1 5=1 6=147456
BinaryOp add_21 2 1 113 110 114
ReLU leakyrelu_77 1 1 114 116 0=2.000000e-01
Split splitncnn_16 1 2 116 117 118
Convolution conv_34 1 1 118 120 0=128 1=3 4=1 5=1 6=147456
BinaryOp add_23 2 1 120 117 121
ReLU leakyrelu_78 1 1 121 123 0=2.000000e-01
Split splitncnn_17 1 2 123 124 125
Convolution conv_35 1 1 125 127 0=128 1=3 4=1 5=1 6=147456
BinaryOp add_25 2 1 127 124 128
ReLU leakyrelu_79 1 1 128 130 0=2.000000e-01
Split splitncnn_18 1 2 130 131 132
Convolution conv_36 1 1 132 134 0=128 1=3 4=1 5=1 6=147456
BinaryOp add_27 2 1 134 131 135
ReLU leakyrelu_80 1 1 135 137 0=2.000000e-01
Split splitncnn_19 1 2 137 138 139
Convolution conv_37 1 1 139 141 0=128 1=3 4=1 5=1 6=147456
BinaryOp add_29 2 1 141 138 142
ReLU leakyrelu_81 1 1 142 144 0=2.000000e-01
Split splitncnn_20 1 2 144 145 146
Convolution conv_38 1 1 146 148 0=128 1=3 4=1 5=1 6=147456
BinaryOp add_31 2 1 148 145 149
ReLU leakyrelu_82 1 1 149 151 0=2.000000e-01
Split splitncnn_21 1 2 151 152 153
Convolution conv_39 1 1 153 155 0=128 1=3 4=1 5=1 6=147456
BinaryOp add_33 2 1 155 152 156
ReLU leakyrelu_83 1 1 156 157 0=2.000000e-01
Deconvolution deconv_61 1 1 157 158 0=24 1=4 3=2 4=1 5=1 6=49152
PixelShuffle pixelshuffle_105 1 1 158 flow1 0=2
Interp upsample_13 1 1 flow1 160 0=2 1=4.000000e+00 2=4.000000e+00
Split splitncnn_22 1 2 160 161 162
Crop slice_112 1 1 162 163 -23309=1,0 -23310=1,4 -23311=1,0
Eltwise weighted_sum_0 2 1 84 163 164 0=1 -23301=2,1.000000e+00,4.000000e+00
Split splitncnn_23 1 4 164 165 166 167 168
Crop slice_113 1 1 161 169 -23309=1,4 -23310=1,5 -23311=1,0
BinaryOp add_36 2 1 96 169 170
Split splitncnn_24 1 2 170 171 172
Interp upsample_14 1 1 166 173 0=2 1=5.000000e-01 2=5.000000e-01
BinaryOp div_37 1 1 173 174 0=3 1=1 2=2.000000e+00
Crop slice_114 1 1 168 175 -23309=1,2 -23310=1,4 -23311=1,0
rife.Warp warp_3 2 1 10 175 176
Crop slice_115 1 1 167 177 -23309=1,0 -23310=1,2 -23311=1,0
rife.Warp warp_2 2 1 4 177 178
Concat cat_7 4 1 178 176 15 171 179
Interp upsample_15 1 1 179 180 0=2 1=5.000000e-01 2=5.000000e-01
Concat cat_8 2 1 180 174 181
Convolution convrelu_4 1 1 181 183 0=48 1=3 3=2 4=1 5=1 6=5184 9=2 -23310=1,2.000000e-01
Convolution convrelu_5 1 1 183 184 0=96 1=3 3=2 4=1 5=1 6=41472 9=2 -23310=1,2.000000e-01
Split splitncnn_25 1 2 184 185 186
Convolution conv_42 1 1 186 188 0=96 1=3 4=1 5=1 6=82944
BinaryOp add_39 2 1 188 185 189
ReLU leakyrelu_86 1 1 189 191 0=2.000000e-01
Split splitncnn_26 1 2 191 192 193
Convolution conv_43 1 1 193 195 0=96 1=3 4=1 5=1 6=82944
BinaryOp add_41 2 1 195 192 196
ReLU leakyrelu_87 1 1 196 198 0=2.000000e-01
Split splitncnn_27 1 2 198 199 200
Convolution conv_44 1 1 200 202 0=96 1=3 4=1 5=1 6=82944
BinaryOp add_43 2 1 202 199 203
ReLU leakyrelu_88 1 1 203 205 0=2.000000e-01
Split splitncnn_28 1 2 205 206 207
Convolution conv_45 1 1 207 209 0=96 1=3 4=1 5=1 6=82944
BinaryOp add_45 2 1 209 206 210
ReLU leakyrelu_89 1 1 210 212 0=2.000000e-01
Split splitncnn_29 1 2 212 213 214
Convolution conv_46 1 1 214 216 0=96 1=3 4=1 5=1 6=82944
BinaryOp add_47 2 1 216 213 217
ReLU leakyrelu_90 1 1 217 219 0=2.000000e-01
Split splitncnn_30 1 2 219 220 221
Convolution conv_47 1 1 221 223 0=96 1=3 4=1 5=1 6=82944
BinaryOp add_49 2 1 223 220 224
ReLU leakyrelu_91 1 1 224 226 0=2.000000e-01
Split splitncnn_31 1 2 226 227 228
Convolution conv_48 1 1 228 230 0=96 1=3 4=1 5=1 6=82944
BinaryOp add_51 2 1 230 227 231
ReLU leakyrelu_92 1 1 231 233 0=2.000000e-01
Split splitncnn_32 1 2 233 234 235
Convolution conv_49 1 1 235 237 0=96 1=3 4=1 5=1 6=82944
BinaryOp add_53 2 1 237 234 238
ReLU leakyrelu_93 1 1 238 239 0=2.000000e-01
Deconvolution deconv_62 1 1 239 240 0=24 1=4 3=2 4=1 5=1 6=36864
PixelShuffle pixelshuffle_106 1 1 240 flow2 0=2
Interp upsample_16 1 1 flow2 242 0=2 1=2.000000e+00 2=2.000000e+00
Split splitncnn_33 1 2 242 243 244
Crop slice_116 1 1 244 245 -23309=1,0 -23310=1,4 -23311=1,0
Eltwise weighted_sum_1 2 1 165 245 246 0=1 -23301=2,1.000000e+00,2.000000e+00
Split splitncnn_34 1 4 246 247 261 249 250
Crop slice_117 1 1 243 251 -23309=1,4 -23310=1,5 -23311=1,0
BinaryOp add_56 2 1 172 251 252
Split splitncnn_35 1 2 252 253 254
Crop slice_118 1 1 250 255 -23309=1,2 -23310=1,4 -23311=1,0
rife.Warp warp_5 2 1 9 255 256
Crop slice_119 1 1 249 257 -23309=1,0 -23310=1,2 -23311=1,0
rife.Warp warp_4 2 1 3 257 258
Concat cat_11 4 1 258 256 16 253 260
Concat cat_12 2 1 260 261 262
Convolution convrelu_6 1 1 262 264 0=32 1=3 3=2 4=1 5=1 6=3456 9=2 -23310=1,2.000000e-01
Convolution convrelu_7 1 1 264 265 0=64 1=3 3=2 4=1 5=1 6=18432 9=2 -23310=1,2.000000e-01
Split splitncnn_36 1 2 265 266 267
Convolution conv_52 1 1 267 269 0=64 1=3 4=1 5=1 6=36864
BinaryOp add_58 2 1 269 266 270
ReLU leakyrelu_96 1 1 270 272 0=2.000000e-01
Split splitncnn_37 1 2 272 273 274
Convolution conv_53 1 1 274 276 0=64 1=3 4=1 5=1 6=36864
BinaryOp add_60 2 1 276 273 277
ReLU leakyrelu_97 1 1 277 279 0=2.000000e-01
Split splitncnn_38 1 2 279 280 281
Convolution conv_54 1 1 281 283 0=64 1=3 4=1 5=1 6=36864
BinaryOp add_62 2 1 283 280 284
ReLU leakyrelu_98 1 1 284 286 0=2.000000e-01
Split splitncnn_39 1 2 286 287 288
Convolution conv_55 1 1 288 290 0=64 1=3 4=1 5=1 6=36864
BinaryOp add_64 2 1 290 287 291
ReLU leakyrelu_99 1 1 291 293 0=2.000000e-01
Split splitncnn_40 1 2 293 294 295
Convolution conv_56 1 1 295 297 0=64 1=3 4=1 5=1 6=36864
BinaryOp add_66 2 1 297 294 298
ReLU leakyrelu_100 1 1 298 300 0=2.000000e-01
Split splitncnn_41 1 2 300 301 302
Convolution conv_57 1 1 302 304 0=64 1=3 4=1 5=1 6=36864
BinaryOp add_68 2 1 304 301 305
ReLU leakyrelu_101 1 1 305 307 0=2.000000e-01
Split splitncnn_42 1 2 307 308 309
Convolution conv_58 1 1 309 311 0=64 1=3 4=1 5=1 6=36864
BinaryOp add_70 2 1 311 308 312
ReLU leakyrelu_102 1 1 312 314 0=2.000000e-01
Split splitncnn_43 1 2 314 315 316
Convolution conv_59 1 1 316 318 0=64 1=3 4=1 5=1 6=36864
BinaryOp add_72 2 1 318 315 319
ReLU leakyrelu_103 1 1 319 320 0=2.000000e-01
Deconvolution deconv_63 1 1 320 321 0=24 1=4 3=2 4=1 5=1 6=24576
PixelShuffle pixelshuffle_107 1 1 321 flow3 0=2
Split splitncnn_44 1 2 flow3 324 325
Crop slice_120 1 1 325 326 -23309=1,0 -23310=1,4 -23311=1,0
BinaryOp add_73 2 1 247 326 327
Split splitncnn_45 1 2 327 328 329
Crop slice_121 1 1 324 330 -23309=1,4 -23310=1,5 -23311=1,0
BinaryOp add_74 2 1 254 330 331
Sigmoid sigmoid_8 1 1 331 332
Split splitncnn_46 1 2 332 333 334
BinaryOp sub_75 1 1 333 335 0=7 1=1 2=1.000000e+00
Crop slice_123 1 1 328 336 -23309=1,2 -23310=1,4 -23311=1,0
rife.Warp warp_6 2 1 8 336 337
BinaryOp mul_76 2 1 337 335 338 0=2
Crop slice_122 1 1 329 339 -23309=1,0 -23310=1,2 -23311=1,0
rife.Warp warp_7 2 1 2 339 340
BinaryOp mul_77 2 1 340 334 341 0=2
BinaryOp add_78 2 1 341 338 out0

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