203 การอ่าน

การเรียนรู้เครื่องสําหรับนก: สร้างเครื่องจําลอง Vocalization Bird ของคุณเอง

โดย Picture in the Noise20m2025/06/09
Read on Terminal Reader

นานเกินไป; อ่าน

การแข่งขัน BirdCLEF+ 2025 มีความท้าทายต่อผู้ใช้ในการออกแบบรูปแบบการจัดอันดับที่สามารถคาดการณ์ชนิดของนกได้อย่างแม่นยําจากบันทึกเสียง คู่มือนี้อธิบายวิธีในการสร้างตัวจัดอันดับการร้องเพลงนกของคุณเองซึ่งสามารถใช้ร่วมกับตัวจัดอันดับ GBV เพื่อจัดอันดับสายพันธุ์นกที่กว้างขึ้น วิธีการนี้ใช้เทคนิคพื้นฐานเดียวกันที่อธิบายไว้ในบทความการวิจัย Google การแยกเพลงนกในป่าสําหรับการจัดอันดับ
featured image - การเรียนรู้เครื่องสําหรับนก: สร้างเครื่องจําลอง Vocalization Bird ของคุณเอง
Picture in the Noise HackerNoon profile picture
0-item

การแนะนํา

นักวิทยาศาสตร์ใช้ระบบอัตโนมัติเพื่อศึกษาระบบนิเวศขนาดใหญ่ ในกรณีของพื้นที่ป่าและป่าautonomous recording units (ARUs)ใช้เพื่อบันทึกเสียงซึ่งสามารถใช้เพื่อช่วยระบุสายพันธุ์สัตว์และแมลงที่แตกต่างกัน ข้อมูลนี้สามารถใช้เพื่อพัฒนาความเข้าใจที่ดีขึ้นเกี่ยวกับการกระจายของสายพันธุ์ภายในสภาพแวดล้อมที่กําหนด ในกรณีของนก Google Research ระบุในบทความของพวกเขาการแยกเพลงนกในป่าเพื่อการจัดอันดับที่ "นักนิเวศวิทยาใช้นกเพื่อทําความเข้าใจระบบอาหารและสุขภาพป่า - ตัวอย่างเช่นถ้ามีไม้ก๊อกไม้มากขึ้นในป่าซึ่งหมายความว่ามีไม้ตายมาก" นอกจากนี้พวกเขายังสังเกตเห็นมูลค่าของการระบุด้วยเสียง: "[เนื่องจาก] นกสื่อสารและทําเครื่องหมายภูมิภาคด้วยเพลงและโทรเป็นสิ่งที่มีประสิทธิภาพมากที่สุดในการระบุพวกเขาด้วยหู ในความเป็นจริงผู้เชี่ยวชาญสามารถระบุนกได้ถึง 10 เท่าด้วยหูกว่าด้วยสายตา"

การแยกเพลงนกในป่าเพื่อการจัดอันดับ

เมื่อเร็ว ๆ นี้, theBirdCLEF+ 2025การแข่งขันที่เปิดตัวในKaggleภายใต้ฝาครอบของรูปภาพImageCLEF สนับสนุนการวิจัยเกี่ยวกับการอ้างอิงข้ามภาษาและการค้นหาภาพในหลายโดเมน วัตถุประสงค์ของการแข่งขันคือตรงไปข้างหน้า: ออกแบบรูปแบบการจัดอันดับที่สามารถคาดการณ์ชนิดของนกได้อย่างแม่นยําจากบันทึกเสียง

BirdCLEF+ 2025รูปภาพ

ในตอนแรกงานดูเหมือนเป็นเรื่องธรรมเนียมเนื่องจากความพร้อมใช้งานของGoogle Bird Vocalization (GBV) คลาสสิฟิกนอกจากนี้ยังเป็นที่รู้จักกันในฐานะPerchคลาสสิก GBV ได้รับการฝึกอบรมเกี่ยวกับเกือบ 11,000 ชนิดของนกและดังนั้นจึงเป็นตัวเลือกที่ชัดเจนเป็นรูปแบบการจัดอันดับ

Google Bird Vocalization (GBV) คลาสสิฟิก

อย่างไรก็ตามการแข่งขันรวมถึงสายพันธุ์นกที่อยู่ภายนอกชุดการฝึกอบรม GBV Classifier เป็นผลให้ GBV Classifier มีความแม่นยํา ~60% ในชุดข้อมูลการทดสอบการแข่งขัน BirdCLEF+ 2025 เป็นผลให้ต้องพัฒนารูปแบบที่กําหนดเอง

คู่มือนี้จะอธิบายวิธีการสร้างเครื่องจําลองเสียงนกของคุณเองซึ่งสามารถใช้ร่วมกับเครื่องจําลอง GBV เพื่อจัดประเภทสายพันธุ์นกที่หลากหลาย วิธีนี้ใช้เทคนิคพื้นฐานเดียวกันที่อธิบายไว้ใน Google Researchบทความการออกแบบใช้ชุดข้อมูลการแข่งขัน 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 ของชั้นเรียนเหล่านี้คือไม่ครอบคลุมโดย theGBV 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.

สองเงื่อนไขเหล่านี้นําไปสู่ความไม่สมดุลที่สําคัญระหว่างชั้นในแง่ของปริมาณเสียงและคุณภาพเสียงที่มีอยู่

จํานวนมากของการฝึกอบรมบันทึกเสียงทั้งสองGBVและNon-GBVชั้นเรียนยังรวมถึงการพูดของมนุษย์ด้วยผู้พูดที่อธิบายการบันทึกด้วยรายละเอียดเช่นชนิดของนกที่บันทึกและสถานที่ของบันทึก ในส่วนใหญ่ -แต่ไม่ทั้งหมด-กรณีที่บันทึกตามเสียงนกที่บันทึกไว้

กลยุทธ์ที่ใช้ในการแก้ไขความไม่สมดุลของชั้นเรียนและการปรากฏตัวของคําอธิบายการพูดของมนุษย์จะถูกกล่าวถึงในBuilding the Classifierส่วน

train_soundscapes

โซtrain_soundscapesไดเรกทอรีมีเกือบ 10,000unlabeledการบันทึกเสียงของ birdsong. ในขณะที่จะถูกกล่าวถึงในBuilding the Classifierส่วนบันทึกเสียงเหล่านี้สามารถรวมเข้ากับข้อมูลการฝึกอบรมผ่านทางpseudo-labeling.

test_soundscapes

โซtest_soundscapesไดเรกทอรีที่ว่างเปล่ายกเว้น areadme.txtไดเรกทอรีนี้เต็มไปด้วยชุดเสียงทดสอบที่ซ่อนอยู่เมื่อส่งผลการคาดการณ์ไปยังการแข่งขัน BirdCLEF+ 2025

สร้างคลาสสิฟิก

วิธีการพื้นฐานและพื้นหลัง

วิธีการพื้นฐานที่ใช้โดยGoogle การวิจัยสําหรับการฝึกอบรมการจําแนกเสียงนกของพวกเขาคือดังต่อไปนี้:

  1. แบ่งเสียงที่บันทึกไว้เป็นช่วง 5 วินาที
  2. แปลงส่วนเสียงเป็น spectrograms mel
  3. การฝึกอบรมเครื่องจําลองภาพบน spectrograms mel

วิธีการเดียวกันจะปฏิบัติตามในคู่มือนี้ เครื่องจําลองภาพที่จะได้รับการฝึกอบรมคือ Google'sประสิทธิภาพการทํางาน B0แบบ. หากคุณมีความคุ้นเคยกับEfficientNetครอบครัวของรุ่นคุณรู้ว่าพวกเขาถูกออกแบบมาเพื่อการประมวลผลภาพที่มีประสิทธิภาพ

ประสิทธิภาพการทํางาน B0

อย่างไรก็ตามก่อนที่ตัวอย่างเสียงสามารถแบ่งออกและแปลงเป็น spectrograms mel เราต้องจัดการกับความไม่สมดุลของชั้นและปัญหาการบันทึกของมนุษย์ที่กล่าวถึงในTraining Dataส่วนใหญ่ปัญหาเหล่านี้จะได้รับการแก้ไขโดยการเพิ่มข้อมูลและตัดตัวอย่างเสียง

ก่อนที่จะเจาะเข้าไปในการออกแบบที่แท้จริงส่วนประกอบต่อไปนี้ให้ข้อมูลพื้นหลังสั้น ๆ

รูปแบบที่มีประสิทธิภาพ

Google Research นําเสนอครอบครัวของมันEfficientNetรูปแบบในปี 2019 เป็นชุดของconvolutional neural networkรุ่นที่เหนือกว่ารุ่นทันสมัยในเวลานั้นในแง่ทั้งขนาดและประสิทธิภาพ


EfficientNet model family performance

ประสิทธิภาพNetV2รุ่นที่เปิดตัวในปี 2021 ให้ประสิทธิภาพและประสิทธิภาพพารามิเตอร์ที่ดีขึ้น

แม้ว่าการฝึกอบรมในรูปภาพรุ่น EfficientNet ได้แสดงให้เห็นถึงประโยชน์ของพวกเขาเมื่อถ่ายโอนไปยังชุดข้อมูลอื่น ๆ ทําให้เป็นทางเลือกที่น่าสนใจเป็นเทคโนโลยีการจัดประเภทสําหรับโครงการนี้

เมล Spectrograms

Spectrogram mel เป็นตัวแทนภาพของสัญญาณเสียง มันอาจจะดีที่สุด analogized กับ heatmap สําหรับเสียง


Sample mel spectrogram

แกน x ของสเปกตรัม mel แสดงให้เห็นถึงมิติเวลาของสัญญาณเสียงและแกน y แสดงให้เห็นถึงความถี่ของเสียงภายในสัญญาณ อย่างไรก็ตามแทนที่จะแสดงความถี่ทั้งหมดตามสแควร์อย่างต่อเนื่องความถี่จะถูกกลุ่มเป็นmel bandsแถบเหล่านี้ในทางกลับกันจะถูกแยกออกโดยใช้mel scaleระดับน้ําผึ้งคือ alogarithmicตารางที่เข้าถึงระบบฟังของมนุษย์และวิธีการที่มนุษย์รับรู้เสียง สีของสเปกตรัมผึ้งแสดงให้เห็นถึงความกว้างของเสียงภายในแถบ สีสดใสแสดงให้เห็นถึงความกว้างที่สูงขึ้นในขณะที่สีเข้มแสดงให้เห็นถึงความกว้างที่ต่ํากว่า

การออกแบบ

วัตถุประสงค์ของฉันในการพูดคุยเกี่ยวกับการออกแบบคือการให้การตรวจสอบระดับสูงของวิธีการโดยไม่ต้องเข้าสู่รายละเอียดมากเกินไป โลกการฝึกอบรมหลัก (การปรับความละเอียด) จะถูกจับในเรื่องนี้กระดาษแข็ง(“บันทึกการฝึกอบรม”) ซึ่งประกอบด้วย 4 ส่วนหลัก:

  • ส่วนที่ 1: การโหลดข้อมูลเสียง
  • ส่วนที่ 2: การประมวลผลข้อมูลเสียง
  • ส่วนที่ 3: การสร้างสเปกตรัม Mel และการเตรียมการป้อนข้อมูล
  • ส่วนที่ 4: การฝึกอบรมแบบจําลอง

คุณจะสังเกตเห็นว่า 2 เซลล์แรกของแต่ละส่วนหลักคือ (1) การนําเข้าที่ใช้โดยส่วนนั้นและ (2) aConfigตัวกําหนดเสถียรของเซลล์ที่ใช้ในส่วนนี้และส่วนต่อไปนี้

บันทึกการฝึกอบรมจริง ๆ เริ่มต้นด้วยSection 0ที่แพคเกจ Python ฐานที่ใช้ในบันทึกทั้งหมดจะถูกนําเข้า ส่วนนี้ยังรวมถึงกลยุทธ์ในการเข้าสู่ระบบWeights & Biases("WandB") สําหรับการติดตามการออกกําลังกาย คุณจะต้องแนบ WandB ของคุณเองAPI keyไปที่บันทึกเป็น aKaggle Secretใช้ชื่อWANDB_API_KEY.

ตามที่กล่าวถึงในTraining Dataส่วนเสียงการฝึกอบรมที่ไม่ติดฉลากสามารถรวมเข้ากับข้อมูลการฝึกอบรมผ่านทาง pseudo-labeling การใช้ข้อมูลที่ติดฉลากฉลากฉลากฉลากฉลากฉลากฉลากSection 3.5 - Pseudo-Labelingโปรดจําไว้ว่าสภาพแวดล้อมที่ไม่ใช่ GPU ของ Kaggle ถูก จํากัด ถึง 30 GiB ของหน่วยความจํา

โมเดลที่ได้รับการฝึกอบรมตามการตั้งค่าการทดลองที่อธิบายไว้ในส่วนใต้ต่อไปนี้ได้รับการโพสต์ใน Kaggle ที่นี่ หากต้องการคุณสามารถใช้รุ่นนี้โดยไม่ต้องฝึกอบรมของคุณเองและกระโดดโดยตรงไปยังส่วน Running Inference เพื่อเรียกใช้การสรุปเกี่ยวกับเสียงเพลงนก

โมเดลที่ได้รับการฝึกอบรมตามการตั้งค่าการทดลองที่อธิบายไว้ในส่วนใต้ต่อไปนี้ได้รับการโพสต์ใน Kaggle ที่นี่ หากต้องการคุณสามารถใช้รุ่นนี้โดยไม่ต้องฝึกอบรมของคุณเองและกระโดดโดยตรงไปยังส่วน Running Inference เพื่อเรียกใช้การสรุปเกี่ยวกับเสียงเพลงนก

ส่วนที่ 1 - การโหลดข้อมูลเสียง

โซAudio Data Loadingส่วนของบันทึก:

  1. สกัดชั้นในชุดข้อมูลการแข่งขัน BirdCLEF+ 2025 ที่ไม่ได้ครอบคลุมโดยตัวจัดอันดับ GBV
  2. โหลดข้อมูลเสียงดิบผ่านวิธีการ load_training_audio
  3. สร้างไดเรกทอรี processed_audio และบันทึกสําเนาข้อมูลเสียงที่โหลดเป็นไฟล์ .wav ในไดเรกทอรี

โซConfigเซลล์ของส่วนนี้รวมถึง aMAX_FILESค่าคงที่นี้ระบุจํานวนไฟล์เสียงสูงสุดที่จะโหลดจากคลาสที่ระบุ ค่าคงที่นี้ถูกตั้งค่าเป็นค่าขนาดใหญ่ของ1000เพื่อให้แน่ใจว่าไฟล์เสียงทั้งหมดจะถูกโหลดสําหรับnon-GBVคุณอาจจําเป็นต้องปรับเสถียรภาพนี้สําหรับการตั้งค่าทดลองของคุณเอง ตัวอย่างเช่นถ้าคุณโหลดข้อมูลเสียงจากallคุณอาจจําเป็นต้องตั้งค่าคงที่นี้ให้ต่ํากว่าเพื่อหลีกเลี่ยงการใช้หน่วยความจําที่มีอยู่

โซload_training_audioวิธีการที่สามารถเรียกได้ด้วย aclassesพารามิเตอร์ซึ่งเป็นรายการของชั้นที่มีเสียงที่จะโหลด สําหรับโครงการนี้non-GBVคลาสถูกจัดเก็บเป็นรายการและกําหนดให้ตัวแปรmissing_classesซึ่งต่อมาจะถูกส่งไปยังload_training_audioวิธีการผ่าน theclassesพารามิเตอร์

# `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 ซึ่งคํานวณเป็น 5 ครั้งอัตราการสุ่มตัวอย่างของ 32000 และผ่าน True ไปยังพารามิเตอร์ use_slice

โซload_training_audioวิธีการยังยอมรับ boolean ที่เลือกuse_sliceพารามิเตอร์นี้ทํางานร่วมกับLOAD_SLICEอย่างต่อเนื่องที่กําหนดไว้ในConfigเซลล์use_sliceพารามิเตอร์และLOAD_SLICEปัจจุบันnotใช้กับการประยุกต์ใช้นี้ อย่างไรก็ตามพวกเขาสามารถใช้เพื่อโหลดปริมาณเสียงเฉพาะจากไฟล์แต่ละไฟล์ ตัวอย่างเช่นเพื่อโหลดเสียงเพียง 5 วินาทีจากไฟล์เสียงแต่ละไฟล์LOAD_SLICEสอง160000ซึ่งจะคํานวณเป็น5times อัตราตัวอย่างของ32000; และผ่านTrueสองuse_sliceพารามิเตอร์

โซload_training_audioวิธีการยอมรับ Booleanmake_copyพารามิเตอร์ เมื่อพารามิเตอร์นี้Trueโจริยธรรมสร้าง aprocessed_audioไดเรกทอรีและบันทึกสําเนาของแต่ละตัวอย่างเสียงเป็น.wavไฟล์ไปยังไดเรกทอรี คัดลอกเสียงจะถูกบันทึกไว้ในไดเรกทอรีย่อยซึ่งสะท้อนให้เห็นถึงชั้นที่พวกเขา принадлежитprocessed_audioไดเรกทอรีจะถูกใช้ในส่วนถัดไปเพื่อบันทึกตัวอย่างเสียงที่แก้ไขไว้ในไดรฟ์โดยไม่ส่งผลกระทบต่อไดเรกทอรีชุดข้อมูล BirdCLEF+ 2025


โซload_training_audioMethod returns a dictionary of loaded audio data using the class names as keys. Each value in the dictionary is a list of tuples of the form. method returns a dictionary of loaded audio data using the class names as keys. Each value in the dictionary is a list of tuples of the form.(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]]))] ...}

วิธีนี้ยังส่งกลับสถิติพื้นฐานที่อธิบายข้อมูลที่โหลดสําหรับแต่ละคลาสเป็นคอลัมน์ค่าแยกคอลัมน์ คุณสามารถส่งออกสถิติเหล่านี้เพื่อตรวจสอบข้อมูลได้

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) เพิ่มสัญญาณเสียงที่สร้างขึ้นโดยสุ่มและเปลี่ยนความเร็วของเสียงดิบ
ส่วน 2.1 - การตรวจจับส่วนที่เงียบสงบ

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 constants can be modified to adjust how the method "slides" over the raw audio. Similarly, the SIL_THRESHOLD value can be modified to make the method more aggressive or conservative with respect to identification of silent segments.

วิธีการส่งออกคําอธิบายของเครื่องหมายส่วนเงียบสําหรับแต่ละไฟล์ในแต่ละชั้น ไฟล์เสียงที่ไม่มีส่วนเงียบที่ตรวจพบจะถูกระบุโดยรายการว่างเปล่า

{'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 constant defined in the Config cell of this section specifies if audio should be stripped of silent segments และ sliced to remove มากที่สุด human annotations.

USE_REMOVE_SILENCE_AND_HUMAN_ANNOT = True

The remove_silence_and_human_annotวิธีการ strips ชิ้นส่วนเงียบจากตัวอย่างเสียงโดยใช้การส่งออกจากdetect_silence 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:

|  < 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 logic uses the ANNOT_BREAKPOINTปัจจุบันในConfig cell to check if a silent segment marker lies outside the window specified by ANNOT_BREAKPOINT, แสดงให้เห็นในจํานวนวินาที หากทําเช่นนั้นกลยุทธ์จะตัดเสียงดิบที่เครื่องหมายและเก็บข้อมูลเฉพาะที่เกิดขึ้นก่อนมัน การตรวจสอบด้วยตนเองของเสียงที่ประมวลผลในระหว่างการทดลองแสดงให้เห็นว่าวิธีการนี้มีความพึงพอใจ อย่างไรก็ตามตามที่กล่าวถึงในTraining Data section, there are บางคนการบันทึกเสียงที่บันทึกของมนุษย์precedes the birdsong recording. The logic described here does ไม่ address those cases. Some audio samples feature long sequences of recorded birdsong and these samples often do not have silent segments. Such samples are unaffected by the previously described logic and kept in their entirety.

A second constant, SLICE_FRAME, สามารถนํามาใช้ในขั้นตอนการประมวลผลขั้นสุดท้ายเพื่อคืนชิ้นส่วนเสียงที่ได้รับการประมวลผลมากขึ้นSLICE_FRAMEจํานวนวินาทีของการประมวลผลเสียงที่คุณต้องการเก็บ

โซremove_silence_and_human_annotวิธีการบันทึกเสียงที่ประมวลผลลงในดิสก์ภายใต้ไดเรกทอรีprocessed_audio via the save_audioพารามิเตอร์ซึ่งผ่านเป็นTrue. The method returns a dictionary of the ทั้งหมด 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เพื่อให้ได้จํานวนวินาทีเฉลี่ยของเสียงในทุกชั้นเรียน

Section 2.3 - Calculating Augmentation Turns for Minority Classes

ตามที่กล่าวไว้ใน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ค่าคงที่ซึ่งสามารถใช้เพื่อปรับค่าสําหรับ

จํานวนวินาทีโดยเฉลี่ยของเสียงในทุกชั้น ค่าคงที่สามารถใช้เพื่อทําให้กลยุทธ์บํารุงรักษาหรือก้าวร้าวมากขึ้นเมื่อคํานวณจํานวนการเพิ่มการหมุน

The get_augmentation_turns_per_class includes a AVG_SECS_FACTORค่าคงที่ซึ่งสามารถใช้เพื่อปรับค่าสําหรับ

จํานวนวินาทีโดยเฉลี่ยของเสียงในทุกชั้น ค่าคงที่สามารถใช้เพื่อทําให้กลยุทธ์บํารุงรักษาหรือก้าวร้าวมากขึ้นเมื่อคํานวณจํานวนการเพิ่มการหมุน

Section 2.4 - Running Augmentations

โซUSE_AUGMENTATIONS constant defined in the Configเซลล์ของส่วนนี้ระบุว่าควรเพิ่มเสียงหรือไม่

USE_AUGMENTATIONS = True

ตามที่กล่าวไว้ก่อนหน้านี้การเพิ่มเสียงประกอบด้วย (1) เพิ่มสัญญาณเสียงที่สร้างขึ้นแบบสุ่ม (2) เปลี่ยนความเร็วของเสียงดิบหรือ (3) เพิ่มสัญญาณเสียงที่สร้างขึ้นแบบสุ่มและเปลี่ยนความเร็วของเสียงดิบadd_noise and change_tempoวิธีการ encapsulate the logic for adding a noise signal and changing the tempo respectively. ช่วงสัญญาณเสียงและช่วงการเปลี่ยนแปลงความเร็วสามารถปรับได้โดยใช้เสถียรภาพต่อไปนี้ในConfig cell:

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

โซrun_augmentationsวิธีการเรียกใช้การเพิ่มโดยใช้การส่งออกจาก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. Randomly selects the augmentation to perform: (1) adding noise, (2) changing the tempo, or (3) adding noise and changing the tempo.
  3. Saves the augmented audio to disk under the appropriate class within the processed_audio directory.

ในขณะที่กลยุทธ์โน้ตบุ๊คเพิ่มชั้นประชากรโดยรวมของวินาทีเสียงต่ํากว่าเฉลี่ยก็ลืมชั้นที่มีทั้งหมดของวินาทีเสียงสูงกว่าเฉลี่ย วิธีการนี้ถูกนํามาใช้เพื่อจัดการหน่วยความจําที่มีอยู่และด้วยความเข้าใจว่าความไม่สมดุลของชั้นจะได้รับการแก้ไขต่อไปโดยการเลือกฟังก์ชั่นการสูญเสีย

Section 3 - Mel Spectrogram Generation and Input Preparation

โซMel Spectrogram Generation and Input Preparationส่วนของบันทึก:

  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 รหัสข้อมูลการฝึกอบรมและฉลากข้อมูลการยืนยัน
  7. สร้างวัตถุ TensorFlow Dataset จากรายการข้อมูลการฝึกอบรมและการยืนยัน
  8. Optionally uses MixUp logic to augment training data.
Section 3.1 - Splitting Processed Audio Data

ข้อมูลเสียงที่ประมวลผลจะถูกโหลดจากprocessed_audioโฟลเดอร์ ข้อมูลจะแบ่งออกเป็น 4 รายการ:

training_audio
training_labels
validation_audio
validation_labels

Labels are, of course, the class names associated with the audio examples. The SPLIT constant defined in the Configเซลล์ควบคุมอัตราส่วนแบ่งระหว่างรายการข้อมูลการฝึกอบรมและข้อมูลการยืนยัน ข้อมูลเสียงที่ประมวลผลจะถูก shuffled ก่อนที่จะแบ่ง

ส่วน 3.2 - การแบ่งเสียงเป็นกรอบ

เสียงจะถูกแบ่งออกเป็น 5 วินาทีส่วนโดยใช้frame_audio method, which itself uses the TensorFlow signal.frameวิธีการแบ่งแต่ละตัวอย่างเสียง ตัวคงที่ต่อไปนี้ในConfig cell control the split operation:

FRAME_LENGTH = 5
FRAME_STEP = 5
ส่วนที่ 3.3 - การสร้าง Mel Spectrograms

เมลสเปกตรัมจะถูกสร้างขึ้นสําหรับแต่ละกรอบเสียง 5 วินาทีที่สร้างขึ้นในSection 3.2ผ่านaudio2melspec method. The following constants in the 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 range of most bird vocalizations. However, some bird species can vocalize outside this range.

Section 3.4 - Resizing Mel Spectrograms

The to_melspectrogram_image method is used to convert each mel spectrogram to a pillow ImageObject. แต่ละImageวัตถุจะถูกเปลี่ยนเป็น(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 audio recordings of birdsong. These audio recordings can be incorporated into the training data via pseudo-labeling. A simple process to create pseudo-labeled data is as follows:

  • การฝึกอบรมเครื่องจําลองโดยไม่มีข้อมูล pseudo-labeled
  • Load training soundscape ไฟล์เสียง
  • Segment each audio soundscape into 5 second frames.
  • สร้างสเปกตรัมเมล็ดสําหรับแต่ละกรอบ 5 วินาทีและปรับขนาดให้ (224, 224)
  • ดําเนินการคาดการณ์บนแต่ละสเปกตรัมเมล็ดรีไซเคิลโดยใช้เครื่องจําลองที่คุณได้ฝึกอบรมในขั้นตอนแรก
  • เก็บการคาดการณ์เหนือระดับความมั่นใจที่ต้องการและบันทึกสเปกตรัมผึ้งสําหรับการคาดการณ์เหล่านี้เพื่อดิสก์ภายใต้ฉลากชั้นคาดการณ์
  • ฝึก classifier ของคุณอีกครั้งโดยใช้ข้อมูลที่ติดฉลาก psuedo

Pseudo-labeled data can improve the performance of your classifier. If you want to generate your own pseudo-labeled data, you should continue with the remaining sections to train a 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.

การประยุกต์ใช้นี้ไม่ได้ใช้ข้อมูลที่มีการติดฉลากแบบสุ่ม อย่างไรก็ตามคุณสามารถแก้ไขบันทึกข้อสรุปที่อ้างถึงในRunning Inferenceส่วนเพื่อสร้างข้อมูลที่ติดฉลาก pseudo

Set the USE_PSEUDO_LABELSปัจจุบันในConfig cell to False to skip the use of pseudo-labeled data.

ส่วน 3.6 - การเข้ารหัสฉลาก

The process_labelsวิธีนี้ใช้สําหรับฉลากการเข้ารหัสแบบฮอตเดียว แท็กที่เข้ารหัสแบบฮอตเดียวจะกลับเป็นแถบ NumPy และเพิ่มลงในรายการฉลากการฝึกอบรมและฉลากการยืนยัน

ส่วน 3.7 - แปลงรายการข้อมูลการฝึกอบรมและการยืนยันเป็น TensorFlowฐานข้อมูลวัตถุ
ฐานข้อมูล

TensorFlowdata.Dataset.from_tensor_slicesวิธีการสร้าง TensorFlowDataset objects from the training and validation data lists. The shuffleวิธีการเรียกร้องในการฝึกอบรมDataset object to shuffle training data before batching. The batchวิธีการที่เรียกว่าทั้งสองDatasetObjects to batch the training and validation data sets. ชุดข้อมูลการฝึกอบรมและการยืนยันBATCH_SIZEปัจจุบันในConfigเซลล์ควบคุมขนาดแบทช์

Section 3.8 - Using MixUp to Augment Training Data

ดังที่คุณอาจรู้แล้ว MixUp เป็นเทคนิคการเพิ่มข้อมูลที่ผสมผสานภาพสองภาพร่วมกันอย่างมีประสิทธิภาพเพื่อสร้างตัวอย่างข้อมูลใหม่ คลาสสําหรับภาพผสมคือการผสมผสานของคลาสที่เกี่ยวข้องกับภาพเดิม 2 รูปmix_up method, along with the sample_beta_distributionวิธีการ encapsulates โลก MixUp แบบเลือก

การประยุกต์ใช้นี้ใช้ MixUp เพื่อเพิ่มข้อมูลการฝึกอบรม เพื่อใช้ MixUp ให้ตั้งค่าUSE_MIXUPปัจจุบันในConfigเซลล์True.

ส่วนที่ 4 - รูปแบบการฝึกอบรม

The Model Trainingส่วนของบันทึก:

  1. เริ่มต้นและกําหนดค่าโครงการ WandB เพื่อจับข้อมูลการทํางานของการฝึกอบรม
  2. Builds and compiles the EfficientNet B0 model.
  3. Trains the model.
  4. บันทึกรุ่นที่ได้รับการฝึกอบรมลงในดิสก์
ส่วน 4.1 - การเริ่มต้นและการกําหนดค่าโครงการ WandB

ตรวจสอบให้แน่ใจว่าคุณได้แนบคีย์ API WandB ของคุณเองเป็น Kaggle Secret ไปยังบันทึกและว่าวิธีการเข้าสู่ระบบ WandB ในส่วน 0 ของบันทึกได้กลับ True

ตรวจสอบให้แน่ใจว่าคุณได้แนบคีย์ API WandB ของคุณเองเป็น Kaggle Secret ไปยังบันทึกและว่าวิธีการเข้าสู่ระบบ WandB ในส่วน 0 ของบันทึกได้กลับ True

โซConfigเซลล์ในส่วนนี้รวมถึงกลยุทธ์ในการเริ่มต้นและกําหนดค่าโครงการ WandB ใหม่ (หากโครงการไม่ได้มีอยู่แล้ว) ที่จะจับข้อมูลการทํางานของการฝึกอบรม:

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 ที่ต้องการของคุณ

ส่วน 4.2 - การสร้างและประกอบรูปแบบ EfficientNet B0

โซbuild_modelวิธีที่ใช้ในการโหลดรุ่น EfficientNet B0 ที่ได้รับการฝึกอบรมล่วงหน้าด้วยน้ําหนัก ImageNet และไม่มีชั้นด้านบน:

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

The model is frozen to leverage the pre-trained ImageNet weights with the objective to only ไม่แช่แข็ง (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ใน theConfigเซลล์ระบุจํานวนชั้นที่จะไม่แช่แข็ง

The top of the model is rebuilt with a final Denseชั้นสะท้อนให้เห็นถึงคลาสสายพันธุ์นกจํานวนCategorical focal cross-entropyเลือกเป็นฟังก์ชั่นการสูญเสียเพื่อช่วยแก้ไขความไม่สมดุลของชั้นLOSS_ALPHAและLOSS_GAMMAความคงที่ในConfigเซลล์ใช้กับฟังก์ชั่นการสูญเสีย

ส่วน 4.3 - รูปแบบการฝึกอบรม

โซfitวิธีการที่เรียกว่าบนคอมโพสิตmodel from Section 4.2สําหรับการฝึกอบรม การสังเกตว่า alearning rate schedulerการเรียกคืนlr_scheduler, ใช้แทนอัตราการเรียนรู้ที่คงที่ อัตราการเรียนรู้เริ่มต้นของ4.0e-4เป็นฮาร์ดโค้ดลงใน callback อัตราการเรียนรู้จะลดลงใน 2 ขั้นตอนขึ้นอยู่กับจํานวน epoch count จํานวน epochs การฝึกอบรมถูกควบคุมโดยEPOCHSปัจจุบันในConfigเซลล์

ส่วนที่ 4.4 - รูปแบบการประหยัด

The saveวิธีการที่เรียกว่าบนคอมโพสิตmodel following training to save the model to disk.

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

Training Results

การเรียกใช้บันทึกควรผลิตผลการฝึกอบรมต่อไปนี้โดยจําไว้ว่าคุณใช้การตั้งค่าการทดลองที่อธิบายไว้ในบทความนี้Building the Classifierหมวดหมู่ :

Training results

ตามที่เห็นความแม่นยําสูงกว่า 90% และความแม่นยําในการยืนยันคือประมาณ 70% หลังจากการฝึกอบรมสําหรับ 30 epochs อย่างไรก็ตามตามที่เห็นความแม่นยําในการยืนยันจะแตกต่างกันอย่างมีนัยสําคัญ การเปลี่ยนแปลงนี้เป็นส่วนหนึ่งที่เกิดจากความไม่สมดุลของชั้นที่มีหน่วยความจําที่มีอยู่ จํากัด การใช้การเพิ่มขึ้นเพิ่มเติมเพื่อแก้ไขความไม่สมดุลอย่างเต็มที่ ผลลัพธ์แสดงให้เห็นว่ารุ่นที่ทุกข์ทรมานจากความซับซ้อนของข้อมูลการฝึกอบรมและไม่ได้รวมกันเช่นเดียวกับที่คาดหวัง อย่างไรก็ตามรุ่นนี้สามารถใช้สําหรับการคาดการณ์พร้อมกับตัวจัดอันดับ GBV ตามวัตถุประสงค์เดิม

การวิ่ง Inference

นี่Kaggle notebook("Inference Notebook") สามารถใช้ในการเรียกใช้การสรุป โลจิกของ Inference Notebook ใช้ทั้งรุ่น GBV classifier และรุ่นที่คุณได้ฝึกอบรมในส่วนก่อนหน้านี้ มันเรียกใช้การสรุปในไฟล์ soundcapes ที่ไม่ได้ติดฉลากในtrain_soundscapesไดเรกทอรี ไฟล์เสียงแต่ละ soundcapes จะแบ่งออกเป็นกรอบ 5 วินาทีMAX_FILESอย่างต่อเนื่องที่กําหนดไว้ในConfigเซลล์Section 0of the notebook ควบคุมจํานวนไฟล์เสียง soundcapes ที่โหลดเพื่อการสรุป

บันทึกข้อสรุปจะสร้างการคาดการณ์ครั้งแรกโดยใช้เครื่องจําลอง GBV การคาดการณ์สําหรับ 143 ชั้นของชุดข้อมูลการแข่งขัน BirdCLEF+ 2025 ที่รู้จักกับเครื่องจําลอง GBV จะแยกต่างหากหากความน่าจะเป็นสูงสุดในหมู่ 143 ชั้น "รู้จัก" จะสูงกว่าหรือเท่ากับGBV_CLASSIFIER_THRESHOLD, แล้วคลาสที่คาดการณ์ GBV จะถูกเลือกเป็นคลาสที่แท้จริง หากความน่าจะเป็นสูงสุดในหมู่ 143 คลาสที่ "รู้จัก" นั้นต่ํากว่าGBV_CLASSIFIER_THRESHOLD, จะคาดว่าคลาสที่แท้จริงเป็นหนึ่งใน 63 คลาส "ไม่รู้จัก" สําหรับ GBV classifier - นั่นคือคลาสที่ใช้ในการฝึกอบรมรูปแบบในส่วนก่อนหน้านี้ โลจิกแล้วเรียกใช้การคาดการณ์โดยใช้รุ่นที่กําหนดเอง คลาสที่คาดการณ์จากชุดการคาดการณ์นั้นจะถูกเลือกเป็นคลาสที่แท้จริง

โซGBV_CLASSIFIER_THRESHOLD constant is defined in the Configเซลล์Section 5ของบันทึกข้อสรุป การคาดการณ์คือการส่งออกไปยัง 2 ไฟล์:

  1. ไฟล์ preds.csv ที่บันทึกการคาดการณ์และความน่าจะเป็นการคาดการณ์สําหรับแต่ละ 5 วินาทีของภาพเสียง
  2. ไฟล์ submission.csv ที่บันทึกความเป็นไปได้ทั้งหมดของชั้นในรูปแบบสําหรับการแข่งขัน BirdCLEF+ 2025

กําหนดเส้นทางไปยังรูปแบบการปรับขนาดละเอียดของคุณในเซลล์แรกของส่วน 4 ของบันทึกสรุป

กําหนดเส้นทางไปยังรูปแบบการปรับแต่งในเซลล์แรกของSection 4ของบันทึก inference

งานในอนาคต

บันทึกการฝึกอบรมสามารถใช้ในการฝึกอบรมรุ่นในทุกชั้น 206 BirdCLEF+ 2025 เพื่อกําจัดความจําเป็นในการจัดอันดับ GBV อย่างน้อยในแง่ของชุดข้อมูลการแข่งขัน ดังกล่าวก่อนหน้านี้ผ่านรายการว่าง[]ไปยัง theload_training_audioวิธีการจะโหลดข้อมูลเสียงจากทุกชั้นMAX_FILES and LOAD_SLICEคืนสามารถใช้เพื่อ จํากัด จํานวนเสียงที่โหลดเพื่อทํางานภายในขอบเขตของสภาพแวดล้อมบันทึก Kaggle

แน่นอนโมเดลที่แม่นยําขึ้นสามารถฝึกอบรมได้โดยใช้ข้อมูลการฝึกอบรมจํานวนมากยิ่งขึ้น เหมาะสําหรับจํานวนการเพิ่มจะใช้เพื่อแก้ไขความไม่สมดุลของชั้น นอกจากนี้ยังสามารถใช้เทคนิคการเพิ่มอื่น ๆ เช่น CutMix เพื่อเพิ่มข้อมูลการฝึกอบรม อย่างไรก็ตามกลยุทธ์เหล่านี้ต้องการสภาพแวดล้อมการพัฒนาที่แข็งแกร่งมากขึ้น

L O A D I N G
. . . comments & more!

About Author

Picture in the Noise HackerNoon profile picture
Picture in the Noise@pictureinthenoise
Speech and language processing. At the end of the beginning.

แขวนแท็ก

บทความนี้ถูกนำเสนอใน...

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks