FAIR'in en son görsel makalelerinin toplanması: FPN, RetinaNet, Mask ve Mask-X RCNN (kod uygulaması dahil)

Bu makale, Lei Feng'in altyazı grubu tarafından derlenen teknik bir blogdur.Orijinal başlık, Son FAIR CV Papers-FPN, RetinaNet, Mask ve Mask-X RCNN'dir ve yazar Krish.

FPN, RetinaNet, Maske ve Mask-X RCNN

Tercüme | Li Shiyu Lin Lihong Bitirme | Fan Jiang

Bu makale, temel modüldeki FAIR inovasyonundan CNN hakkında konuşmaya başlayacak ve ardından tek vuruşlu nesne algılamaya başlayacak. Daha sonra örnek segmentasyonunun yeniliğinden bahsedeceğim. Son olarak, zayıf yarı denetimli modeller kullanarak örnek segmentasyonunu genişletmekten bahsedelim.

FPN

Feature Pyramid Network (FPN), 2017 yılında CVPR'de yayınlandı. Son iki yılda bilgisayar vizyonunun gelişimine dikkat ederseniz, karanlıkta böyle mükemmel algoritmalar olduğunu bilirsiniz ve yapmanız gereken şey büyük tanrıların onları yazmasını, onları eğitmesini ve kaynak kodunu açmasını beklemek. Cidden, FPN makalesi çok iyi yazılmış ve iştahıma uyuyor. Basit ve uygulaması kolay, çeşitli görevler için iyi olan temel bir model oluşturmak kolay bir iş değildir. Ayrıntılara girmeden önce, FPN'nin ResNet veya DenseNet gibi ortak bir ağ olabilecek bir özellik çıkarma ağına dayandığını vurgulayacağım. En sık kullandığınız derin öğrenme çerçeveniz altında önceden eğitilmiş bir model alın ve FPN'yi uygulamak için kullanılabilir.

Görüntüdeki hedef boyutun boyutu değişir ve veri setindeki nesneler tüm ölçekleri kapsayamaz, bu nedenle insanlar CNN'in öğrenmesine yardımcı olmak için görüntü piramitlerini (farklı çözünürlüklerde alt örnekleme) kullanır. Ancak bu hız çok yavaştır, bu nedenle insanlar tahmin etmek için yalnızca tek bir ölçek kullanır ve bazı insanlar tahmin etmek için ara sonuçları kullanır. İkincisi, öncekine çok benzer, ancak özellik haritasında. Düşünmenin daha kolay yolu, çözünürlüğü artırmak ve segmentasyonun sonucunu elde etmek veya 1x1 evrişim veya GlobalPool aracılığıyla sınıflandırmanın sonucunu elde etmek için birkaç kalıntı modül katmanından sonra bir aktarılmış evrişim katmanı eklemektir. Bu mimari, yardımcı bilgi ve yardımcı kayıp fonksiyonları olduğunda yaygın olarak kullanılır.

FPN'nin yazarı, yukarıdaki yöntemi geliştirmek için çok akıllıca bir yol kullandı. Yanal bağlantıya ek olarak, yukarıdan aşağıya bir bağlantı da eklenmiştir. Bu etki çok iyidir. Yazar, yukarıdan aşağıya sonuçları ve yanal sonuçları bir araya getirerek birleştirir. Buradaki nokta, düşük seviyeli özellik haritalarının anlambilim açısından yeterince zengin olmadığı ve doğrudan sınıflandırma için kullanılamayacağı, derin özelliklerin ise daha güvenilir olduğudur. Yanal bağlantı ile yukarıdan aşağıya bağlantının birleştirilmesi, farklı çözünürlüklerde özellik haritalarını elde edebilir ve hepsi orijinal en derin özellik haritasının anlamsal bilgilerini içerir.

Model ayrıntıları

  • Aynı boyuttaki Piramit Özellikli haritalar aynı seviyeye aittir. Her seviyenin son katmanının çıktısı, ResNet'in ikinci, üçüncü, dördüncü ve beşinci modüllerinin son katmanı gibi piramidin özellik haritasıdır. Gerektiği gibi ayarlayabilirsiniz.

  • Yanal bağlantı: 1x1 evrişim yoluyla ve yukarıdan örneklenmiş yukarıdan aşağıya bağlantı sonucunun eklenmesi ve toplanması. Yukarıdan aşağıya parça, kaba taneli unsurlar üretir ve aşağıdan yukarıya parça, yanal bağlantılar yoluyla ince taneli özellikler ekler. Orijinal metnin resimsel temsili çok açık.

  • Orijinal metin, FPN tasarımının sadeliğini ve etkileyici etkisini göstermek için yalnızca basit bir örnek kullanır; bu, daha karmaşık araştırmalarda kullanılamayacağı anlamına gelmez.

Daha önce de söylediğim gibi, bu, hedef algılama, örnek bölümleme, hareket tanıma ve yüz tanıma gibi çeşitli uygulamalarda kullanılabilen her derde deva bir ağdır. Makale, sadece birkaç ayda yaklaşık 100 kez alıntı yapıldı. Makalenin başlığı "Hedef Tanıma için Piramit Özellik Ağı" olduğundan yazar, FPN'yi bölgesel bir öneri ağı (RPN) olarak Faster-RCNN'ye getiriyor. Orijinal metinde birçok önemli ayrıntı ayrıntılı olarak açıklanmıştır.Zaman kazanmak için burada birkaç önemli noktayı listeleyeceğim.

Deneysel noktalar

FPN'yi RPN olarak kullanın - Tek çözünürlüklü bir özellik haritasını değiştirmek için FPN'nin çoklu çözünürlük özelliğini kullanın ve her seviyede aynı boyuttaki çapayı kullanın (çünkü özellik haritası ölçekleri çok ölçekli çapanın etkisini elde etmek için farklıdır). Piramidin her seviyesi benzer bir anlambilim düzeyini paylaşır.

Daha hızlıRCNN-Process FPN, görüntü piramidine benzer şekilde. ROI, aşağıdaki formül aracılığıyla belirli bir seviyeye atanır.

w ve h sırasıyla genişlik ve yükseklik anlamına gelir. k, ROI'nin atandığı düzeydir,

Giriş orijinal görüntü boyutunun (224x224) katmanını temsil eder.

En iyi sonuçlar basit ve kaba bir şekilde COCO veri setinde elde edildi.

Başlangıçtaki ifadeyi kanıtlamak için her modül üzerinde tek değişkenli bir deney gerçekleştirildi.

DeepMask ve SharpMask mimarisine dayalı olarak, FPN'nin görüntü segmentasyon önerisi oluşturmak için kullanılabileceği gösterilmiştir.

Uygulama detaylarıyla ilgilenen öğrenciler orijinal metni okumalıdır.

Not: FPN, ResNet gibi bir omurga modeline dayanmaktadır. Yaygın adlandırma yöntemi şudur: omurga ağ katmanı numarası-FPN, örneğin: ResNet-101-FPN

Kod

Caffe2 (resmi uygulama) -https: //github.com/facebookresearch/Detectron/tree/master/configs/12_2017_baselines

Caffe-https: //github.com/unsky/FPN

PyTorch-https: //github.com/kuangliu/pytorch-fpn (yalnızca ağ)

MXNet-https: //github.com/unsky/FPN-mxnet

Tensorflow-https: //github.com/yangxue0827/FPN_Tensorflow

RetinaNet

Aynı ekip, aynı çalışma, bu makale 2017 yılında ICCV'de yayınlandı. Bu makale iki odağa sahiptir: genel kayıp işlevi Odak Kaybı (FL) ve tek aşamalı hedef algılama modeli RetinaNet. Bu ikisinin kombinasyonu, COCO hedef tespit görevinde çok kullanışlıdır ve az önce bahsedilen FPN'yi geride bırakır.

Odak Kaybı

Bu son derece kompakt ve özlü bir tasarımdır. Ağırlıklı kayıp işlevine aşina iseniz, bu temelde aynı prensiptir, ancak daha çok sınıflandırılması zor olan örneklere odaklanır. Formülü aşağıdaki gibidir, anlaşılması kolaydır

Ayarlanabilir bir hiperparametredir.

Numune sınıflandırmasının olasılığını gösterir. İzin Vermek

0'dan büyük olması, doğru sınıflandırılmış şablonun ağırlığını azaltacaktır.

Anlam, geleneksel ağırlıklı kayıp fonksiyonundaki ile aynıdır. Gazetede aradı

Kayıp işlevi. Bunun yalnızca sınıflandırma için bir kayıp işlevi olduğunu ve RetinaNet'in hedef algılama görevinde sorunsuz L1 kaybıyla kullanılması gerektiğini unutmayın.

RetinaNet

Tek aşamalı bir dedektör aslında FAIR tarafından yapılmıştır ki bu şaşırtıcıdır. YOLOv2 ve SSD, şimdiye kadar tek aşamalı inceleme alanına hakim oldu. Ancak yazarın dediği gibi, hiçbiri şu anda en iyi sonuçları elde edemiyor (iki aşamalı dedektör dahil). Yine tek aşamalı bir dedektör olan RetinaNet, hızı ve etkiyi dikkate alarak yaptı. Yazar, bu etkinin ağın iyileştirilmesinden ziyade yeni kayıp işlevi nedeniyle elde edilebileceğini belirtti (ağ FPN kullanır). Tek aşamalı dedektörler çok sayıda örnek dengesizliği, çok fazla arka plan örneği ve çok az nesne örneği ile karşı karşıya kalacaktır. Ağırlıklı kayıp sadece dengeyi sağlayabilirken, FL esas olarak zor vakalar içindir ve ikisi de birleştirilebilir.

Dikkat etmeniz gerekiyor

İki aşamalı detektörün dengesizlikler konusunda endişelenmesine gerek yoktur, çünkü ilk aşama neredeyse tüm dengesizlikleri ortadan kaldırır.

Ağ, iki bölümden oluşur - omurga ağı (FPN gibi özellik çıkarımı için kullanılır) ve sınıflandırma ve sınır regresyonu için iki alt ağ.

Farklı bileşenleri seçerken performansta çok az fark vardır.

Anchor veya AnchorBoxes, RPN'deki Anchor ile aynıdır, her ikisi de kayan pencere üzerinde ortalanır ve bir en boy oranına sahiptir. Ölçek, en boy oranıyla aynıdır ve ölçek,

İçin

En boy oranı sırasıyla 1: 2, 1: 1, 2: 1'dir.

Her bir FPN seviyesi, alt ağ üzerinden çapa ile ilgili çıktıyı verir.

PyTorch-https: //github.com/kuangliu/pytorch-retinanet

Keras-https: //github.com/fizyr/keras-retinanet

MXNet-https: //github.com/unsky/RetinaNet

Maske R-CNN

Mask R-CNN de aynı takımdan. ICCV'de 2017'de yayınlandı, görüntü örneği segmentasyonu için kullanıldı. Uzman olmayan kişiler için, sınırlayıcı bir kutu değil, temel bir nesne algılamadır.Görev, nesnenin doğru bir segmentasyon haritasını vermektir! Geriye dönüp bakıldığında, insanlar bunun çok basit bir fikir olduğunu söyleyebilirler, ancak uygulanabilir ve önceden eğitilmiş model için hızlı bir uygulama sağlayan SOTA haline geldi.Bu harika bir iş!

Uzun lafın kısası, eğer Faster-RCNN'yi biliyorsanız, o zaman çok basit olduğunu bilirsiniz, segmentasyona başka bir başlık (dal) ekleyin. Genellikle sınıflandırma, sınır regresyonu ve segmentasyon için kullanılan 3 dal vardır.

Yine, bu yaklaşım, verimliliği artırmak için basit ve temel sinir ağı tasarımını kullanmaya odaklanır. Hiçbir şey onların SOTA almalarına izin vermedi. (Doğruluğu artırmak için tüm yöntemlere uygulanabilecek bazı ücretsiz teknolojiler (OHEM, çok boyutlu eğitim / test vb.) Vardır. Süslü uygulamalar bunları kullanmaz. Ücretsiz oldukları için doğruluk oranı kesinlikle artacaktır. Ancak bu Bu makale kapsamında değil)

Bu makaleyi çok beğendim, çok basit. Ancak, bazı makaleler bazı çok basit şeyler hakkında çok fazla açıklama yapıyor ve bunu başarmanın net bir yolunu veriyor. Örneğin, birden çok maske ve bağımsız maske (softmax ve sigmoid) kullanın. Ek olarak, çok fazla ön bilgi edinmesi ve her şeyi açıklaması gerekmez (bazen bir aldatmaca olabilir). Birisi makaleyi ciddiye alırsa, yeni fikirlerinin mevcut olgun ortamda işe yaramayacağı aşikar olacaktır. Aşağıdaki açıklamada, Hızlı RCNN hakkında temel bir anlayışa sahip olduğunuz varsayılmaktadır:

FasterRCNN'ye benzer ve iki aşaması vardır: İlk aşama RPN'dir.

Segmentasyon maskesini (bir FCN) tahmin etmek için paralel bir dal eklenir.

Kayıp

Toplam

ROIPool'u ROIAlign katmanı ile değiştirin. Bu aslında (x / spatial_scale) kesirini ROIPool'daki gibi bir tam sayıya yuvarlar. Bunun yerine, bu kayan nokta değerlerinde pikselleri bulmak için çift doğrusal enterpolasyon kullanır.

Örneğin: ROI'nin yüksekliğinin ve genişliğinin sırasıyla 54 ve 167 olduğunu varsayalım. Uzamsal ölçek temelde görüntü boyutu / FMap boyutudur (H / h), bu durumda adım adım da denir. Genellikle: 224/14 = 16 (H = 224, h = 14).

  • ROIPool: 54/16, 167/16 = 3,10

  • ROIAlign: 54/16, 167/16 = 3.375, 10.4375

  • Şimdi, örnekleme yapmak için çift doğrusal enterpolasyonu kullanabiliriz

  • ROIAlign çıktı şekline göre (örneğin, 7x7), benzer mantık ilgili bölgeyi uygun bölgelere böler.

  • İlgileniyorsanız, Chainer tarafından python'da uygulanan ROIPooling'e başvurabilir ve ROIAlign'ı kendiniz uygulamayı deneyebilirsiniz.

  • ROIAlign kodu farklı kitaplıklarda kullanılabilir, lütfen aşağıda verilen kod havuzunu kontrol edin.

Çekirdek ResNet-FPN'dir

PS-I ayrıca yakında burada yayınlanacak olan Mask-RCNN hakkında ayrı bir makale yazdım.

Kod

Resmi Caffe2-https: //github.com/facebookresearch/Detectron/tree/master/configs/12_2017_baselines

Keras-https: //github.com/matterport/Mask_RCNN/

PyTorch-https: //github.com/soeaver/Pytorch_Mask_RCNN/

MXNet-https: //github.com/TuSimple/mx-maskrcnn

Maske-X RCNN

Başlıktan da anlaşılacağı gibi, bu segmentasyonla ilgili. Daha doğrusu, örnek segmentasyondur. Bilgisayarla görmedeki segmentasyon standart veri seti gerçek dünyada çok nadiren faydalıdır. COCO veri kümesi, yalnızca 80 nesne sınıfıyla 2018'de bile en popüler ve zengin veri kümesidir. Bu çok kullanışlı bile değil. Buna karşılık, nesne tanıma ve algılama veri kümeleri (OpenImages gibi) yaklaşık 6000 sınıflandırmaya ve 545 algılamaya sahiptir. Bununla birlikte, Stanford Üniversitesi, 3000 nesne içeren Görsel Genom veri kümesi adı verilen başka bir veri kümesine sahiptir! Öyleyse neden bunu kullanmıyorsunuz? Her kategori altındaki nesnelerin sayısı çok azdır, bu nedenle DNN'nin böyle bir veri kümesi üzerinde iyi çalışmasının bir yolu yoktur, bu nedenle insanlar bu veri kümesini gerçek dünya için zengin ve yararlı olmasına rağmen kullanmazlar. Lütfen veri kümesinin herhangi bir bölümleme ek açıklaması bulunmadığını, yalnızca 3000 kategoride nesne algılama (çerçeve) etiketi bulunduğunu unutmayın.

Dördüncü makaleden bahsetmişken, bu aynı zamanda çok güzel bir makale. Tahmin edilebileceği gibi, sınırlar ve bölümleme notları alanında çok fazla fark yoktur, ancak ikincisi, öncekinden çok daha doğrudur. Öyleyse, Görsel Genom veri setinde 3000 sınıfımız olduğundan, neden segmentasyon çıktısı vermek için kullanmayalım? Yaptıkları şey budur Bu, başarmaya çalıştığınız görevi tam olarak denetlemediğiniz, zayıf denetimli (veya zayıf yarı denetimli) öğrenme olarak adlandırılabilir. COCO + Görsel Genom veri setini kullandıkları için yarı denetimli olarak da ilişkilendirilebilir. Bölünmüş etiket ve kenarlık etiketi. Bu kağıt açık ara en havalı.

Maske RCNN üzerine inşa edilmiştir

Eğitim için maskeli giriş ve maskesiz giriş

Maske ve bbox maskesi arasına ağırlık dönüştürme işlevi ekleyin

Eğitim süreci sırasında, biri tüm veri setinde bbox kaybını geri yayabilir, ancak diğeri sadece girdi gerçek verilerinde (veri seti A) maske ile kaybı geri yayabilir.

Çıkarım sürecinde, bir girdi iletilirken, işlevi, maske özelliğinin çarpılması gereken ağırlığı tahmin eder. Modelin bir uzantısı, doğruluğu artırmak için MLP + FCN modellerinin bir birleşimini kullanır. Burada bunun yerine basit bir MLP kullanın.

Aşağıdaki şekilde gösterildiği gibi, iki veri seti: A, COCO veri setidir ve B, VG veri setidir.Farklı girişlerin (bbox ve maske) herhangi bir giriş için farklı kayıpları hesapladığına dikkat edin.

Backpropagation hesaplamak için bu iki kayıp yol açacaktır

Farkın ağırlığı, COCO ve VG arasındaki ortak kategoride iki kayıp (bbox ve maske) varken, kalan kategorilerde yalnızca bir tane (bbox) olduğu için ortaya çıkar. Bir çözüm var:

Maskeyi geri yayarken, tahmin edilen maske ağırlığını hesaplayın

Ağırlık aktarım işlevli transfer parametresinin gradyanı, ancak çerçeve ağırlığını içermez

.

işlevinin maskenin ağırlığını tahmin ettiği yer

Hiçbir ek açıklama bulunmadığından, VG veri kümesinde doğruluk gösteremezler. Böylece bu fikri sonucu ispatlayabilecek bir veri kümesine uyguladılar. PASCAL-VOC, COCO'da çok yaygın olan 20 dereceye sahiptir. Bu nedenle, eğitim için VOC sınıflandırma etiketlerini kullanırlar ve bu 20 sınıfı eğitmek için yalnızca COCO'nun bbox etiketlerini kullanırlar. COCO veri setindeki 20 sınıf için örnek segmentasyon görevinin sonuçları aşağıdaki gibidir ve bunun tersi, bu iki veri setinin kesinlik vermesi nedeniyle sonuçlar aşağıdaki tabloda listelenmiştir.

Not: Faydalı olursa, ilginç şeyler yapmak için kilo tahmin yöntemlerini kullanma hakkında bir makale yazmak için makaleyi okumayı planlıyorum.

Kod

PyTorch

Referanslar

Lin, Tsung-Yi, Piotr Dollár, Ross B. Girshick, Kaiming He, Bharath Hariharan ve Serge J. Belongie. "Nesne Algılama için Özellik Piramit Ağları." * 2017 IEEE Konferansı Bilgisayar Görüsü ve Örüntü Tanıma (CVPR) * (2017 ): 936-944.

Lin, Tsung-Yi, Priya Goyal, Ross B. Girshick, Kaiming He ve Piotr Dollár. "Yoğun Nesne Algılama için Odak Kaybı." * 2017 IEEE Uluslararası Bilgisayar Görüşü Konferansı (ICCV) * (2017): 2999-3007.

He, Kaiming, Georgia Gkioxari, Piotr Dollár ve Ross B. Girshick. "Mask R-CNN." * 2017 IEEE International Conference on Computer Vision (ICCV) * (2017): 2980-2988.

Hu, Ronghang, Piotr Dollár, Kaiming He, Trevor Darrell ve Ross B. Girshick. "Her Şeyi Bölümlere Ayırmayı Öğreniyorum." * CoRR * abs / 1711.10370 (2017): n. Sayfa.

Ren, Shaoqing, Kaiming He, Ross B. Girshick ve Jian Sun. "Daha Hızlı R-CNN: Bölge Teklif Ağlarıyla Gerçek Zamanlı Nesne Algılamaya Doğru." * Desen Analizi ve Makine Zekası üzerine IEEE İşlemleri * 39 (2015): 1137- 1149.

Chollet, François. "Xception: Derinlemesine Ayrılabilir Dönüşümlerle Derin Öğrenme." 2017 IEEE Konferansı Bilgisayarla Görü ve Örüntü Tanıma (CVPR) (2017): 1800-1807.

Lin, Tsung-Yi, Michael Maire, Serge J. Belongie, James Hays, Pietro Perona, Deva Ramanan, Piotr Dollár ve C. Lawrence Zitnick. "Microsoft COCO: Bağlamda Ortak Nesneler." ECCV (2014).

Krasin, Ivan ve Duerig, Tom ve Alldrin, Neil ve Ferrari, Vittorio ve diğerleri. OpenImages: Büyük ölçekli çok etiketli ve çok sınıflı görüntü sınıflandırması için herkese açık bir veri kümesi. Veri kümesi https://github.com/openimages adresinden edinilebilir

Krishna, Ranjay, Congcong Li, Oliver Groth, Justin Johnson, Kenji Hata, Joshua Kravitz, Stephanie Chen, Yannis Kalantidis, David A. Shamma, Michael S. Bernstein ve Li Fei-Fei. "Görsel Genom: Crowdsourced Kullanarak Dil ve Vizyonu Birleştirme Yoğun Görüntü Açıklamaları. "International Journal of Computer Vision 123 (2016): 32-73.

Daha fazla makale için Leifeng.com'u takip edin Leifeng.com Leifeng.com

Leifeng Subtitle Group'un (leiphonefansub) WeChat hesabını arkadaş olarak ekle

Yapay Zeka Gönüllüsü Olmak İçin "Katılmak istiyorum" açıklaması

Onuncu nesil geliyor, Samsung Galaxy S10 serisi cep telefonlarında yeni bir çağ başlatıyor
önceki
White Tee kurtarıcısı burada! #FFFFFFT sınırlı T-Shirt özel temizleyicisini piyasaya sürdü!
Sonraki
Eski bir izleyici olarak, bu yılki IFA'nın ne kadar hayal gücü var?
"Venom" yaratıcı orijinal resimler sıcak küresel ödül koleksiyonunda, sadece sor, gelmeye cesaretin var mı?
Çip programı programlama sürecinde her açıdan nasıl korunur?
Akıllı telefon bile değil mi? 2019MWC HTC, çığır açan yeni 5G ürünleri sunuyor
"Hiç" ten "Hala var" a - cep telefonunun iniş ve çıkışları
Makine öğrenimine nasıl başlayacağınızı bilmiyor musunuz? Bu bir başlangıç kılavuzu!
"Otel Sihirbazı 3: Çılgın Tatiller" gişede 150 milyon kırdı ve süper popüler jöle baba ve oğul seyirciyi devirdi
Elde kesilmiş kağıt, eğlenceli ve eğlenceli. Bir kardeş mürekkep tanklı yazıcı yeterli
Kova telefonunun kullanımı neden daha rahat?
"Alpha: The Return of the Wolves" Kuzey Amerika'da aynı reytinglere sahip "Youth Pie" bu yazın en büyük sürpriziyle övgü aldı
BYD PRO EV ve DM araba serisinin avantajları nelerdir?
Elektronik katma değer vergisi faturalarının uygulanması Lazer yazıcıların büyülü etkisi nedir?
To Top