ตัวอย่าง #1 — สถานีเก่า: ดูการเปรียบเทียบในรูปแบบ HD 24 บิต, ภาพถ่ายต้นฉบับ CC-BY-SA @siv-athens
เท่าที่เห็นในทีวี! จะเป็นอย่างไรหากคุณสามารถเพิ่มความละเอียดของภาพถ่ายโดยใช้เทคโนโลยีจากห้องปฏิบัติการ CSI ได้ ต้องขอบคุณการเรียนรู้เชิงลึกและ #NeuralEnhance
ตอนนี้คุณสามารถฝึกโครงข่ายประสาทเทียมเพื่อซูมเข้าภาพของคุณที่ 2x หรือ 4x ได้แล้ว คุณจะได้ผลลัพธ์ที่ดียิ่งขึ้นโดยการเพิ่มจำนวนเซลล์ประสาทหรือการฝึกด้วยชุดข้อมูลที่คล้ายกับภาพความละเอียดต่ำของคุณ
การจับ? โครงข่ายประสาทเทียมกำลังทำให้รายละเอียดหลอนประสาทโดยอิงจากการฝึกฝนจากภาพตัวอย่าง มันไม่ได้สร้างภาพของคุณขึ้นมาใหม่เหมือนกับที่เคยเป็นหากเป็น HD นั่นเป็นไปได้เฉพาะในฮอลลีวูด แต่การใช้การเรียนรู้เชิงลึกเป็น "Creative AI" ก็ได้ผลและมันก็เจ๋งไม่แพ้กัน! นี่คือวิธีที่คุณสามารถเริ่มต้น...
สคริปต์หลักเรียกว่า enhance.py
ซึ่งคุณสามารถรันด้วย Python 3.4+ ได้เมื่อตั้งค่าตามด้านล่าง อาร์กิวเมนต์ --device
ที่ให้คุณระบุ GPU หรือ CPU ที่จะใช้ สำหรับตัวอย่างข้างต้น นี่คือผลลัพธ์ด้านประสิทธิภาพ:
ค่าเริ่มต้นคือการใช้ --device=cpu
หากคุณมีการตั้งค่าการ์ด NVIDIA ด้วย CUDA แล้วลอง --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 | 2x | 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 — ล็อบบี้ของธนาคาร: ดูการเปรียบเทียบในรูปแบบ HD 24 บิต, ภาพถ่ายต้นฉบับ CC-BY-SA @benarent
วิธีที่ง่ายที่สุดในการเริ่มต้นใช้งานคือการติดตั้ง Docker จากนั้น คุณควรจะดาวน์โหลดและเรียกใช้อิมเมจที่สร้างไว้ล่วงหน้าโดยใช้เครื่องมือบรรทัดคำสั่ง docker
ค้นหาข้อมูลเพิ่มเติมเกี่ยวกับรูปภาพ alexjc/neural-enhance
บนหน้า Docker Hub
นี่เป็นวิธีที่ง่ายที่สุดในการเรียกใช้สคริปต์โดยใช้ 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 คุณสามารถเปลี่ยนนามแฝงแทนเพื่อใช้อิมเมจ alexjc/neural-enhance:gpu
ซึ่งมาพร้อมกับ CUDA และ CUDNN ที่ติดตั้งไว้ล่วงหน้า จากนั้นรันภายใน 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 ของใบหน้าคนดังเท่านั้น คุณภาพจะสูงขึ้นอย่างมากเมื่อจำกัดขอบเขตโดเมนจาก "รูปภาพ" โดยทั่วไป
รหัสนี้ใช้การผสมผสานเทคนิคจากเอกสารต่อไปนี้ รวมถึงการปรับปรุงเล็กน้อยบางอย่างที่ยังไม่ได้จัดทำเป็นเอกสาร (ดูที่เก็บข้อมูลนี้สำหรับการอัปเดต):
ขอขอบคุณเป็นพิเศษสำหรับความช่วยเหลือและการสนับสนุนในรูปแบบต่างๆ:
มีคอมไพเลอร์ส่วนขยาย Python ชื่อ Cython และไม่มีหรือติดตั้งไม่ถูกต้อง ลองรับมันโดยตรงจากตัวจัดการแพ็คเกจระบบแทนที่จะใช้ PIP
การแก้ไข: sudo apt-get install cython3
สิ่งนี้จะเกิดขึ้นเมื่อคุณทำงานโดยไม่มี GPU และไม่พบไลบรารี CPU (เช่น libblas
) Theano ไม่สามารถประเมินนิพจน์โครงข่ายประสาทเทียมได้ และกำลังทำให้เกิดข้อยกเว้น
การแก้ไข: sudo apt-get install libblas-dev libopenblas-dev
คุณต้องติดตั้ง Lasagne และ Theano โดยตรงจากเวอร์ชันที่ระบุใน requirements.txt
แทนที่จะติดตั้งจากเวอร์ชัน PIP ทางเลือกเหล่านี้เก่ากว่าและไม่มีฟีเจอร์ที่จำเป็น
การแก้ไข: python3 -m pip install -r requirements.txt
ดูเหมือนว่าเทอร์มินัลของคุณได้รับการกำหนดค่าไม่ถูกต้องและเข้ากันไม่ได้กับวิธีที่ Python ปฏิบัติต่อสถานที่ คุณอาจต้องเปลี่ยนแปลงสิ่งนี้ใน .bashrc
หรือสคริปต์เริ่มต้นอื่นๆ หรืออีกทางหนึ่ง คำสั่งนี้จะแก้ไขหนึ่งครั้งสำหรับอินสแตนซ์เชลล์นี้
การแก้ไข: export LC_ALL=en_US.UTF-8
ตัวอย่าง #4 — Street View: ดูการเปรียบเทียบในรูปแบบ HD 24 บิต, ภาพถ่ายต้นฉบับ CC-BY-SA @cyalex