AKMESSI commited on
Commit
f3644b3
·
verified ·
1 Parent(s): d20d6f0

Upload 7 files

Browse files
Files changed (7) hide show
  1. README.md +1 -13
  2. app.py +117 -0
  3. data_file.txt +835 -0
  4. label_map.json +1 -0
  5. model_training.ipynb +0 -0
  6. multi_species_model.pth +3 -0
  7. requirements.txt +5 -0
README.md CHANGED
@@ -1,13 +1 @@
1
- ---
2
- title: Bird Identifier
3
- emoji: 🏆
4
- colorFrom: yellow
5
- colorTo: blue
6
- sdk: gradio
7
- sdk_version: 6.2.0
8
- app_file: app.py
9
- pinned: false
10
- license: mit
11
- ---
12
-
13
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
+ # bird-identifier-using-cnn
 
 
 
 
 
 
 
 
 
 
 
 
app.py ADDED
@@ -0,0 +1,117 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import torch
3
+ import torchaudio
4
+ import numpy as np
5
+ from PIL import Image
6
+ import io
7
+ import json
8
+
9
+ # ================== PAGE CONFIG ==================
10
+ st.set_page_config(
11
+ page_title="Mumbai Bird Call Identifier",
12
+ page_icon="🐦",
13
+ layout="centered"
14
+ )
15
+
16
+ # ================== LOAD MODEL & LABEL MAP ==================
17
+ @st.cache_resource
18
+ def load_model_and_map():
19
+ # Load the checkpoint
20
+ checkpoint = torch.load("multi_species_model.pth", map_location="cpu")
21
+
22
+ # Re-create the model architecture
23
+ model = torch.hub.load('pytorch/vision:v0.10.0', 'mobilenet_v3_small', pretrained=False)
24
+ num_classes = len(checkpoint['label_map'])
25
+ model.classifier[3] = torch.nn.Linear(model.classifier[3].in_features, num_classes)
26
+ model.load_state_dict(checkpoint['model_state_dict'])
27
+ model.eval()
28
+
29
+ # Get class names (scientific names)
30
+ class_names = list(checkpoint['label_map'].keys())
31
+
32
+ return model, class_names
33
+
34
+ model, class_names = load_model_and_map()
35
+
36
+ # ================== MEL TRANSFORM (same as training) ==================
37
+ mel_transform = torchaudio.transforms.MelSpectrogram(
38
+ sample_rate=22050,
39
+ n_fft=512,
40
+ win_length=512,
41
+ hop_length=256,
42
+ f_min=50,
43
+ f_max=11000,
44
+ n_mels=128,
45
+ norm='slaney',
46
+ mel_scale='slaney'
47
+ )
48
+ db_transform = torchaudio.transforms.AmplitudeToDB(stype='power', top_db=80)
49
+ full_transform = torch.nn.Sequential(mel_transform, db_transform)
50
+
51
+ # ================== APP UI ==================
52
+ st.title("🐦 Mumbai Balcony Bird Call Identifier")
53
+ st.markdown("""
54
+ Trained on **204 Indian bird species** from real urban recordings in Mumbai & Maharashtra.
55
+ Just record 5 seconds from your phone or laptop microphone!
56
+ """)
57
+
58
+ audio_data = st.experimental_audio_input("Click and record 5 seconds", duration=5)
59
+
60
+ if audio_data:
61
+ st.audio(audio_data, format="audio/wav")
62
+
63
+ with st.spinner("Processing audio and predicting..."):
64
+ # Load audio from bytes
65
+ waveform, original_sr = torchaudio.load(io.BytesIO(audio_data.getvalue()))
66
+
67
+ # Resample to 22050
68
+ if original_sr != 22050:
69
+ waveform = torchaudio.functional.resample(waveform, original_sr, 22050)
70
+
71
+ # Mono
72
+ if waveform.shape[0] > 1:
73
+ waveform = waveform.mean(0, keepdim=True)
74
+
75
+ # Pad or truncate to exactly 5 seconds
76
+ target_samples = 22050 * 5
77
+ if waveform.shape[1] < target_samples:
78
+ waveform = torch.nn.functional.pad(waveform, (0, target_samples - waveform.shape[1]))
79
+ else:
80
+ waveform = waveform[:, :target_samples]
81
+
82
+ # Compute Mel spectrogram
83
+ mel = full_transform(waveform) # (1, 128, time)
84
+ mel = mel.squeeze(0) # (128, time)
85
+
86
+ # Normalize for visualization
87
+ mel_min = mel.min()
88
+ mel_max = mel.max()
89
+ mel_norm = (mel - mel_min) / (mel_max - mel_min + 1e-8)
90
+
91
+ # Prepare for model: resize to 224x224, add batch & RGB channels
92
+ mel_input = mel.unsqueeze(0).unsqueeze(0) # (1, 1, 128, time)
93
+ mel_input = torch.nn.functional.interpolate(mel_input, size=(224, 224), mode='bilinear', align_corners=False)
94
+ mel_input = mel_input.repeat(1, 3, 1, 1) # to RGB
95
+
96
+ # Inference
97
+ with torch.no_grad():
98
+ output = model(mel_input)
99
+ probs = torch.nn.functional.softmax(output[0], dim=0)
100
+ top5_probs, top5_idx = torch.topk(probs, 5)
101
+
102
+ # Display results
103
+ st.success("Top 5 Predictions")
104
+ for i in range(5):
105
+ species = class_names[top5_idx[i]]
106
+ confidence = top5_probs[i].item()
107
+ st.markdown(f"**{species}** — {confidence:.1%}")
108
+
109
+ # Show spectrogram
110
+ mel_vis = mel_norm.cpu().numpy()
111
+ st.image(mel_vis, caption="Your audio as Mel Spectrogram", use_column_width=True, clamp=True)
112
+
113
+ else:
114
+ st.info("Press the microphone button above to record a 5-second bird call!")
115
+
116
+ st.markdown("---")
117
+ st.caption("Model trained on 8000+ real urban recordings from xeno-canto (Mumbai & Maharashtra area).")
data_file.txt ADDED
@@ -0,0 +1,835 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ {
2
+ "1065199": "Funambulus palmarum",
3
+ "934128": "Tarbinskiellus portentosus",
4
+ "928661": "Duttaphrynus melanostictus",
5
+ "928658": "Duttaphrynus melanostictus",
6
+ "667381": "Dendrocygna javanica",
7
+ "577361": "Tadorna ferruginea",
8
+ "577358": "Tadorna ferruginea",
9
+ "577357": "Tadorna ferruginea",
10
+ "571156": "Anas poecilorhyncha",
11
+ "195759": "Anas poecilorhyncha",
12
+ "312771": "Galloperdix spadicea",
13
+ "574340": "Gallus sonneratii",
14
+ "574339": "Gallus sonneratii",
15
+ "574336": "Gallus sonneratii",
16
+ "574335": "Gallus sonneratii",
17
+ "574331": "Gallus sonneratii",
18
+ "574328": "Gallus sonneratii",
19
+ "574318": "Gallus sonneratii",
20
+ "315635": "Gallus sonneratii",
21
+ "332453": "Ortygornis pondicerianus",
22
+ "662750": "Francolinus pictus",
23
+ "338333": "Francolinus pictus",
24
+ "747786": "Francolinus pictus",
25
+ "592695": "Francolinus pictus",
26
+ "571151": "Francolinus pictus",
27
+ "428896": "Francolinus pictus",
28
+ "672092": "Coturnix coromandelica",
29
+ "592654": "Coturnix coromandelica",
30
+ "592653": "Coturnix coromandelica",
31
+ "592651": "Coturnix coromandelica",
32
+ "592633": "Coturnix coromandelica",
33
+ "592632": "Coturnix coromandelica",
34
+ "672093": "Perdicula asiatica",
35
+ "207015": "Perdicula asiatica",
36
+ "575166": "Caprimulgus indicus",
37
+ "574744": "Caprimulgus indicus",
38
+ "575191": "Caprimulgus indicus",
39
+ "575179": "Caprimulgus indicus",
40
+ "575171": "Caprimulgus indicus",
41
+ "575163": "Caprimulgus indicus",
42
+ "157465": "Caprimulgus atripennis",
43
+ "73507": "Caprimulgus atripennis",
44
+ "121242": "Caprimulgus atripennis",
45
+ "569707": "Caprimulgus asiaticus",
46
+ "318987": "Caprimulgus asiaticus",
47
+ "425063": "Cypsiurus balasiensis",
48
+ "574610": "Apus affinis",
49
+ "574608": "Apus affinis",
50
+ "574605": "Apus affinis",
51
+ "584332": "Centropus sinensis",
52
+ "528954": "Centropus sinensis",
53
+ "195756": "Centropus sinensis",
54
+ "195753": "Centropus sinensis",
55
+ "464298": "Centropus sinensis",
56
+ "207249": "Centropus sinensis",
57
+ "585187": "Eudynamys scolopaceus",
58
+ "553185": "Eudynamys scolopaceus",
59
+ "540848": "Eudynamys scolopaceus",
60
+ "538078": "Eudynamys scolopaceus",
61
+ "464464": "Eudynamys scolopaceus",
62
+ "332745": "Eudynamys scolopaceus",
63
+ "307546": "Eudynamys scolopaceus",
64
+ "307545": "Eudynamys scolopaceus",
65
+ "252829": "Eudynamys scolopaceus",
66
+ "207166": "Eudynamys scolopaceus",
67
+ "195758": "Eudynamys scolopaceus",
68
+ "169914": "Eudynamys scolopaceus",
69
+ "635073": "Cacomantis sonneratii",
70
+ "722891": "Cacomantis sonneratii",
71
+ "722890": "Cacomantis sonneratii",
72
+ "725558": "Cacomantis sonneratii",
73
+ "725557": "Cacomantis sonneratii",
74
+ "569708": "Cacomantis passerinus",
75
+ "464043": "Cacomantis passerinus",
76
+ "313104": "Cacomantis passerinus",
77
+ "568732": "Cacomantis passerinus",
78
+ "331891": "Cacomantis passerinus",
79
+ "319152": "Cacomantis passerinus",
80
+ "181302": "Cacomantis passerinus",
81
+ "181301": "Cacomantis passerinus",
82
+ "141328": "Cacomantis passerinus",
83
+ "722892": "Cacomantis passerinus",
84
+ "758845": "Surniculus dicruroides",
85
+ "758844": "Surniculus dicruroides",
86
+ "758842": "Surniculus dicruroides",
87
+ "758841": "Surniculus dicruroides",
88
+ "325429": "Surniculus dicruroides",
89
+ "180194": "Surniculus dicruroides",
90
+ "1055846": "Surniculus dicruroides",
91
+ "654106": "Surniculus dicruroides",
92
+ "672096": "Hierococcyx varius",
93
+ "316409": "Hierococcyx varius",
94
+ "241127": "Hierococcyx varius",
95
+ "241126": "Hierococcyx varius",
96
+ "328436": "Hierococcyx varius",
97
+ "315250": "Cuculus micropterus",
98
+ "372715": "Cuculus micropterus",
99
+ "330052": "Cuculus micropterus",
100
+ "157874": "Spilopelia chinensis",
101
+ "789406": "Spilopelia senegalensis",
102
+ "303515": "Treron affinis",
103
+ "576594": "Treron phoenicopterus",
104
+ "429627": "Treron phoenicopterus",
105
+ "667376": "Porphyrio poliocephalus",
106
+ "124749": "Zapornia fusca",
107
+ "428779": "Rallina eurizonoides",
108
+ "321358": "Gallicrex cinerea",
109
+ "579437": "Amaurornis phoenicurus",
110
+ "548744": "Amaurornis phoenicurus",
111
+ "438346": "Amaurornis phoenicurus",
112
+ "519741": "Amaurornis phoenicurus",
113
+ "667379": "Tachybaptus ruficollis",
114
+ "570920": "Tachybaptus ruficollis",
115
+ "697066": "Phoenicopterus roseus",
116
+ "468480": "Phoenicopterus roseus",
117
+ "165363": "Phoenicopterus roseus",
118
+ "279020": "Haematopus ostralegus",
119
+ "667380": "Himantopus himantopus",
120
+ "596095": "Himantopus himantopus",
121
+ "577351": "Vanellus indicus",
122
+ "577353": "Vanellus indicus",
123
+ "317385": "Vanellus indicus",
124
+ "294375": "Pluvialis squatarola",
125
+ "294374": "Pluvialis squatarola",
126
+ "294373": "Pluvialis squatarola",
127
+ "165368": "Pluvialis squatarola",
128
+ "786654": "Charadrius dubius",
129
+ "670599": "Rostratula benghalensis",
130
+ "124036": "Hydrophasianus chirurgus",
131
+ "667378": "Hydrophasianus chirurgus",
132
+ "162212": "Numenius arquata",
133
+ "177473": "Arenaria interpres",
134
+ "314144": "Calidris tenuirostris",
135
+ "312818": "Calidris ferruginea",
136
+ "351899": "Limnodromus scolopaceus",
137
+ "351823": "Limnodromus scolopaceus",
138
+ "490812": "Limnodromus scolopaceus",
139
+ "206371": "Tringa totanus",
140
+ "892008": "Tringa glareola",
141
+ "314010": "Tringa glareola",
142
+ "924220": "Anous tenuirostris",
143
+ "169792": "Hydroprogne caspia",
144
+ "925196": "Sternula saundersi",
145
+ "924227": "Sternula saundersi",
146
+ "577355": "Sterna aurantia",
147
+ "135814": "Chlidonias hybrida",
148
+ "312144": "Chlidonias hybrida",
149
+ "343485": "Ciconia ciconia",
150
+ "443374": "Pseudibis papillosa",
151
+ "316831": "Pseudibis papillosa",
152
+ "313198": "Ixobrychus cinnamomeus",
153
+ "313748": "Bubulcus coromandus",
154
+ "341124": "Ardea purpurea",
155
+ "206435": "Spilornis cheela",
156
+ "315636": "Spilornis cheela",
157
+ "689411": "Hieraaetus pennatus",
158
+ "697077": "Accipiter badius",
159
+ "341470": "Accipiter badius",
160
+ "328068": "Accipiter badius",
161
+ "206429": "Accipiter badius",
162
+ "141625": "Accipiter badius",
163
+ "785413": "Accipiter badius",
164
+ "585190": "Milvus migrans",
165
+ "583029": "Milvus migrans",
166
+ "425062": "Milvus migrans",
167
+ "657421": "Milvus migrans",
168
+ "308177": "Milvus migrans",
169
+ "518955": "Tyto alba",
170
+ "574829": "Tyto javanica",
171
+ "120974": "Tyto javanica",
172
+ "359261": "Tyto javanica",
173
+ "317398": "Ninox scutulata",
174
+ "206372": "Ninox scutulata",
175
+ "371369": "Ninox scutulata",
176
+ "572904": "Athene brama",
177
+ "572905": "Athene brama",
178
+ "517682": "Athene brama",
179
+ "517680": "Athene brama",
180
+ "517678": "Athene brama",
181
+ "311911": "Athene brama",
182
+ "779855": "Athene blewitti",
183
+ "758846": "Athene blewitti",
184
+ "758836": "Athene blewitti",
185
+ "758835": "Athene blewitti",
186
+ "758834": "Athene blewitti",
187
+ "725560": "Athene blewitti",
188
+ "725559": "Athene blewitti",
189
+ "672075": "Athene blewitti",
190
+ "414032": "Athene blewitti",
191
+ "206368": "Athene blewitti",
192
+ "206367": "Athene blewitti",
193
+ "206366": "Athene blewitti",
194
+ "778605": "Athene blewitti",
195
+ "758847": "Athene blewitti",
196
+ "343773": "Athene blewitti",
197
+ "314008": "Athene blewitti",
198
+ "722042": "Athene blewitti",
199
+ "635072": "Athene blewitti",
200
+ "454346": "Athene blewitti",
201
+ "454347": "Glaucidium radiatum",
202
+ "357881": "Glaucidium radiatum",
203
+ "778608": "Glaucidium radiatum",
204
+ "524190": "Glaucidium radiatum",
205
+ "308275": "Glaucidium radiatum",
206
+ "666145": "Glaucidium radiatum",
207
+ "314996": "Otus sunia",
208
+ "358391": "Otus sunia",
209
+ "215940": "Otus bakkamoena",
210
+ "585635": "Bubo bengalensis",
211
+ "808577": "Strix ocellata",
212
+ "808576": "Strix ocellata",
213
+ "635070": "Strix ocellata",
214
+ "460758": "Strix ocellata",
215
+ "454348": "Strix ocellata",
216
+ "460757": "Strix ocellata",
217
+ "460756": "Strix ocellata",
218
+ "460755": "Strix ocellata",
219
+ "460753": "Strix ocellata",
220
+ "330053": "Strix ocellata",
221
+ "575371": "Strix leptogrammica",
222
+ "575369": "Strix leptogrammica",
223
+ "575368": "Strix leptogrammica",
224
+ "575202": "Strix leptogrammica",
225
+ "575193": "Strix leptogrammica",
226
+ "575196": "Strix leptogrammica",
227
+ "206370": "Harpactes fasciatus",
228
+ "213961": "Harpactes fasciatus",
229
+ "205911": "Ocyceros griseus",
230
+ "140250": "Ocyceros griseus",
231
+ "585628": "Ocyceros birostris",
232
+ "442557": "Ocyceros birostris",
233
+ "342679": "Ocyceros birostris",
234
+ "205908": "Ocyceros birostris",
235
+ "426224": "Ocyceros birostris",
236
+ "205541": "Ocyceros birostris",
237
+ "574612": "Halcyon smyrnensis",
238
+ "377406": "Halcyon smyrnensis",
239
+ "309366": "Halcyon smyrnensis",
240
+ "189123": "Halcyon smyrnensis",
241
+ "437156": "Halcyon smyrnensis",
242
+ "169565": "Halcyon smyrnensis",
243
+ "311933": "Halcyon pileata",
244
+ "207123": "Alcedo atthis",
245
+ "132011": "Ceyx erithaca",
246
+ "325423": "Ceyx erithaca",
247
+ "325027": "Ceyx erithaca",
248
+ "255204": "Ceyx erithaca",
249
+ "209498": "Ceyx erithaca",
250
+ "209499": "Ceyx erithaca",
251
+ "207026": "Merops orientalis",
252
+ "577285": "Merops orientalis",
253
+ "576602": "Merops orientalis",
254
+ "569674": "Merops orientalis",
255
+ "569673": "Merops orientalis",
256
+ "808586": "Psilopogon zeylanicus",
257
+ "808571": "Psilopogon zeylanicus",
258
+ "306983": "Psilopogon zeylanicus",
259
+ "779851": "Psilopogon zeylanicus",
260
+ "308052": "Psilopogon zeylanicus",
261
+ "720894": "Psilopogon zeylanicus",
262
+ "788186": "Psilopogon viridis",
263
+ "788185": "Psilopogon viridis",
264
+ "788184": "Psilopogon viridis",
265
+ "574718": "Psilopogon viridis",
266
+ "574713": "Psilopogon viridis",
267
+ "574337": "Psilopogon viridis",
268
+ "574333": "Psilopogon viridis",
269
+ "574320": "Psilopogon viridis",
270
+ "578228": "Psilopogon viridis",
271
+ "574743": "Psilopogon viridis",
272
+ "573819": "Psilopogon viridis",
273
+ "460802": "Psilopogon viridis",
274
+ "460800": "Psilopogon viridis",
275
+ "343426": "Psilopogon viridis",
276
+ "808583": "Psilopogon haemacephalus",
277
+ "585194": "Psilopogon haemacephalus",
278
+ "576598": "Psilopogon haemacephalus",
279
+ "460805": "Psilopogon haemacephalus",
280
+ "443314": "Psilopogon haemacephalus",
281
+ "399344": "Psilopogon haemacephalus",
282
+ "308053": "Psilopogon haemacephalus",
283
+ "308050": "Psilopogon haemacephalus",
284
+ "519462": "Psilopogon haemacephalus",
285
+ "212061": "Psilopogon haemacephalus",
286
+ "758839": "Jynx torquilla",
287
+ "207293": "Hemicircus canente",
288
+ "206708": "Hemicircus canente",
289
+ "206611": "Hemicircus canente",
290
+ "207301": "Hemicircus canente",
291
+ "206701": "Hemicircus canente",
292
+ "206612": "Hemicircus canente",
293
+ "214221": "Leiopicus mahrattensis",
294
+ "207509": "Leiopicus mahrattensis",
295
+ "576902": "Leiopicus mahrattensis",
296
+ "255437": "Dinopium benghalense",
297
+ "670907": "Chrysocolaptes festivus",
298
+ "670905": "Chrysocolaptes festivus",
299
+ "670904": "Chrysocolaptes festivus",
300
+ "670903": "Chrysocolaptes festivus",
301
+ "670901": "Chrysocolaptes festivus",
302
+ "670899": "Chrysocolaptes festivus",
303
+ "670846": "Chrysocolaptes festivus",
304
+ "207927": "Chrysocolaptes festivus",
305
+ "808579": "Chrysocolaptes festivus",
306
+ "778611": "Chrysocolaptes festivus",
307
+ "293640": "Chrysocolaptes festivus",
308
+ "206402": "Chrysocolaptes festivus",
309
+ "330054": "Chrysocolaptes festivus",
310
+ "255432": "Micropternus brachyurus",
311
+ "393952": "Micropternus brachyurus",
312
+ "212924": "Falco peregrinus",
313
+ "576593": "Psittacula cyanocephala",
314
+ "576588": "Psittacula cyanocephala",
315
+ "778609": "Psittacula columboides",
316
+ "780273": "Psittacula eupatria",
317
+ "583024": "Psittacula eupatria",
318
+ "578787": "Psittacula eupatria",
319
+ "425061": "Psittacula eupatria",
320
+ "187974": "Psittacula eupatria",
321
+ "584349": "Psittacula krameri",
322
+ "577645": "Psittacula krameri",
323
+ "577644": "Psittacula krameri",
324
+ "568868": "Psittacula krameri",
325
+ "568863": "Psittacula krameri",
326
+ "464292": "Psittacula krameri",
327
+ "464252": "Psittacula krameri",
328
+ "207014": "Psittacula krameri",
329
+ "584366": "Psittacula krameri",
330
+ "577652": "Psittacula krameri",
331
+ "577650": "Psittacula krameri",
332
+ "309096": "Psittacula krameri",
333
+ "320460": "Pitta brachyura",
334
+ "206396": "Pitta brachyura",
335
+ "124745": "Pitta brachyura",
336
+ "256280": "Pitta brachyura",
337
+ "141231": "Tephrodornis pondicerianus",
338
+ "165501": "Tephrodornis pondicerianus",
339
+ "169810": "Artamus fuscus",
340
+ "1029676": "Aegithina tiphia",
341
+ "207243": "Aegithina tiphia",
342
+ "207162": "Aegithina tiphia",
343
+ "207062": "Aegithina tiphia",
344
+ "189108": "Aegithina tiphia",
345
+ "572937": "Aegithina tiphia",
346
+ "313095": "Aegithina tiphia",
347
+ "145708": "Aegithina tiphia",
348
+ "145707": "Aegithina tiphia",
349
+ "573818": "Aegithina tiphia",
350
+ "207060": "Pericrocotus cinnamomeus",
351
+ "121369": "Pericrocotus cinnamomeus",
352
+ "212573": "Pericrocotus cinnamomeus",
353
+ "212923": "Coracina macei",
354
+ "195578": "Lalage melanoptera",
355
+ "892006": "Lanius schach",
356
+ "195484": "Lanius schach",
357
+ "598033": "Lanius schach",
358
+ "598032": "Lanius schach",
359
+ "520390": "Lanius schach",
360
+ "207246": "Lanius schach",
361
+ "206388": "Lanius schach",
362
+ "785416": "Lanius schach",
363
+ "308274": "Oriolus xanthornus",
364
+ "255433": "Oriolus xanthornus",
365
+ "181191": "Oriolus xanthornus",
366
+ "776181": "Oriolus xanthornus",
367
+ "573900": "Oriolus kundoo",
368
+ "543894": "Oriolus kundoo",
369
+ "540833": "Oriolus kundoo",
370
+ "337338": "Oriolus kundoo",
371
+ "356678": "Oriolus chinensis",
372
+ "239664": "Oriolus chinensis",
373
+ "353800": "Dicrurus aeneus",
374
+ "303710": "Dicrurus paradiseus",
375
+ "666146": "Dicrurus paradiseus",
376
+ "306989": "Dicrurus paradiseus",
377
+ "306987": "Dicrurus paradiseus",
378
+ "256284": "Dicrurus paradiseus",
379
+ "611564": "Dicrurus paradiseus",
380
+ "317402": "Dicrurus paradiseus",
381
+ "210374": "Dicrurus leucophaeus",
382
+ "308273": "Dicrurus leucophaeus",
383
+ "1065213": "Dicrurus leucophaeus",
384
+ "120586": "Dicrurus leucophaeus",
385
+ "240446": "Dicrurus caerulescens",
386
+ "596718": "Dicrurus macrocercus",
387
+ "580650": "Dicrurus macrocercus",
388
+ "580647": "Dicrurus macrocercus",
389
+ "580643": "Dicrurus macrocercus",
390
+ "592541": "Dicrurus macrocercus",
391
+ "443635": "Dicrurus macrocercus",
392
+ "571140": "Rhipidura albogularis",
393
+ "567247": "Rhipidura albogularis",
394
+ "351644": "Rhipidura albogularis",
395
+ "342681": "Rhipidura albogularis",
396
+ "570841": "Rhipidura albogularis",
397
+ "405774": "Rhipidura albogularis",
398
+ "244557": "Rhipidura albogularis",
399
+ "775794": "Rhipidura albogularis",
400
+ "677391": "Rhipidura albogularis",
401
+ "140464": "Rhipidura albogularis",
402
+ "140039": "Rhipidura albogularis",
403
+ "139449": "Rhipidura albogularis",
404
+ "169831": "Rhipidura aureola",
405
+ "779859": "Hypothymis azurea",
406
+ "528927": "Hypothymis azurea",
407
+ "239352": "Hypothymis azurea",
408
+ "195582": "Hypothymis azurea",
409
+ "157482": "Terpsiphone paradisi",
410
+ "520167": "Terpsiphone paradisi",
411
+ "120592": "Dendrocitta vagabunda",
412
+ "758493": "Dendrocitta vagabunda",
413
+ "593441": "Dendrocitta vagabunda",
414
+ "593439": "Dendrocitta vagabunda",
415
+ "576605": "Dendrocitta vagabunda",
416
+ "576596": "Dendrocitta vagabunda",
417
+ "214230": "Dendrocitta vagabunda",
418
+ "210277": "Dendrocitta vagabunda",
419
+ "210276": "Dendrocitta vagabunda",
420
+ "207021": "Dendrocitta vagabunda",
421
+ "593438": "Dendrocitta vagabunda",
422
+ "207023": "Dendrocitta vagabunda",
423
+ "207020": "Dendrocitta vagabunda",
424
+ "157275": "Dendrocitta vagabunda",
425
+ "308330": "Corvus splendens",
426
+ "578839": "Corvus splendens",
427
+ "116613": "Corvus splendens",
428
+ "574366": "Corvus macrorhynchos",
429
+ "195576": "Corvus macrorhynchos",
430
+ "574334": "Corvus culminatus",
431
+ "574332": "Corvus culminatus",
432
+ "554155": "Corvus culminatus",
433
+ "157274": "Corvus culminatus",
434
+ "779854": "Culicicapa ceylonensis",
435
+ "613907": "Culicicapa ceylonensis",
436
+ "778604": "Parus cinereus",
437
+ "417433": "Parus cinereus",
438
+ "417432": "Parus cinereus",
439
+ "212579": "Parus cinereus",
440
+ "210275": "Parus cinereus",
441
+ "207133": "Parus cinereus",
442
+ "207056": "Parus cinereus",
443
+ "570840": "Parus cinereus",
444
+ "576910": "Machlolophus aplonotus",
445
+ "576909": "Machlolophus aplonotus",
446
+ "317037": "Machlolophus aplonotus",
447
+ "530400": "Ammomanes phoenicura",
448
+ "608965": "Alauda gulgula",
449
+ "316407": "Alauda gulgula",
450
+ "578188": "Galerida malabarica",
451
+ "578183": "Galerida malabarica",
452
+ "200959": "Galerida malabarica",
453
+ "786656": "Galerida malabarica",
454
+ "578189": "Galerida malabarica",
455
+ "578186": "Galerida malabarica",
456
+ "578179": "Galerida malabarica",
457
+ "328064": "Galerida malabarica",
458
+ "574731": "Hypsipetes ganeesa",
459
+ "574719": "Hypsipetes ganeesa",
460
+ "207161": "Hypsipetes ganeesa",
461
+ "207806": "Pycnonotus luteolus",
462
+ "585617": "Pycnonotus jocosus",
463
+ "585176": "Pycnonotus jocosus",
464
+ "577850": "Pycnonotus jocosus",
465
+ "571201": "Pycnonotus jocosus",
466
+ "460803": "Pycnonotus jocosus",
467
+ "306990": "Pycnonotus jocosus",
468
+ "585174": "Pycnonotus jocosus",
469
+ "214229": "Pycnonotus jocosus",
470
+ "578212": "Pycnonotus jocosus",
471
+ "524196": "Pycnonotus jocosus",
472
+ "522219": "Pycnonotus jocosus",
473
+ "157864": "Pycnonotus cafer",
474
+ "578600": "Pycnonotus cafer",
475
+ "577870": "Pycnonotus cafer",
476
+ "574949": "Pycnonotus cafer",
477
+ "207142": "Pycnonotus cafer",
478
+ "170868": "Pycnonotus leucotis",
479
+ "310426": "Pycnonotus leucotis",
480
+ "463792": "Ptyonoprogne concolor",
481
+ "328065": "Ptyonoprogne concolor",
482
+ "314003": "Ptyonoprogne concolor",
483
+ "157276": "Ptyonoprogne concolor",
484
+ "207025": "Cecropis daurica",
485
+ "165051": "Phylloscopus humei",
486
+ "360899": "Phylloscopus humei",
487
+ "604529": "Phylloscopus inornatus",
488
+ "362256": "Phylloscopus tytleri",
489
+ "169807": "Phylloscopus griseolus",
490
+ "1065211": "Phylloscopus nitidus",
491
+ "1070290": "Phylloscopus nitidus",
492
+ "778610": "Phylloscopus nitidus",
493
+ "594434": "Phylloscopus nitidus",
494
+ "578227": "Phylloscopus nitidus",
495
+ "505336": "Phylloscopus nitidus",
496
+ "1070308": "Phylloscopus trochiloides",
497
+ "460796": "Phylloscopus trochiloides",
498
+ "306994": "Phylloscopus trochiloides",
499
+ "306992": "Phylloscopus trochiloides",
500
+ "122407": "Phylloscopus trochiloides",
501
+ "195495": "Phylloscopus trochiloides",
502
+ "317387": "Acrocephalus stentoreus",
503
+ "592544": "Acrocephalus stentoreus",
504
+ "592491": "Acrocephalus stentoreus",
505
+ "534618": "Acrocephalus stentoreus",
506
+ "638209": "Acrocephalus stentoreus",
507
+ "505344": "Acrocephalus stentoreus",
508
+ "1070305": "Acrocephalus dumetorum",
509
+ "605981": "Acrocephalus dumetorum",
510
+ "578214": "Acrocephalus dumetorum",
511
+ "313296": "Acrocephalus dumetorum",
512
+ "309524": "Acrocephalus dumetorum",
513
+ "157359": "Iduna rama",
514
+ "981776": "Helopsaltes certhiola",
515
+ "592659": "Schoenicola platyurus",
516
+ "592660": "Schoenicola platyurus",
517
+ "297132": "Schoenicola platyurus",
518
+ "297131": "Schoenicola platyurus",
519
+ "297129": "Schoenicola platyurus",
520
+ "297128": "Schoenicola platyurus",
521
+ "297127": "Schoenicola platyurus",
522
+ "297123": "Schoenicola platyurus",
523
+ "608596": "Schoenicola striatus",
524
+ "758838": "Cisticola juncidis",
525
+ "598045": "Cisticola juncidis",
526
+ "541917": "Cisticola juncidis",
527
+ "377399": "Prinia buchanani",
528
+ "331899": "Prinia hodgsonii",
529
+ "326854": "Prinia hodgsonii",
530
+ "326853": "Prinia hodgsonii",
531
+ "576908": "Prinia hodgsonii",
532
+ "576905": "Prinia hodgsonii",
533
+ "239353": "Prinia hodgsonii",
534
+ "207257": "Prinia hodgsonii",
535
+ "195496": "Prinia hodgsonii",
536
+ "189334": "Prinia hodgsonii",
537
+ "519784": "Prinia sylvatica",
538
+ "519780": "Prinia sylvatica",
539
+ "519771": "Prinia sylvatica",
540
+ "519768": "Prinia sylvatica",
541
+ "207028": "Prinia sylvatica",
542
+ "592900": "Prinia sylvatica",
543
+ "592899": "Prinia sylvatica",
544
+ "592872": "Prinia sylvatica",
545
+ "592871": "Prinia sylvatica",
546
+ "592732": "Prinia sylvatica",
547
+ "592730": "Prinia sylvatica",
548
+ "592728": "Prinia sylvatica",
549
+ "592725": "Prinia sylvatica",
550
+ "519746": "Prinia sylvatica",
551
+ "594430": "Prinia sylvatica",
552
+ "343776": "Prinia sylvatica",
553
+ "578479": "Prinia socialis",
554
+ "568902": "Prinia socialis",
555
+ "568704": "Prinia socialis",
556
+ "464269": "Prinia socialis",
557
+ "195760": "Prinia socialis",
558
+ "598048": "Prinia socialis",
559
+ "592377": "Prinia socialis",
560
+ "577348": "Prinia socialis",
561
+ "576914": "Prinia socialis",
562
+ "569653": "Prinia socialis",
563
+ "309696": "Prinia socialis",
564
+ "239261": "Prinia socialis",
565
+ "592508": "Prinia socialis",
566
+ "592487": "Prinia socialis",
567
+ "524458": "Prinia socialis",
568
+ "659836": "Prinia inornata",
569
+ "592636": "Prinia inornata",
570
+ "592535": "Prinia inornata",
571
+ "207255": "Prinia inornata",
572
+ "592502": "Prinia inornata",
573
+ "331900": "Prinia inornata",
574
+ "809184": "Orthotomus sutorius",
575
+ "577284": "Orthotomus sutorius",
576
+ "401794": "Orthotomus sutorius",
577
+ "325428": "Orthotomus sutorius",
578
+ "195589": "Orthotomus sutorius",
579
+ "170592": "Orthotomus sutorius",
580
+ "584316": "Orthotomus sutorius",
581
+ "424135": "Orthotomus sutorius",
582
+ "442446": "Curruca curruca",
583
+ "613909": "Chrysomma sinense",
584
+ "592438": "Chrysomma sinense",
585
+ "361317": "Chrysomma sinense",
586
+ "598027": "Chrysomma sinense",
587
+ "181233": "Chrysomma sinense",
588
+ "592441": "Chrysomma sinense",
589
+ "239354": "Chrysomma sinense",
590
+ "587230": "Zosterops palpebrosus",
591
+ "568696": "Zosterops palpebrosus",
592
+ "779856": "Dumetia hyperythra",
593
+ "604528": "Dumetia hyperythra",
594
+ "665060": "Pomatorhinus horsfieldii",
595
+ "315634": "Pomatorhinus horsfieldii",
596
+ "206390": "Pomatorhinus horsfieldii",
597
+ "157740": "Pomatorhinus horsfieldii",
598
+ "672095": "Pomatorhinus horsfieldii",
599
+ "574338": "Pomatorhinus horsfieldii",
600
+ "141358": "Pomatorhinus horsfieldii",
601
+ "202648": "Pomatorhinus horsfieldii",
602
+ "178248": "Pomatorhinus horsfieldii",
603
+ "393951": "Pomatorhinus horsfieldii",
604
+ "432655": "Pellorneum ruficeps",
605
+ "318811": "Pellorneum ruficeps",
606
+ "313298": "Pellorneum ruficeps",
607
+ "256283": "Pellorneum ruficeps",
608
+ "256183": "Pellorneum ruficeps",
609
+ "214228": "Pellorneum ruficeps",
610
+ "571200": "Pellorneum ruficeps",
611
+ "473457": "Pellorneum ruficeps",
612
+ "325245": "Pellorneum ruficeps",
613
+ "209500": "Pellorneum ruficeps",
614
+ "206397": "Pellorneum ruficeps",
615
+ "188680": "Pellorneum ruficeps",
616
+ "144313": "Pellorneum ruficeps",
617
+ "1065212": "Alcippe poioicephala",
618
+ "1059515": "Alcippe poioicephala",
619
+ "729664": "Alcippe poioicephala",
620
+ "682362": "Alcippe poioicephala",
621
+ "256281": "Alcippe poioicephala",
622
+ "578217": "Alcippe poioicephala",
623
+ "318995": "Alcippe poioicephala",
624
+ "442390": "Argya malcolmi",
625
+ "577177": "Argya malcolmi",
626
+ "577175": "Argya malcolmi",
627
+ "577173": "Argya malcolmi",
628
+ "317261": "Argya malcolmi",
629
+ "568904": "Argya malcolmi",
630
+ "585618": "Argya striata",
631
+ "157875": "Argya striata",
632
+ "789404": "Argya striata",
633
+ "578190": "Argya striata",
634
+ "667377": "Argya caudata",
635
+ "357156": "Irena puella",
636
+ "157858": "Acridotheres fuscus",
637
+ "583034": "Acridotheres tristis",
638
+ "571185": "Acridotheres tristis",
639
+ "571182": "Acridotheres tristis",
640
+ "464285": "Acridotheres tristis",
641
+ "309110": "Acridotheres tristis",
642
+ "609517": "Acridotheres tristis",
643
+ "598051": "Acridotheres tristis",
644
+ "577887": "Acridotheres tristis",
645
+ "577886": "Acridotheres tristis",
646
+ "568910": "Acridotheres tristis",
647
+ "157876": "Acridotheres tristis",
648
+ "585629": "Gracupica contra",
649
+ "592532": "Gracupica contra",
650
+ "116615": "Pastor roseus",
651
+ "116614": "Pastor roseus",
652
+ "313653": "Geokichla citrina",
653
+ "317383": "Geokichla citrina",
654
+ "574615": "Turdus simillimus",
655
+ "574602": "Turdus simillimus",
656
+ "571204": "Turdus simillimus",
657
+ "571203": "Turdus simillimus",
658
+ "570919": "Turdus simillimus",
659
+ "574614": "Turdus simillimus",
660
+ "574613": "Turdus simillimus",
661
+ "574611": "Turdus simillimus",
662
+ "574603": "Turdus simillimus",
663
+ "572939": "Turdus simillimus",
664
+ "572926": "Turdus simillimus",
665
+ "571139": "Turdus simillimus",
666
+ "256107": "Turdus simillimus",
667
+ "189333": "Turdus simillimus",
668
+ "189113": "Turdus simillimus",
669
+ "206425": "Turdus simillimus",
670
+ "785417": "Copsychus fulicatus",
671
+ "576918": "Copsychus fulicatus",
672
+ "576603": "Copsychus fulicatus",
673
+ "328066": "Copsychus fulicatus",
674
+ "325246": "Copsychus fulicatus",
675
+ "207256": "Copsychus fulicatus",
676
+ "464413": "Copsychus saularis",
677
+ "314726": "Copsychus saularis",
678
+ "307877": "Copsychus saularis",
679
+ "185664": "Copsychus saularis",
680
+ "1065186": "Copsychus saularis",
681
+ "583228": "Copsychus saularis",
682
+ "583225": "Copsychus saularis",
683
+ "577275": "Copsychus saularis",
684
+ "577249": "Copsychus saularis",
685
+ "577247": "Copsychus saularis",
686
+ "577245": "Copsychus saularis",
687
+ "577171": "Copsychus saularis",
688
+ "576939": "Copsychus saularis",
689
+ "576937": "Copsychus saularis",
690
+ "576936": "Copsychus saularis",
691
+ "576935": "Copsychus saularis",
692
+ "576934": "Copsychus saularis",
693
+ "576917": "Copsychus saularis",
694
+ "576904": "Copsychus saularis",
695
+ "576901": "Copsychus saularis",
696
+ "460931": "Copsychus saularis",
697
+ "400678": "Copsychus saularis",
698
+ "540847": "Copsychus saularis",
699
+ "524582": "Copsychus saularis",
700
+ "438461": "Copsychus saularis",
701
+ "247139": "Copsychus saularis",
702
+ "315637": "Copsychus malabaricus",
703
+ "181341": "Copsychus malabaricus",
704
+ "157477": "Copsychus malabaricus",
705
+ "256288": "Copsychus malabaricus",
706
+ "124743": "Copsychus malabaricus",
707
+ "574735": "Copsychus malabaricus",
708
+ "574732": "Copsychus malabaricus",
709
+ "574729": "Copsychus malabaricus",
710
+ "574726": "Copsychus malabaricus",
711
+ "574330": "Copsychus malabaricus",
712
+ "574741": "Cyornis pallidipes",
713
+ "574736": "Cyornis pallidipes",
714
+ "206385": "Cyornis pallidipes",
715
+ "568887": "Cyornis tickelliae",
716
+ "195592": "Cyornis tickelliae",
717
+ "337357": "Cyornis tickelliae",
718
+ "189109": "Cyornis tickelliae",
719
+ "331901": "Cyornis tickelliae",
720
+ "688014": "Larvivora brunnea",
721
+ "367146": "Larvivora brunnea",
722
+ "360927": "Larvivora brunnea",
723
+ "214231": "Larvivora brunnea",
724
+ "207929": "Larvivora brunnea",
725
+ "608964": "Luscinia svecica",
726
+ "574712": "Myophonus horsfieldii",
727
+ "570892": "Myophonus horsfieldii",
728
+ "318812": "Myophonus horsfieldii",
729
+ "571143": "Myophonus horsfieldii",
730
+ "779858": "Ficedula superciliaris",
731
+ "205909": "Ficedula superciliaris",
732
+ "779857": "Ficedula superciliaris",
733
+ "613908": "Ficedula superciliaris",
734
+ "605968": "Ficedula parva",
735
+ "578221": "Ficedula parva",
736
+ "576916": "Ficedula parva",
737
+ "576915": "Ficedula parva",
738
+ "576903": "Ficedula parva",
739
+ "165500": "Ficedula parva",
740
+ "417589": "Monticola solitarius",
741
+ "406655": "Saxicola caprata",
742
+ "122395": "Saxicola caprata",
743
+ "348379": "Oenanthe fusca",
744
+ "454351": "Chloropsis jerdoni",
745
+ "454350": "Chloropsis jerdoni",
746
+ "605973": "Chloropsis aurifrons",
747
+ "605970": "Chloropsis aurifrons",
748
+ "206408": "Chloropsis aurifrons",
749
+ "292015": "Dicaeum agile",
750
+ "207139": "Dicaeum agile",
751
+ "157487": "Dicaeum agile",
752
+ "778606": "Dicaeum erythrorhynchos",
753
+ "454349": "Dicaeum erythrorhynchos",
754
+ "442391": "Dicaeum erythrorhynchos",
755
+ "621595": "Dicaeum erythrorhynchos",
756
+ "308276": "Dicaeum erythrorhynchos",
757
+ "306985": "Dicaeum erythrorhynchos",
758
+ "569655": "Leptocoma zeylonica",
759
+ "157474": "Leptocoma zeylonica",
760
+ "242415": "Leptocoma zeylonica",
761
+ "114109": "Leptocoma minima",
762
+ "1070300": "Cinnyris asiaticus",
763
+ "788187": "Cinnyris asiaticus",
764
+ "778603": "Cinnyris asiaticus",
765
+ "576589": "Cinnyris asiaticus",
766
+ "574321": "Cinnyris asiaticus",
767
+ "207247": "Cinnyris asiaticus",
768
+ "195584": "Cinnyris asiaticus",
769
+ "340975": "Cinnyris lotenius",
770
+ "340542": "Cinnyris lotenius",
771
+ "454352": "Aethopyga vigorsii",
772
+ "454353": "Aethopyga vigorsii",
773
+ "206391": "Aethopyga vigorsii",
774
+ "210139": "Aethopyga vigorsii",
775
+ "205744": "Gymnoris xanthocollis",
776
+ "120591": "Gymnoris xanthocollis",
777
+ "577876": "Passer domesticus",
778
+ "577858": "Passer domesticus",
779
+ "577680": "Passer domesticus",
780
+ "577248": "Passer domesticus",
781
+ "464267": "Passer domesticus",
782
+ "577878": "Passer domesticus",
783
+ "308049": "Passer domesticus",
784
+ "428233": "Passer domesticus",
785
+ "207248": "Ploceus philippinus",
786
+ "464265": "Ploceus philippinus",
787
+ "325163": "Ploceus philippinus",
788
+ "571178": "Ploceus philippinus",
789
+ "571177": "Ploceus philippinus",
790
+ "758840": "Amandava amandava",
791
+ "758848": "Dendronanthus indicus",
792
+ "206000": "Dendronanthus indicus",
793
+ "314011": "Motacilla flava",
794
+ "316059": "Motacilla maderaspatensis",
795
+ "638156": "Motacilla maderaspatensis",
796
+ "301692": "Anthus campestris",
797
+ "537490": "Anthus cervinus",
798
+ "672086": "Emberiza lathami",
799
+ "317268": "Emberiza lathami",
800
+ "672085": "Emberiza striolata",
801
+ "1065180": "Sonus naturalis",
802
+ "780063": "Sonus naturalis",
803
+ "697075": "Sonus naturalis",
804
+ "697070": "Sonus naturalis",
805
+ "698862": "Sonus naturalis",
806
+ "566893": "Sonus naturalis",
807
+ "964500": "Sonus naturalis",
808
+ "557438": "Mystery mystery",
809
+ "548242": "Mystery mystery",
810
+ "417410": "Mystery mystery",
811
+ "417409": "Mystery mystery",
812
+ "306681": "Mystery mystery",
813
+ "147534": "Mystery mystery",
814
+ "1008114": "Mystery mystery",
815
+ "1008110": "Mystery mystery",
816
+ "809546": "Mystery mystery",
817
+ "793269": "Mystery mystery",
818
+ "790236": "Mystery mystery",
819
+ "638548": "Mystery mystery",
820
+ "373305": "Mystery mystery",
821
+ "922991": "Mystery mystery",
822
+ "617304": "Mystery mystery",
823
+ "513411": "Mystery mystery",
824
+ "513406": "Mystery mystery",
825
+ "494113": "Mystery mystery",
826
+ "462204": "Mystery mystery",
827
+ "320516": "Mystery mystery",
828
+ "169915": "Mystery mystery",
829
+ "915755": "Mystery mystery",
830
+ "736197": "Mystery mystery",
831
+ "733997": "Mystery mystery",
832
+ "689977": "Mystery mystery",
833
+ "689976": "Mystery mystery",
834
+ "477490": "Mystery mystery"
835
+ }
label_map.json ADDED
@@ -0,0 +1 @@
 
 
1
+ {"Accipiter badius": 0, "Acridotheres fuscus": 1, "Acridotheres tristis": 2, "Acrocephalus dumetorum": 3, "Acrocephalus stentoreus": 4, "Aegithina tiphia": 5, "Aethopyga vigorsii": 6, "Alauda gulgula": 7, "Alcedo atthis": 8, "Alcippe poioicephala": 9, "Amandava amandava": 10, "Amaurornis phoenicurus": 11, "Ammomanes phoenicura": 12, "Anas poecilorhyncha": 13, "Anous tenuirostris": 14, "Anthus campestris": 15, "Anthus cervinus": 16, "Apus affinis": 17, "Ardea purpurea": 18, "Arenaria interpres": 19, "Argya caudata": 20, "Argya malcolmi": 21, "Argya striata": 22, "Artamus fuscus": 23, "Athene blewitti": 24, "Athene brama": 25, "Bubo bengalensis": 26, "Bubulcus coromandus": 27, "Cacomantis passerinus": 28, "Cacomantis sonneratii": 29, "Calidris ferruginea": 30, "Calidris tenuirostris": 31, "Caprimulgus asiaticus": 32, "Caprimulgus atripennis": 33, "Caprimulgus indicus": 34, "Cecropis daurica": 35, "Centropus sinensis": 36, "Ceyx erithaca": 37, "Charadrius dubius": 38, "Chlidonias hybrida": 39, "Chloropsis aurifrons": 40, "Chloropsis jerdoni": 41, "Chrysocolaptes festivus": 42, "Chrysomma sinense": 43, "Ciconia ciconia": 44, "Cinnyris asiaticus": 45, "Cinnyris lotenius": 46, "Cisticola juncidis": 47, "Copsychus fulicatus": 48, "Copsychus malabaricus": 49, "Copsychus saularis": 50, "Coracina macei": 51, "Corvus culminatus": 52, "Corvus macrorhynchos": 53, "Corvus splendens": 54, "Coturnix coromandelica": 55, "Cuculus micropterus": 56, "Culicicapa ceylonensis": 57, "Curruca curruca": 58, "Cyornis pallidipes": 59, "Cyornis tickelliae": 60, "Cypsiurus balasiensis": 61, "Dendrocitta vagabunda": 62, "Dendrocygna javanica": 63, "Dendronanthus indicus": 64, "Dicaeum agile": 65, "Dicaeum erythrorhynchos": 66, "Dicrurus aeneus": 67, "Dicrurus caerulescens": 68, "Dicrurus leucophaeus": 69, "Dicrurus macrocercus": 70, "Dicrurus paradiseus": 71, "Dinopium benghalense": 72, "Dumetia hyperythra": 73, "Duttaphrynus melanostictus": 74, "Emberiza lathami": 75, "Emberiza striolata": 76, "Eudynamys scolopaceus": 77, "Falco peregrinus": 78, "Ficedula parva": 79, "Ficedula superciliaris": 80, "Francolinus pictus": 81, "Funambulus palmarum": 82, "Galerida malabarica": 83, "Gallicrex cinerea": 84, "Galloperdix spadicea": 85, "Gallus sonneratii": 86, "Geokichla citrina": 87, "Glaucidium radiatum": 88, "Gracupica contra": 89, "Gymnoris xanthocollis": 90, "Haematopus ostralegus": 91, "Halcyon pileata": 92, "Halcyon smyrnensis": 93, "Harpactes fasciatus": 94, "Helopsaltes certhiola": 95, "Hemicircus canente": 96, "Hieraaetus pennatus": 97, "Hierococcyx varius": 98, "Himantopus himantopus": 99, "Hydrophasianus chirurgus": 100, "Hydroprogne caspia": 101, "Hypothymis azurea": 102, "Hypsipetes ganeesa": 103, "Iduna rama": 104, "Irena puella": 105, "Ixobrychus cinnamomeus": 106, "Jynx torquilla": 107, "Lalage melanoptera": 108, "Lanius schach": 109, "Larvivora brunnea": 110, "Leiopicus mahrattensis": 111, "Leptocoma minima": 112, "Leptocoma zeylonica": 113, "Limnodromus scolopaceus": 114, "Luscinia svecica": 115, "Machlolophus aplonotus": 116, "Merops orientalis": 117, "Micropternus brachyurus": 118, "Milvus migrans": 119, "Monticola solitarius": 120, "Motacilla flava": 121, "Motacilla maderaspatensis": 122, "Myophonus horsfieldii": 123, "Mystery mystery": 124, "Ninox scutulata": 125, "Numenius arquata": 126, "Ocyceros birostris": 127, "Ocyceros griseus": 128, "Oenanthe fusca": 129, "Oriolus chinensis": 130, "Oriolus kundoo": 131, "Oriolus xanthornus": 132, "Orthotomus sutorius": 133, "Ortygornis pondicerianus": 134, "Otus bakkamoena": 135, "Otus sunia": 136, "Parus cinereus": 137, "Passer domesticus": 138, "Pastor roseus": 139, "Pellorneum ruficeps": 140, "Perdicula asiatica": 141, "Pericrocotus cinnamomeus": 142, "Phoenicopterus roseus": 143, "Phylloscopus griseolus": 144, "Phylloscopus humei": 145, "Phylloscopus inornatus": 146, "Phylloscopus nitidus": 147, "Phylloscopus trochiloides": 148, "Phylloscopus tytleri": 149, "Pitta brachyura": 150, "Ploceus philippinus": 151, "Pluvialis squatarola": 152, "Pomatorhinus horsfieldii": 153, "Porphyrio poliocephalus": 154, "Prinia buchanani": 155, "Prinia hodgsonii": 156, "Prinia inornata": 157, "Prinia socialis": 158, "Prinia sylvatica": 159, "Pseudibis papillosa": 160, "Psilopogon haemacephalus": 161, "Psilopogon viridis": 162, "Psilopogon zeylanicus": 163, "Psittacula columboides": 164, "Psittacula cyanocephala": 165, "Psittacula eupatria": 166, "Psittacula krameri": 167, "Ptyonoprogne concolor": 168, "Pycnonotus cafer": 169, "Pycnonotus jocosus": 170, "Pycnonotus leucotis": 171, "Pycnonotus luteolus": 172, "Rallina eurizonoides": 173, "Rhipidura albogularis": 174, "Rhipidura aureola": 175, "Rostratula benghalensis": 176, "Saxicola caprata": 177, "Schoenicola platyurus": 178, "Schoenicola striatus": 179, "Sonus naturalis": 180, "Spilopelia chinensis": 181, "Spilopelia senegalensis": 182, "Spilornis cheela": 183, "Sterna aurantia": 184, "Sternula saundersi": 185, "Strix leptogrammica": 186, "Strix ocellata": 187, "Surniculus dicruroides": 188, "Tachybaptus ruficollis": 189, "Tadorna ferruginea": 190, "Tarbinskiellus portentosus": 191, "Tephrodornis pondicerianus": 192, "Terpsiphone paradisi": 193, "Treron affinis": 194, "Treron phoenicopterus": 195, "Tringa glareola": 196, "Tringa totanus": 197, "Turdus simillimus": 198, "Tyto alba": 199, "Tyto javanica": 200, "Vanellus indicus": 201, "Zapornia fusca": 202, "Zosterops palpebrosus": 203}
model_training.ipynb ADDED
The diff for this file is too large to render. See raw diff
 
multi_species_model.pth ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:de6772489928a954701cf7c6e340c449159f1e0128fb73330e2f968ec21f4f4d
3
+ size 7050895
requirements.txt ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
 
1
+ streamlit
2
+ torch
3
+ torchaudio
4
+ numpy
5
+ pillow