Repo ini berisi implementasi PyTorch dari algoritma Deep Dream (:link: blog oleh Mordvintstev et al.).
Itu mendapat dukungan penuh untuk penggunaan baris perintah dan Notebook Jupyter !
Dan itu akan memberi Anda kekuatan untuk menciptakan gambar-gambar aneh yang tampak psikedelik ini:
Lumayan, ya?
Saya sangat menyarankan Anda memulai dengan notebook Jupyter yang saya buat!
Catatan: ukurannya cukup besar, ~10 MB, jadi mungkin diperlukan beberapa kali percobaan untuk memuatnya di browser di sini di GitHub.
Singkatnya algoritma ini memaksimalkan aktivasi lapisan jaringan yang dipilih dengan melakukan pendakian gradien .
Jadi dari gambar masukan seperti gambar di sebelah kiri setelah "bermimpi" kita mendapatkan gambar di sebelah kanan:
Siapa yang mengira bahwa jaringan saraf menyembunyikan kreativitas ini? ?
Sebagian besar repo Deep Dream asli ditulis di Caffe dan yang ditulis di PyTorch biasanya sangat sulit dibaca dan dipahami. Repo ini adalah upaya membuat repo DeepDream terbersih yang saya ketahui + ditulis dalam PyTorch! ❤️
Berikut beberapa contoh yang dapat Anda buat menggunakan kode ini!
Dengan menggunakan lapisan jaringan saraf yang lebih dangkal, Anda akan mendapatkan pola tingkat yang lebih rendah (tepi, lingkaran, warna, dll.) sebagai keluaran:
Di sini 2 gambar pertama berasal dari ResNet50 dan yang terakhir berasal dari GoogLeNet (keduanya telah dilatih sebelumnya di ImageNet).
Dengan menggunakan lapisan jaringan yang lebih dalam, Anda akan mendapatkan pola tingkat yang lebih tinggi (mata, moncong, kepala hewan):
Yang ke-1 dan ke-3 dibuat menggunakan VGG 16 (ImageNet) dan yang di tengah menggunakan ResNet50 yang telah dilatih sebelumnya di Places 365.
Jika kita menjaga setiap parameter lainnya tetap sama tetapi kita menukar bobot yang telah dilatih sebelumnya, kita mendapatkan ini:
Kiri: ResNet50-ImageNet (kita dapat melihat lebih banyak fitur hewan) Kanan: ResNet50-Places365 (barang buatan manusia, dll.).
Bermimpi dilakukan pada beberapa resolusi gambar yang ditumpuk "secara vertikal" (kami menyebutnya piramida gambar ).
Dari kiri ke kanan satu-satunya parameter yang berubah adalah ukuran piramida (dari kiri ke kanan: 3, 7, 9 level).
Bermain dengan rasio piramida mempunyai efek serupa/terkait - ide dasarnya adalah bahwa area relatif dari gambar yang dapat dimodifikasi dan "dilihat" oleh neuron yang lebih dalam (yang disebut bidang reseptif jaring) semakin meningkat dan kita menjadi semakin besar. fitur seperti mata melotot (dari kiri ke kanan: 1.1, 1.5, 1.8):
Catatan: Anda dapat melihat parameter persis yang digunakan untuk membuat gambar-gambar ini yang dikodekan ke dalam nama file!
Pastikan untuk memeriksa notebook Jupyter!, saya sudah menjelaskannya secara menyeluruh.
Berikut beberapa contoh lebih lanjut yang dapat Anda buat menggunakan kode ini!
Idenya di sini adalah bahwa apa pun yang diimpikan oleh jaringan, cukup masukkan kembali masukan tersebut dan terapkan transformasi geometris.
Jika kita hanya menerapkan zoom sentral, kita mendapatkan ini:
Menerapkan zoom sentral dan pada saat yang sama menerapkan rotasi 3 derajat per frame akan menghasilkan:
Terakhir jika kita melakukan terjemahan sederhana (5 px per frame dari kiri atas ke kanan bawah):
Mudah-mudahan ini tidak merusak otak Anda - rasanya seperti web 1.0 di awal tahun 2000an. Bersabarlah denganku.
Daripada memasukkan keluaran kembali ke masukan, kita hanya menerapkan algoritma per frame dan menerapkan beberapa pencampuran linier:
Linear blending hanya menggabungkan frame saat ini dengan frame terakhir sehingga mengurangi kedipan (disini saya menggunakan 0,85)
Catatan: semua gambar/GIF deepdream diproduksi oleh saya, penghargaan untuk seniman gambar asli diberikan di bawah.
git clone https://github.com/gordicaleksa/pytorch-deepdream
cd path_to_repo
conda env create
dari direktori proyek (ini akan membuat lingkungan conda baru).activate pytorch-deepdream
(untuk menjalankan skrip dari konsol Anda atau atur penerjemah di IDE Anda)Itu saja! Ini harus bekerja langsung dengan mengeksekusi file environment.yml yang berhubungan dengan dependensi.
Catatan: Jika Anda ingin menggunakan fungsi video yang saya miliki - Anda memerlukan ffmpeg di jalur sistem Anda.
Paket pip PyTorch akan dibundel dengan beberapa versi CUDA/cuDNN, tetapi sangat disarankan agar Anda menginstal CUDA seluruh sistem terlebih dahulu, terutama karena driver GPU. Saya juga merekomendasikan menggunakan penginstal Miniconda sebagai cara untuk mendapatkan conda di sistem Anda. Ikuti poin 1 dan 2 dari pengaturan ini dan gunakan versi Miniconda dan CUDA/cuDNN terbaru untuk sistem Anda.
Jalankan saja jupyter notebook
dari konsol Anaconda Anda dan itu akan membuka sesi di browser default Anda.
Buka The Annotated DeepDream.ipynb
dan Anda siap bermain!
Catatan: jika Anda mengalami DLL load failed while importing win32api: The specified module could not be found
Lakukan saja pip uninstall pywin32
lalu pip install pywin32
atau conda install pywin32
akan memperbaikinya!
Anda hanya perlu menautkan lingkungan Python yang Anda buat di bagian pengaturan.
Navigasikan ke/aktifkan env Anda jika Anda menggunakan Anaconda (dan saya harap demikian) dan Anda dapat menggunakan perintah yang saya tautkan di bawah.
Tip: Tempatkan gambar/video Anda di dalam direktori data/input/
dan Anda kemudian dapat mereferensikan file Anda (gambar/video) berdasarkan namanya alih-alih menggunakan jalur absolut/relatif.
Untuk membuat beberapa gambar Deep Dream statis, jalankan perintah berikut:
python deepdream.py --input <img_name> --img_width 600
Ini akan menggunakan pengaturan default tetapi Anda akan segera mendapatkan hasil yang berarti yang disimpan ke:
data/out-images/VGG16_EXPERIMENTAL_IMAGENET/
Catatan: direktori keluaran akan berubah tergantung pada model dan bobot terlatih yang Anda gunakan.
Untuk mendapatkan video 30 bingkai Ouroboros yang unik, lakukan hal berikut:
python deepdream.py --input <img_name> --create_ouroboros --ouroboros_length 30
Ini akan membuang frame perantara ke data/out-videos/VGG16_EXPERIMENTAL_IMAGENET/
dan akan menyimpan video akhir ke data/out-videos
.
Untuk membuat video Deep Dream jalankan perintah ini:
python deepdream.py --input <mp4 video name>
Ini akan membuang frame perantara ke data/out-videos/tmp_out
dan akan menyimpan video akhir ke data/out-videos
.
Selamat bermain dengan proyek ini! Berikut beberapa hasil tambahan yang indah:
GPU dengan 2+ GB sudah lebih dari cukup.
Anda akan dapat membuat gambar DeepDream, Ouroboros, dan video DeepDream.
Jika Anda tidak memiliki GPU, kode akan otomatis berjalan di CPU tetapi agak lambat (terutama untuk video).
Jika Anda mengalami kesulitan memahami DeepDream, saya melakukan ikhtisar algoritma dalam video ini:
Dan juga Notebook Jupyter yang saya buat adalah tempat terbaik untuk memulai!
Saya menemukan repo ini berguna (saat mengembangkan yang ini):
Saya menemukan gambar yang saya gunakan di sini:
Gambar lain kini sudah menjadi klasik di dunia NST dan DeepDream.
Places 365 model terlatih berasal dari repo yang mengagumkan ini.
Jika Anda merasa kode ini berguna untuk penelitian Anda, harap kutip yang berikut ini:
@misc{Gordić2020DeepDream,
author = {Gordić, Aleksa},
title = {pytorch-deepdream},
year = {2020},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {url{https://github.com/gordicaleksa/pytorch-deepdream}},
}
Jika Anda ingin memiliki lebih banyak konten terkait AI dalam hidup Anda?, pertimbangkan: