LoginSignup
0
0

ncnnでReal-ESRGANを動かしてみる

Last updated at Posted at 2023-12-15

ncnnでReal-ESRGANを動かしてみる

概要

Real ESRGANは画像を高精度に拡大する超解像モデルです。画像を高品質に拡大する際に、元画像のノイズを強く除去するため、従来よりも鮮明な画像を取得することが可能です。
ncnnで、画像を高解像への変換をしてみます。

環境構築

まず、M5UnitV2のクロスコンパイル環境を構築する手順で、ncnnやOpenCVをUbuntuにインストールします。

M5UnitV2のクロスコンパイル環境を構築する手順

Ubuntu 22.04.3 LTS(x64)
OpenCV ver 0.4.4
ncnn ver 231027

Stable-Diffusionのダウンロード

GitHubからQengineering氏のReal-ESRGAN-ncnn-Raspberry-Pi-4のコードをダウンロードします。

$ git clone https://github.com/Qengineering/Real-ESRGAN-ncnn-Raspberry-Pi-4
$ cd Real-ESRGAN-ncnn-Raspberry-Pi-4

CMakeLists.txt ファイルの作成

cmakeでコンパイルするために、CMakeLists.txtを編集します。

gedit CMakeLists.txt
CMakeLists.txt

SET(CMAKE_BUILD_TYPE "Release")

SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} --O0 -Wall -g2 -ggdb")
SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")

#SET(TARGET_COMPILER "arm")
if(TARGET_COMPILER STREQUAL "arm")
    message(STATUS "TARGET_COMPILE STREQUAL arm")
    SET(CMAKE_CXX_COMPILER arm-none-linux-gnueabihf-g++)
    SET(CMAKE_C_COMPILER arm-none-linux-gnueabihf-gcc)
    SET(NCNN_INSTALL_DIR /opt/external/ncnn/install/arm/)
    SET(ZBAR_INSTALL_DIR /opt/external/zbar-0.10/build/arm)
    SET(OpenCV_DIR /opt/external/opencv/build/arm)
else()
    message(STATUS "TARGET_COMPILE STREQUAL X64")
    SET(NCNN_INSTALL_DIR /opt/external/ncnn/install/x64/)
    SET(ZBAR_INSTALL_DIR /opt/external/zbar-0.10/build/x64/)
    SET(OpenCV_DIR /opt/external/opencv/build/x64) 
endif()

set(Target "real_esrgan_ncnn")

PROJECT(${Target})
cmake_minimum_required(VERSION 3.5)

set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${PROJECT_SOURCE_DIR}/bin)

find_package(OpenCV REQUIRED)

if(OpenCV_FOUND)
 message(OPENCV_VERSION)
 message(STATUS "OpenCV_LIBS: ${OpenCV_LIBS}")
 message(STATUS "OpenCV_INCLUDE_DIRS: ${OpenCV_INCLUDE_DIRS}")
endif(OpenCV_FOUND)

include_directories(${OpenCV_INCLUDE_DIRS} )
include_directories(${PROJECT_SOURCE_DIR})
include_directories(${PROJECT_SOURCE_DIR}/include)
include_directories(${NCNN_INSTALL_DIR}/include)
include_directories(${NCNN_INSTALL_DIR}/include/ncnn)

add_executable(${Target} main.cpp realesrgan.cpp)

target_link_libraries(${Target} ${OpenCV_LIBRARIES})
target_link_libraries(${Target} ${NCNN_INSTALL_DIR}/lib/libncnn.a -fopenmp)


ビルド

Ubuntu用のバイナリをcmakeでコンパイルして、生成されたバイナリを実行します。

$ cmake .
$ make
$  ./bin/real_esrgan_ncnn

注記

Stable Diffusionは大容量のメモリを消費するため、M5UnitV2で動作させることは困難です。

参考資料

この記事を作成するにあたり、以下のウェブサイトを参考にしました。
Q-engineering/Real-ESRGAN-ncnn-Raspberry-Pi-4

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0