Leifeng.com AI teknolojisi inceleme basını: Birkaç gün önce, 2019 Kaggle Freesound Audio Annotation Challenge sona erdi ve yarışmanın sonuçları nihayet açıklandı. Yarışmacılardan Eric BOUTEILLON, global sorunsuz ödeme çözümü sağlayıcısı Ingenico Group'un ürün liderlerinden biri olan Eric BOUTEILLON, sunduğu çözüm bu yarışmada ilk% 2'ye girerek birinciliği kazandı. Birkaç gün önce sonuçların 8'ini Github'da paylaştı ve çözümü yeniden üretme adımlarını detaylandırdı.
Yarışmanın sıralama sonuçlarını kontrol edin: https://www.kaggle.com/c/freesound-audio-tagging-2019/leaderboard
Bu açık kaynak kitaplık, verimli bir sesli açıklama sistemi oluşturmak için yarı denetimli bir ön ısıtma hattı ve yazar tarafından SpecMix adlı çok etiketli ses ek açıklaması için yeni bir veri geliştirme teknolojisi sağlar.
Bu yeni teknolojileri, 2019 Kaggle ücretsiz ses etiketleme yarışmasına sunulan ses etiketleme sisteminde uyguladık. Bu zorluk, Akustik Sahne ve Olay Algılama ve Sınıflandırma Zorluğunun (DCASE 2019) ikinci görev zorluğudur.Amaç, az miktarda güvenilir, manuel olarak etiketlenmiş verilerde büyük miktarda gürültünün kullanılmasını ve büyük ölçekli kelime ayarlarıyla çok etiketli ses etiketleme görevlerini içerir. Makine öğrenimi teknolojisi, her test çerçevesi için ses etiketini tahmin etmek için ağ ses verileri üzerinde eğitildi.
Mücadelenin kamuya açık sıralamasında, Jupyter dizüstü bilgisayarlarda çalışan çözüm 0,738 lwlrap değerine sahip, bu da bu yarışmada 8. sırada olduğu anlamına geliyor.
CNN modeli 1 eğitimi (https://github.com/ebouteillon/freesound-audio-tagging-2019/blob/master/code/training-cnn-model1.ipynb)
VGG16 modelini eğitin (https://github.com/ebouteillon/freesound-audio-tagging-2019/blob/master/code/training-vgg16.ipynb)
Çıkarım çekirdeği (https://github.com/ebouteillon/freesound-audio-tagging-2019/blob/master/code/inference-kernel.ipynb)
CNN-model-1 ve VGG-16 eğitiminin ağırlık sonuçlarını herkese açık Kaggle veri setinde de bulabilirsiniz. Yazarın kota nedeniyle bu ağırlık sonuçlarını saklamak için git-lfs kullanmadığı unutulmamalıdır.
Zorluk, katılımcıların yapılandırmalarını değiştirmeden Kaggle çekirdeğinde çıkarım yapmalarını gerektirir. Bu nedenle, katılımcıların yarışma sırasında yerel olarak oluşturulan CNN ağırlıklarını yüklemek için Kaggle çekirdek yapılandırmasıyla aynı pytorch ve fastai sürümünü kullanmaları çok önemlidir. Bu nedenle yarışmacıların pytorch 1.0.1 ve fastai 1.0.51'i tercih etmeleri çok önemlidir.
Yükleme yöntemi 1: Orijinal yazarın yöntemini kullanın
Yerel sistemimle aynı yapılandırmayı elde etmek için aşağıdaki adımları GNU Linux Ubuntu 18.04.2 LTS'de test etmem gerekiyor:
1. Bu açık kaynak kitaplığı kopyalayın:
git klon https://github.com/ebouteillon/freesound-audio-tagging-2019.git
2. anaconda3'ü kurun: https://docs.anaconda.com/anaconda/install/
3. Linux terminalini girin:
conda create --name freesound --file spec-file.txt
Artık hazırsınız!
Not: Yapılandırmam CUDA 10'u zaten yükledi, bu nedenle pytorch ve cudatoolkit sürümünü spec-file.txt dosyasındaki yapılandırmanıza göre ayarlamanız gerekebilir.
Kurulum yöntemi 2: conda tarafından önerilen paketi kullanın
Conda yükleme paketini güncelleyebileceğinden, bu yöntem yazarla aynı yapılandırmayı garanti etmez.
1. Bu açık kaynak kitaplığı kopyalayın:
git klon https://github.com/ebouteillon/freesound-audio-tagging-2019.git
2. anaconda3'ü kurun
3. Linux terminalini girin:
conda güncelleme conda
conda create -n freesound python = 3.7 anaconda
conda serbest sesi etkinleştir
conda kurnuş pandalar scipy scikit-learn matplotlib tqdm seaborn pytorch == 1.0.1 torchvision cudatoolkit = 10.0 fastai == 1.0.51 -c pytorch -c fastai
conda kaldırma --force jpeg libtiff -y
conda install -c conda-forge libjpeg-turbo
CC = "cc -mavx2" pip install --no-cache-dir -U --force-restart --no-binary: all: --compile pillow-simd
conda install -c conda-forge librosa
Not:
Yapılandırmam CUDA 10'u zaten yükledi, bu nedenle yapılandırmanıza göre pytorch ve cudatoolkit sürümünü ayarlamanız gerekebilir
Libjpeg-turbo kullandığımız için aldığınız hatırlatıcılar tutarsız olabilir
Donanım yazılım
Meydan okuma sırasında aşağıdaki donanım / yazılım yapılandırmalarını kullandım:
Intel Core i74790k
NVIDIA RTX 2080 ti
24 GB RAM
Ubuntu 18.04.2 LTS
Yüklü python paketlerinin ayrıntılı bir listesi ve conda (çok gerekli), requirements.txt ve spec-file.txt dosyasında elde edilebilir.
NVIDIA sürücüsü 418.67, CUDA 10.1, CuDNN 7.3.1
1. Veri setini Kaggle'den indirin (https://www.kaggle.com/c/freesound-audio-tagging-2019/data)
2. (İsteğe bağlı) Ağırlık veri setimi Kaggle'dan indirin (https://www.kaggle.com/ebouteillon/freesoundaudiotagging2019ebouteillonsolution)
3. Giriş klasörünü açın ve aşağıdaki gibi ortamınızı oluşturmak için veri kümesini açın:
kod
çıkarım-kernel.ipynb
eğitim-cnn-model1.ipynb
eğitim-vgg16.ipynb
resimler
all_augmentations.png
model-açıkladı.png
giriş
test ...
tren_curated
...
tren gürültüsü
...
sample_submission.csv
train_curated.csv
train_noisy.csv
keep.txt
LİSANS
README.md
requirements.txt
spec-file.txt
ağırlıklar
cnn-model-1
iş
modeller
keep.txt
aşama-10_fold-0.pkl
...
aşama-2_fold-9.pkl
vgg16
iş
modeller
keep.txt
aşama-10_fold-0.pkl
...
aşama-2_fold-9.pkl
3. Komut satırını girin:
conda serbest sesi etkinleştir
jupyter defter
Web tarayıcısını açın ve yürütülecek içeriği seçin. Önerilen sıra aşağıdaki gibidir:
training-cnn-model1.ipynb (https://github.com/ebouteillon/freesound-audio-tagging-2019/blob/master/code/training-cnn-model1.ipynb)
training-vgg16.ipynb (https://github.com/ebouteillon/freesound-audio-tagging-2019/blob/master/code/training-vgg16.ipynb)
inference-kernel.ipynb (https://github.com/ebouteillon/freesound-audio-tagging-2019/blob/master/code/inference-kernel.ipynb)
mutluluklar dilerim!
Not:
Modellerden birini eğitmek için ilk çalıştırma eğitimi - *. İpynb. ?
CNN model eğitiminde, bir çalışma klasörü ve bir ÖNCEDEN İŞLENMİŞ klasör oluşturulur ve konumlarını değiştirmek isteyebilirsiniz: bu, işi ve ÖNCEDEN İŞLENMİŞ değişkenleri güncellemek kadar basittir.
Verilen (veya kendi) ağırlığı yerel ayarlarda çıkarım notlarıyla kullanmak istiyorsanız, models_list ile gösterilen klasör yolunu güncellemeniz yeterlidir. Bu meydan okumada Kaggle çekirdeği tarafından kullanılan yolu korudum.
Kaggle veri kümesini ve ağırlık veri kümemi kullanan çıkarım çekirdeği doğrudan Kaggle'da elde edilebilir:
https://www.kaggle.com/ebouteillon/12th-public-lb-inference-kernel-using-fastai
Ses verisi ön işleme
Önce ses klibini ön ve uç sessiz (60 dB eşik ile) kesin ve ardından 44,1 kHz örnekleme hızı, ardışık kareler arasında 347 örneklik atlama uzunluğu, 2560 FFT bileşenleri ve 20 Hz-22050 Hz aralığı kullanın Frekans, ses klibini 128 bantlı mel-spektrograma dönüştürür. Son adım, elde edilen görüntünün düzenlenmesi (ortalama = 0, varyans = 1) ve 3 kanala kopyalanması dahil olmak üzere ön işlemedir.
Modele genel bakış
Bu bölümde, kullanılan sinir ağı mimarisini şu şekilde açıklıyoruz:
Sürüm 1, Tablo 1'deki özel CNN "CNN-model-1" ve toplu olarak normalleştirilmiş VGG-16'dan oluşur. Her ikisi de aynı şekilde eğitilir.
Sürüm 2 yalnızca özel CNN "CNN-model-1" i içerir, tanım için Tablo 1'e bakın.
Versiyon 3, değerlendirme ödüllerini değerlendirmek için kullanılır ve bu versiyonun modeli, versiyon 2 ile aynıdır.
Tablo 1: CNN-model-1. BN, Toplu Normalleştirme anlamına gelir ve ReLU, Doğrultulmuş Doğrusal Birimi ifade eder
Veri geliştirme
Küçük bir eğitim seti kullanmak için önemli bir teknik, eğitim setini genişletmek için veri artırmayı kullanmaktır. Bu amaçla SpecMix adında yeni bir veri geliştirme yöntemi geliştirdik. SpecAugment'in bir uzantısıdır (bkz. Referans 1), karıştırmadan esinlenilmiştir (bkz. Kaynak 2).
SpecAugment, eğitim örneklerini geliştirmek için 3 dönüşüm uygular: zaman atlama, frekans maskeleme ve zaman maskeleme.
mixup, iki örnek girdinin ve hedefin ağırlıklı ortalamasını hesaplayarak sanal bir eğitim örneği oluşturur.
SpecMix
SpecMix, SpecAugment'ın en etkili iki dönüşümünden ilham alır ve bunları sanal çok etiketli eğitim örnekleri oluşturmak için genişletir:
1. f'yi sürekli bir Mel frekans kanalı yapmak için frekans değiştirmeyi kullanın