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 @@
+
Определить породу собаки по фото
- Загрузите фото, чтобы опеределить породу собаки или щенка. Если порода смешанная, после загрузки будет показана вероятность породы животного.
- Опредление породы происходит при помощи нейронной сети - точность опеределения составляет 60%, сеть обучена на 125 породах. Если на фото будет неизвестная порода или не собака - сеть не сможет правильно опеределить, что это.
+ Загрузите фото, чтобы опеределить породу собаки или щенка. Если порода смешанная (или порода определена неточно), после загрузки будет показана вероятность породы животного.
+ Опредление породы происходит при помощи нейронной сети - точность опеределения составляет 60%, сеть обучена на 125 породах . Если на фото будет неизвестная порода или не собака - сеть не сможет правильно опеределить, что это.
Для распознования все фото отправляются на сервер, но там не сохраняются
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[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