182 لوستل

د پرندې لپاره ماشین زده کړې: خپل ځان د پرندې Vocalization Classifier جوړ کړئ

لخوا pictureint...20m2025/06/09
Read on Terminal Reader

ډېر اوږد؛ لوستل

د BirdCLEF+ 2025 رقص کاروونکي ته هڅه کوي چې د کټګورۍ ماډل ډیزاین کړي چې د غږ ریکارډ څخه د پرانستلو ډولونه په دقیق ډول پیژندل کیدی شي. دا لارښود د خپل ځان د پرانستلو کټګورۍ کټګورۍ جوړولو لارښوونې تفصيلات لري چې د GBV کټګورۍ سره په ګډه کارول کیدی شي د پرانستلو ډولونو په پراخه کټګورۍ کې کټګورۍ کړي. دا لارښوونې د Google څیړنې مقاله کې د کټګورۍ لپاره د پرانستلو کټګورۍ تفصيلات کې بیان شوي ورته بنسټیز تکنیکونه کاروي.
featured image - د پرندې لپاره ماشین زده کړې: خپل ځان د پرندې Vocalization Classifier جوړ کړئ
Picture in the Noise HackerNoon profile picture
0-item

د نندارتون

څیړونکي اتومات سیستمونه کاروي ترڅو لوی اکوسیسټمونه مطالعه کړي. د جنگل او جنگلی سيمو په صورت کې،autonomous recording units (ARUs)دا معلومات د غږ ریکارډولو لپاره کارول کیږي چې کولی شي د مختلفو حیواناتو او حشراتو ډولونو شناسولو لپاره کارول شي. دا معلومات کولی شي د ځانګړي چاپیریال کې د ډولونو ترانسپورت ښه درکولو لپاره کارول شي. په ځینو چاپیریالونو کې، Google Research په خپل مقاله کې اشاره کويSeparating Birdsong in the Wild د ټولګي لپارهنور، دوی د غږ په اساس د شناخت د ارزښت په یاد ولرئ: "[چې] پرندې د خوړو سیسټمونو او د جنگل د روغتیا د درک لپاره کاروي - د مثال په توګه، که په جنگل کې ډیری woodpeckers شتون لري، دا معنی لري چې ډیری کشته لرګیو شتون لري."

Separating Birdsong in the Wild د ټولګي لپاره

په وروستيو کې، دBirdCLEF + 2025د رقابتي پرانیستېKaggleد ټاپو لاندې دانځورونهسازمان. ImageCLEF په مختلفو ډومینونو کې د لغوي نندارتونونو څیړنې او انځورونه ترلاسه کولو کې ملاتړ کوي. د رقابتی هدف مستقیم دی: د ټولګي ماډل ډیزاین کول چې د غږ ریکارډ څخه د پرانستونو ډولونه په دقیق ډول پیژندل کیدی شي.

BirdCLEF + 2025انځورونه

په لومړي وخت کې، دا کار د وړتیا په لټه کې نږدې نږدې نږدې نږدې نږدې نږدې نږدې نږدې نږدې نږدېد Google Bird Vocalization (GBV) کټګورۍ، هم د مشهور په توګهPerchد GBV کټګوریوټر د تقریبا 11،000 پرندې ډولونو په اړه روزل کیږي او له دې امله د کټګوریو ماډل په توګه یو واضح انتخاب دی.

د Google Bird Vocalization (GBV) کټګورۍ

له دې امله، د GBV کټګورر یوازې د BirdCLEF+ 2025 د رقابتي ازموینې ډاټاټا په اړه ~60٪ دقت ترلاسه کوي. په پایله کې، يو ګمرک ماډل باید پراختیا شي.

دا لارښوونې د خپل ځان د پرندې vocalization classifier جوړولو لارښوونه تفصيلات چې د GBV classifier سره په ګډه کارول کیدی شي د پرندې ډولونو په پراخه انتخاب کې رامینځته کړي. دا لارښوونې د Google تحقیق کې بیان شوي ورته بنسټیز تکنیکونه کارويمقالېپه دې ډیزاین کې د روزنې لپاره د BirdCLEF+ 2025 رقابتي ډاټا سیټ کارول کیږي.

د روزنې معلوماتو

دBirdCLEF+ 2025 د روزنې ډاټا سیټ، د ملاتړ فایلونو په شمول ، د 12 GB په اړه دی. د ډاټا سیټ جوړښت د اصلي لیږدونه او فایلونه دي:

birdclef_2025
|__ train_audio
|__ train_soundscapes
|__ test_soundscapes
recording_location.txt
taxonomy.csv
train.csv

train_audio

دtrain_audioدی د ډاټا سیټ ترټولو لوی برخې، د 28،564 روزنې آډیو ریکارډونه شامل دي..oggد آډیو ریکارډونه په زیربنا کې رامینځته شوي دي، کوم چې هر یو ځانګړي پرندې ډول رامینځته کوي، د مثال په توګه:

train_audio
|__amakin1
   |__ [AUDIO FILES]
|__amekes
   |__ [AUDIO FILES]
...

دtaxonomy.csvدا فایل کولی شي د ناقانونه نومونو لخوا د پرانسانو ډولونو واقعي علمی او عام نومونو په لټه کې وکارول شي، د مثال په توګه:

SUB-DIRECTORY NAME          SCIENTIFIC NAME             COMMON NAME
amakin1                     Chloroceryle amazona        Amazon Kingfisher
amekes                      Falco sparverius            American Kestrel
...


Amazon Kingfisher


American Kestrel

د رقابتي ډاټا سیټ کې 206 انفرادي پرندې ډولونه شامل دي، یعنی 206 ټولګي. لکه څنګه چې پهIntroduction63 د دې ټولګينهله خوا دGBV Classifierد دېNon-GBVټولګيونه په عمومي توګه د شمیره ټولګي شناختر په کارولو سره لیبل شوي دي:


1139490, 1192948, 1194042, 126247, 1346504, 134933, 135045, 1462711, 1462737, 1564122, 21038, 21116, 21211, 22333, 22973, 22976, 24272, 24292, 24322, 41663, 41778, 41970, 42007, 42087, 42113, 46010, 47067, 476537, 476538, 48124, 50186, 517119, 523060, 528041, 52884, 548639, 555086, 555142, 566513, 64862, 65336, 65344, 65349, 65373, 65419, 65448, 65547, 65962, 66016, 66531, 66578, 66893, 67082, 67252, 714022, 715170, 787625, 81930, 868458, 963335, grasal4, verfly, y00678

ځینې دNon-GBVد کلاسونو ځانګړتیاوې:

  1. Limited training data.
    • Class 1139490, for example, only contains 2 audio recordings. By contrast, class amakin1, which is a “known” GBV class, contains 89 recordings.
  2. Poor recording quality.
    • Highlighting class 1139490 again, both training recordings are of poor quality with one being particularly difficult to discern.

دا د 2 شرایطو له امله د وړاندیز شوي غږونو او غږونو کیفیت په اړه د ټولګي ترمنځ مهم بیلابیلو بیلابیلو سبب کیږي.

په هر دوو کې د روزنې آډیو ریکارډونو ډیریGBVاوNon-GBVټولګي هم د بشري خبرې شامل دي، په داسې حال کې چې د غږونکي د ریکارډ سره د معلوماتو لکه د پرنس ډول چې ریکارډ شوي او د ریکارډ د ځای په توګه. په ډیری -نه ټول- په مواردو کې، نندارتونونه د ریکارډ شوي پرنس vocalizations پیژندل کیږي.

د ټولګي بیلابیلو او د بشري خبرې نوټونو شتون کولو لپاره کارول شوي تاکتیکونه په موضوع کې بحث شوي ديBuilding the Classifierپه برخه کې

train_soundscapes

دtrain_soundscapesد کتابتون د تقریبا 10،000 شامل ديunlabeledد آډیو نندارتونونه. لکه څنګه چې به پهBuilding the Classifierپه برخه کې، دا آډیو ریکارډونه کولی شي د روزنې ډاټا کې دpseudo-labeling.

test_soundscapes

دtest_soundscapesد کټګوریو پرته پرته د Areadme.txtدا ډاټاګرام سره پوښل شوي دي سره یو مخکښ ټولګه ازموينه غږونه کله چې د پیشکشو پایلو ته د BirdCLEF+ 2025 رقابتي وړاندې کړي.

د Classifiers جوړولو

د بنسټیز لارښوونې او背景

د بنسټیز لارښوونې کارولد Google څیړنېستاسو د پرندې vocalization classifier روزنه کولو لپاره دا ده لکه څنګه:

  1. په 5 ثانیو برخو کې ریکارډ شوي آډیو تقسیم کړئ.
  2. د آډیو سیګنونو په mel spectrograms بدل کړئ.
  3. په mel spectrograms کې د انځور klasifier زده کړئ.

په دې لارښوونې کې د ورته لارښوونې به ترسره شي. د انځور ټولنيزو چې د روزنې به وي د Google دEfficientNet B0د نمونوي. که تاسو دEfficientNetد ماډلونو کورنۍ، تاسو پوه شئ چې دوی د اغیزمن انځور پروسس لپاره ډیزاین شوي دي.

اغیزمنې B0

په هرصورت، مخکې له دې چې د صوتی نمونې کولی شي برخه واخلئ او په موم سپیکټروګرامونو کې بدل شي، موږ باید د ټولګي بیلابیلو او د انسان نندارتونونو ستونزو سره حل شي چې په دې کتاب کې ذکر شوي دي.Training Dataپه پراخه کچه، دا ستونزو به د ډاټا اضافي کولو او د غږ نمونې قطع کولو له الرې حل شي.

مخکې په واقعي ډیزاین کې پوښل، د لاندې زیربنا د ځينو مختصر پیژندنې معلومات وړاندې کوي.

اغیزمن ماډلونه

د گوگل څیړنې د هغې د کورنۍ د نندارتونEfficientNetپه 2019 کال کې د نمونې په توګهconvolutional neural networkد موډلونه چې په دې وخت کې په اندازه او کړنو په اړه د پرمختللي موډلونو څخه لوړه وي.


EfficientNet model family performance

اغیزمنې2ماډلونه، چې په 2021 کال کې اعلان شوي دي، نور ښه کړنو او پارامتره اغیزمنتیا وړاندې کوي.

که څه هم د روزنېانځورونهد معلوماتو، EfficientNet ماډلونه د نورو ډاټا سیټونو ته لیږدول شي چې دوی د دې پروژې لپاره د ټولګي تکنالوژۍ په توګه یو جذاب انتخاب وي.

Mel سپیکټروګرامونه

A mel spectrogram ده د صوتی سیگنال د بصری نمونې. دا کولای شي په غوره توګه د غږ لپاره د تودوخې نقشه analogized شي.


Sample mel spectrogram

د mel spectrogram x-axis د آډیو سیگنال د وخت اندازه رامینځته کوي، او د y-axis د سیگنال په کې د غږونو ټیټونه رامینځته کوي. په هرصورت، د ټولو ټیټونو په اوږدو کې د ټیټونو ټیټونو ښودلو لپاره، ټیټونه په ټیټونو کې ګروپ شوي دي.mel bands. دا بانډونه، په عوض، د کارولو سره دmel scale. د مینو کچه ده alogarithmicد سپیکټروګرام رنګونه د ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده ګرځنده

ډیزاین

زما هدف د ډیزاین په بحث کې دا ده چې د لارښوونې په لوړ کچه څیړنه ورکړي چې د تفصيلاتو په اړه ډیر تفصيل نلري. د اصلي روزنې (فینټینګ) منطق په دې کې راټول کیږيد نوټ کڅوړه("د روزنې نوټ") چې په 4 اصلي برخو کې جوړ شوی دی:

  • برخه 1: د آډیو ډاټا لوډول.
  • Section 2: Audio data processing.
  • برخه 3: د Mel سپیکټروګرام توليد او د انټرنېټ تیریدو.
  • برخه 4: د نمونوي روزنې.

تاسو به په یاد ولرئ چې د هر اصلي برخه لومړی 2 سلنه (1) د دې برخه په کارولو کې د وارداتو دي او (2) aConfigد سلول چې په دې برخو او وروسته برخو کې کارول شوي ثابتونه تعریف کوي.

د روزنې نندارتون په واقعیت کې پیل کیږيSection 0په دې برخه کې د اصلي Python پکونه چې په ټوله نوټ کې کارول کیږي وارد شوي دي. دا برخه هم شامل دي چې د لاسلیک لپاره منطقWeights & Biases("WandB") د روزنې چلولو لپاره. تاسو به خپل WandB اړتیا لرئAPI keyپه نوټ کې د AKaggle Secretد نوم استعمالWANDB_API_KEY.

لکه څنګه چې پهTraining Dataپه برخه کې، د نښلول شوي روزنې soundcapes کولی شي د pseudo-labeling له لارې د روزنې ډاټا کې شامل شي. د نښلول شوي ډاټا کارولو په موضوع کې بحث کیږيSection 3.5 - Pseudo-Labelingپه یاد ولرئ چې Kaggle غیر GPU چاپیریالونه د 30 GiB حافظه ته محدود دي.

یو زده کړې ماډل وروسته د تجربې ترتیب په لاندې برخو کې بیان شوی دی دلته په Kaggle کې نشر شوي دي. که تاسو غواړئ، تاسو کولی شئ د دې ماډل په کارولو پرته خپل ځان د زده کړې او په مستقیم ډول په Running Inference برخه کې ګټه واخلئ په پرندې آوازونو غږ.

یو زده کړې ماډل وروسته د تجربې ترتیب په لاندې برخو کې بیان شوی دی دلته په Kaggle کې نشر شوي دي. که تاسو غواړئ، تاسو کولی شئ د دې ماډل په کارولو پرته خپل ځان د زده کړې او په مستقیم ډول په Running Inference برخه کې ګټه واخلئ په پرندې آوازونو غږ.

برخه 1 - د آډیو ډاټا لوډ

دAudio Data Loadingد نوټونو برخه:

  1. په BirdCLEF+ 2025 رقابتي ډاټاټا کې هغه ټولګي راټول کیږي چې د GBV ټولګي لخوا نه پوښل کیږي.
  2. د load_training_audio method له لارې خام آډیو ډاټا لیږدوي.
  3. د processed_audio لابراتوار جوړوي او د لوډ شوي آډیو ډاټا کاپی په دې لابراتوار کې د .wav فایلونو په توګه ذخیره کوي.

دConfigپه دې برخه کې شامل دي aMAX_FILESاټکل. دا اټکل د یو ډاټا ټولګي څخه لوستل شي د آډیو فایبرونو حداکثر شمېر مشخصوي. دا اټکل به د لوی ارزښت ته د اټکل په لټه کې تنظیم شي.1000د اطمینان لپاره چې ټول آډیو فایلونه دnon-GBVتاسو کولی شئ د خپل تجربې ترتیبات لپاره دا ثابت تنظیم وکړئ. د مثال په توګه، که تاسو د صوتی ډاټا لهallپه ټولګي کې، تاسو کولی شئ اړتیا لرئ چې دا باثباته ته د وړیا حافظه خوندي کولو لپاره لږ ارزښت ته تنظیم کړئ.

دload_training_audioMethod کولای شي سره دclassesپارامتر، کوم چې د ټولګي لیست دی چې د غږونه لوستل شي. د دې پروژې لپاره، دnon-GBVټولګي د لیست په توګه ذخیره شوي او د متغیر ته تادیه شويmissing_classesکوم چې وروسته به دload_training_audioد طریقې له لارېclassesپارامترونه

# `missing_classes` list
['1139490', '1192948', '1194042', '126247', '1346504', '134933', '135045', '1462711', '1462737', '1564122', '21038', '21116', '21211', '22333', '22973', '22976', '24272', '24292', '24322', '41663', '41778', '41970', '42007', '42087', '42113', '46010', '47067', '476537', '476538', '48124', '50186', '517119', '523060', '528041', '52884', '548639', '555086', '555142', '566513', '64862', '65336', '65344', '65349', '65373', '65419', '65448', '65547', '65962', '66016', '66531', '66578', '66893', '67082', '67252', '714022', '715170', '787625', '81930', '868458', '963335', 'grasal4', 'verfly', 'y00678']

تاسو کولی شئ د 206 BirdCLEF+ 2025 ټولې ټولګي د ټولګي پارامتر په توګه یو خالی لیست ته ورسیږي.

تاسو کولی شئ د 206 BirdCLEF+ 2025 ټولې ټولګي د ټولګي پارامتر په توګه یو خالی لیست ته ورسیږي.


د load_training_audio موډل هم د اختیاري boolean use_slice پارامتر تایید کوي. دا پارامتر د LOAD_SLICE پایله سره کار کوي چې په Config سلول کې تعریف شوی دی. د use_slice پارامتر او LOAD_SLICE پایله د دې تطبیق سره کار نه کیږي. په هرصورت، دوی کولی شي د هر فایل څخه د صوتی مقدار مشخصولو لپاره کارول شي. د مثال په توګه، د هر صوتی فایل څخه یوازې 5 ثانیو صوتی لوستل، LOAD_SLICE د 160000 ته تنظیم کړئ، کوم چې د 32000 د نمونې کچه د 5 ځلې په توګه محاسبه کیږي؛ او د use_slice پارامتر ته True انتقال کړئ.

د load_training_audio موډل هم د اختیاري boolean use_slice پارامتر تایید کوي. دا پارامتر د LOAD_SLICE پایله سره کار کوي چې په Config سلول کې تعریف شوی دی. د use_slice پارامتر او LOAD_SLICE پایله د دې تطبیق سره کار نه کیږي. په هرصورت، دوی کولی شي د هر فایل څخه د صوتی مقدار مشخصولو لپاره کارول شي. د مثال په توګه، د هر صوتی فایل څخه یوازې 5 ثانیو صوتی لوستل، LOAD_SLICE د 160000 ته تنظیم کړئ، کوم چې د 32000 د نمونې کچه د 5 ځلې په توګه محاسبه کیږي؛ او د use_slice پارامتر ته True انتقال کړئ.

دload_training_audioMethod accepts د Booleanmake_copyparameter. کله چې دا پارامترTrueد منطق جوړوي aprocessed_audioد کټګوریو او د هر غږ نمونې یو کاپی د.wavفایل به د لیبل ته ورسيږي. د آډیو کاپیونه په زیر لیبلونو کې ذخیره شوي دي چې د ټولګي چې دوی شامل دي.processed_audioپه بل برخه کې کارول کیږي چې د ترمیم شوي آډیو نمونې په ډیزاین کې ذخیره کړي د BirdCLEF+ 2025 ډاټاټاټاټاټاټاټاټاټاټاټاټاټونو پرته اغیز نه کوي.


دload_training_audioMethod returns a dictionary of loaded audio data using the class names as keys. په dictionary کې هر ارزښت د فورمه د tuples لیست دی.(AUDIO_FILENAME, AUDIO_DATA):

{'1139490': [('CSA36389.ogg', tensor([[-7.3379e-06,  1.0008e-05, -8.9483e-06,  ...,  2.9978e-06,
3.4201e-06,  3.8700e-06]])), ('CSA36385.ogg', tensor([[-2.9545e-06,  2.9259e-05,  2.8138e-05,  ..., -5.8680e-09, -2.3467e-09, -2.6546e-10]]))], '1192948': [('CSA36388.ogg', tensor([[ 3.7417e-06, -5.4138e-06, -3.3517e-07,  ..., -2.4159e-05, -1.6547e-05, -1.8537e-05]])), ('CSA36366.ogg', tensor([[ 2.6916e-06, -1.5655e-06, -2.1533e-05,  ..., -2.0132e-05, -1.9063e-05, -2.4438e-05]])), ('CSA36373.ogg', tensor([[ 3.4144e-05, -8.0636e-06,  1.4903e-06,  ..., -3.8835e-05, -4.1840e-05, -4.0731e-05]])), ('CSA36358.ogg', tensor([[-1.6201e-06,  2.8240e-05,  2.9543e-05,  ..., -2.9203e-04, -3.1059e-04, -2.8100e-04]]))], '1194042': [('CSA18794.ogg', tensor([[ 3.0655e-05,  4.8817e-05,  6.2794e-05,  ..., -5.1450e-05,
-4.8535e-05, -4.2476e-05]])), ('CSA18802.ogg', tensor([[ 6.6640e-05,  8.8530e-05,  6.4143e-05,  ...,  5.3802e-07, -1.7509e-05, -4.8914e-06]])), ('CSA18783.ogg', tensor([[-8.6866e-06, -6.3421e-06, -3.1125e-05,  ..., -1.7946e-04, -1.6407e-04, -1.5334e-04]]))] ...}

دا روش هم د بنسټیز اټکلونه راټولوي چې د هر ټولګي لپاره لوستل شوي معلوماتو په توګه د کچه د کڅوړې د کڅوړې د کڅوړې د کڅوړې د کڅوړې د کڅوړې د کڅوړې د کڅوړې د کڅوړې د کڅوړې د کڅوړې د کڅوړې د کڅوړې د کڅوړې. You can optionally export these statistics to inspect the data.

class,sampling_rate,num_files,num_secs_loaded,num_files_loaded
1139490,32000,2,194,2
1192948,32000,4,420,4
1194042,32000,3,91,3
...

برخه 2 - د آډیو ډاټا پروسس

The Audio Data Processing section of the notebook:

  1. په اختیاري ډول، د سکون برخو او غږ برخو لرې کوي ترڅو ډیری بشري نوټونه د خام آډیو څخه پاک کړي. د سکون برخو لرې کولو د آډیو سیگنال غیرقانوني برخو څخه راټول کیږي.
  2. په اختیاري ډول د کمېسيون ټولګيونو لپاره غږونه زیاتوي ترڅو د ټولګي بیلابیلو حل کې مرسته وکړي. غږونه زیاتوي (1) د تصادفي توګه تولید شوي غږ سیگنال اضافه کول، (2) د خام غږ سرعت بدلون، یا (3) د تصادفي توګه تولید شوي غږ سیگنال اضافه کول او د خام غږ سرعت بدلون.
Section 2.1 - Detecting Silent Segments

The detect_silence method is used to "slide" over each raw audio sample and identify silent segments by comparing the root-mean square (RMS) value of a given segment to a specified threshold. If the RMS is below the threshold, the segment is identified as a silent segment. The following constants specified in the Configد دې برخه د سلول د چلند د کنټرولdetect_silenceد نمونوي:

SIL_FRAME_PCT_OF_SR = 0.25
SIL_FRAME = int(SR * SIL_FRAME_PCT_OF_SR)
SIL_HOP = int(1.0 * SIL_FRAME)
SIL_THRESHOLD = 5e-5
SIL_REPLACE_VAL = -1000 # Value used to replace audio signal values within silent segments

The SIL_FRAMEاوSIL_HOPد اټکلونه کولی شي بدل شي ترڅو تنظیم کړي چې څنګه د طریقې د خام آډیو په پرتله "سړک" کوي. همدارنګه، دSIL_THRESHOLDد ارزښت کولی شي بدل شي ترڅو د سټیټ سیګنونو شناسایی په اړه د طریقې اغیزمن یا محافظه کړي.

The method outputs a dictionary of silent segment markers for each file in each class. Audio files with no detected silent segments are identified by empty lists.

{'1139490': {'CSA36389.ogg': [0, 8000, 16000, 272000, 280000, 288000, 296000, 304000], 'CSA36385.ogg': [0, 8000, 16000, 24000, 240000, 248000, 256000]}, '1192948': {'CSA36388.ogg': [0, 8000, 16000, 24000, 256000, 264000, 272000, 288000], 'CSA36366.ogg': [0, 8000, 16000, 24000, 256000, 264000, 272000, 280000, 288000], 'CSA36373.ogg': [0, 8000, 16000, 24000, 256000, 264000, 272000, 288000], 'CSA36358.ogg': [8000]}, '1194042': {'CSA18794.ogg': [], 'CSA18802.ogg': [], 'CSA18783.ogg': [0, 8000, 16000, 24000, 600000, 608000, 616000]}, '126247': {'XC941297.ogg': [], 'iNat1109254.ogg': [], 'iNat888527.ogg': [], 'iNat320679.ogg': [0], 'iNat888729.ogg': [], 'iNat146584.ogg': []}, '1346504': {'CSA18803.ogg': [0, 8000, 16000, 24000, 3000000, 3008000, 3016000], 'CSA18791.ogg': [], 'CSA18792.ogg': [], 'CSA18784.ogg': [0, 8000, 16000, 1232000, 1240000, 1248000], 'CSA18793.ogg': [0, 8000, 16000, 24000, 888000]} ...}
Section 2.2 - Removing Silent Segments and Eliminating Human Annotations

The USE_REMOVE_SILENCE_AND_HUMAN_ANNOTپه پایله کې definedConfig cell of this section specifies if audio should be stripped of silent segments and sliced to remove ډیرید انسانانو نندارتونونه

USE_REMOVE_SILENCE_AND_HUMAN_ANNOT = True

دremove_silence_and_human_annot method strips silent segments from audio samples using the output from the detect_silenceنور، دا منطق کاروي چې د یو ساده نظر په اساس د انسان نندارتونونه کاروي: ډیری غږ نمونې، د انسان نندارتونونو سره،tendباید د لاندې جوړښت لري:

|  < 10s   |   ~1s   |                  |
| BIRDSONG | SILENCE | HUMAN ANNOTATION |

The birdsong and human annotation sections themselves may contain silent segments. However, as seen in the diagram above, the bird vocalization recordings often occur within the first few seconds of audio. Therefore, a simple, if imperfect, approach to deal with human annotations is to slice audio samples at the first silent segment marker that occurs outside of a specified window, under the assumption that a human annotation follows that silent segment. The remove_silence_and_human_annotد منطق کارويANNOT_BREAKPOINTپه پایله کېConfig cell to check if a silent segment marker lies outside the window specified by ANNOT_BREAKPOINT, expressed in number of seconds. If it does, the logic slices the raw audio at that marker and only retains the data that occurs before it. A manual inspection of processed audio during experimentation revealed this approach to be satisfactory. However, as mentioned in the Training Dataبرخه، دلته ديsome audio recordings where the human annotation مخکښ the birdsong recording. The logic described here does notځینې آډیو نمونهونه د ریکارډ شوي پرندې آوازونو اوږد سیسټمونه شتون لري او دا نمونهونه اغیزمنه نه لري. دا نمونهونه د مخکښ منطق له خوا اغیزمن نه دي او په بشپړه توګه خوندي دي.

د دوهم پایلې،SLICE_FRAME، په اختیاري ډول په پایله پروسس مرحله کې کارول کیدی شي چې د پروسس شوي آډیو يو هم ډیر پاک شوي ټوټه راټول شي.SLICE_FRAMEد پروسس شوي آډیو ثانیو شمیره چې تاسو غواړئ خوندي کړئ.

دremove_silence_and_human_annotMethod د پروسس شوي آډیو په ډیزاین کې د میټرو کې ذخیره کويprocessed_audio via the save_audio parameter, which is passed as True. The method returns a dictionary of the total seconds of processed audio for each class.

{'1139490': 14, '1192948': 29, '1194042': 24, '126247': 48, '1346504': 40, '134933': 32, '135045': 77, ...}

دget_audio_statsد پروژې په لاندې ډول کارولremove_silence_and_human_annotپه ټولو ټولګيونو کې د صوتا ثانیو کچه ترلاسه کړي.

برخه 2.3 - د کمیتونو ټولګي لپاره د اضافي کچه محاسبه کول

لکه څنګه چې پهTraining Data section, the classes are not balanced. Augmentation is used in this notebook section to help address the imbalance leveraging the average number of seconds of audio across all classes, as provided by the get_audio_stats method. Classes with total seconds of processed audio لاندې the average are augmented. The get_augmentation_turns_per_class method determines the number of augmentation turns for each minority class using the average number of seconds per processed audio sample.

TURNS = (AVG_SECS_AUDIO_ACROSS_CLASSES - TOTAL_SECS_AUDIO_FOR_CLASS)/AVG_SECS_PER_AUDIO_SAMPLE

Minority classes further below the average will have more augmentation turns versus minority classes nearer the average which will have fewer augmentation turns.

The get_augmentation_turns_per_class includes a AVG_SECS_FACTOR constant which can be used to adjust the value for

average number of seconds of audio across all classes. The constant can be used to make the logic more conservative or aggressive when calculating the number of augmentation turns.

The get_augmentation_turns_per_class includes a AVG_SECS_FACTOR constant which can be used to adjust the value for

average number of seconds of audio across all classes. The constant can be used to make the logic more conservative or aggressive when calculating the number of augmentation turns.

Section 2.4 - Running Augmentations

The USE_AUGMENTATIONSپه پایله کې definedConfigپه دې برخه کې د سلول مشخصوي که اډیو باید اضافي شي.

USE_AUGMENTATIONS = True

لکه څنګه چې مخکې اشاره شوې ده، د آډیو اضافي کول (1) د تصادفي لګول سیگنال اضافه کولو، (2) د خام آډیو سرعت بدلولو، یا (3) د تصادفي لګول سیگنال اضافه کولو او د خام آډیو سرعت بدلولو شامل دي.add_noiseاوchange_tempo methods encapsulate the logic for adding a noise signal and changing the tempo respectively. The noise signal range and tempo change range can be adjusted via the following constants in the Configد سیل:

NOISE_RNG_LOW = 0.0001
NOISE_RNG_HIGH = 0.0009
TEMPO_RNG_LOW = 0.5
TEMPO_RNG_HIGH = 1.5

دrun_augmentationsmethod د augmentations کاروي چې د output څخه کارويget_augmentations_turns_per_class method. For those classes that will be augmented, the logic:

  1. Randomly selects a processed audio sample (i.e. silent segments already removed) for augmentation.
  2. د لګولو لپاره د لګولو انتخاب کړئ: (1) د صدا اضافه کولو، (2) د سرعت بدلولو، یا (3) د صدا اضافه کولو او د سرعت بدلولو.
  3. په processed_audio لیږد کې د مناسب ټولګي لاندې د اضافي آډیو په ډیسک کې ذخیره کوي.

While the notebook logic augments minority classes with total seconds of audio below the average, it ignores those classes with total seconds of audio above the average. This approach was taken to manage available memory and with the understanding that the class imbalance is further addressed through choice of the loss function.

برخه 3 - Mel Spectrogram توليد او د انټرنېټ تیاری

دMel Spectrogram Generation and Input Preparation section of the notebook:

  1. د پروسس شوي آډیو ډاټا په روزنې او تصدیق لیستونو کې تقسیم کړئ.
  2. Splits audio into 5 second frames.
  3. Generates mel spectrograms for each 5 second audio frame.
  4. Resizes mel spectrograms to a target size of (224, 224).
  5. Optionally loads pseudo-labeled data samples to augment training data.
  6. One-hot encodes training data and validation data labels.
  7. Constructs TensorFlow Dataset objects from training and validation data lists.
  8. Optionally uses MixUp logic to augment training data.
Section 3.1 - Splitting Processed Audio Data

Processed audio data is loaded from the processed_audio folder. The data is split into 4 lists:

training_audio
training_labels
validation_audio
validation_labels

لیبلونه، البته، د ټولګي نومونه دي چې د آډیو مثالونو سره تړاو لري.SPLIT constant defined in the Config cell controls the split ratio between the training and validation data lists. Processed audio data is shuffled before splitting.

Section 3.2 - Splitting Audio into Frames

Audio is split into 5 second segments using the frame_audio method, which itself uses the TensorFlow signal.frameد هر آډیو مثال تقسیم کولو پروسه. په لاندې پایلې کې دConfig cell control the split operation:

FRAME_LENGTH = 5
FRAME_STEP = 5
Section 3.3 - Generating Mel Spectrograms

Mel spectrograms د هر 5 ثانیو آډیو فریم تولید شوي پهSection 3.2 via the audio2melspecmethod. The following constants in theConfigد سلول د پارامترونو ځانګړتیاوې چې د میلو سپیکټروګرامونه جوړولو لپاره کارول کیږي، لکه د میلو باندونو شمیره، د کمېسيون ټیټ، او د اعظمي ټیټ:

# Mel spectrogram parameters
N_FFT = 1024  # FFT size
HOP_SIZE = 256
N_MELS = 256
FMIN = 50  # minimum frequency
FMAX = 14000 # maximum frequency

The frequency band was chosen to reflect the potential range of most bird vocalizations. However, some bird species can vocalize outside this range.

Section 3.4 - Resizing Mel Spectrograms

دto_melspectrogram_imageMethod کارول کیږي چې د هر mel spectrogram په apillow ImageObject. هر ډولImage object is subsequently resized to (224, 224) which is the input dimension expected by the EfficientNet B0 model.

د 3.5 برخه - د Pseudo-Labeled معلوماتو لوډول

As mentioned in the Training Data section, the train_soundscapes directory contains nearly 10,000 unlabeledد پرندې آوازونو غږونه. دا غږونه کولی شي د روزنې ډاټا کې دpseudo-labelingیو ساده پروسه pseudo-labeled معلوماتو د جوړولو ده لکه څنګه:

  • Train a classifier without pseudo-labeled data.
  • Load training soundcape آډیو فایلونه.
  • د هر آډیو soundscape په 5 ثانیو فریمونو کې رامینځته کړئ.
  • Generate mel spectrograms for each 5 second frame and resize to (224, 224).
  • په هر re-sized مړ سپیکټروګرام کې د پیژندنې چلولو په کارولو سره چې تاسو په لومړي مرحله کې روزل شوي.
  • Keep the predictions above a desired confidence level and save the mel spectrograms for those predictions to disk under the predicted class label.
  • Train your classifier again using the psuedo-labeled data.

Pseudo-labeled معلوماتو کولی شي ستاسو د classifier فعالیت ښه کړي. که تاسو غواړئ ستاسو د ځان د pseudo-labeled معلوماتو د توليد لپاره، تاسو باید د کاري برخو سره د classifier روزنه وکړيد pseudo-labeled data. Then, use your classifier to create your own set of pseudo-labeled data using the process outlined above. Finally, re-train your classifier using your pseudo-labeled data.

د دې پیژندل کولو لپاره د pseudolabeled معلوماتو کارول نه کوي. که څه هم، تاسو کولی شئ د پایلې نندارې چې پهRunning Inferenceد Pseudo-Labeled معلوماتو جوړولو لپاره.

د نصبUSE_PSEUDO_LABELSپه پایله کېConfigد سیلFalseد Pseudo-Labeled معلوماتو د کارولو پرته.

Section 3.6 - Encoding Labels

دprocess_labels method is used to one-hot encode labels. One-hot encoded labels are returned as NumPy arrays and added to the training label and validation label lists.

Section 3.7 - Converting Training and Validation Data Lists to TensorFlow Dataset Objects
د معلوماتو

The TensorFlow data.Dataset.from_tensor_slicesد TensorFlow جوړولو لپاره کارول کیږيDataset objects from the training and validation data lists. The shuffle method is called on the training Datasetد batching مخکې د روزنې ډاټا shuffle.batch method is called on both DatasetObjects ته د روزنې او تصدیق ډاټا سیټونه بیلګه کړي. دBATCH_SIZE constant in the Configد cell د batch اندازه کنترول کوي.

Section 3.8 - Using MixUp to Augment Training Data

As you may already know, MixUp is a data augmentation technique that effectively mixes two images together to create a new data sample. The class for the blended image is a blend of the classes associated with the original 2 images. The mix_up method, along with the sample_beta_distributionMethod، د اختیاري MixUp منطق encapsulates.

This implementation uses MixUp to augment the training data. To use MixUp, set the USE_MIXUPپه پایله کېConfig cell to True.

برخه 4 - د نمونوي روزنې

The Model Trainingد نوټونو برخه:

  1. یو WandB پروژې رامینځته کوي او رامینځته کوي ترڅو د روزنې چلولو ډاټا راټول کړي.
  2. د EfficientNet B0 ماډل جوړ او کمپلیس کوي.
  3. Trains the model.
  4. په ډیزاین کې د زده کړې ماډل ذخیره کړئ.
برخه 4.1 - Initializing او configuring WandB پروژې

ډاډه وکړئ چې تاسو خپل WandB API کلیدونه د Kaggle Secret په توګه د نوټ نوټ سره تړل شوي دي او چې د نوټ نوټ په 0 برخه کې د WandB لاس ریکارډ لارښوونې لارښوونې لارښوونې لارښوونې د سچ سره ورسیږي.

ډاډه وکړئ چې تاسو خپل WandB API کلیدونه د Kaggle Secret په توګه د نوټ نوټ سره تړل شوي دي او چې د نوټ نوټ په 0 برخه کې د WandB لاس ریکارډ لارښوونې لارښوونې لارښوونې لارښوونې د سچ سره ورسیږي.

دConfig cell in this section includes logic to initialize and configure a new WandB project (if the project doesn't already exist) that will capture training run data:

wandb.init(project="my-bird-vocalization-classifier")
config = wandb.config
config.batch_size = BATCH_SIZE
config.epochs = 30
config.image_size = IMG_SIZE
config.num_classes = len(LABELS)

البته، تاسو کولی شئ د پروژې نوم بدل کړئmy-bird-vocalization-classifierستاسو د WandB پروژې نوم ته اړتیا.

Section 4.2 - Building and Compiling the EfficientNet B0 Model

دbuild_modelد پروژې کارول کیږي چې له ImageNet وزنونو سره او پرته د اوپر کټګورۍ سره د Pre-trained EfficientNet B0 ماډل لوډ کړي:

model = EfficientNetB0(include_top=False, input_tensor=inputs, weights="imagenet")

د نمونوي ته د ImageNet مخکښ وزنونو څخه ګټه واخلئ چې په هدف کې یوازېنندارتون (i.e. train) layers in the final stage of the model:

# Unfreeze last `unfreeze_layers` layers and add regularization
for layer in model.layers[-unfreeze_layers:]:
   if not isinstance(layer, layers.BatchNormalization):
      layer.trainable = True
      layer.kernel_regularizer = tf.keras.regularizers.l2(L2_RATE)

د مداخلهUNFREEZE_LAYERS in the Configد سلول د لګولو لپاره کچه کچه مشخصوي.

د ماډل ترټولو ډیزاین شوی سره د پایلېDenseکچه چې د شمیره پرندې ډولونو ټولګي ته وده ورکوي.Categorical focal cross-entropyد کڅوړې دنده په توګه انتخاب شوی چې د ټولګي بیلابیلو حل کې مرسته کوي.LOSS_ALPHAاوLOSS_GAMMAپه پایله کېConfigد ګازو د ګازو په کارولو سره کارول کیږي.

برخه 4.3 - د نمونوي روزنې

دfitد پروګرام د پروګرام د پروګرام د پروګرام د پروګرامmodelدSection 4.2د روزنې لپاره. یادونه چې alearning rate schedulerد تلیفون،lr_scheduler، کارول کیږي په ځای کې د تعلیق نرخ ثابت. د لومړنۍ تعلیق نرخ4.0e-4د زده کړې کچه په 2 مرحلهونو کې په اساس د انعام حساب کې کم کیږي. د زده کړې کچه د زده کړې کچه دEPOCHSپه پایله کېConfigد سلګون

برخه 4.4 - د سپارلو موډل

دsaveد پروګرام د پروګرام د پروګرام د پروګرام د پروګرامmodelد روزنې وروسته د موډل په ډیسک کې ذخیره کړي.

model.save("bird-vocalization-classifier.keras")

د روزنې پایلې

Running the notebook should produce the following training results, assuming you used the experimental setup that was described in the Building the Classifier section:

Training results

لکه څنګه چې وګورئ، د دقت د 90٪ څخه ډیر دی او د تصدیق دقت د 30 عمرونو وروسته په اړه 70٪ دی. په هرصورت، لکه څنګه چې وګورئ، د تصدیق دقت په عمده توګه بدل کیږي. دا بدلون په برخه کې د ټولګي بیلابیلو سره د موجودې یادښت سره د اضافي افزایشاتو کارولو محدودیت لري چې په بشپړه توګه د بیلابیلو حل کړي. پایلې ښيي چې د ماډل د روزنې ډاټا په اړه د بیلابیلو څخه رسیږي او نه عمده کوي او همدارنګه به امید وي. په هرصورت، د ماډل کولی شي د GBV کټګورر سره د اصل هدف سره سم د پیژندنې لپاره کارول شي.

Running Inference

داد نوټ کڅوړه ("inference notebook") can be used for running inference. The inference notebook logic uses both the GBV classifier model and the model that you trained in the preceding section. It runs inference on the unlabeled soundscapes files in the train_soundscapes directory. Each soundscapes audio file is split into 5 second frames. The MAX_FILESپه پایله کې definedConfigد سیلSection 0د نوټ نوټ کنټرول د soundcapes آډیو فایلونو شمېر چې د پایلو لپاره لوستل کیږي.

د پایلو نوټ لومړی د GBV کټګوریو کارولو په کارولو سره پیژندل کیږي. د 143 BirdCLEF+ 2025 رقابتي ډاټاټاټ کلاسونو لپاره پیژندل کیږي چې د GBV کټګوریو لپاره معلوم شوي دي. که د 143 "تقریبا" کټګوریو په منځ کې د عالي احتمال په پرتله یا برابر دیGBV_CLASSIFIER_THRESHOLD، نو د GBV مخکښ ټولګي به د حقیقت ټولګي په توګه انتخاب شي. که د 143 "تولید شوی" ټولګيونو تر منځ د حداکثریت لاندې دیGBV_CLASSIFIER_THRESHOLD، دا فرض کیږي چې د حقیقت ټولګي د 63 ټولګيونو په منځ کې دی چې د GBV ټولګي لپاره "غیر معلوم" دي - دا دی چې د مخکښ برخه کې د ماډل روزنې لپاره کارول شوي ټولګي. د منطق وروسته د finetuned ماډل په کارولو سره پیژندل کیږي. د دې پیژندنې ټولګه څخه پیژندل شوي ټولګي وروسته به د حقیقت ټولګي په توګه انتخاب شي.

دGBV_CLASSIFIER_THRESHOLD constant is defined in the Configد سیلSection 5د پیژندنې نوټ. پیژندنې د 2 فایلونو ته د محصول دي:

  1. د preds.csv فایل چې د هر 5 ثانیو soundscape ټیټ لپاره د پیژندنې او پیژندنې احتمالي راټولوي.
  2. A submission.csv file that captures all class probabilities in the format for the BirdCLEF+ 2025 competition.

Set the path to your finetuned model in the first cell of Section 4 of the inference notebook.

په لومړي سلول کې ستاسو د finetuned ماډل ته راهیسې تنظیم کړئSection 4د Inference نوټ څخه.

د راتلونکي کار

د روزنې نوټ کولی شي د 206 BirdCLEF+ 2025 ټولګيونو کې د يو موډل روزنې لپاره کارول شي، چې د GBV ټولګي اړتیا ته اړتیا نلري، لږ تر لږه د رقابتي ډاټا سیټ په اړه. لکه څنګه چې مخکې ذکر شوي، د خالی لیست له لارې،[]، دload_training_audiomethod به د ټول کلاسونو څخه آډیو ډاټا لوستل شي.MAX_FILES and LOAD_SLICEپایلې کولی شي د لوډ شوي آډیو مقدار محدودولو لپاره کارول شي ترڅو د Kaggle نوټونه چاپیریال په محدودیتونو کې کار وکړي.

البته، یو دقیق تر ماډل کولی شي د روزنې ډاټا د لوی مقدار په کارولو سره روزل شي. په عادي توګه، د ټولګي بیلابیلو د حل لپاره د اضافي تعداد کارول شي. برسېره پر دې، نور اضافي تکنیکونه، لکه CutMix، کولی شي د روزنې ډاټا اضافي وده ورکړي. په هرصورت، دا ستراتیژۍونه د پرمختګ چاپیریال ډیر قوي ته اړتيا لري.

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks