Contoh #1 — Stasiun Lama: lihat perbandingan dalam HD 24-bit, foto asli CC-BY-SA @siv-athens.
Seperti yang terlihat di TV! Bagaimana jika Anda dapat meningkatkan resolusi foto Anda menggunakan teknologi dari laboratorium CSI? Berkat pembelajaran mendalam dan #NeuralEnhance
, jaringan saraf kini dapat dilatih untuk memperbesar gambar Anda sebanyak 2x atau bahkan 4x. Anda akan mendapatkan hasil yang lebih baik lagi dengan meningkatkan jumlah neuron atau pelatihan dengan kumpulan data yang mirip dengan gambar resolusi rendah Anda.
Tangkapannya? Jaringan saraf berhalusinasi detail berdasarkan pelatihannya dari contoh gambar. Itu tidak merekonstruksi foto Anda persis seperti jika itu HD. Hal ini hanya mungkin dilakukan di Hollywood — tetapi menggunakan pembelajaran mendalam sebagai "AI Kreatif" berhasil dan itu sama kerennya! Inilah cara Anda dapat memulai...
Skrip utama disebut enhance.py
, yang dapat Anda jalankan dengan Python 3.4+ setelah pengaturannya seperti di bawah ini. Argumen --device
yang memungkinkan Anda menentukan GPU atau CPU mana yang akan digunakan. Untuk contoh di atas, berikut hasil performanya:
Standarnya adalah menggunakan --device=cpu
, jika Anda sudah memiliki pengaturan kartu NVIDIA dengan CUDA, coba --device=gpu0
. Di CPU, Anda juga dapat menyetel variabel lingkungan ke OMP_NUM_THREADS=4
, yang paling berguna saat menjalankan skrip beberapa kali secara paralel.
Daftar contoh baris perintah yang dapat Anda gunakan dengan model terlatih yang disediakan dalam rilis 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
Berikut daftar model, jenis gambar, dan tingkat zoom yang didukung saat ini dalam satu tabel.
FITUR | --model=default | --model=repair | --model=denoise | --model=deblur |
---|---|---|---|---|
--type=photo | 2x | 1x | … | … |
Model terlatih disediakan dalam rilis GitHub. Melatih diri Anda sendiri adalah proses rumit yang mungkin mengharuskan Anda memilih parameter berdasarkan kumpulan data gambar Anda.
# 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
Contoh #2 — Lobi Bank: lihat perbandingan dalam HD 24-bit, foto asli CC-BY-SA @benarent.
Cara termudah untuk memulai dan menjalankannya adalah dengan menginstal Docker. Kemudian, Anda seharusnya dapat mengunduh dan menjalankan image yang sudah dibuat sebelumnya menggunakan alat baris perintah docker
. Cari tahu lebih lanjut tentang gambar alexjc/neural-enhance
di halaman Docker Hub-nya.
Inilah cara paling sederhana untuk memanggil skrip menggunakan docker
, dengan asumsi Anda terbiasa menggunakan argumen -v
untuk memasang folder, Anda dapat menggunakan ini secara langsung untuk menentukan file yang akan ditingkatkan:
# 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
Gambar Tunggal — Dalam praktiknya, kami menyarankan Anda menyiapkan alias yang disebut enhance
untuk secara otomatis mengekspos folder berisi gambar yang Anda tentukan, sehingga skrip dapat membacanya dan menyimpan hasilnya di tempat Anda dapat mengaksesnya. Inilah cara Anda melakukannya di konsol terminal di OSX atau 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
Banyak Gambar — Untuk menyempurnakan beberapa gambar dalam satu baris (lebih cepat) dari folder atau spesifikasi wildcard, pastikan untuk mengutip argumen ke perintah alias:
# Process multiple images, make sure to quote the argument!
enhance --zoom=2 " images/*.jpg "
Jika Anda ingin menjalankannya pada GPU NVIDIA, Anda dapat mengubah alias untuk menggunakan gambar alexjc/neural-enhance:gpu
yang sudah diinstal sebelumnya dengan CUDA dan CUDNN. Kemudian jalankan di dalam nvidia-docker dan itu akan menggunakan perangkat keras fisik Anda!
Proyek ini memerlukan Python 3.4+ dan Anda juga memerlukan numpy
dan scipy
(perpustakaan komputasi numerik) serta python3-dev
yang diinstal di seluruh sistem. Jika Anda ingin petunjuk lebih detail, ikuti ini:
Setelah mengambil repositori, Anda dapat menjalankan perintah berikut dari terminal Anda untuk menyiapkan lingkungan lokal:
# 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
Setelah ini, Anda harus memasang pillow
, theano
, dan lasagne
di lingkungan virtual Anda. Anda juga harus mengunduh jaringan saraf terlatih ini (VGG19, 80Mb) dan meletakkannya di folder yang sama dengan skrip untuk dijalankan. Untuk menghapus instalasi semuanya, Anda cukup menghapus folder #/pyvenv/
.
Contoh #3 — Resolusi super khusus untuk wajah, dilatih pada contoh HD wajah selebriti saja. Kualitasnya jauh lebih tinggi ketika mempersempit domain dari "foto" secara umum.
Kode ini menggunakan kombinasi teknik dari makalah berikut, serta beberapa perbaikan kecil yang belum didokumentasikan (lihat repositori ini untuk pembaruan):
Terima kasih khusus atas bantuan dan dukungannya dalam berbagai hal:
Ada kompiler ekstensi Python bernama Cython, dan kompiler tersebut hilang atau tidak dipasang dengan benar. Coba dapatkan langsung dari manajer paket sistem, bukan dari PIP.
MEMPERBAIKI: sudo apt-get install cython3
Ini terjadi ketika Anda menjalankan tanpa GPU, dan perpustakaan CPU tidak ditemukan (misalnya libblas
). Ekspresi jaringan saraf tidak dapat dievaluasi oleh Theano dan ini menimbulkan pengecualian.
MEMPERBAIKI: sudo apt-get install libblas-dev libopenblas-dev
Anda perlu menginstal Lasagna dan Theano langsung dari versi yang ditentukan dalam requirements.txt
, bukan dari versi PIP. Alternatif ini lebih lama dan tidak memiliki fitur yang diperlukan.
MEMPERBAIKI: python3 -m pip install -r requirements.txt
Tampaknya terminal Anda salah dikonfigurasi dan tidak kompatibel dengan cara Python memperlakukan lokal. Anda mungkin perlu mengubahnya di .bashrc
atau skrip startup lainnya. Alternatifnya, perintah ini akan memperbaikinya satu kali untuk instance shell ini.
PERBAIKI: export LC_ALL=en_US.UTF-8
Contoh #4 — Street View: lihat perbandingan dalam HD 24-bit, foto asli CC-BY-SA @cyalex.