परिचय वैज्ञानिक बड़े पारिस्थितिकी तंत्रों का अध्ययन करने के लिए स्वचालित सिस्टम का उपयोग करते हैं. जंगल और जंगल क्षेत्रों के मामले में, ऑडियो रिकॉर्डिंग के लिए उपयोग किया जाता है जिसे विभिन्न जानवरों और कीड़े की प्रजातियों की पहचान करने में मदद करने के लिए इस्तेमाल किया जा सकता है. यह जानकारी एक निश्चित वातावरण के भीतर प्रजातियों के वितरण का बेहतर समझ विकसित करने के लिए इस्तेमाल किया जा सकता है. पक्षियों के मामले में, Google अनुसंधान अपने लेख में नोट करता है इसके अलावा, वे ऑडियो आधारित पहचान के मूल्य पर नोट करते हैं: "[क्योंकि] पक्षी संवाद करते हैं और गाने और कॉल के साथ क्षेत्र को चिह्नित करते हैं, इसलिए उन्हें कान से पहचानना सबसे प्रभावी है। autonomous recording units (ARUs) वर्गीकरण के लिए जंगली में पक्षियों के गीत अलग करना वर्गीकरण के लिए जंगली में पक्षियों के गीत अलग करना हाल ही में, The प्रतियोगिता शुरू हुई इसके तलवार के नीचे ImageCLEF विभिन्न डोमेनों पर क्रॉस-भाषी नोटिंग और छवियों की खोज में अनुसंधान का समर्थन करता है। प्रतियोगिता का लक्ष्य सीधा है: एक वर्गीकरण मॉडल डिजाइन करना जो ऑडियो रिकॉर्डिंग से पक्षियों के प्रजातियों को सटीक रूप से भविष्यवाणी कर सकता है। BirdCLEF+ 2025 Kaggle चित्रकला BirdCLEF+ 2025 के बारे में चित्रकला शुरुआत में, कार्य उपलब्धता को देखते हुए ट्रिबियन लगता है के रूप में भी जाना जाता जीबीवी वर्गीकरण लगभग 11,000 पक्षी प्रजातियों पर प्रशिक्षित किया गया है और इसलिए वर्गीकरण मॉडल के रूप में एक स्पष्ट विकल्प है। Google Bird Vocalization (GBV) के बारे में जानकारी Perch Google Bird Vocalization (GBV) के बारे में जानकारी हालांकि, प्रतियोगिता में GBV वर्गीकरण प्रशिक्षण सेट के बाहर स्थित पक्षी प्रजातियों को शामिल किया गया है. नतीजतन, GBV वर्गीकरण केवल BirdCLEF+ 2025 प्रतियोगिता परीक्षण डेटासेट पर ~60% सटीकता प्राप्त करता है. नतीजतन, एक कस्टम मॉडल विकसित किया जाना चाहिए. यह गाइड अपने स्वयं के पक्षी vocalization क्लासिकर का निर्माण करने के लिए एक दृष्टिकोण का विस्तार करता है जिसे GBV क्लासिकर के साथ संयुक्त रूप से उपयोग किया जा सकता है पक्षी प्रजातियों के एक व्यापक चयन को वर्गीकृत करने के लिए। डिजाइन प्रशिक्षण के लिए BirdCLEF+ 2025 प्रतियोगिता डेटासेट का लाभ उठाता है। लेखन प्रशिक्षण डेटा के , जिसमें समर्थित फ़ाइल शामिल हैं, लगभग 12 जीबी है. मुख्य निर्देशिकाओं और फ़ाइलों जो डेटासेट संरचना को बनाते हैं वे हैं: BirdCLEF+ 2025 प्रशिक्षण डेटासेट birdclef_2025 |__ train_audio |__ train_soundscapes |__ test_soundscapes recording_location.txt taxonomy.csv train.csv train_audio के निर्देशिका डेटासेट का सबसे बड़ा घटक है, जिसमें 28,564 प्रशिक्षण ऑडियो रिकॉर्डिंग शामिल हैं। ऑडियो रिकॉर्डिंग को उप-डिएक्टरों में समूह किया जाता है, जिनमें से प्रत्येक एक विशिष्ट पक्षी प्रजाति का प्रतिनिधित्व करता है, उदाहरण के लिए: train_audio .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 ... प्रतियोगिता में 206 अद्वितीय पक्षी प्रजातियों, यानी 206 वर्गों को शामिल किया गया है। इनमें से 63 वर्ग हैं। के द्वारा कवर इन वर्गों को आमतौर पर एक संख्यात्मक वर्ग पहचानकर्ता का उपयोग करके लेबल किया जाता है: Introduction नहीं 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 Limited training data. Class , for example, only contains 2 audio recordings. By contrast, class , which is a “known” class, contains 89 recordings. 1139490 amakin1 GBV Poor recording quality. Highlighting class again, both training recordings are of poor quality with one being particularly difficult to discern. 1139490 ये 2 शर्तें उपलब्ध ऑडियो और ऑडियो गुणवत्ता की मात्रा के संदर्भ में वर्गों के बीच एक महत्वपूर्ण असंतुलन का कारण बनती हैं। दोनों के बीच कई ऑडियो रिकॉर्डिंग और कक्षाओं में मानव भाषण भी शामिल है, जबकि वक्ता रिकॉर्डिंग को विवरण के साथ नोटिस करता है जैसे कि रिकॉर्ड किया गया पक्षी का प्रजाति और रिकॉर्डिंग की जगह। - मामलों में, नोट्स रिकॉर्ड किए गए पक्षी vocalizations का पालन करते हैं। GBV Non-GBV लेकिन सभी नहीं वर्ग असंतुलन और मानव भाषण नोटों की उपस्थिति को संबोधित करने के लिए उपयोग की जाने वाली रणनीतियों में चर्चा की जाती है। सेक्शन Building the Classifier train_soundscapes के सूची में लगभग 10,000 मछलीघरों के बारे में जानकारी. जैसा कि चर्चा में किया जाएगा. इन ऑडियो रिकॉर्डिंग को प्रशिक्षण डेटा में शामिल किया जा सकता है . train_soundscapes unlabeled Building the Classifier pseudo-labeling test_soundscapes के रजिस्ट्रेशन खाली है, सिवाय एक यह निर्देशिका BirdCLEF+ 2025 प्रतियोगिता के लिए पूर्वानुमान परिणाम प्रस्तुत करते समय परीक्षण ऑडियो के एक छिपे हुए सेट से भरी हुई है। test_soundscapes readme.txt क्लासिक बनाएं मूल दृष्टिकोण और पृष्ठभूमि उपयोग की जाने वाली मूल पद्धति अपने पक्षी vocalization classifier को प्रशिक्षित करने के लिए यह निम्नलिखित है: Google अनुसंधान रिकॉर्ड ऑडियो को 5 सेकंड सेकंड में विभाजित करें। ऑडियो सेगमेंट को mel spectrograms में परिवर्तित करें। Mel Spectrograms पर एक छवि वर्गीकरण को प्रशिक्षित करें। इस गाइड में एक ही दृष्टिकोण का पालन किया जाएगा. छवि वर्गीकरण जो प्रशिक्षित किया जाएगा वह Google का है उदाहरण के लिए, यदि आप इसके बारे में परिचित हैं मॉडल के परिवार, आप जानते हैं कि वे कुशल छवि प्रसंस्करण के लिए डिज़ाइन किए गए थे। प्रभावी B0 EfficientNet प्रभावी B0 हालांकि, इससे पहले कि ऑडियो नमूने को विभाजित किया जा सके और मल स्पेक्ट्रोग्राम में परिवर्तित किया जा सके, हमें कक्षा असंतुलन और मानव नोटिंग समस्याओं को संबोधित करना होगा। सामान्य तौर पर, इन समस्याओं को डेटा वृद्धि और ऑडियो नमूने का काटने के माध्यम से संबंधित रूप से संबोधित किया जाएगा। Training Data वास्तविक डिजाइन में डूबने से पहले, निम्नलिखित उप-भाग कुछ संक्षिप्त पृष्ठभूमि जानकारी प्रदान करते हैं। प्रभावी मॉडल Google अनुसंधान ने अपना परिवार पेश किया मॉडल 2019 में एक सेट के रूप में models that surpassed state-of-the-art models, at that time, with respect to both size and performance. EfficientNet convolutional neural network मॉडल, जो 2021 में लॉन्च किए गए हैं, अभी भी बेहतर प्रदर्शन और पैरामीटर दक्षता प्रदान करते हैं। प्रभावी 2 हालांकि प्रशिक्षित डेटा, EfficientNet मॉडल ने अन्य डेटा सेट पर स्थानांतरित होने पर अपने उपयोगिता का प्रदर्शन किया है, जो उन्हें इस परियोजना के लिए वर्गीकरण प्रौद्योगिकी के रूप में एक आकर्षक विकल्प बनाता है। इमेज Mel Spectrograms के बारे में एक मल स्पेक्ट्रोग्राम एक ऑडियो सिग्नल का एक दृश्य प्रतिनिधित्व है. यह ध्वनि के लिए एक हीटमैप के लिए सबसे अच्छा हो सकता है। एक मल स्पेक्ट्रोग्राम की एक्स-एक्स ऑडियो सिग्नल के समय आयाम का प्रतिनिधित्व करती है, और y-एक्स सिग्नल के भीतर ध्वनि की आवृत्तियों का प्रतिनिधित्व करती है। इन बांडों को, बदले में, का उपयोग करके अंतराल किया जाता है Mel Scale एक है यह एक स्केल है जो मानव सुनवाई प्रणाली को और मनुष्यों को ध्वनि को कैसा महसूस करता है के अनुरूप करता है. मल स्पेक्ट्रोग्राम का रंग बैंडों के भीतर ध्वनिों की चौड़ाई का प्रतिनिधित्व करता है. उज्ज्वल रंग उच्च चौड़ाई का प्रतिनिधित्व करते हैं जबकि अंधेरे रंग कम चौड़ाई का प्रतिनिधित्व करते हैं. mel bands mel scale logarithmic डिजाइन डिजाइन पर चर्चा करने का मेरा लक्ष्य दृष्टिकोण की एक उच्च स्तर की समीक्षा प्रदान करना है, बिना बहुत अधिक विवरण में जाने के। ("शिक्षा नोटबुक") जो 4 मुख्य खंडों से बना है: नोटबुक कागज भाग 1: ऑडियो डेटा लोड। अनुभाग 2: ऑडियो डेटा प्रसंस्करण। अनुभाग 3: Mel स्पेक्ट्रोग्राम उत्पत्ति और इनपुट तैयारी। अनुभाग 4: मॉडल प्रशिक्षण। आप ध्यान देंगे कि प्रत्येक मुख्य अनुभाग के पहले 2 कोशिकाएं (1) उस अनुभाग द्वारा उपयोग किए गए आयात हैं और (2) एक cell defining constants used in that section and later sections. Config प्रशिक्षण नोटबुक वास्तव में शुरू होता है जहां पूरे नोटबुक में उपयोग किए जाने वाले बुनियादी पियथन पैकेज आयात किए जाते हैं. इस अनुभाग में लॉग इन करने के लिए तर्क भी शामिल है ("WandB") for tracking training runs. You will need to attach your own WandB नोटबुक के रूप में A नाम का उपयोग . Section 0 Weights & Biases API key Kaggle Secret WANDB_API_KEY जैसा कि चर्चा में कहा गया है अनुभाग में, अनलाइन प्रशिक्षण ध्वनिक्षेत्रों को pseudo-labeling के माध्यम से प्रशिक्षण डेटा में शामिल किया जा सकता है। ध्यान रखें कि Kaggle गैर-GPU वातावरण 30 GiB की स्मृति तक सीमित हैं। Training Data Section 3.5 - Pseudo-Labeling निम्नलिखित उप-भागों में वर्णित प्रयोगशाला सेटअप के बाद एक प्रशिक्षित मॉडल को यहां Kaggle पर पोस्ट किया गया है. यदि वांछित है, तो आप इस मॉडल का उपयोग अपने स्वयं के प्रशिक्षण के बिना कर सकते हैं और पक्षी गीत ऑडियो पर निष्कर्ष चलाने के लिए सीधे Running Inference अनुभाग पर कूद सकते हैं. निम्नलिखित उप-भागों में वर्णित प्रयोगशाला सेटिंग के बाद एक प्रशिक्षित मॉडल को Kaggle में पोस्ट किया गया है यदि वांछित है, तो आप अपने स्वयं के प्रशिक्षण के बिना इस मॉडल का उपयोग कर सकते हैं और सीधे कूद सकते हैं BirdSong Audio पर Inference चलाने के लिए। यहां Running Inference अध्याय 1 - ऑडियो डेटा लोड के नोटबुक का हिस्सा: Audio Data Loading BirdCLEF+ 2025 प्रतियोगिता डेटासेट में उन कक्षाओं को निकालता है जो GBV वर्गीकरण द्वारा कवर नहीं किए जाते हैं। load_training_audio विधि के माध्यम से कच्चे ऑडियो डेटा लोड करता है। एक processed_audio निर्देशिका बनाता है और उस निर्देशिका में लोड किए गए ऑडियो डेटा के एक प्रति को .wav फ़ाइलें के रूप में सहेजता है। के इस खंड में शामिल है A यह निरंतर एक निश्चित वर्ग से लोड करने के लिए ऑडियो फ़ाइलों की अधिकतम संख्या निर्दिष्ट करता है। यह सुनिश्चित करने के लिए कि सभी ऑडियो फ़ाइलों को लोड किया जाता है आप अपने स्वयं के प्रयोग सेटिंग के लिए इस निरंतर को समायोजित करने की आवश्यकता हो सकती है. उदाहरण के लिए, यदि आप ऑडियो डेटा लोड कर रहे हैं कक्षाओं, आपको उपलब्ध स्मृति को खराब करने से बचने के लिए इस निरंतर को एक कम मूल्य पर सेट करने की आवश्यकता हो सकती है। Config MAX_FILES 1000 non-GBV all के विधि को एक के साथ कहा जा सकता है अनुपात, जो उन वर्गों की एक सूची है जिनकी ऑडियो लोड की जाएगी. इस परियोजना के लिए, कक्षाओं को एक सूची के रूप में संग्रहीत किया जाता है और परिवर्तित को समर्पित किया जाता है जिसे बाद में पारित किया गया। विधि के माध्यम से पैरामीटर load_training_audio 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 स्थिर के साथ काम करता है. use_slice पैरामीटर और LOAD_SLICE स्थिर इस कार्यान्वयन के साथ उपयोग नहीं किए जाते हैं. हालांकि, उन्हें प्रत्येक फ़ाइल से एक विशिष्ट मात्रा में ऑडियो लोड करने के लिए इस्तेमाल किया जा सकता है. उदाहरण के लिए, प्रत्येक ऑडियो फ़ाइल से केवल 5 सेकंड ऑडियो लोड करने के लिए, LOAD_SLICE को 160000 सेट करें, जो 32000 के नमूना दर के 5 गुना के रूप में गणना की जाती है; और use_slice पैरामीटर को true पारित करें. के विधि भी एक वैकल्पिक बूलेन स्वीकार करता है इस पैरामीटर के साथ काम करता है निरंतर में परिभाषित कोलकाता - The पैरामीटर और निरंतर है इस कार्यान्वयन के साथ उपयोग किया जाता है. हालांकि, उन्हें प्रत्येक फ़ाइल से विशिष्ट मात्रा में ऑडियो लोड करने के लिए इस्तेमाल किया जा सकता है. उदाहरण के लिए, प्रत्येक ऑडियो फ़ाइल से केवल 5 सेकंड ऑडियो लोड करने के लिए, सेट दो जिसकी गणना की जाती है कि टाइम नमूने की दर और पास के लिए पैरामीटर load_training_audio use_slice LOAD_SLICE Config use_slice LOAD_SLICE not LOAD_SLICE 160000 5 32000 True use_slice के एक boolean को स्वीकार करता है जब यह पैरामीटर तर्क पैदा करता है a संदर्भ और प्रत्येक ऑडियो नमूने का एक प्रति सहेजता है फ़ाइल फ़ाइल फ़ाइल फ़ाइल फ़ाइल फ़ाइल फ़ाइल फ़ाइल फ़ाइल फ़ाइल फ़ाइल फ़ाइल फ़ाइल फ़ाइल फ़ाइल फ़ाइल फ़ाइल फ़ाइल फ़ाइल फ़ाइल फ़ाइल निर्देशिका का उपयोग अगले अनुभाग में किए गए ऑडियो नमूने को डिस्क पर सहेजने के लिए किया जाता है, बिना BirdCLEF+ 2025 डेटासेट निर्देशिकाओं को प्रभावित करने के लिए। load_training_audio make_copy True processed_audio .wav processed_audio The विधि कुंजी के रूप में वर्ग के नामों का उपयोग करके लोड किए गए ऑडियो डेटा का एक शब्दकोश वापस देता है। : load_training_audio (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 Optionally strips silent segments and slices audio to eliminate most human annotations from raw audio. Stripping silent segments eliminates irrelevant parts of the audio signal. Optionally augments audio for minority classes to help address the class imbalance. Audio augmentation consists of (1) adding a randomly generated noise signal, (2) changing the tempo of the raw audio, or (3) adding a randomly generated noise signal and changing the tempo of the raw audio. अनुभाग 2.1 - चुपके सेगमेंट का पता लगाना The method is used to "slide" over each raw audio sample and identify silent segments by comparing the 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 इस अनुभाग की सेल इस अनुभाग के व्यवहार को नियंत्रित method: detect_silence root-mean square (RMS) 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 के और निरंतरताओं को यह समायोजित करने के लिए संशोधित किया जा सकता है कि विधि कच्चे ऑडियो पर "स्लाइड" कैसे करती है। value can be modified to make the method more aggressive or conservative with respect to identification of silent segments. SIL_FRAME SIL_HOP SIL_THRESHOLD विधि प्रत्येक वर्ग में प्रत्येक फ़ाइल के लिए चुपके सेगमेंट मार्करों के एक शब्दकोश का उत्पादन करती है. 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]} ...} अनुभाग 2.2 - चुपके सेगमेंट्स को हटाना और मानव नोटों को हटाना The constant defined in the इस अनुभाग की सेल निर्दिष्ट करती है कि क्या ऑडियो को चुपके सेगमेंट से हटा दिया जाना चाहिए sliced to remove human annotations. USE_REMOVE_SILENCE_AND_HUMAN_ANNOT Config और सबसे USE_REMOVE_SILENCE_AND_HUMAN_ANNOT = True The method strips silent segments from audio samples using the output from the method. Further, it implements logic to handle human annotations based on a simple observation: many audio samples, namely those with human annotations, to have the following structure: remove_silence_and_human_annot detect_silence टेंडर | < 10s | ~1s | | | BIRDSONG | SILENCE | HUMAN ANNOTATION | पक्षियों के गीत और मानव नोटिस अनुभागों में चुपके सेगमेंट शामिल हो सकते हैं. हालांकि, जैसा कि ऊपर दिए गए चार्ट में देखा गया है, पक्षियों की आवाज रिकॉर्डिंग अक्सर ऑडियो के पहले कुछ सेकंड के भीतर होती है. इसलिए, मानव नोटिस के साथ निपटने के लिए एक सरल, यदि अपर्याप्त, दृष्टिकोण यह है कि पहले चुपके सेगमेंट मार्कर पर ऑडियो नमूने काटना है जो एक निर्दिष्ट विंडो के बाहर होता है, यह मानते हुए कि एक मानव नोटिस उस चुपके सेगमेंट का अनुसरण करता है. तर्क का उपयोग करें constant in the cell to check if a silent segment marker lies outside the window specified by , 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 अनुभाग, वहाँ है ऑडियो रिकॉर्डिंग जहां मानव एनाटेशन पंडित सिंह ने कहा कि यहां लिखे गए शब्दों का अर्थ उन मामलों को संबोधित करें. कुछ ऑडियो नमूने में रिकॉर्ड किए गए पक्षी गीतों के लंबे अनुक्रम हैं और इन नमूने में अक्सर चुपके सेगमेंट नहीं होते हैं. ऐसे नमूने पहले वर्णित तर्क से प्रभावित नहीं होते हैं और पूरी तरह से रखा जाता है। remove_silence_and_human_annot ANNOT_BREAKPOINT Config ANNOT_BREAKPOINT Training Data some पूर्वाग्रह नहीं दूसरी निरंतरता, , can be optionally used in a final processing step to return an even more refined slice of the processed audio. Set to the number of seconds of processed audio that you want to retain. SLICE_FRAME SLICE_FRAME के विधि संसाधित ऑडियो डायरेक्टर के तहत डिस्क पर सहेजती है via the parameter, which is passed as . The method returns a dictionary of the प्रत्येक कक्षा के लिए प्रोसेसिंग ऑडियो सेकंड। remove_silence_and_human_annot processed_audio save_audio True कुल {'1139490': 14, '1192948': 29, '1194042': 24, '126247': 48, '1346504': 40, '134933': 32, '135045': 77, ...} The method is used following सभी वर्गों में ऑडियो सेकंड की औसत संख्या प्राप्त करने के लिए। get_audio_stats remove_silence_and_human_annot अनुच्छेद 2.3 - अल्पसंख्यक वर्गों के लिए वृद्धि दरों की गणना As mentioned in the इस नोटबुक सेक्शन में, कक्षाओं को संतुलित नहीं किया जाता है। Augmentation इस नोटबुक सेक्शन में उपयोग किया जाता है ताकि यह असंतुलन को संबोधित करने में मदद करता है जो सभी कक्षाओं में ऑडियो के औसत सेकंड का लाभ उठाता है, जैसा कि नोटबुक द्वारा प्रदान किया गया है। विधि: संसाधित ऑडियो के कुल सेकंड के साथ कक्षाएं औसत बढ़ जाता है। method determines the number of augmentation turns for each minority class using the average number of seconds per processed audio sample. Training Data get_audio_stats below get_augmentation_turns_per_class 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 includes a constant which can be used to adjust the value for get_augmentation_turns_per_class AVG_SECS_FACTOR 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 इसमें A constant which can be used to adjust the value for get_augmentation_turns_per_class AVG_SECS_FACTOR 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. अनुभाग 2.4 - चलने वाले वृद्धि The निरंतर में परिभाषित cell of this section specifies if audio should be augmented. USE_AUGMENTATIONS Config USE_AUGMENTATIONS = True As mentioned earlier, audio augmentation consists of (1) adding a randomly generated noise signal, (2) changing the tempo of the raw audio, or (3) adding a randomly generated noise signal and changing the tempo of the raw audio. The and 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 सेल : add_noise change_tempo Config NOISE_RNG_LOW = 0.0001 NOISE_RNG_HIGH = 0.0009 TEMPO_RNG_LOW = 0.5 TEMPO_RNG_HIGH = 1.5 The method runs the augmentations using the output from the method. For those classes that will be augmented, the logic: run_augmentations get_augmentations_turns_per_class Randomly selects a processed audio sample (i.e. silent segments already removed) for augmentation. Randomly selects the augmentation to perform: (1) adding noise, (2) changing the tempo, or (3) adding noise and changing the tempo. Saves the augmented audio to disk under the appropriate class within the directory. 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. Section 3 - Mel Spectrogram Generation and Input Preparation The section of the notebook: Mel Spectrogram Generation and Input Preparation संसाधित ऑडियो डेटा को प्रशिक्षण और सत्यापन सूची में विभाजित करता है। Splits audio into 5 second frames. Generates mel spectrograms for each 5 second audio frame. Resizes mel spectrograms to a target size of . (224, 224) वैकल्पिक रूप से, प्रशिक्षण डेटा को बढ़ाने के लिए pseudo-labeled डेटा नमूने लोड करता है। प्रशिक्षण डेटा और सत्यापन डेटा लेबल को एक गर्म कोड करता है। Constructs TensorFlow objects from training and validation data lists. Dataset Optionally uses MixUp logic to augment training data. अनुभाग 3.1 - संसाधित ऑडियो डेटा को विभाजित करना प्रसंस्करण किए गए ऑडियो डेटा को डाउनलोड किया जाता है folder. The data is split into 4 lists: processed_audio training_audio training_labels validation_audio validation_labels लेबल, निश्चित रूप से, ऑडियो उदाहरणों से जुड़े वर्गों के नाम हैं। constant defined in the cell controls the split ratio between the training and validation data lists. Processed audio data is shuffled before splitting. SPLIT Config अनुभाग 3.2 - ऑडियो को फ्रेम में विभाजित करना Audio is split into 5 second segments using the method, which itself uses the TensorFlow method to split each audio example. The following constants in the cell control the split operation: frame_audio signal.frame Config FRAME_LENGTH = 5 FRAME_STEP = 5 Section 3.3 - Generating Mel Spectrograms Mel spectrograms are generated for each 5 second audio frame generated in via the निम्नलिखित स्थिरताओं में cell specify the parameters used when generating the mel spectrograms, such as the number of mel bands, minimum frequency, and maximum frequency: Section 3.2 audio2melspec Config # 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 अनुभाग 3.4 - Mel Spectrograms को पुनर्स्थापित करना The method is used to convert each mel spectrogram to a उद्देश्य - प्रत्येक वस्तुओं को बाद में बदल दिया जाता है which is the input dimension expected by the EfficientNet B0 model. to_melspectrogram_image pillow Image Image (224, 224) अनुच्छेद 3.5 - Pseudo-labeled डेटा लोड As mentioned in the अनुच्छेद, The directory contains nearly 10,000 audio recordings of birdsong. These audio recordings can be incorporated into the training data via . A simple process to create pseudo-labeled data is as follows: Training Data train_soundscapes unlabeled pseudo-labeling pseudo-labelled डेटा के बिना एक वर्गीकरण को प्रशिक्षित करें। Soundcape Audio फ़ाइलों को लोड करें। प्रत्येक ऑडियो ध्वनि क्षेत्र को 5 सेकंड फ्रेम में विभाजित करें। Generate mel spectrograms for each 5 second frame and resize to . (224, 224) प्रत्येक रीमेज मल स्पेक्ट्रोग्राम पर पूर्वानुमान चलाएं, जिसका उपयोग आप पहले चरण में प्रशिक्षित कर चुके हैं। एक वांछित भरोसेमंदता स्तर से ऊपर पूर्वानुमान रखें और पूर्वानुमानित वर्ग लेबल के तहत उन पूर्वानुमानों के लिए मल स्पेक्ट्रोग्राम को डिस्क करने के लिए सहेजें। Train your classifier again using the psuedo-labeled data. Pseudo-labelled डेटा आपके वर्गीकरण के प्रदर्शन में सुधार कर सकता है. यदि आप अपने स्वयं के pseudo-labelled डेटा उत्पन्न करना चाहते हैं, तो आपको वर्गीकरण को प्रशिक्षित करने के लिए बाकी अनुभागों के साथ जारी रखना चाहिए pseudo-labelled डेटा. फिर, अपने स्वयं के pseudo-labelled डेटा सेट का उपयोग करने के लिए अपने वर्गीकरण का उपयोग करें. अंत में, अपने pseudo-labelled डेटा का उपयोग करके अपने वर्गीकरण को फिर से प्रशिक्षित करें. बिना इस कार्यान्वयन में pseudo-labeled डेटा का उपयोग नहीं किया जाता है. हालांकि, आप संदर्भित निष्कर्ष नोटबुक को संशोधित कर सकते हैं pseudo-labeled data को generate करने के लिए। Running Inference सेट करें में निरंतर सेल to skip the use of pseudo-labeled data. USE_PSEUDO_LABELS Config False अनुच्छेद 3.6 - कोडिंग लेबल के एक-हॉट-कोडिंग लेबलों के लिए विधि का उपयोग किया जाता है. एक-हॉट-कोडिंग लेबलों को NumPy रेंज के रूप में वापस किया जाता है और प्रशिक्षण लेबल और सत्यापन लेबल सूची में जोड़ा जाता है। process_labels अनुभाग 3.7 - प्रशिक्षण और सत्यापन डेटा सूचीों को TensorFlow में परिवर्तित करना वस्तुओं Dataset डेटा TensorFlow के बारे में TensorFlow बनाने के लिए उपयोग किया जाता है प्रशिक्षण और सत्यापन डेटा सूची से वस्तुओं। प्रशिक्षण में कहा जाता है बैटचिंग से पहले प्रशिक्षण डेटा shuffle करने के लिए object। दोनों ही तरीकों से कहा जाता है प्रशिक्षण और सत्यापन डेटा सेट को बैच करने के लिए ऑब्जेक्ट। में निरंतर सेल बैच आकार को नियंत्रित करता है। data.Dataset.from_tensor_slices Dataset shuffle Dataset batch Dataset BATCH_SIZE Config अनुभाग 3.8 - प्रशिक्षण डेटा को बढ़ाने के लिए MixUp का उपयोग करना जैसा कि आप पहले से ही जानते हैं, मिक्सअप एक डेटा वृद्धि तकनीक है जो दो छवियों को एक साथ एक नए डेटा नमूने बनाने के लिए प्रभावी ढंग से मिश्रण करती है. मिश्रित छवि के लिए वर्ग मूल 2 छवियों से जुड़े वर्गों का मिश्रण है. method, along with the विधि, वैकल्पिक MixUp तर्क को कैप्सूल करता है। mix_up sample_beta_distribution इस कार्यान्वयन में प्रशिक्षण डेटा को बढ़ाने के लिए MixUp का उपयोग किया जाता है. To use MixUp, set the में निरंतर सेल . USE_MIXUP Config True अनुभाग 4 - मॉडल प्रशिक्षण के नोटबुक का हिस्सा: Model Training प्रशिक्षण चलाने के डेटा को कब्जा करने के लिए एक WandB परियोजना को प्रारंभ और कॉन्फ़िगर करता है। EfficientNet B0 मॉडल का निर्माण और संकलित करता है। मॉडल को प्रशिक्षित करें। प्रशिक्षित मॉडल को डिस्क पर सहेजें। Section 4.1 - Initializing and Configuring WandB Project सुनिश्चित करें कि आपने नोटबुक में अपने स्वयं के WandB एपीआई कुंजी को Kaggle Secret के रूप में जोड़ा है और नोटबुक के अनुभाग 0 में WandB लॉगिन विधि ने True वापस किया है। सुनिश्चित करें कि आपने नोटबुक में अपने स्वयं के WandB एपीआई कुंजी को Kaggle Secret के रूप में जोड़ा है और नोटबुक के अनुभाग 0 में WandB लॉगिन विधि ने True वापस किया है। The इस अनुभाग में सेल में एक नया WandB परियोजना (यदि परियोजना पहले से ही मौजूद नहीं है) को प्रारंभ करने और कॉन्फ़िगर करने के लिए तार्किक शामिल है जो प्रशिक्षण चलाने के डेटा को कैप्चर करेगा: Config 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) आप प्रोजेक्ट का नाम बदल सकते हैं to your desired WandB project name. my-bird-vocalization-classifier अनुभाग 4.2 - EfficientNet B0 मॉडल का निर्माण और संग्रह के इस विधि का उपयोग पहले प्रशिक्षित EfficientNet B0 मॉडल को ImageNet वजनों के साथ और शीर्ष परत के बिना लोड करने के लिए किया जाता है: build_model model = EfficientNetB0(include_top=False, input_tensor=inputs, weights="imagenet") मॉडल को पहले से प्रशिक्षित ImageNet वजनों का लाभ उठाने के लिए फ्रीज किया जाता है, जिसका उद्देश्य केवल (यानी, ट्रेन) मॉडल के अंतिम चरण में परतें: unfreeze # 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 Config मॉडल के शीर्ष को एक अंतिम के साथ पुनर्निर्माण किया गया है layer reflecting the number bird species classes. कक्षा असंतुलन को हल करने में मदद करने के लिए नुकसान फ़ंक्शन के रूप में चुना जाता है। और में निरंतरता cell are used with the loss function. Dense Categorical focal cross-entropy LOSS_ALPHA LOSS_GAMMA Config अनुभाग 4.3 - मॉडल प्रशिक्षण The method is called on the compiled से प्रशिक्षण के लिए, ध्यान दें कि A कॉलबैक , एक निरंतर सीखने की दर के बजाय उपयोग किया जाता है. एक प्रारंभिक सीखने की दर सीखने की दर को युग गिनती के आधार पर 2 चरणों में कम किया जाता है प्रशिक्षण युगों की संख्या को नियंत्रित करता है में निरंतर सेल fit model Section 4.2 learning rate scheduler lr_scheduler 4.0e-4 EPOCHS Config Section 4.4 - Model Saving के विधि को संकलित किया जाता है डिस्क पर मॉडल को सहेजने के लिए प्रशिक्षण के बाद। save model model.save("bird-vocalization-classifier.keras") प्रशिक्षण परिणाम नोटबुक को चलाना निम्नलिखित प्रशिक्षण परिणामों को उत्पन्न करना चाहिए, मानते हुए कि आपने प्रयोगशाला सेटअप का उपयोग किया है जो सूची में वर्णित था सेक्शन : Building the Classifier जैसा कि देखा गया है, सटीकता लगभग 90% से ऊपर है और सत्यापन सटीकता 30 युगों के लिए प्रशिक्षण के बाद लगभग 70% है। हालांकि, जैसा कि देखा गया है, सत्यापन सटीकता काफी भिन्न होती है। यह बदलाव आंशिक रूप से उपलब्ध स्मृति के साथ वर्ग असंतुलन के लिए जिम्मेदार है जो असंतुलन को पूरी तरह से संबोधित करने के लिए अतिरिक्त वृद्धिओं का उपयोग सीमित करता है। परिणाम बताते हैं कि मॉडल प्रशिक्षण डेटा पर अधिग्रहण से पीड़ित है और सामान्य नहीं होता है और उम्मीद की जा सकती है। निष्कर्ष निकालना इस ("Inference Notebook") निष्कर्ष निकालने के लिए इस्तेमाल किया जा सकता है। निष्कर्ष नोटबुक तर्क GBV वर्गीकरण मॉडल और पिछले अनुभाग में प्रशिक्षित मॉडल दोनों का उपयोग करता है। प्रत्येक soundcapes ऑडियो फ़ाइल 5 सेकंड फ्रेम में विभाजित है। निरंतर में परिभाषित सेल नोटबुक से ऑडियो फ़ाइलों की संख्या को नियंत्रित करता है जो निष्कर्ष निकालने के लिए लोड किए जाते हैं। नोटबुक कागज train_soundscapes MAX_FILES Config Section 0 The inference notebook first generates predictions using the GBV classifier. The predictions for the 143 BirdCLEF+ 2025 competition dataset classes known to the GBV classifier are isolated. If the maximum probability among the 143 "known" classes is above or equal to , तो GBV पूर्वानुमान वर्ग सच्चा वर्ग के रूप में चुना जाता है. यदि 143 " ज्ञात" वर्गों में से अधिकतम संभावना नीचे है , यह माना जाता है कि सच्चा वर्ग GBV वर्गीकरण के लिए "अज्ञात" 63 वर्गों में से एक है - अर्थात् पिछले अनुभाग में मॉडल को प्रशिक्षित करने के लिए उपयोग किए गए वर्गों। GBV_CLASSIFIER_THRESHOLD GBV_CLASSIFIER_THRESHOLD के निरंतर में परिभाषित किया जाता है सेल अनुमान लगाने का नोटबुक। पूर्वानुमान 2 फ़ाइलों के लिए आउटपुट हैं: GBV_CLASSIFIER_THRESHOLD Config Section 5 एक preds.csv फ़ाइल जो हर 5 सेकंड की ध्वनि दृश्य टुकड़े के लिए पूर्वानुमान और पूर्वानुमान संभावना को कैप्चर करती है। एक submission.csv फ़ाइल जो BirdCLEF+ 2025 प्रतियोगिता के लिए प्रारूप में सभी वर्ग संभावनाओं को कैप्चर करती है। निष्कर्ष नोटबुक के अनुभाग 4 के पहले कोशिका में अपने परिष्कृत मॉडल के लिए मार्ग निर्धारित करें.Set the path to your finetuned model in the first cell of Section 4 of the inference notebook. अपने परिष्कृत मॉडल के लिए रास्ता सेट करें पहले सेल में Inference Notebook के बारे में Section 4 भविष्य के काम प्रशिक्षण नोटबुक का उपयोग सभी 206 BirdCLEF+ 2025 कक्षाओं पर एक मॉडल को प्रशिक्षित करने के लिए किया जा सकता है, कम से कम प्रतियोगिता डेटासेट के संबंध में जीबीवी वर्गीकरण की आवश्यकता को समाप्त करने के लिए। के लिए विधि सभी वर्गों से ऑडियो डेटा लोड करेगी। और निरंतरों का उपयोग चार्ज किए गए ऑडियो की मात्रा को सीमित करने के लिए किया जा सकता है ताकि एक Kaggle नोटबुक वातावरण की सीमाओं के भीतर काम किया जा सके। [] load_training_audio MAX_FILES LOAD_SLICE बेशक, अधिक सटीक मॉडल प्रशिक्षण डेटा की एक बड़ी मात्रा का उपयोग करके प्रशिक्षित किया जा सकता है। आदर्श रूप से, कक्षा असंतुलन को हल करने के लिए अधिक वृद्धिओं की संख्या का उपयोग किया जाएगा। इसके अलावा, अन्य वृद्धि तकनीकों, जैसे CutMix, प्रशिक्षण डेटा को आगे बढ़ाने के लिए लागू किया जा सकता है. हालांकि, इन रणनीतियों को एक अधिक मजबूत विकास वातावरण की आवश्यकता होती है।