diff --git a/README.md b/README.md index f883d8f0..f06a0a57 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,15 @@ Andrew Ng ## Sneak Peek
- + +
+ +## Advanced AI functionalities + +[makesense.ai][1] strives to significantly reduce the time we have to spend on labeling photos. To achieve this, we are going to use many different AI models that will be able to give you recommendations as well as automate repetitive and tedious activities. The first step on this journey is to use a [SSD model][8] pretrained on the [COCO dataset][9], which will do some of the work for you in drawing bboxes on photos and - in future versions of the application - will also suggest a label. We also plan to add, among other things, models that classify photos, detect characteristic features of faces, whole faces, and also human pose. The engine that drives our AI functionalities is [TensorFlow.js][10] - JS version of the most popular framework for training neural networks. This choice allows us not only to speed up your work but also to care about the privacy of your data, because unlike with other commercial and open source tools, your photos do not have to be transferred to the server. This time AI comes to your device! + ++
## Set Up the Project Locally @@ -95,17 +103,6 @@ Feel free to file [issues](https://github.com/SkalskiP/make-sense/issues) or [pu } ``` -## Citation - -``` -@MISC{make-sense, - author = {Piotr Skalski}, - title = {{Make Sense}}, - howpublished = "\url{https://github.com/SkalskiP/make-sense/}", - year = {2019}, -} -``` - ## License This project is licensed under the GPL-3.0 License - see the [LICENSE][2] file for details @@ -119,3 +116,6 @@ Copyright (c) 2019-present, Piotr Skalski [5]: https://gitter.im/make-sense-ai/community?utm_source=share-link&utm_medium=link&utm_campaign=share-link [6]: https://github.com/SkalskiP/make-sense/wiki/Road-Map [7]: https://github.com/SkalskiP/make-sense/wiki/Supported-Output-Formats +[8]: https://arxiv.org/abs/1512.02325 +[9]: http://cocodataset.org +[10]: https://www.tensorflow.org/js diff --git a/examples/ai-demo.gif b/examples/ai-demo.gif new file mode 100644 index 00000000..d3d008ee Binary files /dev/null and b/examples/ai-demo.gif differ diff --git a/package-lock.json b/package-lock.json index 2f53e8f7..2742fd81 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1452,6 +1452,68 @@ "loader-utils": "^1.1.0" } }, + "@tensorflow-models/coco-ssd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tensorflow-models/coco-ssd/-/coco-ssd-2.0.0.tgz", + "integrity": "sha512-JexMswea9a5k8//sdImcxdVaofejkzUzJA8cpDBOZSauBkBM34M3c1YoEUrFuJSa5sKxgMu5TwMPWbJ59A7IVA==" + }, + "@tensorflow/tfjs": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs/-/tfjs-1.2.9.tgz", + "integrity": "sha512-9UAQnSp638FyM5eedYEM+j2R7VcNajiFmkeT5EXtf7YIurmMFNEm1sbajKJx7/ckz31YcYrVoUPc/iLhhDQl2A==", + "requires": { + "@tensorflow/tfjs-converter": "1.2.9", + "@tensorflow/tfjs-core": "1.2.9", + "@tensorflow/tfjs-data": "1.2.9", + "@tensorflow/tfjs-layers": "1.2.9" + } + }, + "@tensorflow/tfjs-converter": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-converter/-/tfjs-converter-1.2.9.tgz", + "integrity": "sha512-OKmiuZicIgadT3Bv9BvM+oom7wRz9eC5rTglQnuv7VN9H0syFVuhf5oD1Ff70tGDhJjJgL+cPz01fZRxTXjRWA==" + }, + "@tensorflow/tfjs-core": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-core/-/tfjs-core-1.2.9.tgz", + "integrity": "sha512-s0hHZSx6rGTlkkB8u8gs5n7sIPv1GXDNHmISRy+kqGzmlpkfI2kr6WXqOWQy6wFgjzopRD8cJQjBZ9USPZnYTQ==", + "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" + }, + "dependencies": { + "node-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", + "integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=" + } + } + }, + "@tensorflow/tfjs-data": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-data/-/tfjs-data-1.2.9.tgz", + "integrity": "sha512-Ti9Cj3pte9butuEsK5OPq0Lcqdi4wVUdtQXm0o7iYOZ0umseRzfbIb6zbdqucc2MQzOMTnRoxN+FL7LZmncsHg==", + "requires": { + "@types/node-fetch": "^2.1.2", + "node-fetch": "~2.1.2" + }, + "dependencies": { + "node-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.1.2.tgz", + "integrity": "sha1-q4hOjn5X44qUR1POxwb3iNF2i7U=" + } + } + }, + "@tensorflow/tfjs-layers": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/@tensorflow/tfjs-layers/-/tfjs-layers-1.2.9.tgz", + "integrity": "sha512-OlXYaIb1rCk5dYmpaNsPEkO7R+T0oxfS3vQGIztNJB+YxrN8mwCu3hqgpbdKhAITiP+jxO0o+7bny8MsOCkOSQ==" + }, "@types/babel__core": { "version": "7.1.2", "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.2.tgz", @@ -1575,6 +1637,19 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.8.tgz", "integrity": "sha512-b8bbUOTwzIY3V5vDTY1fIJ+ePKDUBqt2hC2woVGotdQQhG/2Sh62HOKHrT7ab+VerXAcPyAiTEipPu/FsreUtg==" }, + "@types/node-fetch": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.5.0.tgz", + "integrity": "sha512-TLFRywthBgL68auWj+ziWu+vnmmcHCDFC/sqCOQf1xTz4hRq8cu79z8CtHU9lncExGBsB8fXA4TiLDLt6xvMzw==", + "requires": { + "@types/node": "*" + } + }, + "@types/offscreencanvas": { + "version": "2019.3.0", + "resolved": "https://registry.npmjs.org/@types/offscreencanvas/-/offscreencanvas-2019.3.0.tgz", + "integrity": "sha512-esIJx9bQg+QYF0ra8GnvfianIY8qWB0GBx54PK5Eps6m+xTj86KLavHv6qDhzKcu5UUOgNfJ2pWaIIV7TRUd9Q==" + }, "@types/prop-types": { "version": "15.7.1", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.1.tgz", @@ -1640,6 +1715,11 @@ "@types/react": "*" } }, + "@types/seedrandom": { + "version": "2.4.27", + "resolved": "https://registry.npmjs.org/@types/seedrandom/-/seedrandom-2.4.27.tgz", + "integrity": "sha1-nbVjk33YaRX2kJK8QyWdL0hXjkE=" + }, "@types/stack-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", @@ -1678,6 +1758,16 @@ "@types/unist": "*" } }, + "@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==" + }, "@types/yargs": { "version": "12.0.12", "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-12.0.12.tgz", @@ -12124,6 +12214,11 @@ } } }, + "seedrandom": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/seedrandom/-/seedrandom-2.4.3.tgz", + "integrity": "sha1-JDhQTa0zkXMUv/GKxNeU8W1qrsw=" + }, "select-hose": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", diff --git a/package.json b/package.json index 710dbe08..dbb9edc1 100644 --- a/package.json +++ b/package.json @@ -4,6 +4,8 @@ "private": true, "dependencies": { "@material-ui/core": "^4.1.1", + "@tensorflow-models/coco-ssd": "^2.0.0", + "@tensorflow/tfjs": "^1.2.9", "@types/jest": "24.0.14", "@types/node": "12.0.8", "@types/react": "16.8.20", @@ -29,7 +31,7 @@ "scripts": { "start": "react-scripts start", "build": "react-scripts build", - "test": "CI=true react-scripts test --env=jsdom", + "test": "CI=true react-scripts test --env=./src/__test__/custom-test-env.js", "test:coverage": "npm test -- --coverage", "eject": "react-scripts eject" }, diff --git a/public/ico/checkbox-checked-color.png b/public/ico/checkbox-checked-color.png deleted file mode 100644 index c6f96d1e..00000000 Binary files a/public/ico/checkbox-checked-color.png and /dev/null differ diff --git a/public/ico/ok.png b/public/ico/ok.png new file mode 100644 index 00000000..adc32168 Binary files /dev/null and b/public/ico/ok.png differ diff --git a/public/img/robot.png b/public/img/robot.png new file mode 100644 index 00000000..80a13977 Binary files /dev/null and b/public/img/robot.png differ diff --git a/src/App.scss b/src/App.scss index f4f3df7f..31c72cfa 100644 --- a/src/App.scss +++ b/src/App.scss @@ -1,8 +1,11 @@ @import './settings/_Settings'; -//.App { -// height: 100vh; -// width: 100vw; -// margin: 0; -// padding: 0; -//} \ No newline at end of file +.App { + --leading-color: #{$secondaryColor}; + --hue-value: 172deg; +} + +.App.AI { + --leading-color: #{$primaryColor}; + --hue-value: 120deg; +} \ No newline at end of file diff --git a/src/App.tsx b/src/App.tsx index cfce5b29..d9de591d 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -11,13 +11,15 @@ import {ISize} from "./interfaces/ISize"; import {Settings} from "./settings/Settings"; import {SizeItUpView} from "./views/SizeItUpView/SizeItUpView"; import {PlatformModel} from "./staticModels/PlatformModel"; +import classNames from "classnames"; interface IProps { projectType: ProjectType; windowSize: ISize; + AIMode: boolean; } -const App: React.FC