DenkingOfficial commited on
Commit
80d68c7
1 Parent(s): b96cef5

A huge update

Browse files
README.md CHANGED
@@ -14,7 +14,7 @@ license: openrail
14
 
15
  This is an app that can classify the breed of a cat based on a photo.
16
 
17
- It uses a VGG-16 ImageNet model finetuned on images of cats of various breeds. The model is able to recognize a 20 of breeds.
18
 
19
  ## Requirements
20
 
@@ -26,15 +26,20 @@ It uses a VGG-16 ImageNet model finetuned on images of cats of various breeds. T
26
  - Pillow 9.0.1
27
  - FastApi 0.88.0
28
  - Uvicorn 0.20.0 or higher
 
29
 
30
  ## How to use
31
 
32
- 1. Clone repository using `git clone https://github.com/DenkingOfficial/cat_breed_classifier.git`
33
  2. Enter the cloned directory `cd cat_breed_classifier`
34
  3. Install requirements by running `pip install -r requirements.txt`
35
- 4. Download a model from [here](https://www.dropbox.com/s/iga6rfyqpq0lnra/20_cat_classes_model.h5) and place it into `models` folder
36
  5. Run app using `uvicorn app:app`
37
 
 
 
 
 
38
  ## Authors
39
 
40
  This app was developed by students of Ural Federal University (UrFU):
@@ -50,7 +55,7 @@ This app was developed by students of Ural Federal University (UrFU):
50
 
51
  Это веб-приложение, которое позволяет определять породу кошки по фотографии.
52
 
53
- Оно использует модель VGG-16 ImageNet тонко настроенную на изображениях кошек разных пород. Данная модель позволяет определять 20 пород.
54
 
55
  ## Зависимости
56
 
@@ -62,13 +67,14 @@ This app was developed by students of Ural Federal University (UrFU):
62
  - Pillow 9.0.1
63
  - FastApi 0.88.0
64
  - Uvicorn 0.20.0 или новее
 
65
 
66
  ## Как использовать
67
 
68
- 1. Загрузить репозиторий используя команду `git clone https://github.com/DenkingOfficial/cat_breed_classifier.git`
69
  2. Перейти в директорию репозитория `cd cat_breed_classifier`
70
  3. Установить зависимости используя команду `pip install -r requirements.txt`
71
- 4. Скачать модель [отсюда](https://www.dropbox.com/s/iga6rfyqpq0lnra/20_cat_classes_model.h5) и скопировать ее в папку `models`
72
  5. Запустить приложение используя команду `uvicorn app:app`
73
 
74
  ## Авторы
@@ -78,4 +84,4 @@ This app was developed by students of Ural Federal University (UrFU):
78
  - Шершнев Андрей, РИМ-120907 - тренировка модели, разработка приложения
79
  - Иванов Сергей, РИМ-120906 - разработка API, сбор датасета
80
  - Шалаева Ирина, РИМ-120906 - стилизация интерфейса, сбор датасета
81
- - Ильин Семен, РИМ-120907 - разработка приложения, сбор датасета
 
14
 
15
  This is an app that can classify the breed of a cat based on a photo.
16
 
17
+ It uses a EfficientNetB0 ImageNet model finetuned on images of cats of various breeds. The model is able to recognize 18 breeds. See list [here](https://github.com/DenkingOfficial/cat_breed_classifier/tree/main/models).
18
 
19
  ## Requirements
20
 
 
26
  - Pillow 9.0.1
27
  - FastApi 0.88.0
28
  - Uvicorn 0.20.0 or higher
29
+ - Smartcrop.py
30
 
31
  ## How to use
32
 
33
+ 1. Clone this repository using `git clone https://github.com/DenkingOfficial/cat_breed_classifier.git`
34
  2. Enter the cloned directory `cd cat_breed_classifier`
35
  3. Install requirements by running `pip install -r requirements.txt`
36
+ 4. Download a model from [here](https://www.dropbox.com/s/jqzwew182acdohn/cats_18_EfficientNetB0.h5) and place it into `models` folder
37
  5. Run app using `uvicorn app:app`
38
 
39
+ ## Demonstration
40
+
41
+ ![App demonstration](https://user-images.githubusercontent.com/38957619/212042151-8cded892-4153-48d2-b98b-7430e0149bba.gif)
42
+
43
  ## Authors
44
 
45
  This app was developed by students of Ural Federal University (UrFU):
 
55
 
56
  Это веб-приложение, которое позволяет определять породу кошки по фотографии.
57
 
58
+ Оно использует модель EfficientNetB0 ImageNet тонко настроенную на изображениях кошек разных пород. Данная модель позволяет определять 18 пород. Посмотреть список можно [здесь](https://github.com/DenkingOfficial/cat_breed_classifier/tree/main/models).
59
 
60
  ## Зависимости
61
 
 
67
  - Pillow 9.0.1
68
  - FastApi 0.88.0
69
  - Uvicorn 0.20.0 или новее
70
+ - Smartcrop.py
71
 
72
  ## Как использовать
73
 
74
+ 1. Загрузить данный репозиторий используя команду `git clone https://github.com/DenkingOfficial/cat_breed_classifier.git`
75
  2. Перейти в директорию репозитория `cd cat_breed_classifier`
76
  3. Установить зависимости используя команду `pip install -r requirements.txt`
77
+ 4. Скачать модель [отсюда](https://www.dropbox.com/s/jqzwew182acdohn/cats_18_EfficientNetB0.h5) и скопировать ее в папку `models`
78
  5. Запустить приложение используя команду `uvicorn app:app`
79
 
80
  ## Авторы
 
84
  - Шершнев Андрей, РИМ-120907 - тренировка модели, разработка приложения
85
  - Иванов Сергей, РИМ-120906 - разработка API, сбор датасета
86
  - Шалаева Ирина, РИМ-120906 - стилизация интерфейса, сбор датасета
87
+ - Ильин Семен, РИМ-120907 - разработка приложения, сбор датасета
cat_breeds_dict.py CHANGED
@@ -2,14 +2,16 @@ CAT_BREEDS = [
2
  'Бенгальская', 'Бомбейская', 'Британская короткошерстная',
3
  'Бурмилла', 'Девон-рекс', 'Европейская короткошерстная',
4
  'Экзотическая короткошерстная', 'Мейн-кун', 'Нибелунг',
5
- 'Персидская', 'Питерболд', 'Рэгдолл', 'Русская голубая',
6
- 'Саванна', 'Шотландская вислоухая', 'Сибирская', 'Сингапурская',
7
  'Сомалийская', 'Сфинкс', 'Черепаховая'
8
  ]
9
 
10
  CAT_DESCRIPTIONS = {
11
  'Бенгальская':
12
  '''# Бенгальская кошка
 
 
13
  ### Бенгальская кошка — крупная кошка с блестящей \
14
  шерстью, очень развитой мускулатурой и толстым \
15
  хвостом, который часто свисает до земли. Бенгальская \
@@ -22,10 +24,40 @@ CAT_DESCRIPTIONS = {
22
  порода кошек не имеет такого эффекта золотистого \
23
  или жемчужного мерцания шерсти, который можно \
24
  обнаружить у бенгальских кошек.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  ''',
26
 
27
  'Бомбейская':
28
  '''# Бомбейская кошка
 
 
29
  ### Бомбейская кошка (бомбей) – питомец-компаньон \
30
  для активных и жизнерадостных людей, проводящих \
31
  большую часть свободного времени дома. Порода \
@@ -38,10 +70,36 @@ CAT_DESCRIPTIONS = {
38
  представители породы умны и эмпатичны: животное тонко \
39
  чувствует настроение хозяина и подстраивается даже под \
40
  незначительные его изменения.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
41
  ''',
42
 
43
  'Британская короткошерстная':
44
  '''# Британская короткошерстная
 
 
45
  ### Британская короткошёрстная — крупная порода, \
46
  имеющая массивное, коренастое телосложение. У \
47
  представителей этой породы широкая грудная клетка \
@@ -51,10 +109,39 @@ CAT_DESCRIPTIONS = {
51
  короткошёрстных — короткая и густая, без пушистости, \
52
  бывает более ста окрасов и имеет множество \
53
  комбинаций пятен.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
54
  ''',
55
 
56
  'Бурмилла':
57
  '''# Бурмилла
 
 
58
  ### Бурмилла — кошка среднего телосложения, похожая \
59
  на бурмезскую. Порода отличается коренастым и \
60
  довольно мускулистым телом и ��ирокой прямой спиной. \
@@ -67,10 +154,31 @@ CAT_DESCRIPTIONS = {
67
  шерсть со светлым подшерстком близко прилегает к телу \
68
  и отличается равномерным типпингом(кончики волосков более \
69
  темного цвета) по всему телу.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
70
  ''',
71
 
72
  'Девон-рекс':
73
  '''# Девон-рекс
 
 
74
  ### Запоминающийся образ кошки породы девон-рекс — это \
75
  ехидная мордочка с волнистой «мятой» шерстью. Широкие \
76
  скулы, большие глаза, низко посаженные уши. Короткая \
@@ -80,10 +188,33 @@ CAT_DESCRIPTIONS = {
80
  где образуются мелкие барашки. Бакенбарды и надбровные \
81
  дуги у этой породы также волнистые. Девон-рекс может \
82
  быть любых окрасов и вариантов пятнистости.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  ''',
84
 
85
  'Европейская короткошерстная':
86
  '''# Европейская короткошерстная
 
 
87
  ### Европейская короткошерстная кошка, она же кельтская, \
88
  на первый взгляд выглядит как обычная довольно крупная \
89
  домашняя кошка. Тем не менее генетики выяснили, что она \
@@ -95,10 +226,33 @@ CAT_DESCRIPTIONS = {
95
  уравновешенные, жизнерадостные, ласковые без навязчивости, \
96
  готовые и поиграть, и просто составить компанию на диване \
97
  перед телевизором.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
  ''',
99
 
100
  'Экзотическая короткошерстная':
101
  '''# Экзотическая короткошерстная
 
 
102
  ### Экзотическая короткошерстная кошка среднего размера. \
103
  Телосложение — коренастое и в то же время подтянутое. \
104
  Имеет широкую, круглую голову с небольшими, широко \
@@ -110,10 +264,36 @@ CAT_DESCRIPTIONS = {
110
  Экзотическая короткошерстная кошка бывает многих \
111
  окрасов и вариантов пятнистости, типичных для персидской \
112
  породы, а также может иметь окрас «пятнистый табби».
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  ''',
114
 
115
  'Мейн-кун':
116
  '''# Мейн-кун
 
 
117
  ### Мейн-кун – это популярная порода кошек, завоевавшая \
118
  поклонников по всему миру своим харизматичным внешним \
119
  видом и внушительными размерами. Даже обычным людям, \
@@ -121,10 +301,38 @@ CAT_DESCRIPTIONS = {
121
  мейн-куна от других кошек благодаря их выдающимся \
122
  внешним данным. Мейн-кун гордо носит звание пушистого \
123
  великана.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
  ''',
125
 
126
  'Нибелунг':
127
  '''# Нибелунг
 
 
128
  ### Нибелунг — редкая порода домашних кошек. Она \
129
  считается длинношёрстным вариантом русской голубой \
130
  кошки. Представители этой породы замкнуты и не \
@@ -136,10 +344,35 @@ CAT_DESCRIPTIONS = {
136
  — сплошной голубой. Порода названа в честь «порождения \
137
  тумана» (от нем. Nebel — туман) из средневекового \
138
  немецкого эпоса «Песнь о Нибелунгах».
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
139
  ''',
140
 
141
  'Персидская':
142
  '''# Персидская
 
 
143
  ### Персидская длинношерстная кошка — порода среднего \
144
  размера, с коренастым телом и с массивной головой. \
145
  Уши — небольшие, широко посаженные. У этой кошки \
@@ -149,25 +382,34 @@ CAT_DESCRIPTIONS = {
149
  длинная, густая и блестящая, с плотным мягким \
150
  подшерстком. Имеет короткий, но необыкновенно пушистый \
151
  хвост. Допускаются разные варианты окрасов и \
152
- пятнистости.
153
- ''',
 
 
 
 
 
 
 
 
 
 
 
154
 
155
- 'Питерболд':
156
- '''# Питерболд
157
- ### Питерболд выведенная в России порода бесшёрстных \
158
- домашних кошек. Питерболды имеют характерную форму \
159
- головы: длинную и узкую, с прямым профилем, \
160
- миндалевидными глазами и большими, разведёнными в \
161
- стороны ушами. Идеальные представители породы выглядят, \
162
- как бесшёрстные ориентальные кошки. Питерболды обычно \
163
- дружелюбны, любопытны, активны, любят всех членов своей \
164
- семьи и нуждаются в общении с людьми; они не принадлежат \
165
- к независимым кошкам. Питерболды хорошо уживаются с \
166
- другими кошками и прочими домашними животными.
167
  ''',
168
 
169
  'Рэгдолл':
170
  '''# Рэгдолл
 
 
171
  ### Рэгдолл — крупная и величавая кошка с характерным \
172
  окрасом. Представители этой породы обычно расслаблены, \
173
  невозмутимы и кажутся ленивыми. Голова широкая, имеет \
@@ -185,10 +427,34 @@ CAT_DESCRIPTIONS = {
185
  которые занимают от 1/3 до 1/2 всего тела) и миттед \
186
  (один из типов окрасов кошек с белыми пятнами, \
187
  которые занимают от 1/4 до 1/3 всего тела).
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
188
  ''',
189
 
190
  'Русская голубая':
191
  '''# Русская голубая
 
 
192
  ### Кошки породы русская голубая бывают среднего или \
193
  крупного размера. Имеют изящное тело и длинны��, \
194
  стройные ноги. Эта кошка настолько грациозна, что \
@@ -203,32 +469,40 @@ CAT_DESCRIPTIONS = {
203
  среди русских голубых кошек встречаются особи с черным \
204
  и белым окрасом. У типичных же представителей окрас \
205
  равномерно голубой, с серебристым отливом.
206
- ''',
207
 
208
- 'Саванна':
209
- '''# Саванна
210
- ### Саванна высокая худая кошка с длинными лапами. \
211
- Взрослая особь может достигать веса в 15 кг при росте \
212
- 60 см в холке. Размеры ее тела зависят от близости \
213
- конкретного представителя к первому скрещенному \
214
- поколению: чем ближе, тем крупнее животное. Кроме \
215
- того, под влиянием случайных факторов в генетике породы \
216
- саванна могут встречаться кошки, значительно \
217
- отличающиеся по размерам, даже в одном помете. Как \
218
- правило, саванна имеет пятнистый окрас, но иногда \
219
- встречаются кошки с мраморным рисунком, снежным окрасом, \
220
- а также с шерстью голубого или других ненасыщенных цветов. \
221
- Уши высокие, с глубокой «чашкой», округленные, прямые \
222
- (задняя часть уха имеет светлую полосу по центру, с \
223
- черным, темно-серым или коричневым окаймлением, что \
224
- создает «эффект глаза»). У этих кошек широкий нос и глаза \
225
- с нависающими веками. На коротких хвостах — черные кольца \
226
- и однотонный черный кончик. Глаза могут быть зелеными, \
227
- коричневыми или золотистыми.
 
 
 
 
 
 
 
228
  ''',
229
 
230
  'Шотландская вислоухая':
231
  '''# Шотландская вислоухая
 
 
232
  ### Шотландская вислоухая кошка или скоттиш-фолд \
233
  (англ. Scottish Fold) — порода домашних кошек с \
234
  характерными загнутыми вперёд и вниз ушами, что \
@@ -237,10 +511,35 @@ CAT_DESCRIPTIONS = {
237
  влияние на хрящи во всём организме. Это придаёт \
238
  голове кошки характерный вид, которую часто описывают \
239
  как «похожую на совиную».
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
240
  ''',
241
 
242
  'Сибирская':
243
  '''# Сибирская
 
 
244
  ### Сибирская кошка – прекрасный выбор для семей с детьми \
245
  и владельцев, которые интересуются разведением и \
246
  выставочной деятельностью. Ведь порода обладает устойчивой \
@@ -251,10 +550,39 @@ CAT_DESCRIPTIONS = {
251
  в племенную линию осуществляется регулярно, и порода \
252
  не страдает от инбридинга (скрещивания особей, состоящих \
253
  в тесном родстве).
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
254
  ''',
255
 
256
  'Сингапурская':
257
  '''# Сингапурская
 
 
258
  ### Сингапурская кошка похожа на маленького представителя \
259
  абиссинской породы. Ее голова имеет округлую форму с \
260
  выраженными бакенбардами и короткой широкой мордой. \
@@ -267,10 +595,32 @@ CAT_DESCRIPTIONS = {
267
  темный окрас на спине, хвосте и ногах, а на груди и \
268
  животе остается светлой. Глаза у кошек этой породы \
269
  обычно карие, зеленые или желтые с черным окаймлением.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
270
  ''',
271
 
272
  'Сомалийская':
273
  '''# Сомалийская
 
 
274
  ### Сомалийская кошка имеет среднее телосложение. Это \
275
  крепкое, стройное животное с хорошо развитой \
276
  мускулатурой и шерстью средней длины. Голова кошки \
@@ -285,10 +635,32 @@ CAT_DESCRIPTIONS = {
285
  имеет 28 окрасов. Наиболее популярный — насыщенный \
286
  золотисто-коричневый с кремовой основой и черным \
287
  тикингом.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
288
  ''',
289
 
290
  'Сфинкс':
291
  '''# Сфинкс
 
 
292
  ### Сфинкс – бесшерстная кошка с поведением и характером \
293
  собаки. Представители породы относятся к классу \
294
  компаньонов. Поэтому нуждаются во внимании и совсем \
@@ -300,10 +672,37 @@ CAT_DESCRIPTIONS = {
300
  ответвлений. Например, канадский сфинкс, донской сфинкс \
301
  и петерболд. Однако признание от международных \
302
  фелинологических организаций заслужил пока лишь канадский.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
303
  ''',
304
 
305
  'Черепаховая':
306
  '''# Черепаховая
 
 
307
  ### Черепаховый окрас – один из самых удивительных и \
308
  необычных окрасов кошек. Черепаховый окрас является \
309
  очень распространённым среди метисов, а также среди \
@@ -313,5 +712,19 @@ CAT_DESCRIPTIONS = {
313
  отпечатки пальцев у людей. Это генетическая особенность, \
314
  которая передается по наследству и обуславливается \
315
  определенной комбинацией хромосом.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
316
  '''
317
  }
 
2
  'Бенгальская', 'Бомбейская', 'Британская короткошерстная',
3
  'Бурмилла', 'Девон-рекс', 'Европейская короткошерстная',
4
  'Экзотическая короткошерстная', 'Мейн-кун', 'Нибелунг',
5
+ 'Персидская', 'Рэгдолл', 'Русская голубая',
6
+ 'Шотландская вислоухая', 'Сибирская', 'Сингапурская',
7
  'Сомалийская', 'Сфинкс', 'Черепаховая'
8
  ]
9
 
10
  CAT_DESCRIPTIONS = {
11
  'Бенгальская':
12
  '''# Бенгальская кошка
13
+ <img style="float: right;margin-top: 0px;margin-bottom: 0px;margin-left: 10px;margin-right: 10px;" src="https://i.ibb.co/WkyDsyg/179-e436350a.jpg">
14
+
15
  ### Бенгальская кошка — крупная кошка с блестящей \
16
  шерстью, очень развитой мускулатурой и толстым \
17
  хвостом, который часто свисает до земли. Бенгальская \
 
24
  порода кошек не имеет такого эффекта золотистого \
25
  или жемчужного мерцания шерсти, который можно \
26
  обнаружить у бенгальских кошек.
27
+
28
+ # История
29
+
30
+ ### История породы началась в 60-х годах прошлого века \
31
+ генетиком-селекционером Джейн Милл в США. Принадлежащая ей \
32
+ самка бенгальской кошки по имени Малайзия повязалась с \
33
+ чёрным домашним котом и произвела на свет пятнистого \
34
+ котёнка. Первый пра-бенгал, как и её потомство, погибли и \
35
+ работа над породой возобновилась только в 1980 году. \
36
+
37
+ # Интересный факт
38
+
39
+ ### Это одна из самых дорогих кошек на планете. «Домашний» \
40
+ бенгал, отделенный от диких предков минимум 4-мя \
41
+ поколениями, обойдется в 50-100 тысяч рублей. Бенгал \
42
+ поколения F1-F2 («сын» или «внук» дикого леопардового кота) \
43
+ стоит от 200 тысяч. \
44
+
45
+ # Болезни
46
+
47
+ ### Самым слабым место в организме бенгалов является \
48
+ желудочно-кишечный тракт. По статистике, такими \
49
+ проблемами хотя бы пару раз в жизни страдал почти каждый \
50
+ представитель бенгальской породы. \
51
+
52
+ # Страна появления
53
+
54
+ ### США
55
  ''',
56
 
57
  'Бомбейская':
58
  '''# Бомбейская кошка
59
+ <img style="float: right;margin-top: 0px;margin-bottom: 0px;margin-left: 10px;margin-right: 10px;" src="https://i.ibb.co/znHcFkV/008-ee3dbafa.jpg">
60
+
61
  ### Бомбейская кошка (бомбей) – питомец-компаньон \
62
  для активных и жизнерадостных людей, проводящих \
63
  большую часть свободного времени дома. Порода \
 
70
  представители породы умны и эмпатичны: животное тонко \
71
  чувствует настроение хозяина и подстраивается даже под \
72
  незначительные его изменения.
73
+
74
+ # История
75
+
76
+ ### Первые представители породы появились на свет на \
77
+ границе американских штатов Кентукки и Индиана. Энтузиастка \
78
+ Никки Хорнер из Луисвилла поставила перед собой \
79
+ амбициозную цель – создать «комнатную» копию великолепного \
80
+ представителя кошачьих. \
81
+
82
+ # Интересный факт
83
+
84
+ ### Представители бомбейской породы не бывают \
85
+ длинношерстными, поэтому бомбей — это короткошёрстная \
86
+ кошка с уникальной угольно-чёрной и блестящей шерстью. \
87
+
88
+ # Болезни
89
+
90
+ ### Внимательно следите за состоянием глаз, дыхательных \
91
+ путей и ушных раковин, их нужно регулярно очищать с \
92
+ помощью специальных средств. \
93
+
94
+ # Страна появления
95
+
96
+ ### США
97
  ''',
98
 
99
  'Британская короткошерстная':
100
  '''# Британская короткошерстная
101
+ <img style="float: right;margin-top: 0px;margin-bottom: 0px;margin-left: 10px;margin-right: 10px;" src="https://i.ibb.co/Dp0FvSc/011-4bcf9a5d.jpg">
102
+
103
  ### Британская короткошёрстная — крупная порода, \
104
  имеющая массивное, коренастое телосложение. У \
105
  представителей этой породы широкая грудная клетка \
 
109
  короткошёрстных — короткая и густая, без пушистости, \
110
  бывает более ста окрасов и имеет множество \
111
  комбинаций пятен.
112
+
113
+ # История
114
+
115
+ ### Считается, что британские кошки появились в результате \
116
+ скрещивания среднеевропейских лесных и египетских котов, \
117
+ которых привезли в Великобританию римляне во времена \
118
+ завоеваний. Однако официальная родословная представителей \
119
+ этой породы начинается только с конца XIX века в 1898 году, \
120
+ но тогда они не были так популярны, и были просто \
121
+ домашними кошками. \
122
+
123
+ # Интересный факт
124
+
125
+ ### Одна из версий появления такого сказочного персонажа, \
126
+ как Чеширский кот, гласит, что Джон Тенниел списал его с \
127
+ котов породы британская короткошерстная. \
128
+
129
+ # Болезни
130
+
131
+ ### Представители породы нередко страдают из-за проблем с \
132
+ сердцем, а также из-за нарушений свертываемости крови. \
133
+ Британцы склонны к ожирению, поэтому важно следить \
134
+ за их питанием. \
135
+
136
+ # Страна появления
137
+
138
+ ### Великобритания
139
  ''',
140
 
141
  'Бурмилла':
142
  '''# Бурмилла
143
+ <img style="float: right;margin-top: 0px;margin-bottom: 0px;margin-left: 10px;margin-right: 10px;" src="https://i.ibb.co/GCGFgby/022-1924812c.jpg">
144
+
145
  ### Бурмилла — кошка среднего телосложения, похожая \
146
  на бурмезскую. Порода отличается коренастым и \
147
  довольно мускулистым телом и ��ирокой прямой спиной. \
 
154
  шерсть со светлым подшерстком близко прилегает к телу \
155
  и отличается равномерным типпингом(кончики волосков более \
156
  темного цвета) по всему телу.
157
+
158
+ # История
159
+
160
+ ### Порода кошек, появившаяся в 1981 году в результате \
161
+ случайной вязки бурманской кошки лилового окраса и \
162
+ персидского кота окраса шиншилла. \
163
+
164
+ # Интересный факт
165
+
166
+ ### Родителей породы бурмилла - перса и бурманской \
167
+ шиншиллы - звали Санквист и Фаберже, соответственно. \
168
+
169
+ # Болезни
170
+
171
+ ### Поликистоз почек
172
+
173
+ # Страна появления
174
+
175
+ ### Великобритания
176
  ''',
177
 
178
  'Девон-рекс':
179
  '''# Девон-рекс
180
+ <img style="float: right;margin-top: 0px;margin-bottom: 0px;margin-left: 10px;margin-right: 10px;" src="https://i.ibb.co/YyNmTPJ/295-a7a423ed.jpg">
181
+
182
  ### Запоминающийся образ кошки породы девон-рекс — это \
183
  ехидная мордочка с волнистой «мятой» шерстью. Широкие \
184
  скулы, большие глаза, низко посаженные уши. Короткая \
 
188
  где образуются мелкие барашки. Бакенбарды и надбровные \
189
  дуги у этой породы также волнистые. Девон-рекс может \
190
  быть любых окрасов и вариантов пятнистости.
191
+
192
+ # История
193
+
194
+ ### Первого, напоминающего инопланетного пришельца котофея \
195
+ отловили назаброшенных рудниках в окрестностях Девона \
196
+ (Англия) еще в 60-х годах прошлого века. \
197
+
198
+ # Интересный факт
199
+
200
+ ### Как бы доброжелательно кошки ни относились к детям, \
201
+ # они всегда предпочтут им общество взрослых людей. \
202
+
203
+ # Болезни
204
+
205
+ ### Распространен среди представителей данной породы \
206
+ вывих коленной чашечки, в запущенных стадиях ведущий к \
207
+ остеоартриту и дальнейшей хромоте. \
208
+
209
+ # Страна появления
210
+
211
+ ### Великобритания
212
  ''',
213
 
214
  'Европейская короткошерстная':
215
  '''# Европейская короткошерстная
216
+ <img style="float: right;margin-top: 0px;margin-bottom: 0px;margin-left: 10px;margin-right: 10px;" src="https://i.ibb.co/715VJcB/110-34bdfc6c.jpg">
217
+
218
  ### Европейская короткошерстная кошка, она же кельтская, \
219
  на первый взгляд выглядит как обычная довольно крупная \
220
  домашняя кошка. Тем не менее генетики выяснили, что она \
 
226
  уравновешенные, жизнерадостные, ласковые без навязчивости, \
227
  готовые и поиграть, и просто составить компанию на диване \
228
  перед телевизором.
229
+
230
+ # История
231
+
232
+ ### Европейская короткошёрстная кошка была выведена в \
233
+ результате целенаправленной племенной работы из обычной \
234
+ европейской домашней кошки. Разведением короткошёрстных \
235
+ кошек немецкие бридеры занимались ещё в начале XX века, \
236
+ отметив их отличные ловчие качества. \
237
+
238
+ # Интересный факт
239
+
240
+ ### Самая популярная порода в странах Европы \
241
+
242
+ # Болезни
243
+
244
+ ### Никаких генетических заболеваний или \
245
+ предрасположенностей \
246
+
247
+ # Страна появления
248
+
249
+ ### Европа, Швеция, Финляндия
250
  ''',
251
 
252
  'Экзотическая короткошерстная':
253
  '''# Экзотическая короткошерстная
254
+ <img style="float: right;margin-top: 0px;margin-bottom: 0px;margin-left: 10px;margin-right: 10px;" src="https://i.ibb.co/xCCK6ZP/108-8f6d84f2.jpg">
255
+
256
  ### Экзотическая короткошерстная кошка среднего размера. \
257
  Телосложение — коренастое и в то же время подтянутое. \
258
  Имеет широкую, круглую голову с небольшими, широко \
 
264
  Экзотическая короткошерстная кошка бывает многих \
265
  окрасов и вариантов пятнистости, типичных для персидской \
266
  породы, а также может иметь окрас «пятнистый табби».
267
+
268
+ # История
269
+
270
+ ### Становление экзотической короткошерстной породы \
271
+ происходило в США в 1960-е годы. Первые результаты были \
272
+ ошеломляющими и, в общем-то, провальными с точки зрения \
273
+ первоначальных целей селекции. Стратегия развития породы \
274
+ экзотов подразумевала, практически в первую очередь, \
275
+ закрепление гена короткошерстности. \
276
+
277
+ # Интересный факт
278
+
279
+ ### Тридцатилетнее становление породы. На протяжении трёх \
280
+ десятков лет менялись способы скрещивания, длинна шерсти \
281
+ и форма лап. \
282
+
283
+ # Болезни
284
+
285
+ ### Проблемы с проходимостью носослезного протока, \
286
+ слезотечение, нагноение глаз \
287
+
288
+ # Страна появления
289
+
290
+ ### США
291
  ''',
292
 
293
  'Мейн-кун':
294
  '''# Мейн-кун
295
+ <img style="float: right;margin-top: 0px;margin-bottom: 0px;margin-left: 10px;margin-right: 10px;" src="https://i.ibb.co/Cv2QY9f/078-96f68352.jpg">
296
+
297
  ### Мейн-кун – это популярная порода кошек, завоевавшая \
298
  поклонников по всему миру своим харизматичным внешним \
299
  видом и внушительными размерами. Даже обычным людям, \
 
301
  мейн-куна от других кошек благодаря их выдающимся \
302
  внешним данным. Мейн-кун гордо носит звание пушистого \
303
  великана.
304
+
305
+ # История
306
+
307
+ ### Порода сформировалась естественным образом под \
308
+ воздействием суровых климатических условий штата Мэн. \
309
+ В литературе мейн-куны впервые упоминаются в 1861 году. \
310
+ К этому времени относится статья о коте по кличке Капитан \
311
+ Дженкс с корабля «Морская лошадь». \
312
+
313
+ # Интересный факт
314
+
315
+ ### Мейн куны неоднократно упоминаются в книге рекордов \
316
+ Гиннеса. Им принадлежит первое место во многих \
317
+ номинациях среди домашних кошек: самое длинное тело \
318
+ – 123 см (Стьюи); самые длинные усы – 19 см (Мисси); \
319
+ самый длинный хвост – 44,66 см (Сигнус Регулус Пауэрс). \
320
+
321
+ # Болезни
322
+
323
+ ### Наиболее известные болезни Мейн Кунов: гипертрофическая \
324
+ кардиомиопатия и спинально-мышечная атрофия. \
325
+ Предрасположены к патологиям опорно-двигательной системы. \
326
+
327
+ # Страна появления
328
+
329
+ ### США
330
  ''',
331
 
332
  'Нибелунг':
333
  '''# Нибелунг
334
+ <img style="float: right;margin-top: 0px;margin-bottom: 0px;margin-left: 10px;margin-right: 10px;" src="https://i.ibb.co/ctd7gjT/136-a7d5eba2.jpg">
335
+
336
  ### Нибелунг — редкая порода домашних кошек. Она \
337
  считается длинношёрстным вариантом русской голубой \
338
  кошки. Представители этой породы замкнуты и не \
 
344
  — сплошной голубой. Порода названа в честь «порождения \
345
  тумана» (от нем. Nebel — туман) из средневекового \
346
  немецкого эпоса «Песнь о Нибелунгах».
347
+
348
+ # История
349
+
350
+ ### В 1980 году сын программиста Коры Кобб получил в \
351
+ подарок чёрную короткошёрстную кошку. Со временем новая \
352
+ любимица семьи по кличке Эльза сошлась с русским голубым \
353
+ котом. Результатом этого союза стало рождение в 1984 году \
354
+ пяти малышей. \
355
+
356
+ # Интересный факт
357
+
358
+ ### Нибелунги привязаны лишь к одному члену семьи \
359
+ (его же и считают хозяином); к остальным относятся \
360
+ дружелюбно, но не более того. \
361
+
362
+ # Болезни
363
+
364
+ ### Представителей породы отличают крепкое здоровье и \
365
+ отсутствие предрасположенности к генетическим заболеваниям. \
366
+
367
+ # Страна появления
368
+
369
+ ### США
370
  ''',
371
 
372
  'Персидская':
373
  '''# Персидская
374
+ <img style="float: right;margin-top: 0px;margin-bottom: 0px;margin-left: 10px;margin-right: 10px;" src="https://i.ibb.co/GQ0JRyC/538-48b0cee8.jpg">
375
+
376
  ### Персидская длинношерстная кошка — порода среднего \
377
  размера, с коренастым телом и с массивной головой. \
378
  Уши — небольшие, широко посаженные. У этой кошки \
 
382
  длинная, густая и блестящая, с плотным мягким \
383
  подшерстком. Имеет короткий, но необыкновенно пушистый \
384
  хвост. Допускаются разные варианты окрасов и \
385
+ пятнистости. \
386
+
387
+ # История
388
+
389
+ ### Длинношерстные животные были завезены в Европу в \
390
+ двадцатых годах XVII века итальянским аристократом Пьетр�� \
391
+ делла Валле из его путешествия по Турции и Персии. \
392
+
393
+ # Интересный факт
394
+
395
+ ### Владельцы персидских кошек отмечают их высокий \
396
+ интеллект. Они хорошо дрессируются, выполняют несложные \
397
+ команды, быстро приучаются к лотку. \
398
 
399
+ # Болезни
400
+
401
+ ### Почти пятьдесят процентов персидских кошек находятся в \
402
+ зоне риска возникновения поликистоза почек. \
403
+
404
+ # Страна появления
405
+
406
+ ### Армения, Иран, Турция
 
 
 
 
407
  ''',
408
 
409
  'Рэгдолл':
410
  '''# Рэгдолл
411
+ <img style="float: right;margin-top: 0px;margin-bottom: 0px;margin-left: 10px;margin-right: 10px;" src="https://i.ibb.co/hd6yK6g/160-ea585911.jpg">
412
+
413
  ### Рэгдолл — крупная и величавая кошка с характерным \
414
  окрасом. Представители этой породы обычно расслаблены, \
415
  невозмутимы и кажутся ленивыми. Голова широкая, имеет \
 
427
  которые занимают от 1/3 до 1/2 всего тела) и миттед \
428
  (один из типов окрасов кошек с белыми пятнами, \
429
  которые занимают от 1/4 до 1/3 всего тела).
430
+
431
+ # История
432
+
433
+ ### Рэгдоллы обязаны своим появлением предприимчивой даме \
434
+ из Калифорнии Энн Бейкер, разводившей персидских котов, и \
435
+ кошке Жозефине, длинношерстой красавице смешанной породы \
436
+ (предположительно персидской и ангорской), жившей у соседки \
437
+ заводчицы. \
438
+
439
+ # Интересный факт
440
+
441
+ ### Рэгдолл – одна из крупнейших домашних кошек, третья \
442
+ после саванны и мейн-куна. \
443
+
444
+ # Болезни
445
+
446
+ ### Одиночество угнетает этих кошек: если рядом никого \
447
+ # долго нет, они тоскуют, теряют аппетит и могут заболеть. \
448
+
449
+ # Страна появления
450
+
451
+ ### США
452
  ''',
453
 
454
  'Русская голубая':
455
  '''# Русская голубая
456
+ <img style="float: right;margin-top: 0px;margin-bottom: 0px;margin-left: 10px;margin-right: 10px;" src="https://i.ibb.co/PZXMnrr/006-a478b6ee.jpg">
457
+
458
  ### Кошки породы русская голубая бывают среднего или \
459
  крупного размера. Имеют изящное тело и длинны��, \
460
  стройные ноги. Эта кошка настолько грациозна, что \
 
469
  среди русских голубых кошек встречаются особи с черным \
470
  и белым окрасом. У типичных же представителей окрас \
471
  равномерно голубой, с серебристым отливом.
 
472
 
473
+ # История
474
+
475
+ ### Своё начало современные русские голубые кошки берут из \
476
+ России. Но селекционное разведение началось в \
477
+ Великобритании в 1893 году.После войны порода была \
478
+ восстановлена усилиями селекционеров. Возрождение интереса \
479
+ к этой породе пришло в СССР только в конце 80-х годов, \
480
+ и уже к началу 90-х годов сформировалось определенное \
481
+ поголовье. \
482
+
483
+ # Интересный факт
484
+
485
+ ### На сегодняшний день известно несколько видов данной \
486
+ породы: скандинавский, английский и американский. Для \
487
+ представителей каждой группы выдвигаются свои стандарты, \
488
+ характерные для фенологической классификации конкретного \
489
+ общества. \
490
+
491
+ # Болезни
492
+
493
+ ### Русская голубая кошка обладает предрасположенностью к \
494
+ заболеваниям органов дыхательной и пищеварительной системы. \
495
+ Склонны к ожирению. \
496
+
497
+ # Страна появления
498
+
499
+ ### Россия/Великобритания
500
  ''',
501
 
502
  'Шотландская вислоухая':
503
  '''# Шотландская вислоухая
504
+ <img style="float: right;margin-top: 0px;margin-bottom: 0px;margin-left: 10px;margin-right: 10px;" src="https://i.ibb.co/T4GsqhG/020-eec62fab.jpg">
505
+
506
  ### Шотландская вислоухая кошка или скоттиш-фолд \
507
  (англ. Scottish Fold) — порода домашних кошек с \
508
  характерными загнутыми вперёд и вниз ушами, что \
 
511
  влияние на хрящи во всём организме. Это придаёт \
512
  голове кошки характерный вид, которую часто описывают \
513
  как «похожую на совиную».
514
+
515
+ # История
516
+
517
+ ### Первым представителем породы стала белая кошка Сьюзи, \
518
+ найденная в 1961 году на ферме недалеко от города \
519
+ Купар-Ангус в графстве Пертшир, Шотландия. Уши Сьюзи были \
520
+ необычным образом загнуты посередине, из-за чего она \
521
+ напоминала сову. Два котёнка, которых родила Сьюзи, \
522
+ были с загнутыми ушами. \
523
+
524
+ # Интересный факт
525
+
526
+ ### Котята рождаются с прямыми ушками, а опускаются они \
527
+ лишь через месяц после появления на свет. При этом чем \
528
+ сильнее ушки прижаты к телу и меньше по размеру, тем лучше. \
529
+
530
+ # Болезни
531
+
532
+ ### Остеохондродисплазия
533
+
534
+ # Страна появления
535
+
536
+ ### Шотландия/Великобритания
537
  ''',
538
 
539
  'Сибирская':
540
  '''# Сибирская
541
+ <img style="float: right;margin-top: 0px;margin-bottom: 0px;margin-left: 10px;margin-right: 10px;" src="https://i.ibb.co/PQbc5JG/017-bcf5283d.jpg">
542
+
543
  ### Сибирская кошка – прекрасный выбор для семей с детьми \
544
  и владельцев, которые интересуются разведением и \
545
  выставочной деятельностью. Ведь порода обладает устойчивой \
 
550
  в племенную линию осуществляется регулярно, и порода \
551
  не страдает от инбридинга (скрещивания особей, состоящих \
552
  в тесном родстве).
553
+
554
+ # История
555
+
556
+ ### По одной из версий она произошла от норвежских лесных, \
557
+ которые были завезены в Сибирь переселенцами с севера \
558
+ России в XVI веке. По другой – от бухарских кошек, \
559
+ привезённых торговцами из Средней Азии. \
560
+
561
+ # Интересный факт
562
+
563
+ ### В Тюмени существует «Сквер сибирских кошек». Здесь \
564
+ установлен отлитый из чугуна памятник, состоящий из 12 \
565
+ кошачьих фигур, покрытых золотистой краской. Памятник \
566
+ посвящён кошкам, защищавшим ленинградский Эрмитаж от крыс \
567
+ во время немецкой блокады. Бесстрашные охотники быстро \
568
+ устранили крыс и мышей, уничтожавших бесценные шедевры. \
569
+
570
+ # Болезни
571
+
572
+ ### Главную опасность для них может представлять \
573
+ мочекаменная болезнь и попадание шерсти в кишечник. \
574
+ Мочекаменная болезнь весьма опасна, так как часто приводит \
575
+ к почечной недостаточности. \
576
+
577
+ # Страна появления
578
+
579
+ ### Россия
580
  ''',
581
 
582
  'Сингапурская':
583
  '''# Сингапурская
584
+ <img style="float: right;margin-top: 0px;margin-bottom: 0px;margin-left: 10px;margin-right: 10px;" src="https://i.ibb.co/9WBDL5j/015-2dcb02da.jpg">
585
+
586
  ### Сингапурская кошка похожа на маленького представителя \
587
  абиссинской породы. Ее голова имеет округлую форму с \
588
  выраженными бакенбардами и короткой широкой мордой. \
 
595
  темный окрас на спине, хвосте и ногах, а на груди и \
596
  животе остается светлой. Глаза у кошек этой породы \
597
  обычно карие, зеленые или желтые с черным окаймлением.
598
+
599
+ # История
600
+
601
+ ### Сингапурские кошки ведут своё происхождение от уличных \
602
+ кошек из Юго-Восточной Азии, а точнее — из \
603
+ города-государства Сингапур. \
604
+
605
+ # Интересный факт
606
+
607
+ ### Малые размеры, бывает только одного цвета - коричневого \
608
+ с желтоватым оттенком слоновой кости. \
609
+
610
+ # Болезни
611
+
612
+ ### Подвержена летаргии, диарее, отсутствию аппетита, \
613
+ плохому качеству шерсти, потере веса и желтухе. \
614
+
615
+ # Страна появления
616
+
617
+ ### Сингапур
618
  ''',
619
 
620
  'Сомалийская':
621
  '''# Сомалийская
622
+ <img style="float: right;margin-top: 0px;margin-bottom: 0px;margin-left: 10px;margin-right: 10px;" src="https://i.ibb.co/H4qQwB8/011-64ed4409.jpg">
623
+
624
  ### Сомалийская кошка имеет среднее телосложение. Это \
625
  крепкое, стройное животное с хорошо развитой \
626
  мускулатурой и шерстью средней длины. Голова кошки \
 
635
  имеет 28 окрасов. Наиболее популярный — насыщенный \
636
  золотисто-коричневый с кремовой основой и черным \
637
  тикингом.
638
+
639
+ # История
640
+
641
+ ### В конце 40-х гг. XX в. британская заводчица привезла \
642
+ своих абиссинских котят в Австралию, Новую Зеландию, США и \
643
+ Канаду. \
644
+
645
+ # Интересный факт
646
+
647
+ ### Сомалийские кошки хорошо понимают человека, поэтому их \
648
+ легко дрессировать. \
649
+
650
+ # Болезни
651
+
652
+ ### У кошек хорошее здоровье. Правда, могут возникать \
653
+ проблемы с зубами и деснами. \
654
+
655
+ # Страна появления
656
+
657
+ ### США
658
  ''',
659
 
660
  'Сфинкс':
661
  '''# Сфинкс
662
+ <img style="float: right;margin-top: 0px;margin-bottom: 0px;margin-left: 10px;margin-right: 10px;" src="https://i.ibb.co/9b25DP5/013-a77ed3b2.jpg">
663
+
664
  ### Сфинкс – бесшерстная кошка с поведением и характером \
665
  собаки. Представители породы относятся к классу \
666
  компаньонов. Поэтому нуждаются во внимании и совсем \
 
672
  ответвлений. Например, канадский сфинкс, донской сфинкс \
673
  и петерболд. Однако признание от международных \
674
  фелинологических организаций заслужил пока лишь канадский.
675
+
676
+ # История
677
+
678
+ ### В канадской провинции Онтарио, владелица черно-белой \
679
+ короткошерстной кошки по кличке Элизабет с удивлением \
680
+ обнаружила в помете своей любимицы необычный экземпляр. \
681
+ Все дело в том, что «лысое» потомство может появиться у \
682
+ совершенно обычных родителей в результате естественной \
683
+ мутации. \
684
+
685
+ # Интересный факт
686
+
687
+ ### Кошки обладают невероятной привязанностью к хозяевам, \
688
+ они обожают внимание и ласку, а одиночество переносят \
689
+ с трудом. \
690
+
691
+ # Болезни
692
+
693
+ ### Проблемы могут спровоцировать переохлаждение, \
694
+ длительное пребывание на солнце, пренебрежение правилами \
695
+ гигиены со стороны владельцев. \
696
+
697
+ # Страна появления
698
+
699
+ ### Канада
700
  ''',
701
 
702
  'Черепаховая':
703
  '''# Черепаховая
704
+ <img style="float: right;margin-top: 0px;margin-bottom: 0px;margin-left: 10px;margin-right: 10px;" src="https://i.ibb.co/3sgCMtV/182-44600cd7.jpg">
705
+
706
  ### Черепаховый окрас – один из самых удивительных и \
707
  необычных окрасов кошек. Черепаховый окрас является \
708
  очень распространённым среди метисов, а также среди \
 
712
  отпечатки пальцев у людей. Это генетическая особенность, \
713
  которая передается по наследству и обуславливается \
714
  определенной комбинацией хромосом.
715
+
716
+ # История
717
+
718
+ ### Кошки с такой внешностью могут родиться почти у любой \
719
+ породы, а также у дворовых питомцев. \
720
+
721
+ # Интересный факт
722
+
723
+ ### Черепаховый или другие трехцветные окрасы присущи не \
724
+ только «девочкам», у котов такое тоже встречается. \
725
+
726
+ # Болезни
727
+
728
+ ### По своей природе черепаховые кошки крепкие и здоровые. \
729
  '''
730
  }
main_app.py CHANGED
@@ -7,28 +7,33 @@ from io import BytesIO
7
  from PIL import Image
8
  from pydantic import BaseModel
9
  from cat_breeds_dict import CAT_BREEDS, CAT_DESCRIPTIONS
 
10
 
11
 
12
  class Url(BaseModel):
13
  link: str
14
 
15
 
16
- MODEL = tf.keras.models.load_model('./models/20_cat_classes_model_v2.h5')
17
  GRADIO_PATH = '/'
18
-
 
19
  app = FastAPI()
20
 
21
 
22
  def predict(image, api_mode=False):
23
- image = image.resize((128, 128))
 
24
  image = np.asarray(image)
25
- image = image.reshape(1, 128, 128, 3)
26
 
27
  prediction = MODEL.predict(image)[0]
28
  predicted_breed = CAT_BREEDS[np.argmax(prediction)]
29
  breed_description = CAT_DESCRIPTIONS[predicted_breed]
30
 
31
- all_predictions = {CAT_BREEDS[i]: float(prediction[i]) for i in range(20)}
 
 
32
 
33
  if api_mode:
34
  breed_description = ' '.join(breed_description.replace('\n', '.')
@@ -40,7 +45,7 @@ def predict(image, api_mode=False):
40
  'description': breed_description,
41
  'predictions': all_predictions
42
  }
43
- return all_predictions, breed_description
44
 
45
 
46
  @app.post('/predict_breed/')
@@ -83,11 +88,22 @@ with gr.Blocks(css='./static/style.css', title="Cat Classifier") as gradio_ui:
83
  )
84
 
85
  breed_description = gr.Markdown(elem_id='breed-description')
 
 
 
 
 
 
 
 
86
 
87
  predict_button.click(
88
  fn=predict,
89
  inputs=[user_image],
90
- outputs=[predicted_labels, breed_description]
 
 
 
91
  )
92
 
93
  app = gr.mount_gradio_app(app, gradio_ui, path=GRADIO_PATH)
 
7
  from PIL import Image
8
  from pydantic import BaseModel
9
  from cat_breeds_dict import CAT_BREEDS, CAT_DESCRIPTIONS
10
+ from scripts.crop_image import crop_image
11
 
12
 
13
  class Url(BaseModel):
14
  link: str
15
 
16
 
17
+ MODEL = tf.keras.models.load_model('./models/cats_18_EfficientNetB0.h5')
18
  GRADIO_PATH = '/'
19
+ INPUT_SHAPE = MODEL.layers[0].input_shape[1]
20
+ NUM_CLASSES = MODEL.layers[-1].output_shape[1]
21
  app = FastAPI()
22
 
23
 
24
  def predict(image, api_mode=False):
25
+ image = crop_image(image, INPUT_SHAPE, INPUT_SHAPE)
26
+ image = image.resize((INPUT_SHAPE, INPUT_SHAPE))
27
  image = np.asarray(image)
28
+ image = image.reshape(1, INPUT_SHAPE, INPUT_SHAPE, 3)
29
 
30
  prediction = MODEL.predict(image)[0]
31
  predicted_breed = CAT_BREEDS[np.argmax(prediction)]
32
  breed_description = CAT_DESCRIPTIONS[predicted_breed]
33
 
34
+ all_predictions = {
35
+ CAT_BREEDS[i]: float(prediction[i]) for i in range(NUM_CLASSES)
36
+ }
37
 
38
  if api_mode:
39
  breed_description = ' '.join(breed_description.replace('\n', '.')
 
45
  'description': breed_description,
46
  'predictions': all_predictions
47
  }
48
+ return all_predictions, breed_description, gr.HTML.update(visible=True), gr.Markdown.update(visible=True)
49
 
50
 
51
  @app.post('/predict_breed/')
 
88
  )
89
 
90
  breed_description = gr.Markdown(elem_id='breed-description')
91
+ banner_text = gr.Markdown(
92
+ """
93
+ # <center>Места, которые будут Вам интересны</center>
94
+ """, visible=False
95
+ )
96
+ embedded_map = gr.HTML('''
97
+ <iframe src="https://yandex.ru/map-widget/v1/?um=constructor%3A8cead4799165c7f6356c4f269f2847032ef2803cb46871dbfd6dd68c09834f4c&amp;source=constructor" width="100%" height="500" frameborder="0"></iframe>
98
+ ''', visible=False, elem_id='embedded-map')
99
 
100
  predict_button.click(
101
  fn=predict,
102
  inputs=[user_image],
103
+ outputs=[
104
+ predicted_labels, breed_description,
105
+ embedded_map, banner_text
106
+ ]
107
  )
108
 
109
  app = gr.mount_gradio_app(app, gradio_ui, path=GRADIO_PATH)
models/cats_18_EfficientNetB0.h5 ADDED
@@ -0,0 +1,3 @@
 
 
 
 
1
+ version https://git-lfs.github.com/spec/v1
2
+ oid sha256:b845c31166baaac5a535a1472e9ebf2492f1199e01480d397c33abe6d2363c87
3
+ size 27633440
requirements.txt CHANGED
@@ -2,4 +2,5 @@ numpy==1.23.3
2
  requests==2.25.1
3
  tensorflow-cpu==2.10.0
4
  Pillow==9.0.1
5
- fastapi==0.88.0
 
 
2
  requests==2.25.1
3
  tensorflow-cpu==2.10.0
4
  Pillow==9.0.1
5
+ fastapi==0.88.0
6
+ smartcrop
scripts/crop_image.py ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import smartcrop
2
+ from PIL import Image
3
+
4
+
5
+ def crop_image(image, width=224, height=224):
6
+ new_image = Image.new('RGB', image.size)
7
+ new_image.paste(image)
8
+ image = new_image
9
+
10
+ sc = smartcrop.SmartCrop()
11
+
12
+ result = sc.crop(image, width=100, height=int(width / height * 100))
13
+
14
+ box = (
15
+ result['top_crop']['x'],
16
+ result['top_crop']['y'],
17
+ result['top_crop']['width'] + result['top_crop']['x'],
18
+ result['top_crop']['height'] + result['top_crop']['y']
19
+ )
20
+
21
+ cropped_image = image.crop(box)
22
+ cropped_image.thumbnail((width, height), Image.ANTIALIAS)
23
+ return cropped_image
static/style.css CHANGED
@@ -1,4 +1,4 @@
1
- #main-row, #breed-description, #md-text {
2
  width: 80%;
3
  margin: auto;
4
  }
@@ -20,6 +20,7 @@
20
 
21
  #breed-description {
22
  padding-top: 2%;
 
23
  }
24
 
25
  .h-60 {
@@ -34,7 +35,7 @@
34
 
35
  @media (min-width: 1280px){
36
  .xl\:max-h-\[18rem\] {
37
- max-height: 30rem;
38
  }
39
  }
40
 
@@ -42,4 +43,4 @@
42
  .\32xl\:max-h-\[20rem\] {
43
  max-height: 30rem;
44
  }
45
- }
 
1
+ #main-row, #md-text {
2
  width: 80%;
3
  margin: auto;
4
  }
 
20
 
21
  #breed-description {
22
  padding-top: 2%;
23
+ padding-bottom: 4%;
24
  }
25
 
26
  .h-60 {
 
35
 
36
  @media (min-width: 1280px){
37
  .xl\:max-h-\[18rem\] {
38
+ max-height: 30rem;
39
  }
40
  }
41
 
 
43
  .\32xl\:max-h-\[20rem\] {
44
  max-height: 30rem;
45
  }
46
+ }