本文档简单介绍AR项目及C++ API。
ENCD Project 介绍 ENCD项目主要是用于去除图像或视频由于压缩导致的块效应和振铃效应,项目有python实现部分和C++实现部分,Python主要用于训练生成模型,C++主要是实现Python生成模型的前匮网络和一些数据处理,用于部署。 项目地址:ftp /liulizhou/ENCD opencv源码地址:ftp /liulizhou/opencv libtorch库地址:ftp /liulizhou/libtorch 目录结构:
Copy . ├── CMakeLists.txt ├── dataprocess.cpp ├── dataprocess.h ├── encd.cpp ├── encd.h ├── img │ ├── blockresult.png │ ├── m_01702.png │ ├── plant_1000.yuv_90.yuv │ ├── plant_500.yuv_375.yuv │ ├── plant_500.yuv_405.yuv │ ├── plant_500.yuv_45.yuv │ ├── plant_500.yuv_540.yuv │ ├── plant_500.yuv_570.yuv │ ├── plant_500.yuv_690.yuv │ ├── plant_500.yuv_90.yuv │ ├── ringingtest.jpg │ └── ringingtestresult.png ├── latest_scriptnet_G.pth ├── model.pt ├── model.pth ├── netG_trace_final.pth ├── pycvt.cpp ├── README.md ├── real_a_s.bin ├── resnet18.pth ├── test_train.pth ├── test_utils.cpp ├── test_utils.h ├── utils.cpp ├── utils.h ├── v_tensor.bin ├── yuv.cpp └── yuv.h
目录中使用测试模型:latest_scriptnet_G.pth
目录中yuv文件图像大小:width 1920 height 1080
块效应 block
unblock
振铃效应 ringing
unringging
ringingtest
unringingtest
伴随着轻微的模糊效应,原因在于模型使用旧的模型,样本中没有加入高斯模糊对抗样本
工程依赖
libtorch libtorch,用于实现python训练生成模型的前匮网络计算,支持CPU和GPU,libtorch库下载 ,提供动态和静态链接库和头文件,可直接链接到工程中。
opencv
opencv source下载如上
install
Copy mkdir build && cd build cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_GTK2=ON -D WITH_OPENGL=ON .. make -j7 make install
编译ENCD工程 工程使用C++11标准,主要依赖opencv和libtorch库,opencv在cmakelist文件中通过find_package
自动寻找库安装路径,需要指定libtorch库路径进行编译,命令如下:
Copy cmake -DCMAKE-PREFIX-PATH=/path-to-libtorch ..
命令行使用 编译完成后,生成pycvt可执行文件,可运行程序进行图像或视频质量增强。
Copy ./pycvt --model path-to-model --yuvfi path-to-yuv-file --width w --height h
Copy ./pycvt --model path-to-model --image path-to-image-file
Copy ./pycvt --model path-to-model --bin path-to-bin-file --width w --height h
Copy ./pycvt --model path-to-model --video path-to-vide-file
静态库文件使用 编译完成后,会生成动态shencd.so和静态库文件stencd.a,可集成到项目中,主要使用其中对yuv数据进行增强函数,函数定义如下:
Copy @param src: source yuv420 data @param dst: enhanced output yuv420 data @param width: src yuv420 data width @param height: src yuv420 data height @param model_path: model path for image enhancd void encd_image_fix (uint8_t * src, uint8_t * dst, int width, int height, string model_path)
性能测试 测试图像例子:
Copy width: 1024 height: 576 model size: 6.2 M model init: 19.71 ms data preprocess: 84.16 ms forward: 16.21 ms
Comments