From 09d2d3b92da8925af9566b8c226e1dc54061f01e Mon Sep 17 00:00:00 2001 From: heyarne Date: Sat, 2 May 2020 14:43:49 +0200 Subject: [PATCH] Set up super basic face detection --- package-lock.json | 93 +++++++++++++++++++++++++++ package.json | 9 ++- resources/public/example.jpg | Bin 0 -> 54718 bytes resources/public/index.html | 4 +- src/heyarne/all_my_friends/core.cljs | 15 ++++- 5 files changed, 117 insertions(+), 4 deletions(-) create mode 100644 package-lock.json create mode 100644 resources/public/example.jpg diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..4f32c55 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,93 @@ +{ + "name": "heyarne.all-my-friends", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@tensorflow-models/blazeface": { + "version": "0.0.5", + "resolved": "https://registry.npmjs.org/@tensorflow-models/blazeface/-/blazeface-0.0.5.tgz", + "integrity": "sha512-bIMJDV2CD8rr7v9OrIDdDZVh9sbk0EhlZdHaDFpgWUw3Lp21wUN7GSifOJVE5hV2ngmpzM+J12OH8bG1GZoDag==" + }, + "@tensorflow-models/facemesh": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@tensorflow-models/facemesh/-/facemesh-0.0.1.tgz", + "integrity": "sha512-7twdyRWB+1TOJE4nJdx0eBGjP6VNyaaqisxvH9RhjCBlv4qJeKsowpg0aCn8I5NpdAukH8wVw2rjfsBP4qPA/A==", + "requires": { + "@tensorflow-models/blazeface": "0.0.5" + } + }, + "@tensorflow/tfjs-converter": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-1.7.4.tgz", + "integrity": "sha512-B/Ux9I3osI0CXoESGR0Xe5C6BsEfC04+g2xn5zVaW9KEuVEnGEgnuBQxgijRFzkqTwoyLv4ptAmjyIghVARX0Q==" + }, + "@tensorflow/tfjs-core": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-1.7.4.tgz", + "integrity": "sha512-3G4VKJ6nPs7iCt6gs3bjRj8chihKrYWenf63R0pm7D9MhlrVoX/tpN4LYVMGgBL7jHPxMLKdOkoAZJrn/J88HQ==", + "requires": { + "@types/offscreencanvas": "~2019.3.0", + "@types/seedrandom": "2.4.27", + "@types/webgl-ext": "0.0.30", + "@types/webgl2": "0.0.4", + "node-fetch": "~2.1.2", + "seedrandom": "2.4.3" + } + }, + "@types/offscreencanvas": { + "version": "2019.3.0", + "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.3.0.tgz", + "integrity": "sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q==" + }, + "@types/seedrandom": { + "version": "2.4.27", + "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-2.4.27.tgz", + "integrity": "sha1-nbVjk33YaRX2kJK8QyWdL0hXjkE=" + }, + "@types/webgl-ext": { + "version": "0.0.30", + "resolved": "https://registry.npmjs.org/@types/webgl-ext/-/webgl-ext-0.0.30.tgz", + "integrity": "sha512-LKVgNmBxN0BbljJrVUwkxwRYqzsAEPcZOe6S2T6ZaBDIrFp0qu4FNlpc5sM1tGbXUYFgdVQIoeLk1Y1UoblyEg==" + }, + "@types/webgl2": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@types/webgl2/-/webgl2-0.0.4.tgz", + "integrity": "sha512-PACt1xdErJbMUOUweSrbVM7gSIYm1vTncW2hF6Os/EeWi6TXYAYMPp+8v6rzHmypE5gHrxaxZNXgMkJVIdZpHw==" + }, + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, + "buffer": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.6.0.tgz", + "integrity": "sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==", + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4" + } + }, + "ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==" + }, + "node-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", + "integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=" + }, + "process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=" + }, + "seedrandom": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-2.4.3.tgz", + "integrity": "sha1-JDhQTa0zkXMUv/GKxNeU8W1qrsw=" + } + } +} diff --git a/package.json b/package.json index d9d6d41..63e65be 100644 --- a/package.json +++ b/package.json @@ -7,5 +7,12 @@ "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", - "license": "GPL" + "license": "GPL", + "dependencies": { + "@tensorflow-models/facemesh": "0.0.1", + "@tensorflow/tfjs-converter": "^1.7.4", + "@tensorflow/tfjs-core": "^1.7.4", + "buffer": "^5.6.0", + "process": "^0.11.10" + } } diff --git a/resources/public/example.jpg b/resources/public/example.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1a2b56be84bcbf7e110c8756332748d48a0a4d5b GIT binary patch literal 54718 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 - Hello world + + Example webcam picture + diff --git a/src/heyarne/all_my_friends/core.cljs b/src/heyarne/all_my_friends/core.cljs index ef36170..78f85b8 100644 --- a/src/heyarne/all_my_friends/core.cljs +++ b/src/heyarne/all_my_friends/core.cljs @@ -1,2 +1,13 @@ -(ns heyarne.all-my-friends.core) -(println "hello world") +(ns heyarne.all-my-friends.core + (:require ["@tensorflow-models/facemesh" :as facemesh])) + +(defn detect-faces [model] + (println "Facemesh loaded") + (.. model + (estimateFaces (js/document.querySelector "img")) + (then (fn [predictions] + (println "Predictions" predictions))))) + +(.. facemesh + (load) + (then detect-faces))