Anomali tespiti ile kedileri görsel olarak tespit etme


17

Şimdiye kadar sınırlı makine öğrenimi deneyimimi artırmanın bir yolu olarak taahhüt ettiğim bir hobi projem var. Bu konuda Coursera MOOC dersini aldım ve tamamladım. Benim sorum projenin fizibilitesi ile ilgili.

Görev şudur:

Komşu kediler zaman zaman bahçemi ziyaret ediyorlar, bu da benim çimlerimde dışkılama eğilimindeyken sevmediğim. Bir kedi olduğunda beni uyaran bir uyarı sistemine sahip olmak istiyorum, böylece süper soaker'ımı kullanarak kovalayabilirim. Basitçe söylemek gerekirse, sadece siyah ve beyaz renkte bir kediyi önemsediğimi söyleyin.

Bahçenin bir bölümünün video ve / veya resimlerini çekebilen kamera modüllü bir ahududu pi kurdum.

Örnek resim:

Örnek bahçe resmi

İlk fikrim, kedi veya kedi benzeri nesneleri tanımlamak için bir sınıflandırıcı yetiştirmekti, ancak yeterince çok sayıda pozitif örnek elde edemeyeceğimi fark ettikten sonra, anomali tespiti lehine terk ettim.

Günün her saniyesinde bir fotoğraf çekersem, günde kedileri (güneş ışığı ile yaklaşık 60.000 kişiden) içeren beş fotoğrafla sonuçlanacağımı tahmin ediyorum.

Bu anomali tespiti kullanılarak yapılabilir mi? Öyleyse, hangi özellikleri önerirsiniz? Şu ana kadarki fikirlerim sadece belirli renklere sahip piksel sayısını saymak olurdu; bir tür damla algılama / görüntü bölümleme yapın (ki nasıl yapacağımı bilmiyorum ve bu nedenle kaçınmak istiyorum) ve aynı renk analizini gerçekleştirin.


1
Belki de bu soru, şimdi düşünüyorum, çapraz doğrulama SE sitesi için daha uygundur. Bu ayrım benim için biraz belirsiz ...
Frost

4
Bence soru bu siteye çok uygun, çünkü makine öğreniminin pratik bir uygulamasını tartışıyor. btw, aptalca soru, neden bu kadar az sayıda kedi fotoğrafı? Sadece beş saniye mi geliyorlar?
insys

@insys, emici ile uyanıklığım hakkında söylentiler kedi topluluğuna yayılmış gibi görünüyor. Eskiden olduğu gibi oyalanmama eğilimindedirler. Sanırım bu benim tercih edilen, daha sofistike çözümümü karmaşıklaştırsa bile, kedileri bahçeme atmak için asıl amaç w / r / t iyi bir şey.
Frost

2
Bir sonraki adım gibi görünüyor (kedi algılama çalıştıktan sonra) ahududu pi kontrollü süper soaker :-)
Kryten

Yanıtlar:


8

Bir hareket / değişiklik algılama yaklaşımı kullanarak sorununuzu önemli ölçüde basitleştirebilirsiniz. Örneğin, her görüntüyü / kareyi erken bir zamanla (örn. Bir dakika önce) biriyle karşılaştırabilir, ardından yalnızca önceki zamandan bu yana değişen pikselleri göz önünde bulundurabilirsiniz. Daha sonra dikdörtgen değişim bölgesini çıkarabilir ve bunu sınıflandırma veya anormallik tespiti için temel olarak kullanabilirsiniz.

Bu tür bir yaklaşımı kullanmak sınıflandırıcıyı önemli ölçüde basitleştirebilir ve yanlış hedef oranınızı azaltabilir, çünkü kabaca bir kedinin boyutu olmayan bir şeyi (örneğin, bir kişi veya kuş) göz ardı edebilirsiniz. Daha sonra, sınıflandırıcı (veya anomali dedektörü) için eğitim setini oluşturmak üzere filtrelenmemiş çıkarılan değişiklik bölgelerini kullanırsınız.

Kedi saldırı tespit sisteminize bir lazer taret monte etmeden önce yanlış hedef oranınızı yeterince düşük tuttuğunuzdan emin olun.


1
Bu kontrollü bir ortam için güzel bir fikir ama bu durumda uygulanabilirliğinden emin değilim, çünkü sürekli değişimin olduğu doğal ortamla uğraşıyoruz, yani havadaki değişiklik, güneşin, bitkilerin ve ağaçların değişmesi nedeniyle rüzgar, mevsimler vb. Ben açıkladığım gibi değişim bölgesinin her durumda tüm görüntünün boyutuna yakın büyüyeceğine inanıyorum.
insys

@insys - Ne demek istediğini görüyorum ama katılmıyorum - dedektörün değişmesini daha dayanıklı hale getirdiğine inanıyorum. Bağıl kareler arasındaki zaman farkı küçük (~ saniye ila bir dakika) olmalıdır, bu nedenle güneş, mevsim, hava durumu ihmal edilebilir olmalıdır. Rüzgarın bitkilerin hareket etmesine neden olacağına katılıyorum, ancak sınıflandırma adımı, boyutları / şekli / renkleri bir kediden farklı olduğu için bunları önleyebilir. Ayrıca, benzer zamanlarda iki çerçeve kullanmak, değişen aydınlatma koşullarını (örneğin güneşli ve bulutlu bir günde bir kedi) daha iyi idare etmek için piksel yoğunluklarının normalleştirilmesini sağlar.
bogatron

Aslında, yorumunuzu okuduğum için cevabınız hakkında daha çok kafam karıştı :) Belki yanlış anladım, ancak sorunuzda belirtildiği gibi, olumlu örneklerinizi oluşturmak için gerçekten "çıkarılan değişiklik bölgelerini" kullanırsanız, nasıl yaparsınız? kediler olduklarına emin misin? Herhangi bir şey olabilirler. Bu nedenle, sınıflandırma adımınız, tespit edilmesi öğretilen şeyden başka bir şey tespit edemez - yani, her türlü değişiklik. Yani aslında "değişim" dedektörünün işini tekrarlıyor.
insys

Ayrıca, aydınlatma koşulları kesinlikle endişe vericidir, ancak noktanızı doğru yaparsam, piksel yoğunluklarını normalleştirmek için 1 dakika farkla çekilen iki benzer görüntünün ne sunacağı belirsizdir?
insys

Çıkarılan bölgeler, pozitif veya negatif örnekleri temsil edebilir - bunlar kedi sınıflandırıcısını eğitmek için kullanacağınız şeydir. Yoğunluklarla ilgili olarak, sınıflandırıcının öncelikle güneşli görüntülerden çıkarılan bölgelerden eğitildiğini varsayalım. Sınıflandırıcı daha sonra parlak beyaz kürklü kedileri kolayca bulabilir, ancak bu daha sonra bulutlu bir günde (beyaz kürk neredeyse parlak olmadığında) veya alacakaranlığın yakınında işe yaramaz. İki görüntünün normalleştirilmesi, bu sorunun azaltılmasına yardımcı olur (yani, bir çift parlak görüntü ve bir çift karanlık görüntü sınıflandırıcıya benzer görünecektir).
bogatron

4

Bu ilginç ve oldukça iddialı bir proje :)

Anomali tespitinin (en azından takip ettiğiniz derste açıklanan anlamda) bu durumda çok uygun bir algoritma olacağından emin değilim.

Bir Fotoğraf OCR iş akışının gösterildiği bu kursun sonunda tartışılan şey olarak daha uygun bir yaklaşım olarak düşünürdüm.

Yaklaşım, görüntünüzü daha küçük "bloklar" halinde bölümlere ayırmak ve denetimli bir öğrenme algoritması kullanarak tek tek geçmek ve her bloğu bir kedi içerip içermediğine göre sınıflandırmaya çalışmak olacaktır. Bir blokta bir kedi varsa, alarm çalar. Bir bonus olarak, kedinin pozisyonunu da alırsınız, böylece projenize gelecekteki bir adım olarak bazı "otomatik" yanıtları dahil etmeyi düşünebilirsiniz.

Buradaki fayda, bahçenize özgü bir veri kümesi kullanarak algoritmanızı eğitmeniz gerekmeyeceğidir (bahsettiğiniz gibi, oluşturmak zor), ancak ağdan alınan kedilerin resimlerini kullanabilirsiniz (örneğin, belki de "çimenlerin üzerinde kedi" falan) ve belki (veya diğer) bahçelerinizdeki fotoğraflardan yamalar. Bu nedenle, kameranızdan fotoğraf toplamak için zaman harcamak zorunda değilsiniz ve çok küçük (karşılaştırılabilir) bir pozitif örnek (yani kediler) alma riskinden kaçınıyorsunuz.

Elbette, doğru bir kedi dedektörü oluşturmak ne kadar kolay başka bir konudur ..


Ve bloğunuz kesimi iki veya daha fazla dilime ayırırsa ne olur? Engelleme stratejisi çok yaygın bir yaklaşımdır, ancak belirli bir konuma tamamen sabitlenmiş bir kamera olduğunda hareket algılama daha iyi ve daha az zaman alan bir yaklaşımdır.
adesantos

@adesantos - Söyledikleriniz doğru olabilir ve hareketli ve hareketli olmayan parçaları birbirinden ayıran tahminin avantajları vardır. Ancak eğitim için, bogatron tarafından tarif edildiği gibi, masaya ne fayda sağladığı belirsizdir. Genel olarak, benim görüşüme göre, hata ayıklama süresini önemli ölçüde uzatan karmaşıklık ekliyor. Pencereyi hareket ettirmenin avantajı basitliğindedir.
insys

Btw, bahsettiğiniz bölünmeyle ilgili olarak, bariz bir strateji pencerelerinizin çakışmasına izin vermek, böylece bölünmüş konum sınıflandırıcıyı etkilemez.
insys

Teklifime (hareket algılama) bir kedi dokusu ile SIFT algoritmasının kullanımını eklerdim. SIFT yöntemi bu blok stratejisiyle de kullanılabilir, ancak bu durumda gerekenden daha fazla blok karşılaştırırsınız. Bir kedinin hareket ettiğine dikkat edin, ama bir ağaç veya çalı çok fazla değil.
adesantos

3

Hareket / değişiklik algılama stratejisi kesinlikle yeterlidir, ancak ekstra bir işlem ekleyeceğim. Örneğin, değiştirilme olasılığı daha yüksek olan bölgeleri tespit ediyorum, örneğin, merdiven insanların olabileceği bir yer (kediler) ve köpeklerin, kedilerin veya insanların olabileceği bir çim gibi görünüyor.

Ben nesne ve yörünge boyutu ile bir harita yakalamak ve bununla belirli bir hız ve yörünge ile hareket eden bir nesne (piksel cinsinden görüntü içinde belirli bir boyutu ile) tespit etmek amacıyla bir küme oluşturmak istiyorum.

Bunu R kullanarak yapabilirsiniz veya hareketi tespit etmek ve farklı nesneleri takip etmek için OpenCV'yi öneririm.


2

OpenCV'nin arka plan çıkarması , sertleşmenizde hareket eden nesneleri bulacaktır. Bundan sonra, kedileri, insanları, ağaçları vb. Ayırt etmek için bir sınıflandırıcı veya şekil analizi kullanabilirsiniz.


1

Bir kuş mu? O bir kedi mi? Siyah-beyaz kedi büyüklüğümüz var! burada magpies. böylece başarısız olur.

İlk şey yeşil olan tüm alanları dışlamak, kediler nadiren yeşil olur.

Ardından, taş ve merdiven gibi statik şeyleri kaldırmak için gerisini referans görüntüyle karşılaştırın.

Minimum boyuttaki nesneleri tespit etmek mümkün olmalıdır, ancak bir sınıflandırma için çözünürlük çok düşüktür. Yeni uzaktan kumandalı insansız hava aracını test eden komşunuz da olabilir.

İki kamera ile nesnelerin 3B eşlemesini yapabilir ve uçan nesneleri ortadan kaldırabilirsiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.