Education*
Devops
Architecture
F/B End
B.Chain
Basic
Others
CLOSE
Search For:
Search
BY TAGS
linux
HTTP
golang
flutter
java
fintech
개발환경
kubernetes
network
Docker
devops
database
tutorial
cli
분산시스템
www
블록체인
AWS
system admin
bigdata
보안
금융
msa
mysql
redis
Linux command
dns
javascript
CICD
VPC
FILESYSTEM
S3
NGINX
TCP/IP
ZOOKEEPER
NOSQL
IAC
CLOUD
TERRAFORM
logging
IT용어
Kafka
docker-compose
Dart
Upscayl을 이용한 이미지 업스케일링
Recommanded
Free
YOUTUBE Lecture:
<% selectedImage[1] %>
yundream
2024-09-29
2024-09-29
122
# Upscaling 생성 AI 분야에서 **업스케일링(upscaling)** 은 저해상도의 이미지를 고해상도로 변환하는 기술을 의미한다. 이 과정을 통해서 원본 이미지를 더 높은 해상도로 확장하여 품질을 개선하거나 이미지의 세부 내용을 추가 및 복원 할 수 있다. 업스케일링은 특히 이미지의 디테일을 유지하면서 해상도를 증가시키는 것이 중요한데, 생성 AI 기술을 이용해서 더 자연스럽고 현실감 있게 이미지를 처리 할 수 있다. 딥러닝 기반 업스케일링: 신경망을 이용해서 저해상도의 이미지 패턴과 세부 정보를 학습해서 고해상도 이미지를 생성한다. GAN(Generative Adversarial Networks), SRCNN(Super-Resolution Convolutional Neural Network) 등의 모델을 사용한다. # Upscayl **Upscalyl**은 이미지 업스케일링을 위해서 개발된 오픈소스 애플리케이션이다. 이 애플리케이션은 딥 러닝 모델을 사용하여 저해상도 이미지를 고해상도로 변환할 수 있는데, 특히 작은 이미지를 큰 품질 손상없이 큰 이미지로 만들거나 손상(열화)된 이미지의 품질을 높이는데 유용하다. 보통 사진, 아트워크, 스크린 샷 등의 해상도를 향상시키는데 사용한다. * GAN 같은 딥러닝 기술을 활용해 이미지의 디테일을 예측하고 복원한다. * 다양한 업스케일 모델을 제공한다. * 오픈소스로 누구나 자유롭게 사용 할 수 있다. * 리눅스, 윈도우즈, 맥 등 다양한 운영체제에서 사용 할 수 있다. 여기에서는 **리눅스** 기반으로 테스트 할 것이다. * 데스크탑 애플리케이션을 이용해서 쉽게 이미지 업스케일링 작업을 진행할 수 있다. # Upscayl 설치 [Upscayl Download Page](https://upscayl.org/download) 로 이동해서 Linux 이미지를 다운로드 한다. 2024년 9월 현재 최신 버전은 2.11.5 이다. 리눅스의 경우 **Appimage** 파일을 제공한다. 다운로드 받은 파일을 실행가능한 PATH에 저장하면 된다. 나는 /usr/local/bin 에 저장했다. ``` sudo mv upscayl-2.11.5-linux.appimage /usr/local/bin/upscayl sudo chmod +x /usr/local/bin/upscayl ``` # Upscayl 실행 **upscayl**을 실행하면 아래와 같은 GUI 애플리케이션이 실행된다. ![Upscayl 실행화면](https://docs.google.com/drawings/d/e/2PACX-1vQJ6mW4n_rlpjyusaF2RzGKkLq3-jWwAZ7DdjWYZMh4vlrbq6WTTOqC7TbpBN7U3vm_QH-YwG-EJvZS/pub?w=930&h=652) # Upscayl 테스트 아래 이미지를 다운로드해서 테스트를 진행해보자. ![Example](https://upload.wikimedia.org/wikipedia/commons/d/dc/John_Howard_Lindauer_portrait.jpg) ![](https://docs.google.com/drawings/d/e/2PACX-1vSH6JWjk4KZDRV18KJcs9i03v31SP6Y41VLwnTjaynaERGllrJJukvcDO5UQxT_Yo6au1Io3PVaYMZG/pub?w=929&h=630) ### Select Model upscayl은 다양한 딥러닝 모델을 지원한다. 이미지의 종류와 활용 목적에 맞게 모델을 선택해야 한다. 주요 모델에 대해서 살펴봤다. GAN 기반 모델은 자료를 찾을 수 있는데, 정확한 자료를 찾기 어려운 모델들도 있었다. 📚 **REAL-ESRGAN(Real-Enhanced Super-Resolution Generative advesarial Network)** 딥러닝 기반의 업스케일링 모델로 세부정보를 최대한 유지하고 아티팩트(잡음)을 최소화하는 데 중점을 둔 모델이다. 이 모델은 기존의 ESRGAN(Enhanced SRGAN)을 개선한 버전으로, 특히 현실 세계의 이미지에 잘 적용된다. 적용분야 * 미디어, 의료 영상, 디지털 아트 등에서 이미지 해상도 향상 * 오래된 사진이나 압축된 이미지 품질 개선 * 객체 인식, 이미지 분석 등 고품질 이미지가 필요한 작업을 위한 전처리 📚 **FASTREAL-ESRGAN(Fast Real-Enhanced Super-Resolution Generative advesarial Network)** FastReal-ESRGAN은 REAL-ESRGAN의 속도와 효율성을 개선한 버전이다. 특징, 목적, 적용 분야는 REAL-ESRGAN과 동일하다. 더 빠르게 작동하기 때문에 게임이나, 스트리밍 서비스 등 실시간 이미지 업스케일링이 필요한 영역에서 주로 사용한다. 📚 **Ultramix Balanced** 일반 사진에 적합한 균형 잡힌 모델로, 디테일 향상과 노이즈 제거 사이에 균형을 잘 유지한다. 📚 **Ultrsharp** 매우 선명한 결과물을 제공하는 모델이다. 세밀한 텍스처나 패턴이 많은 이미지에 적합하다. 📚 **Digital Art** 디지털 아트워크, 일러스트레이션, 만화 스타일의 이미지에 최적화된 모델이다. 실사 이미지를 일러스트레이션 형태로 변경할 때도 사용할 수 있다. # 자동화 GUI 애플리케이션은 개인 데스크탑 환경에서 간단하게 사용 할 수 있다. 하지만 배치작업, 대량의 이미지 작업, 실시간 이미지 작업을 위해서는 스크립트로 사용 할 수 있어야 한다. Upscayl은 GUI 화면을 제공하지만 실제 작업은 CLI를 통해서 이루어진다. [Upscayl bin](https://github.com/upscayl/upscayl-ncnn/releases) 에서 CLI 애플리케이션을 다운로드 할 수 있다. 다운로드 한 다음 압축을 풀자. 2024년 9월 최신 파일은 upscayl-bin-20240601-103425-linux.zip 이다. ``` unzip upscayl-bin-20240601-103425-linux.zip cd upscayl-bin-20240601-103425-linux ``` upscayl-bin -h 명령으로 옵션들을 확인 할 수 있다. ``` ./upscayl-bin -h 🚀 Starting Upscayl - Copyright © 2024 Usage: upscayl-bin -i infile -o outfile [options]... -h show this help -i input-path input image path (jpg/png/webp) or directory -o output-path output image path (jpg/png/webp) or directory -z model-scale scale according to the model (can be 2, 3, 4. default=4) -s output-scale custom output scale (can be 2, 3, 4. default=4) -r resize resize output to dimension (default=WxH:default), use '-r help' for more details -w width resize output to a width (default=W:default), use '-r help' for more details -c compress compression of the output image, default 0 and varies to 100 -t tile-size tile size (>=32/0=auto, default=0) can be 0,0,0 for multi-gpu -m model-path folder path to the pre-trained models. default=models -n model-name model name (default=realesrgan-x4plus, can be realesr-animevideov3 | realesrgan-x4plus-anime | realesrnet-x4plus or any other model) -g gpu-id gpu device to use (default=auto) can be 0,1,2 for multi-gpu -j load:proc:save thread count for load/proc/save (default=1:2:2) can be 1:2,2,2:2 for multi-gpu -x enable tta mode -f format output image format (jpg/png/webp, default=ext/png) -v verbose output ``` ### 모델 준비 업스케일링을 위해서는 모델을 준비해야 하는데, upscayl-bin은 모델을 제공하지 않는다. 그렇다면 🤔 ? Upscayl에서 사용하는 모델을 사용하면 된다. 터미널에서 Upscayl을 사용하면 아래와 같이 로그를 출력한다. ``` $ upscayl 📂 DIRNAME /tmp/.mount_upscayG52ebq/resources/app.asar/export/electron Checking for update 21:32:03.232 › 🚀 UPSCAYL EXEC PATH: /tmp/.mount_upscayG52ebq/resources/bin/upscayl-bin 21:32:03.234 › 🚀 MODELS PATH: /tmp/.mount_upscayG52ebq/resources/models 21:32:03.812 › ⚙️ Getting saveImageAs from localStorage: jpg 21:32:03.812 › ⚙️ Getting model from localStorage: {"label":"General Photo (Real-ESRGAN)","value":"realesrgan-x4plus"} 21:32:03.813 › ⚙️ Setting gpuId to empty string 21:32:03.813 › 🔀 Setting model to null 21:32:03.815 › 🔀 Setting model to realesrgan-x4plus Update for version 2.11.5 is not available (latest version: 2.11.5, downgrade is disallowed). ``` Upscayl이 실행되면 /tmp 디렉토리에 임시 작업 디렉토리를 생성하는데 **MODELS PATH**에 모델들이 저장된다. 이 디렉토리를 복사해서 사용하면 된다. 나는 $HOME/upscayl 디렉토리에 복사했다. ``` mkdir $HOME/upscayl cp -r /tmp/.mount_upscayG52ebq/resources $HOME/upscayl cd $HOME/upscayl/resources/models ``` Upscayl이 사용하는 모델을 확인 할 수 있다. ``` $ ls realesrgan-x4fast.bin realesrgan-x4plus-anime.bin realesrgan-x4plus.bin remacri.bin ultramix_balanced.bin ultrasharp.bin realesrgan-x4fast.param realesrgan-x4plus-anime.param realesrgan-x4plus.param remacri.param ultramix_balanced.param ultrasharp.param ``` ### 테스트 위에 다운로드 받은 파일을 CLI로 업스케일링 해보자. ``` ./upscayl-bin \ -i ~/사진/John_Howard_Lindauer_portrait.jpg \ -o test.jpg \ -s 2 \ -m $HOME/upscayl/resources/models \ -n realesrgan-x4plus \ -f jpg \ -c 0 ``` * -i: 원본파일 * -o: 출력파일 * -s: scale 크기 * -m: 모델 디렉토리 경로 * -n: 사용 모델 * -f: 출력 포맷 * -c: 압축률 아래와 같은 로그를 확인 할 수 있다. ``` 🚀 Starting Upscayl - Copyright © 2024 ✨ Detected scale x4 ✨ Using the default scale x4 [0 NVIDIA GeForce RTX 4060 Ti] queueC=2[8] queueG=0[16] queueT=1[2] [0 NVIDIA GeForce RTX 4060 Ti] bugsbn1=0 bugbilz=0 bugcopc=0 bugihfa=0 [0 NVIDIA GeForce RTX 4060 Ti] fp16-p/s/a=1/1/1 int8-p/s/a=1/1/1 [0 NVIDIA GeForce RTX 4060 Ti] subgroup=32 basic=1 vote=1 ballot=1 shuffle=1 [1 llvmpipe (LLVM 17.0.6, 256 bits)] queueC=0[1] queueG=0[1] queueT=0[1] [1 llvmpipe (LLVM 17.0.6, 256 bits)] bugsbn1=0 bugbilz=0 bugcopc=0 bugihfa=0 [1 llvmpipe (LLVM 17.0.6, 256 bits)] fp16-p/s/a=1/1/1 int8-p/s/a=1/1/1 [1 llvmpipe (LLVM 17.0.6, 256 bits)] subgroup=8 basic=1 vote=1 ballot=1 shuffle=1 0.00% 25.00% 50.00% 75.00% 🏞️ Resizing image according to output scale 🏞️ Scaled image from 270x368 to 540x736 100.00% 🙌 Upscayled Successfully! ``` 명령을 어떻게 사용해야 하는지 모르겠다면 **Upscayl**을 이용해서 업스케일링 작업을 해보자. 그럼 아래와 같이 로그에 실행 명령이 출력되는데, 이를 참고해서 명령을 만들면 된다. ``` Upscayl Command: [ '-i', '/home/yundream/사진/John_Howard_Lindauer_portrait.jpg', '-o', '/home/yundream/사진/John_Howard_Lindauer_portrait_upscayl_2x_realesrgan-x4plus.jpg', '-s', '2', '-m', '/tmp/.mount_upscayFM9g5y/resources/models', '-n', 'realesrgan-x4plus', '-f', 'jpg', '-c', '0' ] ```
Recent Posts
GPT를 이용한 Reranker 테스트
5분만에 만들어보는 Streamlit 챗봇
Let's encrypt로 SSL 인증서 관리하기
Upscayl을 이용한 이미지 업스케일링
스테이블 디퓨전 설치 및 사용해보기
Elasticsearch 설치
AI / LLM에 대한 친절한 소개
SLA 다운타임 계산기
Docker로 GitLab 설치하기
Ubuntu Linux에 NVIDIA 드라이버 설치
Archive Posts
Tags
AI
Copyrights © -
Joinc
, All Rights Reserved.
Inherited From -
Yundream
Rebranded By -
Joonphil
Recent Posts
Archive Posts
Tags