panda1835 commited on
Commit
8423bb2
1 Parent(s): 4aeeb97

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +115 -26
app.py CHANGED
@@ -12,33 +12,75 @@ def format_label(label):
12
  """
13
  return label[label.find(" ")+1:-1]
14
 
15
- def check_species_status(species_name):
16
- status = ''
17
-
18
- return status
19
-
20
  def info(species_name):
21
  status = check_species_status(species_name)
22
  if status == '':
23
  info = ''
24
  return info
25
 
26
- def get_vi_name(en_name):
27
  """
28
  Return name in Vietnamese
29
  """
30
- print(en_name)
31
- return data[data['en_name'] == en_name]['vi_name'].to_list()[0]
 
 
 
 
 
32
 
33
  def get_law(en_name):
34
- cites = data[data['en_name'] == en_name]['CITES'].to_list()[0]
35
- nd06 = data[data['en_name'] == en_name]['ND06'].to_list()[0]
36
  return cites, nd06
37
 
38
- def get_habitat(en_name):
39
- return data[data['en_name'] == en_name]['habitat'].to_list()[0]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
40
 
41
- def predict(image):
42
 
43
  # Load the model
44
  model = load_model('keras_model.h5')
@@ -64,16 +106,54 @@ def predict(image):
64
  pred = model.predict(data)
65
  pred = pred.tolist()
66
 
 
 
 
 
 
 
 
 
 
67
  with open('labels.txt','r') as f:
68
  labels = f.readlines()
69
 
70
- en_name = format_label(labels[pred.index(max(pred))]).strip()
 
 
 
 
 
 
71
 
72
- result = {get_vi_name(format_label(labels[i])): round(pred[0][i],2) for i in range(len(pred[0]))}
73
  cites, nd06 = get_law(en_name)
74
  info = ""
75
- if str(nd06) != "":
76
- info += f'CITES: {cites}, NĐ06: {nd06} \n \n'
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
77
  info += "Đây là loài được pháp luật bảo vệ. Mọi hành vi buôn bán, nuôi nhốt không có \
78
  [giấy phép](https://thuvienphapluat.vn/van-ban/Tai-nguyen-Moi-truong/Nghi-dinh-06-2019-ND-CP-quan-ly-thuc-vat-rung-dong-vat-rung-nguy-cap-quy-hiem-405883.aspx) đều vi phạm pháp luật \n"
79
  info += "- Nếu bạn vô tình bắt gặp loài này bị buôn bán mà không có giấy phép, \
@@ -82,21 +162,30 @@ def predict(image):
82
  info += "- Nếu bạn đang nuôi thì nên giao nộp cho cơ quan chức năng để trả về tự nhiên. Tham khảo đơn vị tiếp nhận DVHD ở địa phương \
83
  bạn tại [đây](https://drive.google.com/file/d/1K2ZWcHKGEsNudh_LtHgHJOXlVw-GQ6AZ/view). \n"
84
  info += f"- Nếu bạn bắt gặp trong vườn nhà thì có thể xem xét thả chúng về môi trường sống. Hãy đảm bảo nơi bạn thả là\
85
- **{get_habitat(en_name)}**."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
 
87
- return result, info
88
 
89
 
90
- description="""
91
- VNTurtle nhận diện các loài rùa Việt Nam. Mô hình mẫu này có thể nhận diện 10 loại rùa thường xuất hiện ở VN gồm **5** loài bản địa
92
- **(1) Rùa núi viền**, **(2) Rùa núi vàng**, **(3) Rùa ba gờ**, **(4) Rùa răng**, và **(5) Rùa sa nhân**,
93
- và **5** loài ngoại lai **(1) Rùa Sulcata**, **(2) Rùa bản đồ**, **(3) Rùa cá sấu**, **(4) Rùa tai đỏ**, và **(5) Rùa ninja**
94
- """
95
  article = "© Hình ảnh minh hoạ được cung cấp bởi ATP"
96
  examples = [ ['test1.jpg'], ['test2.jpg'], ['test3.jpg'] ]
97
  gr.Interface(fn=predict,
98
- inputs=gr.Image(type="pil", label="Input Image"),
99
- outputs=[gr.Label(label="Predictions"), gr.Markdown()],
100
  live=True,
101
  title='VNTurtle - Toy Model',
102
  description=description,
 
12
  """
13
  return label[label.find(" ")+1:-1]
14
 
 
 
 
 
 
15
  def info(species_name):
16
  status = check_species_status(species_name)
17
  if status == '':
18
  info = ''
19
  return info
20
 
21
+ def get_name(en_name, lan):
22
  """
23
  Return name in Vietnamese
24
  """
25
+ return data[data[f'name_en'] == en_name][f'name_{lan}'].to_list()[0]
26
+
27
+ def get_fun_fact(en_name, lan):
28
+ """
29
+ Return fun fact of the species
30
+ """
31
+ return data[data[f'name_en'] == en_name][f'fun_fact_{lan}'].to_list()[0]
32
 
33
  def get_law(en_name):
34
+ cites = data[data['name_en'] == en_name]['CITES'].to_list()[0]
35
+ nd06 = data[data['name_en'] == en_name]['ND06'].to_list()[0]
36
  return cites, nd06
37
 
38
+ def get_habitat(en_name, lan):
39
+ return data[data['name_en'] == en_name][f'habitat_{lan}'].to_list()[0]
40
+
41
+ def get_conservation_status(en_name, lan):
42
+ status = data[data['name_en'] == en_name]['conservation_status'].to_list()[0]
43
+ status_dict = {
44
+ 'NE': {
45
+ 'vi': "Không được đánh giá",
46
+ 'en': "Not Evaluated"
47
+ },
48
+ 'DD': {
49
+ 'vi': "Thiếu dữ liệu",
50
+ 'en': "Data Deficient"
51
+ },
52
+ 'LC': {
53
+ 'vi': "Ít quan tâm",
54
+ 'en': "Least Concern"
55
+ },
56
+ 'NT': {
57
+ 'vi': "Sắp bị đe dọa",
58
+ 'en': "Near Threatened"
59
+ },
60
+ 'VU': {
61
+ 'vi': "Sắp nguy cấp",
62
+ 'en': "Vulnerable"
63
+ },
64
+ 'EN': {
65
+ 'vi': "Nguy cấp",
66
+ 'en': "Endangered"
67
+ },
68
+ 'CR': {
69
+ 'vi': "Cực kỳ nguy cấp",
70
+ 'en': "Critically Endangered"
71
+ },
72
+ 'EW': {
73
+ 'vi': "Tuyệt chủng trong tự nhiên",
74
+ 'en': "Extinct in the Wild"
75
+ },
76
+ 'EX': {
77
+ 'vi': "Tuyệt chủng",
78
+ 'en': "Extinct"
79
+ },
80
+ }
81
+ return status_dict[status][lan]
82
 
83
+ def predict(image, language):
84
 
85
  # Load the model
86
  model = load_model('keras_model.h5')
 
106
  pred = model.predict(data)
107
  pred = pred.tolist()
108
 
109
+ sorted_index = np.argsort(pred).tolist()[0]
110
+
111
+ print(sorted_index)
112
+
113
+ display_index = []
114
+ for i in sorted_index[::-1]:
115
+ if pred[0][i] > 0.01:
116
+ display_index.append(i)
117
+
118
  with open('labels.txt','r') as f:
119
  labels = f.readlines()
120
 
121
+ en_name = format_label(labels[sorted_index[-1]]).strip()
122
+
123
+ lan = ''
124
+ if language == "Tiếng Việt":
125
+ lan = 'vi'
126
+ else:
127
+ lan = 'en'
128
 
129
+ result = {get_name(format_label(labels[i]), lan): round(pred[0][i],2) for i in display_index}
130
  cites, nd06 = get_law(en_name)
131
  info = ""
132
+
133
+ fun_fact = ""
134
+ if lan == 'vi':
135
+ fun_fact += "💡 **Thông tin lý thú** \n\n"
136
+ if lan == 'en':
137
+ fun_fact += "💡 **Fun fact** \n\n"
138
+
139
+ fun_fact += f"{get_fun_fact(en_name, lan)}."
140
+
141
+ status = ""
142
+ if lan == 'vi':
143
+ status += "**🐢 Tình trạng bảo tồn** \n\n"
144
+ if lan == 'en':
145
+ status += "**🐢 Conservation status** \n\n"
146
+
147
+ status += f"{get_conservation_status(en_name, lan)}"
148
+
149
+ law = ""
150
+ if lan == 'vi':
151
+ law += "**👮‍♀️ Luật** \n\n"
152
+ if lan == 'en':
153
+ law += "**👮‍♀️ Law** \n\n"
154
+ law += f'CITES: {cites}, NĐ06: {nd06}'
155
+
156
+ if lan == 'vi' and str(nd06) != "":
157
  info += "Đây là loài được pháp luật bảo vệ. Mọi hành vi buôn bán, nuôi nhốt không có \
158
  [giấy phép](https://thuvienphapluat.vn/van-ban/Tai-nguyen-Moi-truong/Nghi-dinh-06-2019-ND-CP-quan-ly-thuc-vat-rung-dong-vat-rung-nguy-cap-quy-hiem-405883.aspx) đều vi phạm pháp luật \n"
159
  info += "- Nếu bạn vô tình bắt gặp loài này bị buôn bán mà không có giấy phép, \
 
162
  info += "- Nếu bạn đang nuôi thì nên giao nộp cho cơ quan chức năng để trả về tự nhiên. Tham khảo đơn vị tiếp nhận DVHD ở địa phương \
163
  bạn tại [đây](https://drive.google.com/file/d/1K2ZWcHKGEsNudh_LtHgHJOXlVw-GQ6AZ/view). \n"
164
  info += f"- Nếu bạn bắt gặp trong vườn nhà thì có thể xem xét thả chúng về môi trường sống. Hãy đảm bảo nơi bạn thả là\
165
+ **{get_habitat(en_name, lan)}**. \n\n"
166
+ info += f"Liên hệ Chương trình Bảo tồn Rùa châu Á ([ATP](https://asianturtleprogram.org/vi/)) qua email: info@asianturtleprogram.org hoặc [Facebook](https://www.facebook.com/search/top?q=asian%20turtle%20program) để được hướng dẫn trong các trường hợp cụ thể"
167
+
168
+ if lan == 'en' and str(nd06) != "":
169
+ info += f'CITES: {cites}, NĐ06: {nd06} \n \n'
170
+ info += "This species is protected by law. All acts of trafficking and captive breeding without \
171
+ [authority permisison](https://thuvienphapluat.vn/van-ban/Tai-nguyen-Moi-truong/Nghi-dinh-06-2019-ND-CP-quan-ly-thuc-vat-rung-dong-vat-rung-nguy-cap-quy-hiem-405883.aspx) are illegal \n"
172
+ info += "- If you happen to come across this species being traded without a license, \
173
+ do not buy for any purpose (e.g., to release). \
174
+ Instead, you should report the suspicious act to ENV via their hotline **1800-1522**. \n"
175
+ info += "- If you are raising them, you should hand them over to the authorities to return to the wild. Find your local wild-animal receiver \
176
+ [here](https://drive.google.com/file/d/1K2ZWcHKGEsNudh_LtHgHJOXlVw-GQ6AZ/view). \n"
177
+ info += f"- If you find them in your garden, consider releasing them back into their habitat. Please make sure the place you release is \
178
+ **{get_habitat(en_name, lan)}**. \n\n"
179
+ info += f"Contact Asian Turtle Program ([ATP](https://asianturtleprogram.org/)) via email (info@asianturtleprogram.org) or [Facebook](https://www.facebook.com/search/top?q=asian%20turtle%20program) for instructions in specific cases."
180
 
181
+ return result, fun_fact, status, law, info
182
 
183
 
 
 
 
 
 
184
  article = "© Hình ảnh minh hoạ được cung cấp bởi ATP"
185
  examples = [ ['test1.jpg'], ['test2.jpg'], ['test3.jpg'] ]
186
  gr.Interface(fn=predict,
187
+ inputs=[gr.Image(type="pil", label="Input Image"), gr.Radio(value="Tiếng Việt", choices=["Tiếng Việt", "English"], label="Language")],
188
+ outputs=[gr.Label(label="Predictions"), gr.Markdown(), gr.Markdown(), gr.Markdown(), gr.Markdown()],
189
  live=True,
190
  title='VNTurtle - Toy Model',
191
  description=description,