예 #1 - Old Station: 24비트 HD로 비교 보기, 원본 사진 CC-BY-SA @siv-athens.
TV에서 본 그대로! CSI 연구소의 기술을 사용하여 사진의 해상도를 높일 수 있다면 어떨까요? 딥 러닝과 #NeuralEnhance
덕분에 이제 이미지를 2배 또는 4배까지 확대하도록 신경망을 훈련할 수 있습니다. 뉴런 수를 늘리거나 저해상도 이미지와 유사한 데이터 세트로 훈련하면 더 나은 결과를 얻을 수 있습니다.
캐치? 신경망은 예시 이미지의 훈련을 기반으로 세부적인 환각을 생성합니다. 사진이 HD였을 때와 똑같이 재구성되지는 않습니다. 그것은 헐리우드에서만 가능합니다. 하지만 딥 러닝을 "Creative AI"로 사용하는 것은 효과가 있고 멋지기도 합니다! 시작하는 방법은 다음과 같습니다...
기본 스크립트는 enhance.py
라고 하며, 아래와 같이 설정되면 Python 3.4+에서 실행할 수 있습니다. 사용할 GPU 또는 CPU를 지정할 수 있는 --device
인수입니다. 위 샘플의 성능 결과는 다음과 같습니다.
기본값은 --device=cpu
사용하는 것입니다. 이미 CUDA로 NVIDIA 카드를 설정한 경우 --device=gpu0
사용해 보세요. CPU에서는 환경 변수를 OMP_NUM_THREADS=4
로 설정할 수도 있습니다. 이는 스크립트를 병렬로 여러 번 실행할 때 가장 유용합니다.
GitHub 릴리스에서 제공되는 사전 학습된 모델과 함께 사용할 수 있는 예제 명령줄 목록은 다음과 같습니다.
# Run the super-resolution script to repair JPEG artefacts, zoom factor 1:1.
python3 enhance.py --type=photo --model=repair --zoom=1 broken.jpg
# Process multiple good quality images with a single run, zoom factor 2:1.
python3 enhance.py --type=photo --zoom=2 file1.jpg file2.jpg
# Display output images that were given `_ne?x.png` suffix.
open * _ne ? x.png
현재 지원되는 모델, 이미지 유형 및 확대/축소 수준 목록이 하나의 표에 나와 있습니다.
특징 | --model=default | --model=repair | --model=denoise | --model=deblur |
---|---|---|---|---|
--type=photo | 2배 | 1x | … | … |
사전 학습된 모델은 GitHub 릴리스에서 제공됩니다. 직접 훈련하는 것은 이미지 데이터세트를 기반으로 매개변수를 선택해야 하는 섬세한 프로세스입니다.
# Remove the model file as don't want to reload the data to fine-tune it.
rm -f ne ? x * .pkl.bz2
# Pre-train the model using perceptual loss from paper [1] below.
python3.4 enhance.py --train " data/*.jpg " --model custom --scales=2 --epochs=50
--perceptual-layer=conv2_2 --smoothness-weight=1e7 --adversary-weight=0.0
--generator-blocks=4 --generator-filters=64
# Train the model using an adversarial setup based on [4] below.
python3.4 enhance.py --train " data/*.jpg " --model custom --scales=2 --epochs=250
--perceptual-layer=conv5_2 --smoothness-weight=2e4 --adversary-weight=1e3
--generator-start=5 --discriminator-start=0 --adversarial-start=5
--discriminator-size=64
# The newly trained model is output into this file...
ls ne ? x-custom- * .pkl.bz2
예 #2 — 은행 로비: 24비트 HD로 비교 보기, 원본 사진 CC-BY-SA @benarent.
시작하고 실행하는 가장 쉬운 방법은 Docker를 설치하는 것입니다. 그러면 docker
명령줄 도구를 사용하여 사전 빌드된 이미지를 다운로드하고 실행할 수 있습니다. Docker Hub 페이지에서 alexjc/neural-enhance
이미지에 대해 자세히 알아보세요.
docker
사용하여 스크립트를 호출할 수 있는 가장 간단한 방법은 다음과 같습니다. -v
인수를 사용하여 폴더를 마운트하는 데 익숙하다고 가정하면 이를 직접 사용하여 향상할 파일을 지정할 수 있습니다.
# Download the Docker image and show the help text to make sure it works.
docker run --rm -v ` pwd ` :/ne/input -it alexjc/neural-enhance --help
단일 이미지 — 실제로는 지정된 이미지가 포함된 폴더를 자동으로 노출하도록 enhance
라는 별칭을 설정하여 스크립트가 해당 이미지를 읽고 액세스할 수 있는 곳에 결과를 저장할 수 있도록 하는 것이 좋습니다. OSX 또는 Linux의 터미널 콘솔에서 이를 수행하는 방법은 다음과 같습니다.
# Setup the alias. Put this in your .bashrc or .zshrc file so it's available at startup.
alias enhance= ' function ne() { docker run --rm -v "$(pwd)/`dirname ${@:$#}`":/ne/input -it alexjc/neural-enhance ${@:1:$#-1} "input/`basename ${@:$#}`"; }; ne '
# Now run any of the examples above using this alias, without the `.py` extension.
enhance --zoom=1 --model=repair images/broken.jpg
여러 이미지 — 폴더 또는 와일드카드 사양에서 여러 이미지를 연속적으로(더 빠르게) 향상하려면 alias 명령에 인수를 인용해야 합니다.
# Process multiple images, make sure to quote the argument!
enhance --zoom=2 " images/*.jpg "
NVIDIA GPU에서 실행하려면 대신 CUDA 및 CUDNN이 사전 설치된 alexjc/neural-enhance:gpu
이미지를 사용하도록 별칭을 변경할 수 있습니다. 그런 다음 nvidia-docker 내에서 실행하면 실제 하드웨어를 사용해야 합니다!
이 프로젝트에는 Python 3.4 이상이 필요하며 numpy
및 scipy
(수치 컴퓨팅 라이브러리)는 물론 시스템 전체에 설치된 python3-dev
도 필요합니다. 더 자세한 지침을 원하시면 다음을 따르세요.
저장소를 가져온 후 터미널에서 다음 명령을 실행하여 로컬 환경을 설정할 수 있습니다.
# Create a local environment for Python 3.x to install dependencies here.
python3 -m venv pyvenv --system-site-packages
# If you're using bash, make this the active version of Python.
source pyvenv/bin/activate
# Setup the required dependencies simply using the PIP module.
python3 -m pip install --ignore-installed -r requirements.txt
그런 다음 가상 환경에 pillow
, theano
및 lasagne
설치되어 있어야 합니다. 또한 사전 훈련된 신경망(VGG19, 80Mb)을 다운로드하여 실행할 스크립트와 동일한 폴더에 넣어야 합니다. 모든 것을 제거하려면 #/pyvenv/
폴더를 삭제하면 됩니다.
예제 #3 — 유명인 얼굴의 HD 예제로만 훈련된 얼굴에 대한 특화된 초해상도. 일반적으로 "사진"에서 도메인을 좁힐 때 품질이 훨씬 높아집니다.
이 코드는 다음 문서의 기술 조합과 아직 문서화되지 않은 몇 가지 사소한 개선 사항을 사용합니다(업데이트를 보려면 이 저장소를 확인하세요).
다양한 방법으로 도움과 지원을 해주셔서 특별히 감사드립니다.
Cython이라는 Python 확장 컴파일러가 있는데 누락되었거나 잘못 설치되었습니다. PIP가 아닌 시스템 패키지 관리자에서 직접 받아보세요.
수정: sudo apt-get install cython3
이는 GPU 없이 실행 중이고 CPU 라이브러리를 찾을 수 없을 때 발생합니다(예: libblas
). Theano에서는 신경망 표현을 평가할 수 없으며 예외가 발생합니다.
FIX: sudo apt-get install libblas-dev libopenblas-dev
PIP 버전이 아닌, requirements.txt
에 지정된 버전에서 Lasagne 및 Theano를 직접 설치해야 합니다. 이러한 대안은 오래되었으며 필요한 기능이 없습니다.
수정 사항: python3 -m pip install -r requirements.txt
터미널이 잘못 구성되어 있으며 Python이 로케일을 처리하는 방식과 호환되지 않는 것 같습니다. .bashrc
또는 다른 시작 스크립트에서 이를 변경해야 할 수도 있습니다. 또는 이 명령을 사용하면 이 셸 인스턴스에 대해 문제가 한 번 수정됩니다.
수정: export LC_ALL=en_US.UTF-8
예 #4 - 스트리트 뷰: 24비트 HD로 비교 보기, 원본 사진 CC-BY-SA @cyalex.