Skip to content

Latest commit

 

History

History
251 lines (191 loc) · 11.6 KB

README.cn.md

File metadata and controls

251 lines (191 loc) · 11.6 KB

关于Anime4KCPP

Anime4KCPP提供一个改进后的bloc97的Anime4K算法0.9版本,同时也提供自己的CNN算法ACNet。Anime4KCPP提供多种使用方式,包括预处理与实时播放,其致力于成为高性能的视频或图像处理工具。

注意: 使用CPU处理已经足够快,足以处理普通图像,其性能大约是Go语言实现的12倍,Python实现的1300倍。若使用GPU加速,一般情况下速度是CPU的10倍以上(取决于您的显卡),因此GPU加速很适合用于处理视频,尝试Anime4KCPP以获得更好的质量和高性能。

关于Anime4K09算法

Anime4K算法是一种简单且高质量的动漫类图像超分辨率算法,它并不使用机器学习,因此速度非常快,可用于实时处理和预处理。

关于ACNet

ACNet是一个基于卷积神经网络的超分辨率算法,旨在同时提供高质量和高性能。
HDN模式能更好的降噪。
详情可见wiki页面

为什么选择Anime4KCPP

  • 跨平台支持,已在Windows,Linux和macOS (感谢NightMachinary)上通过编译测试。
  • 广泛的兼容性,同时支持CPU和GPU,GPU只要求支持OpenCL即可,并不限制任何品牌。
  • 提供易于使用的GUI和CLI程序。
  • 支持Android
  • 支持VapourSynth插件
  • 支持AviSynthPlus插件
  • 高性能。
  • 低内存占用,在处理1080P视频时通常情况下也不会超过1G。
  • 支持GPU加速,在短时间内处理图像和视频。
  • 可调节参数,尝试不同的选项以获得更佳的质量或者更快的速度。
  • 滤镜支持,利用它们进行抗锯齿和降噪。

在MPC-HC, MPC-BE, Potplayer等播放器上使用Anime4KCPP

Anime4KCPP支持DirectShow滤镜, 在Windows下使用非常简单, 查看教程
Anime4KCPP也可以通过AviSynthPlus plugin在Windows平台上的绝大多数播放器中使用,查看教程

效果

原图

examples

Anime4K09

Anime4K09

Anime4K09加滤镜

Anime4K09 with filters

ACNet

examples

GPU加速

Anime4KCPP现已支持GPU加速,通过原生OpenCL实现,可提供高性能与跨平台性,只要您的显卡支持OpenCL 1.2或者更高版本,即可开启。在AMD Vege 8 Graphics (AMD Ryzen 3500U的核显) 上可以在0.1秒内完成1080 -> 4K图像处理。

性能

桌面

CPU: AMD Ryzen 3500U
GPU: AMD Vege 8 Graphics
RAM: 16G
Anime4KCPP 版本 : 1.7.0
Anime4KCPP 设置: 平衡
算法: Anime4K09

CPU:
图像:
256x256 -> 512x512:   0.025秒  
1080P   -> 4k:        0.650秒  

视频(长度: 1 分 32 秒):
480P  -> 1080P :       03 分 13 秒
1080P -> 4K :          19 分 09 秒

GPU:
图像:
256x256 -> 512x512:   0.006秒  
1080P   -> 4k:        0.090秒  

视频(长度: 1 分 32 秒):
480P  -> 1080P :       00 分 29 秒
1080P -> 4K :          02 分 55 秒

Android

SOC: 高通骁龙855
RAM: 8G
Anime4KCPP 版本 : 1.7.1
Anime4KCPP 设置: 平衡
算法: Anime4K09

CPU:  
图像:  
256x256 -> 512x512:   0.045秒  
1080P   -> 4k:        0.544秒 (比R5 3500U还要快,厉害!)  

GPU:  
图像:  
256x256 -> 512x512:   0.008秒  
1080P   -> 4k:        0.158秒  

视频(Length: 1 min 32 seconds):
480P  -> 1080P :       01 min 04 seconds

VapourSynth和AviSynthPlus插件

Anime4KCPP现已提供VapourSynth和AviSynthPlus插件。
详见:
VapourSynth插件wiki
AviSynthPlus插件wiki

GUI

Anime4KCPP支持GUI,您可以更轻松的处理您的图像与视频!
注意: 在处理视频前请安装 ffmpeg 否则处理结果将没有音轨

Android

Anime4KCPP现在提供Android版本, 使用你的手机处理您的图片,就像PC那样快!
NOTICE: Android版本是全功能的

CLI

视频处理

添加参数 -v 以开启视频处理。视频处理支持多线程并默认使用所有线程,您可使用参数 -t 来手动指定使用线程的数量。

使用方法

参数

options:
  -i, --input               待加载文件 (string [=./pic/p1.png])
  -o, --output              输出文件名 (string [=output.png])
  -p, --passes              处理次数 (int [=2])
  -n, --pushColorCount      限制边缘细化执行次数(int [=2])
  -c, --strengthColor       细化边缘,范围0-1,越大的值会越细 (float [=0.3])
  -g, --strengthGradient    锐利度,范围0-1,越大的值会越锐利 (float [=1])
  -z, --zoomFactor          缩放倍数 (float [=2])
  -t, --threads             指定处理视频时所用的线程数 (unsigned int [=8])
  -f, --fastMode            加快处理速度但可能获得低质量图像
  -v, --videoMode           视频处理模式
  -s, --preview             在处理结束后预览结果
  -b, --preProcessing       启用预处理
  -a, --postProcessing      启用后处理
  -r, --preFilters          选择预处理滤镜,仅当preProcessing开启时有效,可使用以下滤镜: Median blur=000001,Mean blur=000010Gaussian blur weak=000100, Gaussian blur=001000, Bilateral filter=010000, Bilateral filter faster=100000,使用它们对应的二进制进行自由组合,例如: Gaussian blur weak + Bilateral filter = 000100 | 010000 = 010100 = 20(D), (unsigned int [=4])
  -e, --postFilters         选择后处理滤镜,仅当postProcessing开启时有效,可使用以下滤镜: Median blur=000001,Mean blur=000010Gaussian blur weak=000100, Gaussian blur=001000, Bilateral filter=010000, Bilateral filter faster=100000,使用它们对应的二进制进行自由组合,例如: Gaussian blur weak + Bilateral filter = 000100 | 010000 = 010100 = 20(D),输入20即可开启Gaussian blur weak 和Bilateral filter,这也是我推荐用于小于1080P图像的设置,对于大于等于1080P的图像推荐使用24,小于1080P的视频推荐36,大于等于1080P的视频荐40 (unsigned int [=20])
  -q, --GPUMode             开启GPU加速  
  -w, --CNNMode             开启ACNet
  -H, --HDN                 为ACNet开启HDN模式
  -l, --listGPUs            列出GPU平台与设备
  -h, --platformID          指定平台ID (unsigned int [=0])
  -d, --deviceID            指定设备ID (unsigned int [=0])
  -C, --codec               指定编码器,包括 mp4v(推荐用于Windows), dxva(仅支持Windows), avc1(H264, 推荐用于Linux), vp09(非常慢), hevc(不支持Windows), av01(不支持Windows) (string [=mp4v])
  -V, --version             显示版本信息
  -?, --help                显示帮助信息

GPU加速相关

使用 -q 开启GPU加速,然后使用 -l 列出可用的GPU平台ID及其对应设备ID,参数 -h 指定平台ID,-d 指定设备ID。

滤镜 (仅支持Anime4K09)

启用滤镜可以使得处理后的图像看起来更舒服,目前支持以下五种滤镜:

  • Median blur [0000001]
  • Mean blur [0000010]
  • CAS Sharpening [0000100]
  • Gaussian blur weak [0001000]
  • Gaussian blur [0010000]
  • Bilateral filter [0100000]
  • Bilateral filter faster [1000000]

使用它们对应的二进制值进行自由组合.

例: Gaussian blur weak + Bilateral filter = 0001000 | 0100000 = 0101000(B)= 40(D)

使用 -b 开启预处理滤镜支持,-r 用于指定滤镜,-r 默认为4:

Anime4KCPP -i input.png -o output.png -b -r 44

使用 -a 开启后处理滤镜支持,-e 用于指定滤镜,-e 默认为40:

Anime4KCPP -i input.png -o output.png -a -e 48

对于后处理,我推荐使用 40(Gaussian blur weak + Bilateral filter) 处理小于1080P的图像,48(Gaussian blur + Bilateral filter) 处理大于等于1080P的图像, 72(Gaussian blur weak + Bilateral filter faster) 处理小于1080P的视频,80(Gaussian blur + Bilateral filter faster)处理大于等于1080P的视频。

预处理一般启用CAS即可。

CAS是AMD开源的自适应锐化技术。

编译

在Window或者Linux进行编译

在编译之前请安装 OpenCV。 ( release 已包含OpenCV运行时库。)

您还需要一个OpenCL SDK实现,您通常可以从您的显卡提供商的网站上找到它,例如这个是AMD提供的一个OpenCL SDK实现。

您需要Qt开源版本以构建GUI界面。

若您想处理视频, 请先安装 ffmpeg, 否则您的视频将没有音轨。您可能还需要一个开源编解码器 OpenH264 encoder

该项目使用 cmake 进行构建。

在macOS进行编译

我们首先通过brew安装上述依赖 (除了OpenCL,其由Apple提供):

brew install opencv qt ffmpeg openh264 cmake

为了使得brew的qt工作您需要进行如下设置(输入brew info qt查看最新说明):

如果您需要添加Qt到环境变量,运行:
  echo 'export PATH="/usr/local/opt/qt/bin:$PATH"' >> ~/.zshrc

为了使得编译器能够找到Qt您需要设置:
  export LDFLAGS="-L/usr/local/opt/qt/lib"
  export CPPFLAGS="-I/usr/local/opt/qt/include"

为了使得pkg-config能够找到Qt您需要设置:
  export PKG_CONFIG_PATH="/usr/local/opt/qt/lib/pkgconfig"

现在我们需要修复macOS libomp 库的问题 (引用自这里):

  • 安装带有openmp和libomp的LLVM通过brew

     brew update
     brew install llvm libomp
    
  • 运行CMake,指定新的编译器

     # in repo's root
     cmake -DCMAKE_C_COMPILER="/usr/local/opt/llvm/bin/clang" -DCMAKE_CXX_COMPILER="/usr/local/opt/llvm/bin/clang++" .
    

最后运行 make. 所有二进制文件都将被安装至 ./bin/.

请注意,苹果已经弃用了OpenCL (强制使用自己专有的Metal API),并且可能会在以后的版本中取消对它的支持。

pyanime4k

pyanime4k 是一个在python中使用Anime4KCPP的简单方式,快速而强大。

其它实现

使用Anime4KCPP的项目

致谢

项目中引用的所有动漫图像均由我的朋友 King of learner 绘制并授权使用,请勿在未经许可的情况下使用它们。