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ğı