Nesne algılamada maksimum olmayan bastırma (NMS) hesaplaması

Nesne algılamada maksimum olmayan bastırma (NMS) algoritması

Önsöz NMS algoritması nedir? Yani, maksimum olmayan bastırma, hedef tespit, hedef takibi, üç boyutlu yeniden yapılandırma vb. Özellikle hedef tespitinde yaygın olarak kullanılır.RCNN, hızlı RCNN, YOLO vb. Olsun, hedef tespitinin son geçişidir. Algoritma, hepsi bu algoritmayı kullanıyor. içindekiler I. Genel Bakış 2. Hedef tespitinde NMS uygulaması 1.2 Netron 1.3 tarafından desteklenen çerçeveler Netron 1.4 Kullanım durumlarının kurulumu ve kullanımı I. Genel Bakış Maksimum Olmayan Bastırma (NMS), adından da anlaşılacağı gibi, yerel maksimum arama olarak anlaşılabilecek maksimum değerler olmayan öğeleri bastırmaktır. Bu bölüm bir mahalleyi temsil eder ve mahallenin iki değişken parametresi vardır, biri mahallenin boyutu, diğeri mahallenin boyutu. Genel NMS algoritması burada tartışılmamıştır (1D ve 2D verilerin NMS uygulaması için "Etkin Maksimum Olmayan Bastırma" belgesine bakın), ancak hedef tespitinde en yüksek puana sahip pencereyi çıkarmak için kullanılır. Örneğin, yaya tespitinde, kayan pencere özellikleri çıkarır ve sınıflandırıcı tarafından sınıflandırma ve tanımadan sonra, her pencere bir puan alır. Ancak, kayan pencereler birçok pencerenin diğer pencereleri içermesine veya çoğunlukla bunlarla örtüşmesine neden olacaktır. Şu anda, en yüksek puanlara (yaya olma olasılığı) sahip mahalleleri seçmek için NMS'yi kullanmanız ve düşük puanlı pencereleri bastırmanız gerekir. NMS, video hedef takibi, veri madenciliği, 3 boyutlu yeniden yapılandırma, hedef tanıma ve doku analizi gibi bilgisayar görüşü alanında çok önemli uygulamalara sahiptir. Bu makale esas olarak hedef tespitindeki uygulamayı açıklamaktadır.

2. Hedef tespitinde NMS uygulaması

Örtüşen yüz algılama çerçeveleri örneği

Yukarıdaki soldaki resimde çok sayıda yararlanıcı ile karşılaştığımızda, amacımız gereksiz tespit çerçevesini kaldırmak ve en iyisini korumaktır.

Bu sorunu çözmenin birçok yolu vardır. Triggs ve diğerleri, bbox'ın koordinatlarını ve bbox'ın birden çok modunu algılamak için mevcut görüntü ölçeğinin logaritmasını kullanan Mean-Shift algoritmasını kullanmayı önerir. Ancak, etki, NMS ile birleştirilmiş güçlü bir sınıflandırıcı kullanmak kadar iyi olmayabilir. Etkisi iyidir Aşağıdaki şekil, temel hedef tespit sürecini göstermektedir.

1. Adım: RP oluşturun (bölge teklifi)

Adım 2: Her aday kutusuna bir güven derecesi (yani olası olasılık) vermek için sınıflandırma ağını kullanın

Adım 3: Her bir aday kutusunun konumunu iyileştirmek için regresyon ağını kullanın

Dördüncü adım: Son olarak, aday kutuları kaldırmak ve gerekli olanı bırakmak için NMS algoritması uygulanır.

Üç, NMS ilkesi

Önce birkaç kavramı tanıtın:

  • Aday kutusu listesi B
  • B S'ye karşılık gelen güven listesi
  • B'ye en yüksek güvene sahip kutu M'dir
  • Nihai test sonucu D
  • IOU değeri (burada genişletilmez)
  • Yapay olarak ayarlanmış eşik Nt

Sınırlandırma Kutusu listesi B ve karşılık gelen S güvenilirlik düzeyi için aşağıdaki hesaplama yöntemi kullanılır: En büyük puana sahip algılama kutusu M'yi seçin, B kümesinden çıkarın ve nihai algılama sonucuna D ekleyin. Genellikle B Kalan algılama kutusundaki kutular ve Nt eşiğinden büyük olan M'nin IoU'su B'den kaldırılır. B boşalana kadar bu işlemi tekrarlayın.

Örtüşme oranı (örtüşme alanı oranı IOU) eşiği

Yaygın olarak kullanılan eşik 0.3 ~ 0.5'tir.

Sağ alt köşedeki koordinatlara veya alana göre sıralanabilen sıralama kullanılır veya SVM gibi sınıflandırıcılar tarafından elde edilen puan veya olasılık olabilir. R-CNN'de, puana göre sıralanır. Aşağıda gösterilecek özel bir örnek verilmiştir.

Tıpkı yukarıdaki resimdeki gibi, bir aracı bulun ve son olarak algoritma bir sürü kutu bulur.Hangi dikdörtgen kutuların işe yaramaz olduğunu ayırt etmemiz gerekir. Maksimum olmayan bastırma yöntemi: ilk önce 6 dikdörtgen kutu olduğunu varsayın ve sınıflandırıcının sınıflandırma olasılığına göre sıralayın Küçükten büyüğe araçların olasılıklarının sırasıyla A, B, C, D, E ve F olduğunu varsayın.

(1) Maksimum olasılık dikdörtgeni F'den başlayarak, A ~ E ve F arasındaki örtüşme IOU'nun ayarlanmış bir eşikten daha büyük olup olmadığını belirleyin;

(2) B, D ve F'nin üst üste binmesinin eşiği aştığını varsayarak, ardından B ve D'yi atın; ve tuttuğumuz ilk dikdörtgen çerçeve F'yi işaretleyin.

(3) Kalan dikdörtgen kutular A, C ve E'den en yüksek olasılığa sahip E'yi seçin ve ardından E ile A, C arasındaki örtüşme derecesini değerlendirin. Örtüşme derecesi belirli bir eşikten daha büyüktür, sonra atın ve bizim gibi E'yi işaretleyin. Kalan ikinci dikdörtgen kutu.

Tutulan tüm dikdörtgenleri bularak bunu her zaman tekrarlayın.

Kod örneği

R-CNN'de NMS, her aday kutuyu sınıflandırıcıya gönderen ve sınıflandırıcının sınıf sınıflandırma olasılığına göre sıralayan son bbox'ı belirlemek için kullanılır (makalede açgözlü-NMS olarak anılır). Ancak aslında, aynı zamanda sınıflandırılabilir de olabilir Önceden, bazı kutuları kaldırmak için NMS'nin basit bir sürümü kullanılıyordu.

Dördüncüsü, bir NMS sürecini basitçe simüle etmek için python kullanın

# python3

numpy'yi np olarak içe aktar

def py_nms (dets, eşik):

"" "Saf Python NMS temeli." ""

# x1, y1, x2, y2 ve puan ataması

x1 = dets

y1 = dets

x2 = dets

y2 = dets

puanlar = dets

# Her adayın alanı

alanlar = (x2-x1 + 1) * (y2-y1 + 1)

#order azalan puan sırasına göre sıralanır

order = score.argsort ()

keep =

order.size ise > 0:

i = sipariş

keep.append (i)

# Mevcut dikdörtgen kutunun en büyük olasılıkla ve diğer dikdörtgen kutularla kesişiminin koordinatlarını hesaplayın. Numpy'nin yayın mekanizması bir vektör elde etmek için kullanılacaktır

xx1 = np.maximum (x1 , x1)

yy1 = np.maximum (y1 , y1)

xx2 = np.minimum (x2 , x2)

yy2 = np.minimum (y2 , y2)

# Kesişen kutunun alanını hesaplayın, dikdörtgen kutular kesişmediğinde, w veya h'nin negatif bir sayı olarak hesaplanacağına dikkat edin, bunu 0 ile değiştirin

w = np.maximum (0,0, xx2-xx1 + 1)

h = np.maximum (0,0, yy2-yy1 + 1)

inter = w * h

# Örtüşme IOU derecesini hesaplayın: örtüşme alanı / (alan 1 + alan 2-örtüşme alanı)

ovr = inter / (alanlar + alanlar-arası)

# Örtüşme derecesi eşikten yüksek olmayan dikdörtgen çerçevenin indeksini bulun

inds = np.where (ovr < = harman)

# Sipariş sırasını güncelleyin, çünkü daha önce elde edilen dikdörtgen kutunun dizini, orijinal sıra sırasındaki dikdörtgen kutunun dizininden 1 daha küçüktür, bu nedenle bunu 1 geri ekleyin

sipariş = sipariş

geri dön

# Ölçek

__name__ == "__main__" ise:

dets = np.array ()

eşik = 0.35

keep_dets = py_nms (dets, eşik)

yazdır (keep_dets)

baskı (dets)

Beş, NMS kaybı

Çok kategorili tespit görevleri için, her kategoride ayrı ayrı NMS gerçekleştirilirse, tespit sonucu farklı kategorilerde sınıflandırılmış iki hedef içerdiğinde ve bunların IoU'ları büyük olduğunda, kabul edilemez sonuçlar elde edileceğini belirtmek gerekir. Aşağıda gösterildiği gibi:

İyileştirmenin bir yolu, NMS kaybının bir kısmını kayıp işlevine eklemektir. NMS kaybı, sınıflandırma kaybı ile aynı şekilde tanımlanabilir:

Yani, gerçek sütun tipi u'ya karşılık gelen log kaybı ve p, C kategorilerinin tahmin edilen olasılığıdır. Aslında sınıflandırma hatasını arttırmaya eşdeğerdir.

YOLO V1'den YOLO V3'e hedef tespit algoritmasını anlamak için bir makale
önceki
İnanılmaz! Ateş ejderhası bahçesi bir ışık denizine dönüşüyor, Maoming, Gaozhou'daki bu meyve bahçesinde zengin olmak için bilim ve teknoloji yoluna bakın!
Sonraki
Guangdong kız öğrenci yanlışlıkla paylaşılan bir arabayı sürdü ve başka bir paylaşılan arabanın ardından bir Mercedes-Benz'e çarptı
"Game of Thrones" un veri bilimi ile yorumu: Demir Taht'a sonunda kim ulaşacak?
İçten yanma! Devrildi! 26 Nisan'da Şangay'da birkaç trafik kazası daha meydana geldi!
Tianguan Villasına doğru yürüyün: Jiajiang Lezzetini Tadın ve Tianguan Efsanesini Dinleyin (Fotoğraf)
Küçük bir işleme alanını araştırın! Zhangmutou Kasabası, yasadışı kanalizasyon boşaltımına karşı yaptırım başlattı
Zhouzhuang'da drama var: Bai Xianyong hayalini Zhouzhuang'da arıyor ve Kunqu Operası'nın mirasını hayal ediyor
Chaozhou "Ulusal Sigorta" Guangji Köprüsü vuruldu ve izlendi: Uzmanlar iskelelerin hasarsız olduğunu belirledi ve tüm köprü yeniden açıldı
Turing Konferansı 2019 | Prelüd: Tsinghua Daniel Liu Yunhao'nun Gözü Her Şeyin İnternetinde
Bir yağmur fırtınasında, Xinfeng, Shaoguan'da iki kişi nehirdeki "izole adada" mahsur kaldı ve itfaiyeciler "kaderi" teslim etti.
İmzalamanız gereken bir "tutuklama emriniz" var mı? "Kamu güvenliği, savcı ve hukuk" gibi davranan dolandırıcılara karşı dikkatli olun
2019 İkinci Çeyrek için Changsheng Fonu Yatırım Stratejisi Raporu
Dünya Bahçe Turu-Adachi Sanat Müzesi, Shimane, Japonya
To Top