diff --git a/RoadMap.md b/RoadMap.md new file mode 100644 index 0000000..86b785b --- /dev/null +++ b/RoadMap.md @@ -0,0 +1,3 @@ +Можно скачать отсюда блог и перевести + +https://dogtime.com/dog-breeds/afador \ No newline at end of file diff --git a/server/index.html b/server/index.html index df7a305..f07d85a 100644 --- a/server/index.html +++ b/server/index.html @@ -4,6 +4,7 @@ + Определение породы собаки по фото @@ -26,8 +27,8 @@

Определить породу собаки по фото

-

Загрузите фото, чтобы опеределить породу собаки или щенка. Если порода смешанная, после загрузки будет показана вероятность породы животного.

-

Опредление породы происходит при помощи нейронной сети - точность опеределения составляет 60%, сеть обучена на 125 породах. Если на фото будет неизвестная порода или не собака - сеть не сможет правильно опеределить, что это.

+

Загрузите фото, чтобы опеределить породу собаки или щенка. Если порода смешанная (или порода определена неточно), после загрузки будет показана вероятность породы животного.

+

Опредление породы происходит при помощи нейронной сети - точность опеределения составляет 60%, сеть обучена на 125 породах. Если на фото будет неизвестная порода или не собака - сеть не сможет правильно опеределить, что это.

Для распознования все фото отправляются на сервер, но там не сохраняются

@@ -39,7 +40,6 @@

-
diff --git a/server/static/favicon.ico b/server/static/favicon.ico new file mode 100644 index 0000000..2fb6df0 Binary files /dev/null and b/server/static/favicon.ico differ diff --git a/server/static/photos.json b/server/static/photos.json new file mode 100644 index 0000000..2bc89e0 --- /dev/null +++ b/server/static/photos.json @@ -0,0 +1,728 @@ +[ + { + "name_en": "beagle", + "name": "бигль", + "photo": "https://sun9-46.userapi.com/impg/B48745e4fBGwvuPzG-Oj0tIADbP_huU4Y49pIQ/nfmchsz5Fug.jpg?size=960x640&quality=95&sign=5f9bb57ea668a7d0a65a3542fa4382b7&type=album" + + }, + { + "name_en": "australian kelpie", + "name": "австралийский келпи", + "photo": "https://sun9-40.userapi.com/impg/YyM270TWdxR_TtHvOODNnuW4LM9s3-OXLrRiHA/kh-SMCm1zUc.jpg?size=1885x1414&quality=95&sign=fe84f57a4064f99224071c2a7d11b29d&type=album" + }, + { + "name_en": "australian terrier", + "name": "австралийский терьер", + "photo": "https://sun1-54.userapi.com/impg/ZvspRqzaR1n_0kJf58B73WY_rpJVR8HHtePG8Q/gUZm0Q-JcB4.jpg?size=1429x1072&quality=95&sign=d8ddf8c7ed725b5e34043b76833b5b1f&type=album" + }, + { + "name_en": "australian silky terrier", + "name": "австралийский шелковистый терьер", + "photo": "https://sun9-48.userapi.com/impg/bP1FWRk8uf8ug18lVsZ7K6V7wxybycHKfnfdzA/oQ1YghcoOn0.jpg?size=720x540&quality=95&sign=901c4cd68e6e7582e28b54071a5ba927&type=album" + } + , + { + "name_en": "american eskimo dog", + "name": "американская эскимосская собака", + "photo": "https://sun9-77.userapi.com/impg/OFrCkOXU9qM19rfOqHW7ejVR4tzCgpFpWG7ADg/hJMaSg8qXqE.jpg?size=1200x900&quality=95&sign=48d134ec21e182e31080b4bb999eff05&type=album" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + , + { + "name_en": "", + "name": "", + "photo": "" + } + + + +] \ No newline at end of file diff --git a/server/static/scripts.js b/server/static/scripts.js index adeec69..dfb2989 100644 --- a/server/static/scripts.js +++ b/server/static/scripts.js @@ -10,28 +10,10 @@ async function SavePhoto() { let response = await fetch('/beeds', { method: "POST", body: formData }); if (response.ok) { let json = await response.json(); - let text = "" - let textImg = "" - let uniqChecker = {} - for (let key in json.results_net) { - text += "
" + json.results_net[key] + ": " + key + "
"; - for (let imgKey in json.images) { - if (json.images[imgKey].name != json.results_net[key]) { - continue; - } - if (json.images[imgKey] == undefined) { - continue; - } - textImg += ""; - break; - } - uniqChecker[json.results_net[key]] = key; - } + let text = "

Результаты

"; + let uniqChecker = {}; for (let key in json.results) { - if (uniqChecker[json.results[key]] != undefined) { - continue - } - text += "
" + json.results[key] + ": " + key + "
"; + text += "
" + json.results[key] + " (вероятность: " + Math.round(parseFloat(key)*10)/10 + ")
"; for (let imgKey in json.images) { if (json.images[imgKey].name != json.results[key]) { continue; @@ -39,12 +21,30 @@ async function SavePhoto() { if (json.images[imgKey] == undefined) { continue; } - textImg += ""; + text += "
"; break; } + text += "
"; + uniqChecker[json.results[key]] = key; + } + for (let key in json.results_net) { + if (uniqChecker[json.results_net[key]] != undefined) { + continue + } + text += "
" + json.results_net[key] + "
"; + for (let imgKey in json.images) { + if (json.images[imgKey].name != json.results_net[key]) { + continue; + } + if (json.images[imgKey] == undefined) { + continue; + } + text += "
"; + break; + } + text += "
"; } document.getElementById("result").innerHTML = text; - document.getElementById("result-image").innerHTML = textImg; } else { alert("Ошибка HTTP: " + response.status); } diff --git a/server/static/styles.css b/server/static/styles.css index 9f4616b..ee74f97 100644 --- a/server/static/styles.css +++ b/server/static/styles.css @@ -2,8 +2,15 @@ body { background: #fff; margin: 0; border: none; + font-family: Verdana, sans-serif; } +a { + color: gray; + text-decoration: underline; +} + + img { margin: 0; border: none; @@ -16,4 +23,27 @@ h1 { #main { max-width: 1024px; margin: auto; + padding:10px; + min-width: 360px; +} + +.image-block { + display: flex; +} + +.image-block div { + width: 50%; + text-align: center; +} + +.image-block img { + max-width: 200px; +} + +.upload-image-text { + text-align: center; +} + +.image-results { + text-align: center; } \ No newline at end of file