Nesne tanıma için bir aktarım öğrenme araç zinciri

Lei Feng Net Not: Bu makale, Lei Feng'in altyazı grubu tarafından derlenen teknik bir blogdur, orijinal başlık Nesne Algılama için Tam Bir Transfer Öğrenme Araç Zinciri, yazar Ralph Fehrer.

Çeviri | Long Keyu Yu Zhipeng Tarafından Düzenlendi | Fan Jiang

Transfer öğrenimi, eğitilmiş modelin, önceden eğitilmiş modelin parametrelerinin ince ayarını yaparak benzer veya yalnızca küçük farklılıkları olan farklı görevlere uygulanmasını ifade eder. Bu yöntem sayesinde, en iyi performans gösteren bazı derin öğrenme modellerine dayanan diğer yüksek performanslı modelleri elde edebiliriz. Basit gibi görünse de, transfer öğreniminin ön işleme, inşa ve test etme alanlarında hala çok fazla araştırma alanı vardır.

Bu eğitim, transfer öğrenmede anlamsal bölümleme ile ilgili en temel içeriğin bazılarını içeren bir araç zinciri (süreçteki araçlar ve ilgili kitaplıklar koleksiyonu) sağlamayı amaçlamaktadır. Aşağıdaki eğitim, üretim kullanılabilirliği ile tipik bir geçiş öğrenme modeli oluşturmanıza yardımcı olacaktır. Temelde, bazı özel araçların, çerçevelerin ve modellerin bir kombinasyonudur. Kullanırız:

  • google-image-downloader, csv görüntüsünü almak için görsel URL bağlantısı üzerinden Google'a bir arama isteği gönderir

  • Veri setini etiketlemek, dışa aktarmak ve dönüştürmek için Labelbox

  • Bir tf modeli: TensorFlowun COCO veri kümesinde eğitilmiş model hayvanat bahçesi

  • TensorFlow Object Detection API: Transfer öğrenimi ve çıkarım için uygulanır

  • Intel GPU'lu bir win10 bilgisayar

Her bir adım, aşağıdaki açıklama boyunca genişler:

COCO veri setinde önceden eğitilmiş modele ince ayar yaparak şeftalileri tespit etmek istiyoruz. COCO veri setinin model eğitimi hedefi elmaları ve portakalları tespit etmek olduğundan, önceden eğitilmiş modelin üst kısmında yalnızca bazı parametreleri ayarlamak yeterlidir.

Lütfen bu eğitimde çok başarılı bir model oluşturmayacağımızı unutmayın, çünkü bu 1. adımda çok daha büyük bir model gerektirir ve birkaç kat daha uzun sürer. Size esas olarak, özel bir veri kümesinin nasıl oluşturulacağından başlayarak ve son olarak ince ayarlanmış bir model elde ederek, diğer benzer senaryolara uygulanabilecek bir geçiş öğrenme araç zinciri göstermeyi taahhüt ediyoruz.

Bu araç zincirindeki her adım için birçok alternatif vardır ve farklı görevler için transfer öğrenmeyi uygulamanın birçok yolu vardır. Ancak mümkün olan en kısa sürede başlamak istiyorsanız, bu araç zincirini deneyebilir ve ardından her adımı mümkün olduğunca ihtiyaçlarınıza göre ayarlayabilirsiniz.

Ayrıca karşılık gelen bir GitHub projesi sağlıyoruz.Yukarıdaki klasör, ihtiyacımız olan dosyaların çoğunu ve işlem sırasında oluşturulan dosyaları içerir. Tüm projeyi yeniden oluşturmak için klonlayabilir veya projeyi genişletmek ve değiştirmek için dallar oluşturabilirsiniz.

1. Bir veri kümesi oluşturun

Mevcut veri setinde tespit etmek istediğiniz nesnenin bir veri setini bulamazsanız, resimleri kendiniz bulmanız ve etiketlemeniz gerekir. Bu acı verici işlemi azaltmanıza yardımcı olabilecek birkaç araç var: sonraki birkaç adım, çok basit bir arayüze sahip bulut tabanlı bir etiketleme aracı olan etiket kutusunun nasıl kullanılacağını kısaca açıklıyor. Daha ayrıntılı talimatlar öğrenmek istiyorsanız, etiket kutusu belgelerini okuyabilirsiniz.

1.1 Görüntü URL'lerini toplayın

Şeftali resimlerinin veri setini bulamadığımız için, temel veri setimizi oluşturmak için Google'ın görsel aramasını kullandık. Google'dan binlerce görselin manuel olarak indirilmesi çok zahmetli ve zaman alıcıdır. Neyse ki, komut dosyası dosyaları aracılığıyla Google'a arama istekleri göndermemize yardımcı olacak araçlar var:

  • Google-images-download.py komut dosyasını komut dosyası klasörüne kopyalayın

  • Mevcut klasördeki komut istemini açın

  • Aşağıdaki komutu çalıştırın

  • Veri (şeftali) klasörümüz artık şeftali resminin URL bağlantısını içeren bir image_urls.csv dosyasına sahip olacaktır.

    1.2 Resimleri açıklama

    Bu adımda, bir etiket kutusu projesi oluşturuyoruz, image_urls.csv dosyamızı içe aktarıyoruz ve ardından resimleri etiketliyoruz.

  • Bir etiket kutusu projesi oluşturun ve image_urls.csv dosyasını içe aktarın

  • (İsteğe bağlı) Etiketleme arayüzünü uyarlayın

  • Etiketleme için etiket kutusunun anlamsal bölümleme arayüzünü kullanın

  • Etiketli veri kümelerini json biçiminde çıktılar

  • Json formatındaki veri setini COCO formatına dönüştürmek için bu komut dosyasını kullanın

  • Lütfen dikkat: TFRecords dosyaları oluşturmak için, coco dosyalarını eğitim seti, doğrulama seti ve test setine bölmemiz gerekir. Birkaç bağımsız etiket kutusu projesi oluşturabilir ve ardından yukarıdaki işlemleri birkaç kez tekrarlayabilirsiniz; ayrıca yukarıda oluşturulan şeyleri birkaç parçaya bölmek için manuel olarak veya komut dosyalarını kullanabilirsiniz.

    Aşağıdaki resim web tabanlı etiket kutusunun kullanıcı arayüzünü göstermektedir:

    Sonraki anlamsal bölümleme için şeftalileri etiketlemek için etiket kutusunu kullanın

    Bu adımın çıktısı üç json dosyasıdır, etiketler ve diğer bilgiler eğitim setimize, doğrulama setimize ve test setimize karşılık gelen COCO formatında saklanır. Eşlik eden GitHub deposundaki ilgili veri alt klasöründe örnek dosyaları bulabilirsiniz.

    2. Öğrenimi aktarın

    2.1 COCO etiket verilerini TFRecords veri formatına dönüştürme

    TensorFlow'un nesne algılama API'si, verilerin, anlaşılması kolay olmayan bir veri biçimi olan TFRecord biçiminde olmasını gerektirir. TFRecord'u doğru bir şekilde anlamak belirli bir zaman alır ve kolay değildir. Neyse ki Tensorflow, create_coco_tf.record.py gibi en yaygın biçimleri TFRecord'a dönüştürebilen bazı betikler sağlar. Bu komut dosyasının biraz değiştirilmiş bir sürümünü GitHub depomuzda bulabilirsiniz.

    TFRecords verileri oluşturun

  • GitHub deposuna karşılık gelen komut dosyası klasörüne cd yapmak için komut satırını kullanın

  • Aşağıdaki kodu çalıştırın

  • Komut dosyası, üç veri kümesinin her biri için bir kayıt dosyası çıkaracak ve görüntüyü veri alt dizinine indirecektir. Burada .record sonekine sahip üç dosya görebilirsiniz.

    2.2 Model parametrelerini yapılandırın

    Aşağıdaki adımlar, kullanacağınız modelin yanı sıra yeni sınıf ile orijinal eğitim sınıfı arasındaki ilişkiyle ilgilidir. Bu örnekte, şeftalileri izlemek için TensorFlow model hayvanat bahçesinde kullanılabilecek fast_rcnn_resnet50_coco modelini eğittik. Şeftali, orijinal veri setindeki elmalar ve cümlelerle güçlü bir korelasyona sahiptir.

  • Fast_rcnn_resnet50_cocoyu buradan indirin

  • İndirilen tar paketini açın

  • Üç .ckpt sonek dosyasını model klasörüne kopyalayın

  • Fast_rcnn_resnet50_coco yapılandırma dosyasını modelin alt klasörüne kopyalayın

  • Etiket eşlemesiyle label_map.pbtxt dosyası oluşturun

  • Yapılandırma dosyasını açın ve aşağıdaki değişiklikleri yapın

  • -İnce ayar kontrol noktasını şu şekilde değiştirin: fine_tune_checkpoint: "../model/model.ckpt"

    -Train_input_reader'ın input_path değerini şu şekilde değiştirin: input_path: "../data/coco_train.record"

    -Train_input_reader'ın label_map_path değerini şu şekilde değiştirin: label_map_path: "../data/label_map.pbtxt"

    -Val_input_reader'ın input_path değerini şu şekilde değiştirin:

    input_path: ../data/coco_val.record

    -Val_input_reader'ın label_map_path değerini şu şekilde değiştirin: label_map_path: "../data/label_map.pbtxt"

    7. (İsteğe bağlı) Diğer öğeleri gerektiği gibi değiştirebilirsiniz

    Yukarıdaki adımlardan sonra, label_map.pbtxt dosyasını oluşturduk ve daha hızlı_rcnn_resnet50_coco.config değiştirdik

    2.3 Eğitim modeli

    Bu bağlantıda, modeli önceki yapılandırmaya göre yeniden eğitiyoruz

  • Train.py dosyasını komut dosyasının alt klasörüne kopyalayın

  • Bu alt klasöre cd yapmak için komut satırını kullanın

  • Aşağıdaki kodu çalıştırın

  • Bu adımda oluşturulan dosyaların model / tren alt klasöründe olup olmadığını kontrol edin.

    3. Çıkarım grafiği oluşturun

    İlk önce aşağıdaki işlemleri 1 ~ 3 gerçekleştirin, oluşturulan .ckpt dosyası ve frozen_inference_graph.pb dosyası 4. adımda kullanılacak, muhakeme grafiğini ve 5. muhakeme ve değerlendirme modelinin çalışmasını kontrol edin:

  • Export_inference_graph.py'yi komut dosyaları klasörüne kopyalayın.

  • Komut satırını ve cd'yi komut dosyaları klasörüne açın

  • Aşağıdaki komut dosyasını çalıştırın:

  • Komut dosyası çalıştırıldıktan sonra, model / fine_tuned_model klasöründe birkaç .ckpt. * Dosyası ve bir frozen_inference_graph.pb dosyası oluşturulacaktır.

    4. Gerekçe şemasını kontrol edin

    TensorBoard, Tensorflow programlarını test etmek için güçlü bir bileşendir, Tensorflow grafiklerini daha iyi anlamak, hata ayıklamak ve optimize etmek için kullanabiliriz

  • TensorBoard'u pip komutuyla kurun

  • İmport_pb_to_tensorboard.py'yi komut dosyaları dizinine kopyalayın

  • Model / fine_tuned_model alt dizininde bir logdir dizini oluşturun

  • Komut satırını ve cd'yi komut dosyaları klasörüne açın

  • Aşağıdaki komut dosyasını çalıştırın:

  • Yeni oluşturulan logdir klasörü, tensorboard için gereken olay dosyalarını içermelidir.

    Tensorboard'u başlatmak için aşağıdaki adımları tamamlayın:

  • Komut satırını açın ve komut dosyaları dizinine cd yapın

  • Aşağıdaki komutu çalıştırın

  • TensorBoard çalışmaya başladıktan sonra, http: // localhost: 6006 adresini ziyaret edebilir ve eğitilmiş modeli GUI arayüzünde tekrar görebilirsiniz.

    TensorBoard hakkında daha fazla bilgi için TensorBoard belgelerine bakın veya bu öğreticiyi okuyun.

    5. Muhakeme ve Değerlendirme Modeli

    Model etkisini değerlendirmek için, adım 2.1'de oluşturulan coco_testdev.record'u çalıştırmak için 3. adımda oluşturulan frozen_inference_graph.pb dosyasını kullanıyoruz.

  • Detection_inference.py komut dosyasını scripts dizinine kopyalayın

  • İnfer_detections.py komut dosyasını scripts dizinine kopyalayın

  • Cd komut satırını komut dosyaları dizinine açın

  • Aşağıdaki komut dosyasını çalıştırın

  • Komut dosyasını / data / inference klasöründe çalıştırmanın sonuçlarını görüntüleyin. TensorFlow API ile ilgili daha fazla talimat için lütfen bu TensorFlow eğiticisine bakın.

    Modelin son eğitim etkisinden memnunsanız, model tamamlanmış sayılır.

    Orijinal blog sitesi https://medium.com/practical-deep-learning/a-complete-transfer-learning-toolchain-for-semantic-segmentation-3892d722b604

    Lei Feng Subtitle Group işe alıyor, aşağıdaki QR kodunu tarayın ve bize katılmak için "Lei Feng Subtitle Group + Name" not edin. Lei Feng Ağı Lei Feng Ağı

    Anne adayını sıcak arayışa sürükleyen "gebelik ürtikeri" ne tür bir hastalıktır?
    önceki
    Peri kadar güzel: Charm Blue X ön yüz pozlama
    Sonraki
    Huaishuling'de ilk kez en iyi 200 robotik uzmanı bir araya geldi. Bu 200 milyon RMB, Çin'in robotik teorisinin temelini oluşturabilir
    "Fatty Action Team" Nihai Poster Sergileme Makalesi Bao Beier, "Olağanüstü" Beceriler Gösteriyor
    UC Berkeley ICLR Makalesi: Golden Gate Köprüsü'ne bisiklet sürmek için pekiştirmeli öğrenme modeli nasıl öğretilir?
    "Yazlık" tarafından mağlup edilen 38 yaşındaki MUJI "markasını" nasıl kaybetti?
    Rei Kawakubo'nun 2017 MET GALA'sı at yakalamak için yeterli değil mi? Yang Mi ve Liu Wen'nin ne giydiğine bakın!
    Seyirciyi ağlatın! Tiyatro, bu yıl Ulusal Gün dosyalarında en çok istismar edilen Çin filmi olan "Jishhuitan" oldu.
    Bin yuan makineden üst düzey amiral gemisine! Kasım ayında yeni yayınlanan popüler cep telefonu önerileri
    1500 önemsiz oyun yaptıktan sonra para kazanmanın sırrını keşfettiler
    "Predator" özel gösterim etkinliği, derin V kar göğsünün kahramanı vücudunu gösteriyor
    Baidu'nun en iyi hacker konferansında 2 milyon nakit para biriktireceğini duydum DEF CON I :? ? ? (Özel spoyler)
    Kemerinizi bir gün bulamayacağınızı varsayarsak, onu çevreleyen bu nesnelerle değiştirebilirsiniz!
    Bir milyar insan sağlam bir marka için QQ "Didi Didi" uygulamasına aşinadır ve 4 yıldır başvurmaktadır!
    To Top