Artikel ini membahas metode yang digunakan untuk mengumpulkan data gambar dalam proyek musik dengan tayangan slide. Ada batasan yang memaksa kami untuk menggunakan basis data gambar yang ada, bukan gambar yang diambil dari Flickr. Namun, artikel ini membahas kedua pendekatan tersebut sehingga pembaca dapat mempelajari cara mengekstraksi data menggunakan Flickr API.
Lebih lanjut, karena kualitas bagian penting dari gambar yang dikumpulkan dengan Flickr rendah, diputuskan untuk menggunakan gambar dari basis data gambar yang ada. Secara khusus, gambar dikumpulkan dari tiga database untuk penelitian psikologis.
Ingatlah bahwa pada awalnya kumpulan data berikut dipilih untuk proyek ini:
- Kumpulan data pelatihan yang berisi 7000 gambar berwarna secara emosional dari Flickr untuk algoritma ekstraksi emosi.
- Dataset pelatihan yang berisi karya Bach untuk algoritme penyelesaian melodi.
- Seperangkat lagu yang berfungsi sebagai templat untuk memodulasi emosi.
Sekarang Anda perlu mengumpulkan set data. Seperti yang akan ditunjukkan dalam artikel, jumlah pekerjaan yang diperlukan untuk ini bervariasi tergantung pada set data yang dipilih.
Pengambilan gambar
Proyek ini membutuhkan serangkaian gambar yang membangkitkan tujuh emosi berbeda: kebahagiaan, kesedihan, ketakutan, kecemasan, kekaguman, keteguhan hati, kemarahan. Untuk koleksi gambar, diputuskan untuk menggunakan Flickr, situs berbagi foto yang populer, karena ukuran dan lisensi dari Creative Commons *.
Mencari secara manual Flickr untuk 7000 gambar adalah tugas yang menakutkan. Untungnya, Flickr memiliki
API yang menyediakan seperangkat metode yang membuatnya mudah untuk bertukar data dengan Flickr dalam bahasa pemrograman. Namun, sebelum menggunakan API untuk mengumpulkan gambar, penting untuk mengetahui apa yang harus dicari untuk membangkitkan emosi yang relevan. Untuk menentukan daftar istilah pencarian, tugas digunakan pada platform
Amazon Mechanical Turk *.
API Flickr
Untuk menggunakan metode yang ditawarkan oleh Flickr API, Anda harus membuat akun Flickr dan meminta kunci API. Untuk melakukan ini, Anda harus memiliki Akun Flickr atau Yahoo! *. Selanjutnya, Anda harus mengikuti
tautan ini dan mendapatkan kuncinya.
Cuplikan layar www.flickr.com/services/apps/create/applyProses pemrosesan aplikasi untuk kunci non-komersial cukup sederhana. Ini termasuk deskripsi tentang tujuan penggunaan dan penerimaan persyaratan penggunaan. Kunci API adalah tindakan keamanan dan digunakan untuk mencegah penyalahgunaan API. Dalam metode yang disediakan oleh API, ini merupakan parameter yang diperlukan.
Setelah menerima kunci API, Anda dapat mengunduh dan menginstal toolkit API untuk salah satu bahasa pemrograman dari
The App Garden . Proyek ini menggunakan
Beej's PythonI Flickr API , yang dapat digunakan dengan bahasa Python 3. Anda harus mengikuti
panduan instalasi Flickr API.
Kode yang digunakan untuk mengunduh gambar ditunjukkan di bawah ini. Pada dasarnya, fungsi API walk digunakan di sini, yang mencari gambar dengan tag. Tag disimpan dalam file .txt dan terdaftar satu per baris. Jika gambar ditemukan, URL-nya dibuat dari templat di
farm {farm-id} .staticflickr.com / {server-id} / {id} _ {secret} .jpg , di mana isi kurung kurawal diganti dengan atribut gambar. Kemudian, 30 gambar teratas untuk setiap tag (diurutkan berdasarkan relevansi) diekstraksi dan disusun dalam folder, tergantung pada emosi dan kondisi pencarian.
import flickrapi import urllib.request import os project_path = '/path/to/your/project' photos_per_tag = 30 filenames = ['Awe.txt', 'Happiness.txt', 'Fear.txt', 'Determination.txt', 'Anxiety.txt', 'Tranquility.txt', 'Sadness.txt'] def download_files(flickr, t, category, num_photos):
Untuk menggunakan kode ini, Anda harus mengkloning repositori menggunakan tautan dari
GitHub . Setelah itu, ikuti instruksi dalam file README. Anda harus mengganti parameter api_key dan api_secret dengan kunci API yang diterima di Flickr. Seperti disebutkan di atas, skrip ini hanya berfungsi pada Python 3.
Setelah program berjalan, foldernya terlihat seperti ini:

Satu set data dari hasil pencarian di Flickr.Secara total, sekitar 8800 gambar dikumpulkan. Lebih banyak gambar diterima daripada yang dibutuhkan, karena kami berencana untuk membuang beberapa gambar berkualitas rendah yang tidak dapat digunakan. Langkah selanjutnya adalah mencari gambar-gambar ini.
Pemilihan gambar
Kualitas gambar yang dikumpulkan berbeda. Beberapa kondisi pencarian, misalnya, bunga (ditunjukkan pada gambar) memberikan gambar berkualitas tinggi yang dapat digunakan. Namun, kondisi pencarian yang kurang spesifik sering menghasilkan gambar yang sama sekali tidak dapat digunakan. Sebagai contoh, gambar kue dengan wanita ajaib * diperoleh dari label keajaiban (karena emosi kagum), dan gambar kubis dari Pertanian Ambisi ditemukan dari label ambisius (karena emosi tekad).
Gambar tidak cocok.Siapa pun yang berencana menggunakan Flickr API untuk mencari gambar didorong untuk menggunakan kata benda tertentu sebagai istilah pencarian. Gambar yang ditemukan dari mereka jauh lebih baik daripada menggunakan kata sifat atau kata benda abstrak. Misalnya, saat mencari gambar kekaguman, Anda harus menggunakan istilah pencarian seperti samudera atau Grand Canyon, bukan kekaguman atau keajaiban.
Setelah melihat gambar, tim menyimpulkan bahwa lebih dari 40 persen gambar tidak dapat digunakan. Akibatnya, pendekatan untuk memilih set data direvisi. Setelah membahas sejumlah kemungkinan, seperti membatasi rangkaian gambar ke wajah dengan emosi yang relevan, diputuskan untuk menggunakan gambar dari database yang ada yang biasanya digunakan dalam penelitian psikologis (Database Affective PicturE Geneva (
GAPED ), Open Image Affective Standardized Set (
OASIS ) dan Gambar Stimuli untuk Emosi Elicitation (
ISEE )).
Terlepas dari kenyataan bahwa gambar-gambar dalam database yang ada kurang beragam daripada yang mereka bisa dalam kumpulan data baru, pilihan dibuat mendukung database yang ada karena kualitas gambar yang lebih tinggi dan ketersediaan informasi tentang parameter. Memiliki informasi tentang parameter adalah keuntungan besar, karena ini menghilangkan kebutuhan akan anotasi menggunakan Amazon Mechanical Turk, yang secara signifikan mengurangi biaya.
Sumber data
Proses pengumpulan data untuk dataset baru jauh lebih sederhana. Secara khusus, langkah-langkah tidak lagi diperlukan dengan Amazon Mechanical Turk dan Flickr API. Kumpulan data GAPED dan OASIS (termasuk markup parameter) tersedia untuk diunduh di Internet. Kumpulan data ISEE tersedia setelah email ke penulis yang meminta akses. Jika petunjuk untuk mengunduh kumpulan data tidak dipahami dengan baik, kemungkinan besar, pencarian Google * akan membantu Anda menemukan kontak penulis yang dapat langsung meminta akses ke kumpulan data.
Dua set data dibuat untuk proyek ini. Yang pertama menggunakan Flickr API untuk memuat gambar menggunakan tag emosi, yang kedua adalah kompilasi dari database yang ada yang digunakan dalam penelitian psikologis. Masing-masing set data ini memiliki pro dan kontra; namun, yang kedua dipilih untuk proyek - berkat keunggulan seperti kualitas gambar, keberadaan parameter berlabel dan biaya.
Metode yang digunakan untuk mengumpulkan data secara langsung tergantung pada data apa yang diperlukan. Namun, proses dan metode yang dijelaskan dalam artikel ini cenderung berguna untuk banyak proyek.
Sekarang set data dibuat, proyek siap untuk melakukan langkah-langkah berikut - penelitian dan pemrosesan data awal.
Eksplorasi data gambar
Karena kualitas sebagian besar gambar yang dikumpulkan dengan Flickr rendah, diputuskan untuk menggunakan gambar dari basis data gambar yang ada. Secara khusus, gambar dikumpulkan dari tiga database untuk penelitian psikologis. Setiap gambar termasuk informasi peringkat untuk (tidak) kesenangan dan intensitas, yang dikumpulkan dari beberapa artis. 1986 gambar dari database ini dibagi menjadi 4 kategori. Kategori-kategori ini mencakup 87% gambar dan termasuk 34% hewan, 28% orang, 13% adegan, dan 12% objek. Sisanya 13% diklasifikasikan sebagai aneka.
Binatang
Contoh gambar dari kategori "Hewan"Sekitar sepertiga dari gambar berisi hewan - baik terisolasi atau bersama-sama dengan hewan lain, seperti yang ditunjukkan di atas. Dalam contoh-contoh ini, bergerak dari kiri ke kanan, peringkat kesenangan meningkat. Gambar-gambar hyena yang tidak menyenangkan memakan mangsa dan kecoak mereka dapat menyebabkan respons dalam bentuk emosi seperti: ketakutan, kesedihan dan jijik.
Gambar-gambar di sebelah kanan - kucing yang tidur, anjing yang tersenyum - sebaliknya, dapat menyebabkan simpati dan kebahagiaan.
Orang
Sampel gambar dari kategori OrangKategori gambar Orang termasuk gambar individu dan kelompok orang, sedangkan gambar kelompok orang sering mengandung informasi yang lebih kontekstual. Misalnya, gambar marching band tampaknya telah dipotret dengan latar belakang stadion yang dipenuhi oleh penggemar, menunjukkan bahwa gambar tersebut dipotret dalam performa selama olahraga. Citra seorang wanita yang marah, sebaliknya, tidak memiliki konteks - pemirsa tidak memiliki kesempatan untuk mencari tahu atau menebak alasan kemarahannya. Perlu dicatat bahwa tidak semua gambar dengan banyak orang atau dengan grup memiliki informasi tambahan.
Sebagai contoh, gambar pria yang berbaring di garis di lantai, dengan luka yang terlihat dan pakaian berlumuran darah, tidak memberikan gambaran tentang apa yang terjadi. Namun demikian, bahkan dengan kurangnya informasi, gambar dengan orang menyebabkan berbagai reaksi emosional.
Adegan
Kategori "Pemandangan" dari serangkaian gambar mencakup beragam adegan - mulai dari struktur dan benda buatan manusia hingga pemandangan alam dan bahkan ruang.
Contoh Gambar dari Kategori PemandanganBenda-benda
Sampel gambar dari kategori ObjekKategori "Objek" dari kumpulan gambar termasuk gambar yang difokuskan pada satu objek, seperti yang ditunjukkan dalam contoh di atas. Tidak ada konteks situasional dalam gambar-gambar ini, terutama jika dibandingkan dengan kategori lain dalam set gambar.
Lain-lain
Contoh gambar dari kategori Lain-lainAkhirnya, bagian gambar tetap di set yang tidak dapat ditugaskan ke salah satu dari empat kategori. Seringkali, seperti ditunjukkan dalam contoh, gambar ini adalah adegan dengan beberapa objek, tetapi tanpa konteks yang khas untuk gambar dari kategori Adegan. Jenis gambar ini, pada umumnya, berisi peringkat netral - mereka tidak menyenangkan atau tidak menyenangkan.
Kategori Emosi untuk Database Gambar
Untuk mengidentifikasi kategori emosi untuk basis data gambar, kami mengandalkan peringkat signifikansi subjektif normatif yang menyertai setiap gambar dalam Geneva Affective PicturE Database (GAPED) dan Open Affective Standardized Image Set (OASIS). Karena GAPED menggunakan skala Likert dari 0 hingga 100, dan OASIS menggunakan skala Likert dari 1 hingga 7, transformasi linear diterapkan yang membawa semua peringkat ke skala berkelanjutan dari 0 hingga 100. Kemudian dua aturan potensial untuk mengkategorikan emosi diselidiki.
Pertama, secara intuitif diinginkan untuk mengurutkan gambar sesuai dengan tingkat kesenangan, diikuti dengan membaginya menjadi tiga bagian menurut skala peringkat, sehingga gambar dengan peringkat 0-33,33 mewakili kategori negatif, dengan peringkat 33,33-66,67 netral, dan dengan peringkat 66.67–100 - kategori positif. Untuk menerapkan aturan pembagian menjadi tiga kategori ini, kode Python digunakan:
import os import shutil import csv def organizeFolderGAPED(original, pos, neg, neut):
Pendekatan ini memungkinkan kami untuk membagi database ke dalam kategori: 417 gambar negatif, 774 netral dan 442 positif. Dalam pendekatan ini, membagi menjadi tiga kategori dalam proporsi yang sama dari gambar tidak menyenangkan, peringkat yang tidak mencapai nilai ambang batas, diklasifikasikan sebagai netral; misalnya, gambar mayat, anak yang menangis, kuburan diklasifikasikan sebagai netral. Meskipun gambar-gambar ini kurang menyenangkan daripada yang lain dalam kategori negatif, keraguan muncul tentang netralitasnya.
Oleh karena itu, diputuskan untuk menerapkan aturan kategorisasi yang dioptimalkan berdasarkan distribusi data normal, serta meningkatkan pemisahan parameter ke dalam kategori emosional. Nilai 0–39 ditugaskan untuk kategori negatif, 40–60 untuk kategori netral, dan 61–100 untuk kategori positif. Untuk menerapkan aturan ini, kode Python digunakan:
import os import shutil import csv def organizeFolderGAPED(original, pos, neg, neut):
Dengan aturan kategorisasi ini, 40-60-40 567 gambar positif dinilai lebih menyenangkan daripada 502 netral, dan 564 gambar negatif dinilai kurang menyenangkan daripada netral. Dengan demikian, nilai target kategori emosional dipertahankan dan distribusi gambar berdasarkan kategori ditingkatkan. Gambar di bawah ini menggambarkan tingkat kesenangan yang terkait dengan masing-masing kategori. Panjang kumis yang berbeda pada diagram dispersi menunjukkan kategori emosional (positif atau negatif) mana yang memiliki rentang peringkat yang lebih besar dibandingkan dengan kategori netral.
Peringkat kesenangan rata-rata untuk masing-masing kategori emosionalKami menyimpulkan bahwa aturan kategorisasi ini cukup untuk mengklasifikasikan gambar berdasarkan emosi. Mengenai kategori parameter basis data gambar, jenis-jenis gambar yang mewakili masing-masing kategori emosional ditunjukkan di bawah ini. Perlu dicatat bahwa setiap kategori parameter (hewan, orang, adegan, objek, aneka) diwakili dalam masing-masing kategori emosional.
Kategori Emosional 1: NegatifKategori Emosional 2: NetralKategori Emosional 3: PositifUntuk meringkas. Kami membagi basis data gambar ke dalam kategori emosi netral, negatif dan positif menggunakan peringkat signifikansi normatif dalam rentang dari 0 hingga 100, menugaskan 0–39 ke negatif, 40–60 ke netral, dan 61–100 menjadi positif. Gambar didistribusikan dengan tepat ke dalam kategori emosional ini. Akhirnya, setiap kategori emosional termasuk gambar binatang, orang, adegan, objek, dan banyak lagi.