Mendeteksi kucing secara visual melalui deteksi anomali


17

Saya memiliki proyek hobi yang saya renungkan sebagai komitmen untuk meningkatkan pengalaman belajar mesin saya yang sejauh ini terbatas. Saya telah mengambil dan menyelesaikan MOOC Coursera tentang topik tersebut. Pertanyaan saya berkaitan dengan kelayakan proyek.

Tugasnya adalah sebagai berikut:

Kucing tetangga kadang-kadang mengunjungi kebun saya, yang saya tidak suka karena mereka cenderung buang air besar di halaman saya. Saya ingin memiliki sistem peringatan yang mengingatkan saya ketika ada hadiah kucing sehingga saya bisa mengejarnya menggunakan super soaker saya. Demi kesederhanaan, katakan bahwa saya hanya peduli dengan kucing dengan warna hitam dan putih.

Saya telah menyiapkan pi raspberry dengan modul kamera yang dapat menangkap video dan / atau gambar bagian dari kebun.

Contoh gambar:

Contoh gambar taman

Gagasan pertama saya adalah untuk melatih classifier untuk mengidentifikasi kucing atau benda seperti kucing, tetapi setelah menyadari bahwa saya tidak akan dapat memperoleh sampel positif dalam jumlah yang cukup besar, saya telah meninggalkannya demi deteksi anomali.

Saya memperkirakan bahwa jika saya mengambil foto setiap detik dalam sehari, saya mungkin akan mendapatkan sekitar lima foto berisi kucing (dari sekitar 60.000 dengan sinar matahari) per hari.

Apakah ini layak menggunakan deteksi anomali? Jika demikian, fitur apa yang akan Anda sarankan? Sejauh ini ide saya adalah menghitung jumlah piksel dengan warna tertentu; melakukan beberapa jenis deteksi gumpalan / segmentasi gambar (yang saya tidak tahu bagaimana melakukannya, dan dengan demikian ingin menghindari) dan melakukan analisis warna yang sama pada mereka.


1
Mungkin pertanyaan ini lebih cocok untuk situs SE validasi silang, sekarang saya memikirkannya. Perbedaannya agak tidak jelas bagi saya ...
Frost

4
Saya pikir pertanyaannya sangat cocok untuk situs ini, karena membahas aplikasi praktis pembelajaran mesin. btw, pertanyaan konyol, kenapa begitu sedikit foto kucing? Apakah mereka hanya datang sekitar lima detik saja?
insys

@insys, desas-desus tentang kewaspadaan saya dengan soaker tampaknya telah menyebar di komunitas kucing. Mereka cenderung untuk tidak berlama-lama seperti dulu. Saya kira itu adalah hal yang baik tanpa tujuan sebenarnya membersihkan kebun kucing saya, meskipun itu menyulitkan solusi saya yang lebih disukai dan lebih canggih.
Frost

2
Sepertinya langkah berikutnya yang jelas (setelah Anda mendapatkan deteksi kucing bekerja) adalah ras soaker super terkontrol pi :-)
Kryten

Jawaban:


8

Anda dapat menyederhanakan masalah Anda secara signifikan dengan menggunakan pendekatan deteksi gerakan / perubahan. Misalnya, Anda dapat membandingkan setiap gambar / bingkai dengan satu dari waktu awal (misalnya, satu menit lebih awal), kemudian hanya mempertimbangkan piksel yang telah berubah sejak waktu sebelumnya. Anda kemudian dapat mengekstrak wilayah perubahan persegi panjang dan menggunakannya sebagai dasar untuk klasifikasi atau deteksi anomali Anda.

Mengambil jenis pendekatan ini dapat secara signifikan menyederhanakan pengklasifikasi Anda dan mengurangi tingkat target palsu Anda karena Anda dapat mengabaikan apa pun yang ukurannya tidak sebesar kucing (misalnya, orang atau burung). Anda kemudian akan menggunakan daerah perubahan yang diekstraksi yang tidak disaring untuk membentuk set pelatihan untuk classifier Anda (atau detektor anomali).

Pastikan untuk mendapatkan tingkat target salah Anda cukup rendah sebelum memasang menara laser ke sistem deteksi intrusi kucing Anda.


1
Ini adalah ide yang bagus untuk lingkungan terkendali tapi saya tidak yakin penerapannya dalam hal ini, karena kita berurusan dengan lingkungan alami di mana ada perubahan terus menerus, yaitu perubahan cuaca, posisi matahari, tanaman dan pohon karena angin, musim dll. Saya percaya wilayah perubahan seperti yang Anda gambarkan akan tumbuh mendekati ukuran keseluruhan gambar dalam hal apapun.
insys

@insys - Saya mengerti maksud Anda tetapi saya tidak setuju - Saya percaya itu membuat detektor lebih tangguh untuk berubah. Perbedaan waktu antara frame relatif harus kecil (~ detik hingga satu menit) sehingga matahari, musim, cuaca harus diabaikan. Saya setuju bahwa angin akan menyebabkan tanaman bergerak tetapi langkah klasifikasi dapat menghindarinya karena ukuran / bentuk / warnanya berbeda dari kucing. Plus, menggunakan dua bingkai pada waktu yang sama memungkinkan normalisasi intensitas piksel untuk lebih baik menangani berbagai kondisi pencahayaan (misalnya, kucing pada hari yang cerah vs hari berawan).
bogatron

Sebenarnya, saya lebih bingung dengan jawaban Anda sekarang karena saya membaca komentar Anda :) Mungkin saya salah paham, tetapi jika Anda benar-benar menggunakan "daerah perubahan yang diekstraksi" untuk membentuk sampel positif Anda, seperti yang disebutkan dalam pertanyaan Anda, bagaimana Anda membuat yakin mereka kucing? Mereka bisa apa saja. Dengan demikian, langkah klasifikasi Anda akan gagal mendeteksi apa pun kecuali apa yang diajarkan untuk dideteksi - yaitu, perubahan apa pun. Jadi itu sebenarnya mengulangi pekerjaan detektor "perubahan".
insys

Selain itu, kondisi penerangan jelas menjadi perhatian, tetapi, jika saya mengerti maksud Anda, tidak jelas apa dua gambar serupa, yang diambil dengan selisih 1 menit yang akan ditawarkan untuk menormalkan intensitas piksel?
insys

Wilayah yang diekstraksi dapat mewakili contoh positif atau negatif - mereka adalah apa yang akan Anda gunakan untuk melatih classifier kucing. Berkenaan dengan intensitas, Misalkan classifier dilatih dari daerah diekstraksi terutama dari gambar-gambar cerah. Pengklasifikasi mungkin akan dengan mudah menemukan kucing dengan bulu putih cerah tetapi itu tidak akan berfungsi dengan baik di hari berawan (ketika bulu putih tidak secerah itu) atau hampir senja. Melakukan normalisasi dari dua gambar membantu mengurangi masalah itu (yaitu, sepasang gambar cerah dan sepasang gambar redup akan tampak mirip dengan pengklasifikasi).
bogatron

4

Ini adalah proyek yang menarik dan juga cukup ambisius :)

Saya tidak yakin deteksi anomali (setidaknya dalam arti yang dijelaskan dalam kursus yang Anda ikuti) akan menjadi algoritma yang sangat pas dalam kasus ini.

Saya akan mempertimbangkan pendekatan yang lebih layak untuk menjadi apa yang telah dibahas pada akhir kursus di mana alur kerja Photo OCR ditunjukkan.

Pendekatan ini akan terdiri dari pengelompokan gambar Anda dalam "blok" yang lebih kecil, dan melalui mereka satu per satu menggunakan algoritma pembelajaran terawasi dan mencoba untuk mengklasifikasikan setiap blok sesuai dengan apakah itu berisi kucing atau tidak. Jika satu blok berisi kucing, alarm berbunyi. Sebagai bonus, Anda mendapatkan posisi kucing juga, sehingga Anda mungkin berpikir untuk memasukkan beberapa respons "otomatis" sebagai langkah masa depan untuk proyek Anda.

Manfaatnya di sini adalah Anda tidak perlu melatih algoritme Anda menggunakan dataset khusus untuk kebun Anda (yang, seperti yang Anda sebutkan sulit dibuat), tetapi Anda dapat menggunakan gambar kucing yang diambil dari jaring (mis. Mungkin Anda dapat mencari "kucing di rumput" atau sesuatu), dan mungkin tambalan foto dari kebun Anda (atau lainnya). Karena itu Anda tidak perlu menghabiskan waktu mengumpulkan foto dari kamera Anda, dan Anda menghindari risiko memiliki sampel positif yang sangat kecil (yaitu kucing).

Sekarang, tentu saja betapa mudahnya membangun detektor kucing yang akurat adalah topik lain ..


Dan apa yang akan terjadi jika blok Anda membagi potongan menjadi dua atau lebih irisan? Strategi pemblokiran adalah pendekatan yang sangat umum, tetapi ketika memiliki kamera yang benar-benar terpasang pada posisi tertentu, deteksi gerakan adalah pendekatan yang lebih baik dan lebih tidak memakan waktu, dari sudut pandang saya.
adesantos

@adesantos - Apa yang Anda katakan mungkin benar, dan untuk prediksi membedakan antara bagian yang bergerak dan yang tidak bergerak memiliki kelebihannya. Tetapi untuk pelatihan, seperti yang dijelaskan oleh bogatron, tidak jelas manfaat apa yang diberikannya ke meja. Secara keseluruhan, menurut saya itu menambah kompleksitas, yang memperpanjang waktu debug secara signifikan. Keuntungan dari memindahkan jendela adalah kesederhanaannya.
insys

Btw, mengenai pemisahan yang Anda sebutkan, strategi yang jelas adalah membiarkan windows Anda tumpang tindih, sehingga posisi split tidak memengaruhi classifier Anda.
insys

Saya akan menambah proposal saya (deteksi gerakan) penggunaan algoritma SIFT dengan tekstur kucing. Metode SIFT juga dapat digunakan dengan strategi blok itu, tetapi dalam hal ini Anda akan membandingkan lebih banyak blok daripada yang dibutuhkan. Perhatikan bahwa seekor kucing bergerak, tetapi sebatang pohon atau semak tidak banyak.
adesantos

3

Strategi deteksi gerakan / perubahan tentu memadai, tetapi saya akan menambahkan operasi tambahan. Saya akan mendeteksi daerah-daerah yang lebih mungkin untuk diubah, misalnya, tangga tampaknya tempat di mana manusia dapat (juga kucing) dan rumput tempat anjing, kucing atau manusia bisa berada.

Saya akan menangkap peta dengan ukuran objek dan lintasan dan dengan ini saya akan membuat cluster dengan tujuan mendeteksi objek (dengan ukuran spesifik dalam gambar dalam hal piksel) yang bergerak dengan kecepatan dan lintasan tertentu.

Anda dapat mencapai ini dengan menggunakan R atau saya akan menyarankan OpenCV untuk mendeteksi gerakan dan mengikuti objek yang berbeda.


2

Pengurangan latar belakang OpenCV akan menemukan benda bergerak di sekitar harden Anda. Setelah itu Anda bisa menggunakan pengelompokan atau analisis bentuk untuk membedakan antara kucing, manusia, pohon dan lain-lain.


1

Apakah ini seekor burung? Apakah itu kucing? Kami memiliki kucing berukuran hitam-putih! burung gagak di sini. jadi itu akan gagal.

Hal pertama yang harus dikecualikan adalah semua area yang hijau, kucing jarang hijau.

Kemudian membandingkan sisanya dengan gambar referensi untuk menghilangkan hal-hal statis seperti batu dan tangga.

Mendeteksi objek dengan ukuran minimum harus dimungkinkan, tetapi untuk klasifikasi, resolusinya terlalu rendah. Bisa juga tetangga Anda menguji pesawat tak berawak baru yang dikendalikannya.

Dengan dua kamera Anda bisa melakukan pemetaan 3d objek dan menghilangkan objek terbang.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.