
M4 Macã§å®è·µïŒAIãå€ãåçãäœè§£å床ç»åãé©ãã»ã©é«ç»è³ªåïŒReal-ESRGANå°å ¥ã¬ã€ã
ãææ®ã£ã倧åãªåçãããå°ã綺éºã ã£ããâŠã ãã€ã³ã¿ãŒãããã§èŠã€ããç»åã®è§£å床ãäœããŠããã£ãšé®®æã«èŠããâŠã ãM4ãããæèŒã®æ°ããMacãæã«å ¥ãããã©ããã®ãã¯ãŒã掻ãããé¢çœãããŒã«ã¯ãªãããªïŒã
ããããªãããããªé¢šã«æããŠãããªãããã®èšäºã¯ãã£ãšã圹ã«ç«ãŠãã¯ãã§ãã
ãã®èšäºã§ã¯ãææ°ã®M4ããããæèŒããMacã§ãAIãæŽ»çšããŠç»åãé«ç»è³ªåã»è¶ è§£ååã§ããããŒã«ãReal-ESRGAN-NCNN-Vulkanãã®å°å ¥ããåºæ¬çãªäœ¿ãæ¹ãŸã§ããã¹ããããã€ã¹ãããã§åŸ¹åºè§£èª¬ããŸãã
å°éçãªç¥èããªããŠã倧äžå€«ïŒã³ãã³ãã©ã€ã³æäœã«å°ãæ £ããŠããªãæ¹ã§ãåãããããããã«ãäžå¯§ãªèª¬æãå¿ãããŸããããã®èšäºãèªãã°ãããªããç ã£ãŠããç»åãé©ãã»ã©çŸããèãããããšãã§ããããã«ãªããŸãã
ãã®èšäºãèªãããšã§ãããªãã¯ä»¥äžã®ããšãã§ããããã«ãªããŸãïŒ
M4 Macã§AIã«ããç»åé«ç»è³ªåããŒã«ãReal-ESRGAN-NCNN-Vulkanããã»ããã¢ããã§ãã
äœè§£å床ã®ç»åãå€ãåçããAIã®åã§é®®æãã€é«ç²Ÿçްã«ã¢ããã¹ã±ãŒã«ã§ãã
ã³ãã³ãã©ã€ã³ã䜿ã£ãåºæ¬çãªç»ååŠçæ¹æ³ãç¿åŸã§ãã
ãããM4 Macã®æ§èœãåŒãåºããAIã«ããé©ãã®ç»åé«ç»è³ªåãäœéšããŠã¿ãŸãããïŒ
Real-ESRGAN-NCNN-Vulkanãšã¯ïŒ AIã«ããè¶
è§£åã®äžçãž
ä»åã玹ä»ãããReal-ESRGAN (Enhanced Super-Resolution Generative Adversarial Networks)ãã¯ãAIæè¡ãç¹ã«æµå¯Ÿççæãããã¯ãŒã¯ïŒGANïŒãå©çšããŠãç»åã®è§£å床ãå€§å¹ ã«åäžãããããã®æå 端ã¢ãã«ã®äžã€ã§ãã
Real-ESRGANã®ç¹åŸŽïŒ
å®çšçãªå£åç»åã®åŸ©å ïŒ åã«ç»åãæ¡å€§ããã ãã§ãªããJPEGå§çž®ã«ãããã€ãºããŒãããªã©ãçŸå®äžçã§ããèŠãããç»åã®å£åã广çã«é€å»ããèªç¶ã§é«å質ãªã¢ããã¹ã±ãŒãªã³ã°ãå®çŸããŸãã
æ±çšæ§ã®é«ãïŒ ã¢ãã¡ç»åããå®ååçãŸã§ãå¹ åºãçš®é¡ã®ç»åã«å¯Ÿå¿ã§ããããèšç·ŽãããŠããŸãã
NCNN-Vulkançã®ã¡ãªããïŒ
é«éåŠçïŒ ã¹ããŒããã©ã³ãªã©ã®ã¢ãã€ã«ããã€ã¹ã§ãå¹ççã«åäœãããã¥ãŒã©ã«ãããã¯ãŒã¯æšè«ãã¬ãŒã ã¯ãŒã¯ãNCNNããããŒã¹ãšããããã«ãVulkanãAPIãå©çšããããšã§ãMacã®GPUïŒMã·ãªãŒãºãããã®Neural EngineãGPUã³ã¢ïŒã掻çšããé«éãªç»ååŠçãå¯èœã§ããM4 Macã®ãããªãã¯ãã«ãªãã·ã³ã§ã¯ããã®æ©æµãæå€§éã«åããããšãã§ããŸãã
ã¯ãã¹ãã©ãããã©ãŒã ïŒ æ§ã ãªãã©ãããã©ãŒã ã§åäœããããã«èšèšãããŠããŸãïŒãã®èšäºã§ã¯M4 Macã«ç¹åããŠè§£èª¬ããŸãïŒã
ç°¡åã«èšããšããAIãããæãã«ç»åã®è¶³ããªãéšåãäºæž¬ããŠè£ã£ãŠãããè³¢ãé«ç»è³ªåããŒã«ããšã€ã¡ãŒãžããŠãã ãããç¹ã«ãNCNN-Vulkançã¯Macã®GPUãã¯ãŒã掻ããããããå¿«é©ãªåŠçé床ãæåŸ ã§ããŸãã
1. äºåæºå
macOS : Sonoma 14 以éïŒM4ïŒM3ïŒM2 ã§ãå¯ïŒ
ã¿ãŒããã« : Rosetta ã§ã¯ãªã arch ã arm64 ã«ãªããã®ã䜿çš
Homebrew : /opt/homebrew/bin/brew ãå ¥ã£ãŠããããš
æªå°å ¥ãªã â
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"2. ãã€ããªãå ¥æ
GitHub Releases ãã
realesrgan-ncnn-vulkan-v0.2.0-macos.zip
å±éããŠé 眮
unzip ~/Downloads/realesrgan-ncnn-vulkan-v0.2.0-macos.zip
cd realesrgan-ncnn-vulkan
chmod +x realesrgan-ncnn-vulkan
sudo mv realesrgan-ncnn-vulkan /usr/local/bin/泚æ : v0.2.0 以é㯠ã¢ãã«(.bin/.param)ã忢±ãããªã
ââ æ¬¡ã®ã¹ãããã§çšæããŸãã
3. ã¢ãã« (.bin / .param) ãçšæ
ïŒïŒã¢ãã«å ¥ãã® 20220424 portable ç ãæµçš
curl -L -o /tmp/realesrgan-models.zip \
https://github.com/xinntao/Real-ESRGAN/releases/download/v0.2.5.0/realesrgan-ncnn-vulkan-20220424-ubuntu.zipïŒïŒmodels/ ãã©ã«ãã ãæãåã
MODEL_DIR="$HOME/.local/share/realesrgan-ncnn-vulkan/models"
mkdir -p "$MODEL_DIR"
unzip -j /tmp/realesrgan-models.zip "models/*" -d "$MODEL_DIR"MODEL_DIR å ã« realesrgan-x4plus.bin ãš .param ãªã©ãããã° OKã
4. Vulkan ã¬ã€ã€ (MoltenVK) ãæŽãã
brew install molten-vk vulkan-loader vulkan-toolsICD(ãã©ã€ãå®çŸ©) ãããŒãã«èªèããã
mkdir -p ~/.local/share/vulkan/icd.d
ln -s "$(brew --cellar molten-vk)"/*/share/vulkan/icd.d/MoltenVK_icd.json \
~/.local/share/vulkan/icd.d/確èªïŒ
vulkaninfo | grep "GPU id" -m1 # â GPU id : 0 (Apple M4 âŠ) ãè¿ãã°æå5. ã¢ããã¹ã±ãŒã«ãã
ã§ã¯ãã¯ãã£ãã©ã«ãã«ã¢ããã¹ã±ãŒã«ãããããout.pngããçšæããäžèšã³ãã³ããå®è¡ããŸãããã
realesrgan-ncnn-vulkan \
-m ~/.local/share/realesrgan-ncnn-vulkan/models \
-i ~/Pictures/out.png \
-o ~/Pictures/out4x.png \
-n realesrgan-x4plus -s 4 -t 256åºåã 4096 px ã«ãªãã°æåã
8Ã(8192 px) 㯠4Ãâ2à ã®äºæ®µéã§å®è¡
realesrgan-ncnn-vulkan \
-m ~/.local/share/realesrgan-ncnn-vulkan/models \
-i ~/Pictures/out4x.png \
-o ~/Pictures/out8x.png \
-n realesrgan-x4plus -s 2 -t 256ãã綺éºã«ã¢ããã¹ã±ãŒã«ããããã®ã³ãïŒ
é©åãªã¢ãã«ã®éžæïŒ
-n ãªãã·ã§ã³ã§æå®ããã¢ãã«ã«ã¯ããã€ãçš®é¡ããããŸããäžè¬çã«ãrealesrgan-x4plusãã¯å®ååãããrealesrgan-x4plus-animeãã¯ã¢ãã¡ãã€ã©ã¹ãåãã«èª¿æŽãããŠããŸããåŠçãããç»åã®çš®é¡ã«åãããŠã¢ãã«ãéžæããŸãããã
å ç»åã®å質ïŒ
ããŸãã«ããã€ãºãå€ãç»åããèããæ å ±ãæ¬ æããŠããç»åã®å ŽåãæåŸ ãã广ãåŸãããªãããšããããŸããã§ããã ãå ã®å質ãè¯ãç»åãå ¥åãšããŠäœ¿çšããŸãããã
é床ãªã¢ããã¹ã±ãŒã«ã®åé¿ïŒ
Real-ESRGANã¯ããã©ã«ãã§4åã«ã¢ããã¹ã±ãŒã«ããŸããã -s ãªãã·ã§ã³ã§ã¹ã±ãŒã«ãã¡ã¯ã¿ãŒã倿Žã§ããŸãïŒäŸïŒ-s 2 ã§2åïŒãå¿ èŠä»¥äžã«å€§ãããããããšãäžèªç¶ãªä»äžããã«ãªãå ŽåããããŸããçšéã«åãããŠèª¿æŽããŸãããã
6. ã€ãŸãããã€ã³ããšè§£æ±ºç
çç¶
unknown model dir type â SEGV
loader_get_json ãšã©ãŒ
vkCreateInstance failed with ERROR_INCOMPATIBLE_DRIVER
åŠçéäžã§èœã¡ã / é»ç»å
ããã§ãäžå®å®
äž»å
models ãã©ã«ãã空 / -m æå®å¿ã
MoltenVK ICD ãã¹æªèšå®
Rosetta ã§ x86_64 åŽãèµ·å
tile ã倧ãããã
MetalâNCNN çžæ§åé¡
åŠæ¹ç®
models/ ã« .bin/.param ã眮ã -m ã§ãã¹æå®
æé 4 ã®ã·ã³ããªãã¯ãªã³ã¯ã確èª
arch ã arm64 ã«ãªãã¿ãŒããã«ã§å®è¡
-t 128 ãŸã§äžãã
Python + PyTorch(MPS) ç (--device mps) ã«åæ¿
7. é床ã®ç®å®ïŒM4 Max, tile 256ïŒ
1024 px â 4Ã(4096 px) : çŽ 9 ç§
4096 px â 2Ã(8192 px) : çŽ 6 ç§
ãããåŠçãªã 1 æããã 15 ç§ååŸã§ 8 K å°éã
RTX 3080(Windows/WSL) ãšã»ãŒåçã§ãã
8. ãŸãšã
v0.2 ç³»ã¯ãã¢ãã«å¥éã
Apple Silicon ã§ã¯ ICD ãã¹èšå® ïŒ tile 256 ãå®å®éçšã®éµ
äŸåãŒãïŒCLI äžçºã§é«éããããDocker ã Python ãäžèŠ
ãããã«ïŒAIã§åºããç»å衚çŸã®äžç
ä»åã¯ãM4 Macã§AIè¶ è§£åããŒã«ãReal-ESRGAN-NCNN-Vulkanããã»ããã¢ããããç»åãé«ç»è³ªåããæ¹æ³ãã玹ä»ããŸãããã³ãã³ãã©ã€ã³ã§ã®æäœã¯å°ãé£ããæãããããããŸããããäžåºŠç°å¢ãæ§ç¯ããŠããŸãã°ãæè»œã«åŒ·åãªAIã®æ©æµãåããããšãã§ããŸãã
å€ãåçãé®®æã«ãªã£ããããæ°ã«å ¥ãã®ã€ã©ã¹ããããé«ç²Ÿçްã«ãªã£ããããäœéšã¯ããã£ãšæåçã§ãããããã²ãçããã®æã§æ§ã ãªç»åãã¢ããã¹ã±ãŒã«ããŠããã®å¹æã宿ããŠã¿ãŠãã ããã
詊ããŠã¿ãææ³ããããããªç»åã綺éºã«ãªã£ãïŒããšãã£ãå ±åããããã¯ãããã§è©°ãŸã£ããã©ãã解決ããããšãã£ãæ å ±ãããã°ããã²èšäºã®ã³ã¡ã³ãæ¬ã§æããŠããã ãããšå¬ããã§ãã
ãã®èšäºããçããã®ã¯ãªãšã€ãã£ããªæŽ»åãã倧åãªæãåºãããçŸããæ®ãããã®äžå©ãšãªãã°å¹žãã§ãã
åèã«ããæ å ±ã»é¢é£ãªã³ã¯ïŒ
Real-ESRGAN å ¬åŒãªããžããª: GitHub - xinntao/Real-ESRGAN
Real-ESRGAN-NCNN-Vulkan ãªããžããª: GitHub - nihui/realesrgan-ncnn-vulkan
Vulkan SDK ããŠã³ããŒã: LunarG Vulkan SDK
Homebrew: The Missing Package Manager for macOS (or Linux) â Homebrew