AI 超解像アルゴリズム使用手順書
株式会社日昇テクノロジー
http://www.dragonwake.com
info@dragonwake.com
作成日:2026/06/20
本チュートリアルでは、XLSR 超解像モデルの ONNX/RKNN 変換および CSUN RV1126B 基板へのデプロイについて説明します。
copyright@2026 株式会社日昇テクノロジー
修正履歴
| NO | バージョン | 修正内容 | 修正日 |
|---|---|---|---|
| 1 | Ver1.0 | 新規作成 | 2026/06/20 |
この文書の情報は、文書を改善するため、事前の通知なく変更されることがあります。最新版は弊社ホームページからご参照ください。
https://www.dragonwake.com
株式会社日昇テクノロジーの書面による許可のない複製は、いかなる形態においても厳重に禁じられています。
1. XLSR の概要
XLSR は、2021 年のモバイル AI リアルタイム単一画像超解像チャレンジ向けに設計された画像超解像アルゴリズムです。高効率なモバイルネットワークモジュール設計と、ハードウェア特性を考慮した量子化ロバスト学習戦略を組み合わせることで、モバイルデバイス上で優れた再構成品質、非常に少ないパラメータ数、リアルタイム性能を兼ね備えた軽量超解像ネットワークを実現し、このチャレンジで優勝しました。XLSR の品質評価指標は、PSNR 29.58、SSIM 0.86 です。
1.1 モデルエクスポート最適化
XLSR アルゴリズムで超解像後の細部をより強調するため、元モデルの最終層にラプラシアン演算子層 SharpeningLayer() を追加しています。また、ラプラシアンカーネルは調整可能です。さらに、RKNN モデルの後処理で出力データの転置(NCHW から NHWC)を避けるため、モデルの forward 計算の最後に転置層を追加し、高速化しています。
PC 側で export_onnx.py を実行し、PT モデルを ONNX へ変換します。
ONNX エクスポートの主なコード例は次のとおりです。
from model.models import *import torch
h, w = 360, 640scaling_factor = 2 # 2 or 4weight = r"weight/xlsr_2x_checkpoint_float32.pth.tar"output_file = r"weight/xlsr_{}x_{}x{}.onnx".format(scaling_factor, h, w)model = XLSRRelease(scaling_factor=scaling_factor)checkpoint = torch.load(weight, map_location='cpu', weights_only=False)model.load_state_dict(checkpoint["state_dict"], strict=False)model.eval()input_size = (3, h, w) # c, h, wexample_input = torch.randn((1,) + input_size, requires_grad=False)torch_out = torch.onnx.export( model, example_input, output_file, export_params=True, input_names=["image"], output_names=["upscaled_image"], opset_version=11)print("export finish")2. 資料ダウンロード
本マニュアルに必要な資料およびソースコードは、次のリンクからダウンロードしてください。
- 訓練ソースコード GitHub:https://github.com/csunltd/rv1126b-yolov5
- その他のソースコード:AIDemo_uhr_All.zip
解凍後の構成は次のとおりです。
|-- 03-model_convert AI モデル変換用のソース|-- 04-AI_deploy AI モデルデプロイ用のソース
図2-1 Ultra-high-resolution パッケージ解凍後のディレクトリ構成
3. rknn-toolkit モデル変換
3.1 rknn-toolkit モデル変換環境の構築
ONNX モデルを CSUN RV1126B 基板で実行するには、RKNN モデルへ変換する必要があります。そのため、事前に rknn-toolkit モデル変換ツールの環境を構築します。TensorFlow、TensorFlow Lite、Caffe、Darknet などのモデルも同様の流れで変換できますが、本チュートリアルでは ONNX モデルを例に説明します。
モデル変換環境の構築手順は《AI モデル変換環境構築ガイド》をご参照ください。
3.2 ONNX モデルを RKNN モデルへ変換
本書では、.rknn 拡張子のモデル評価および実行をサポートしています。TensorFlow、TensorFlow Lite、Caffe、Darknet、ONNX、PyTorch など一般的な学習済みモデルは、提供される RKNN-Toolkit2 を用いて RKNN モデルへ変換できます。その他のフレームワークで学習したモデルも、一度 ONNX 形式へ変換してから RKNN へ変換することができます。
詳しい変換手順は《RKNN モデル変換チュートリアル例》をご参照ください。
3.2.1 モデル変換ファイルの展開
モデル変換 Demo は、《資料ダウンロード》よりダウンロードして展開後、次のコマンドで展開します。
cd /data/project/sales/csun/rv1126b/jp/AI/demo/Tutorial/Ultra-high-resolution/03-model_converttar -xvf xlsr-python-2x.tar
図3-1 xlsr-python-2x.tar の展開コマンド
3.2.2 モデル変換ツール Docker 環境へ入る
以下のコマンドで作業ディレクトリを Docker イメージへマウントします。/data/project/sales/csun/rv1126b/jp/AI/demo/Tutorial を作業領域とし、/test としてコンテナへマッピングします。また、/dev/bus/usb:/dev/bus/usb により USB デバイスをコンテナへマウントします。
docker run -t -i --privileged -v /dev/bus/usb:/dev/bus/usb -v /data/project/sales/csun/rv1126b/jp/AI/demo/Tutorial:/test rknn-toolkit2:2.3.2-cp38 /bin/bash
図3-2 RKNN-Toolkit2 Docker 環境の起動コマンド
3.2.3 量子化画像リストの生成
Docker 環境内でモデル変換作業ディレクトリへ移動します。
cd /test/Ultra-high-resolution/03-model_convert/xlsr-python-2x
図3-3 XLSR モデル変換作業ディレクトリへの移動
gen_datas.py を実行して、量子化画像リストを生成します。
python gen_datas.py
図3-4 量子化画像リスト生成スクリプトの実行
生成された量子化画像リストは、datas_360x640.txt として保存されます。

図3-5 生成された datas_360x640.txt の確認
3.2.4 ONNX モデルを RKNN モデルへ変換
onnx2rknn.py スクリプトは、デフォルトでは do_quant = False で量子化を行いません。INT8 量子化が必要な場合は、do_quant = True に変更します。主な設定は、入力解像度、量子化種別、ターゲットプラットフォーム、ONNX 入力モデル、RKNN 出力パス、量子化データリストです。
from rknn.api import RKNN
if __name__ == '__main__': h, w = 360, 640 do_quant = True
quant = "fp16" if do_quant: quant = "int8" platform = "rv1126b" model_path = r"weight/xlsr_2x_{}x{}.onnx".format(h, w) output_path = r"weight/xlsr_2x_{}x{}-{}.rknn".format(h, w, quant) data_set = r'datas_{}x{}.txt'.format(h, w)
# Create RKNN object rknn = RKNN(verbose=False)
# Pre-process config print('--> Config model') rknn.config(mean_values=[[0, 0, 0]], std_values=[[255, 255, 255]], target_platform=platform, optimization_level=3, model_pruning=True, compress_weight=True, # sparse_infer=True, output_optimize=True, custom_string='output_format=nhwc', ) print('done')
# Load model print('--> Loading model') ret = rknn.load_onnx(model=model_path, inputs=['image'], input_size_list=[[1, 3, h, w]]) if ret != 0: print('Load model failed!') exit(ret) print('done')
# Build model print('--> Building model') ret = rknn.build(do_quantization=do_quant, dataset=data_set) if ret != 0: print('Build model failed!') exit(ret) print('done')
# Export rknn model print('--> Export rknn model') ret = rknn.export_rknn(output_path) if ret != 0: print('Export rknn model failed!') exit(ret) print('done')以下のコマンドでモデル変換を実行します。
python onnx2rknn.py
図3-6 ONNX から RKNN へのモデル変換実行結果
生成モデルは output_path へ保存され、RKNN 環境および CSUN RV1126B 基板で実行できます。

図3-7 変換後に生成された RKNN モデルファイル
4. XLSR モデルデプロイ
4.1 モデルデプロイの説明
この節では、XLSR モデルを CSUN RV1126B 基板へデプロイする手順を示します。本章で使用する xlsr_2x_360x640-int8.rknn は、公式提供の xlsr_2x_checkpoint_float32.pth.tar から変換した 2 倍拡大モデルです。
4.2 準備作業
4.2.1 ハードウェア準備
RV1126B 基板、Type-C データケーブル、LAN ケーブルを用意し、MobaXterm で SSH より RV1126B 基板にログインします。詳しくは入門ガイドを参照してください。
LAN ケーブルで接続します。

図4-1 RV1126B 基板と PC の LAN 接続構成
シリアルケーブル(Type-C)で接続します。

図4-2 Type-C シリアル接続の構成
4.2.2 開発環境の準備
本書を初めて読む場合は、『入門ガイド』を参照し、記載された手順に従ってコンパイル環境を構築してください。
PC 側の Ubuntu システムで run スクリプトを実行し、RV1126B コンパイル環境に入ります。
cd ~/develop_environment./run.sh 2204
図4-3 RV1126B Docker 開発環境の起動
4.3 サンプルプログラムのビルド
ダウンロードしたパッケージを RV1126B Docker 開発環境へ移動した後、次のコマンドを実行して展開します。
cd /opt/linuxshare/work/rv1126b/jp/AI/demo/Tutorial/Ultra-high-resolution/04-AI_deploytar -xvf SuperResolution.tarダウンロード展開後の構成は次の図のとおりです。

図4-4 SuperResolution ソース展開後のディレクトリ構成
今回は基板上で直接コンパイルするため、次のコマンドで展開後のソースコードを基板に転送します。
scp -r SuperResolution nano@192.168.10.85:/userdata転送後、SSH で CSUN RV1126B 基板に接続し、次のコマンドでコンパイルします。
ssh nano@192.168.10.85
cd /userdata/SuperResolutionmkdir buildcd buildcmake ..make
図4-5 SuperResolution サンプルプログラムのビルド結果
コンパイル時に次のエラーメッセージが表示された場合は、libopencv-dev をインストールする必要があります。
CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "OpenCV", but CMake did not find one.sudo apt-get updatesudo apt-get install libopencv-dev4.4 開発ボードで XLSR モデルを実行する
コンパイル後、次のコマンドで実行します。
./SR-Demo ../model/xlsr_2x_360x640-int8.rknn ../image/SRC-360P.jpg
図4-6 SR-Demo による XLSR モデル実行結果
オリジナル 720P 写真は次のとおりです。

図4-7 オリジナル 720P 画像
AI 超解像度写真は次のとおりです。

図4-8 AI 超解像処理後の画像