Deteksi pencilan online

10

Saya ingin memproses gambar mikroskop yang tersegmentasi secara otomatis untuk mendeteksi gambar yang salah dan / atau segmentasi yang salah, sebagai bagian dari pipa pencitraan throughput tinggi. Ada sejumlah parameter yang dapat dihitung untuk setiap gambar mentah dan segmentasi, dan itu menjadi "ekstrem" ketika gambar rusak. Misalnya, gelembung dalam gambar akan menghasilkan anomali seperti ukuran besar di salah satu "sel" yang terdeteksi, atau jumlah sel anomali rendah untuk seluruh bidang. Saya mencari cara yang efisien untuk mendeteksi kasus-kasus aneh ini. Idealnya, saya lebih suka metode yang memiliki properti berikut (kira-kira sesuai keinginan):

  1. tidak memerlukan ambang absolut yang telah ditentukan sebelumnya (meskipun persentase yang sudah ditentukan sebelumnya OK);

  2. tidak memerlukan memiliki semua data dalam memori, atau bahkan telah melihat semua data; itu akan baik-baik saja untuk metode menjadi adaptif, dan memperbarui kriteria karena melihat lebih banyak data; (jelas, dengan beberapa probabilitas kecil, anomali dapat terjadi sebelum sistem melihat cukup data, dan akan terlewatkan, dll.)

  3. dapat diparalelkan: misalnya dalam putaran pertama, banyak node yang bekerja secara paralel menghasilkan anomali kandidat menengah, yang kemudian menjalani seleksi putaran kedua setelah putaran pertama selesai.

Anomali yang saya cari tidak halus. Mereka adalah jenis yang jelas jelas jika seseorang melihat histogram data. Tetapi volume data yang dipertanyakan, dan tujuan akhir melakukan deteksi anomali ini secara real time ketika gambar sedang dihasilkan, menghalangi solusi apa pun yang memerlukan pemeriksaan histogram oleh evaluator manusia.

Terima kasih!

kjo
sumber
Apakah saya benar bahwa masalah Anda pada dasarnya adalah univariat?
user603
1
Posting beberapa data yang mungkin membantu saya "melihat" masalah yang Anda miliki. Saya cukup akrab dengan histogram yang menyoroti outlier dan saya mungkin dapat memberikan Anda beberapa panduan tentang cara yang efisien untuk mendeteksi kasus-kasus aneh ini menggunakan metode statistik sebagai pengganti memeriksa histogram oleh evaluator manusia. Lihat diskusi baru-baru ini tentang mendeteksi stat keacakan.stackexchange.com/questions/12955/ ... Anda tentu saja mencoba mendeteksi pelanggaran deterministik terhadap keacakan.
IrishStat
Bisakah Anda memberi kami lebih detail? Apakah parameternya kontinu atau diskrit? Distribusi apa yang dimiliki parameter, untuk gambar yang tidak rusak? Gaussian? Apakah parameternya independen atau berkorelasi? Kira-kira berapa banyak parameter yang Anda ekstrak, per gambar? Berapa banyak gambar per detik yang perlu Anda tangani (atau latensi per gambar apa yang dapat diterima)? Mungkin Anda dapat menampilkan beberapa histogram untuk beberapa parameter tipikal, melintasi kumpulan data besar gambar yang tidak cacat, dan kemudian menunjukkan histogram yang sesuai untuk gambar yang rusak? Ini dapat membantu menemukan solusi yang baik.
DW

Jawaban:

3

Sudahkah Anda mempertimbangkan sesuatu seperti classifier satu kelas?

Anda akan membutuhkan satu set pelatihan gambar yang dikenal baik, yang digunakan untuk melatih classifier yang mencoba untuk membedakan antara "gambar seperti set pelatihan Anda" dan yang lainnya. Ada tesis oleh David Tax yang mungkin memiliki lebih banyak informasi daripada yang sebenarnya Anda butuhkan tentang topik ini, tetapi mungkin merupakan tempat yang baik untuk memulai.

Selain membutuhkan satu set pelatihan, sepertinya itu akan memenuhi persyaratan Anda:

  • Parameter dipelajari dari data (tidak ada ad-hockery di sini)

  • Setelah Anda mendapatkan modelnya, tidak perlu menyimpan data dalam memori.

  • Demikian pula, classifier terlatih dapat dijalankan pada node sebanyak yang Anda punya.

Tergantung pada aplikasi Anda, Anda mungkin dapat melatih classifier yang dapat diservis sekali dan menggunakannya kembali untuk berbagai jenis spesimen / pewarna / noda / florophores / dll. Sebagai alternatif, Anda mungkin bisa membuat pengguna menilai secara manual beberapa batch pertama dari setiap proses - Saya membayangkan seorang manusia dapat memeriksa setidaknya 5-8 contoh / menit dengan antarmuka yang baik.

Matt Krause
sumber
2

Lihat http://scholar.google.com/scholar?q=stream+outlier+detection

Beberapa metode mapan seperti LOF telah diadopsi ke konteks streaming. Ada juga tentu saja metode yang memperbarui histogram dengan cara streaming dan dengan demikian menandai outlier satu dimensi yang jelas. Itu sebenarnya cukup untuk Anda?

Memiliki QUIT - Anony-Mousse
sumber
1

Ada banyak pendekatan yang mungkin, tetapi sulit untuk mengetahui apa yang terbaik dalam situasi Anda tanpa lebih banyak informasi.

Rn

  • Simpan vektor fitur dari semua gambar sebelumnya, bersama dengan klasifikasinya, pada disk. Secara berkala (katakanlah, sehari sekali) latih algoritma pembelajaran untuk data ini, dan gunakan algoritma yang dihasilkan untuk mengklasifikasikan gambar baru. Ruang disk murah; solusi ini mungkin pragmatis dan efektif untuk mengubah algoritma pembelajaran offline menjadi yang dapat digunakan dalam pengaturan online Anda.

  • Simpan vektor fitur dari sampel acak 1.000 (atau 1.000.000) gambar sebelumnya, bersama dengan klasifikasinya. Latih algoritma pembelajaran secara berkala pada subsampel ini.

    Perhatikan bahwa Anda dapat memperbarui subsampel ini secara efisien secara online menggunakan trik standar . Ini hanya menarik jika ada beberapa alasan mengapa sulit untuk menyimpan semua vektor fitur dari semua gambar sebelumnya (yang tampaknya sulit dibayangkan, bagi saya, tetapi siapa yang tahu).

  • nccn

    nμnσμiiσix|xiμi|cσiiμσ

    Pendekatan ini mengasumsikan bahwa setiap parameter dari gambar yang tidak cacat memiliki distribusi Gaussian, dan bahwa parameternya independen. Asumsi itu mungkin optimis. Ada banyak varian yang lebih canggih dari skema ini yang akan menghilangkan kebutuhan akan asumsi-asumsi ini atau meningkatkan kinerja; ini hanyalah contoh sederhana untuk memberi Anda ide.

Secara umum, Anda bisa melihat algoritma online dan algoritma streaming.

DW
sumber
DW Filter / model ARIMA adalah optimisasi "rata-rata berjalan" di mana jumlah istilah (N) dan bobot spesifik yang akan diterapkan diidentifikasi secara empiris. Salah satu model khusus dan jelas dugaan adalah untuk menebak "N" jumlah nilai yang digunakan dalam "rata-rata berjalan" dan kemudian menambah ketidakberartikan dengan mengasumsikan bahwa bobotnya sama satu sama lain.
IrishStat
@IrishStat, Tidak yakin apakah saya mengerti komentar Anda. Jika tulisan saya tidak jelas, saya tidak menyarankan ARIMA, meskipun itu sesuatu yang bisa dipertimbangkan juga. Saya menyarankan sesuatu yang lebih sederhana: melacak rata-rata semua pengamatan sejauh ini, dan standar deviasi. Setiap kali Anda melihat pengamatan baru, Anda dapat memperbarui rata-rata dan standar deviasi (selama Anda telah melacak jumlah pengamatan yang terlihat sejauh ini) dengan metode standar. Mungkin sederhana, tapi saya tidak mengerti mengapa ini tidak masuk akal.
DW
0

Rn

Jika outlier cukup jelas, trik sederhana yang bisa digunakan adalah sebagai berikut. Bangun fungsi hash sensitif lokalitas dari vektor Anda. (Sebuah hash acak sederhana seperti sisi mana dari set hiperplanes acak vektor jatuh pada mungkin bekerja. Ini akan menghasilkan vektor boolean sebagai nilai hash.) Sekarang ketika Anda menerima vektor, Anda menghitung nilai hash dari vektor dan menyimpan nilai hash (vektor boolean dalam kasus hyperplanes) dan jumlah dalam kamus. Anda juga menyimpan jumlah vektor yang terlihat sejauh ini. Pada waktu tertentu Anda dapat menandai vektor yang diberikan sebagai pencilan jika jumlah total vektor yang bertabrakan dengan hash kurang dari persentase yang telah ditentukan dari total.

Anda dapat melihat ini sebagai membangun histogram dengan cara tambahan. Tetapi karena datanya tidak univariat, kami menggunakan trik hashing untuk membuatnya berperilaku seperti itu.

Innuo
sumber