Skip to content

Commit 02137e8

Browse files
authored
Merge pull request #300 from SkalskiP/develop
1.11.0-alpha relese
2 parents 61e5ac5 + 86f75f4 commit 02137e8

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

58 files changed

+1369
-271
lines changed

.github/workflows/issue-greetings.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,5 @@ jobs:
3535
# serve with hot reload at localhost:3000
3636
npm start
3737
```
38-
To ensure proper functionality of the application locally, an npm `6.x.x` and node.js `v12.x.x` versions are required. More information about this problem is available in the [#16](https://github.com/SkalskiP/make-sense/issues/16) issue.
38+
To ensure proper functionality of the application locally, an npm `8.x.x` and node.js `v16.x.x` versions are required. More information about this problem is available in the [#16](https://github.com/SkalskiP/make-sense/issues/16) issue.
3939

README.md

+23-50
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
1-
[![Build Status](https://travis-ci.org/SkalskiP/make-sense.svg?branch=develop)](https://travis-ci.org/SkalskiP/make-sense)
2-
[![codecov](https://codecov.io/gh/SkalskiP/make-sense/branch/develop/graph/badge.svg?token=lWsADbAey2)](https://codecov.io/gh/SkalskiP/make-sense)
1+
[![Github Stars](https://img.shields.io/badge/stars-nominate-brightgreen?logo=github)](https://stars.github.com/nominate/)
32
![GitHub release (latest by date including pre-releases)](https://img.shields.io/github/v/release/SkalskiP/make-sense?include_prereleases)
4-
[![Gitter](https://badges.gitter.im/make-sense-ai/community.svg)](https://gitter.im/make-sense-ai/community?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
3+
[![codecov](https://codecov.io/gh/SkalskiP/make-sense/branch/develop/graph/badge.svg?token=lWsADbAey2)](https://codecov.io/gh/SkalskiP/make-sense)
4+
[![Gitter](https://badges.aleen42.com/src/gitter.svg)](https://gitter.im/make-sense-ai/community)
5+
[![Discord](https://badges.aleen42.com/src/discord.svg)](https://discord.gg/ASCjCrNdA7)
56

67
<h1 align="center">makesense.ai</h1>
78

@@ -15,42 +16,19 @@
1516

1617
## 📄 Documentation
1718

18-
You can find out more about our tool from the newly released [documentation][14].
19-
20-
## 👀 Sneak Peek
21-
22-
<div align="center">
23-
<p>
24-
<img width="850" src=".//examples/demo-base.gif">
25-
</p>
26-
</div>
27-
28-
**Figure 1.** Basic version of the application - without AI support
19+
You can find out more about our tool from the newly released [documentation][14] - still under 🚧 construction. Let us know what topics we should cover first.
2920

30-
## 🤖 Advanced AI functionalities
21+
## 🤖 Advanced AI integrations
3122

32-
[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.
23+
[makesense.ai][1] strives to significantly reduce the time you have to spend on photo labeling. We are doing our best to integrate lates and gratest AI models, that are able to give you recommendations as well as automate repetitive and tedious activities.
3324

34-
* [SSD model][8] pretrained on the [COCO dataset][9], which will do some of the work for you in drawing bboxes on photos and also (in some cases) suggest a label.
35-
* [PoseNet model][11] is a vision model that can be used to estimate the pose of a person in an image or video by estimating where key body joints are.
25+
* [YOLOv5][16] is our most powerful integration yet. Thanks to the use of [yolov5js][17] you can load not only pretreated models from [yolov5js-zoo](18), but above all your own models trained thanks to YOLOv5 and [exported](19) to tfjs format.
26+
* [SSD][8] pretrained on the [COCO dataset][9], which will do some of the work for you in drawing bboxes on photos and also (in some cases) suggest a label.
27+
* [PoseNet][11] is a vision model that can be used to estimate the pose of a person in an image or video by estimating where key body joints are.
3628

37-
In the future, we also plan to add, among other things, models that classify photos, detect characteristic features of faces as well as whole faces. 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!
38-
39-
<div align="center">
40-
<p>
41-
<img width="850" src=".//examples/demo-ssd.gif">
42-
</p>
43-
</div>
29+
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!
4430

45-
**Figure 2.** SSD model - allows you to detect multiple objects, speeding up the bbox labeling process
46-
47-
<div align="center">
48-
<p>
49-
<img width="850" src=".//examples/demo-posenet.gif">
50-
</p>
51-
</div>
52-
53-
**Figure 3.** PoseNet model - allows you to detect people's poses in photos, automating point labeling in some usecases
31+
https://user-images.githubusercontent.com/26109316/193255987-2d01c549-48c3-41ae-87e9-e1b378968966.mov
5432

5533
## 💻 Local Setup
5634

@@ -67,23 +45,21 @@ npm install
6745
# serve with hot reload at localhost:3000
6846
npm start
6947
```
70-
To ensure proper functionality of the application locally, an npm `6.x.x` and node.js `v12.x.x` versions are required. More information about this problem is available in the [#16][4].
48+
To ensure proper functionality of the application locally, npm `8.x.x` and node.js `v16.x.x` versions are required. More information about this problem is available in the [#16][4].
7149

7250
## 🐳 Docker Setup
7351

7452
```bash
7553
# Build Docker Image
76-
docker build -t make_sense docker/
54+
docker build -t make-sense -f docker/Dockerfile .
7755

7856
# Run Docker Image as Service
79-
docker run -dit -p 3000:3000 --restart=always --name=make_sense make_sense
80-
81-
# Get Docker Container IP
82-
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' make_sense
83-
# Go to `<DOCKER_CONTAINER_IP>:3000`
57+
docker run -dit -p 3000:3000 --restart=always --name=make-sense make-sense
8458

8559
# Get Docker Container Logs
86-
docker logs make_sense
60+
docker logs make-sense
61+
62+
# Access make-sense: http://localhost:3000/
8763
```
8864

8965
## ⌨️ Keyboard Shortcuts
@@ -126,7 +102,7 @@ You can find examples of export files along with a description and schema on our
126102
|:-------------:|:---:|:----:|:-------:|:--------:|:---------:|:----------:|
127103
| **Point** |||||||
128104
| **Line** |||||||
129-
| **Rect** ||| ||||
105+
| **Rect** ||| ||||
130106
| **Polygon** |||||||
131107
| **Label** |||||||
132108

@@ -143,13 +119,6 @@ We don't store your images, because we don't send them anywhere in the first pla
143119

144120
If you are just starting your adventure with deep learning and would like to learn and create something cool along the way, [makesense.ai][1] can help you with that. Leverage our bounding box labeling functionality to prepare a data set and use it to train your first state-of-the-art object detection model. Follow [instructions][12] and [examples][13] but most importantly, free your creativity.
145121

146-
<div align="center">
147-
<p>
148-
<img width="850" src=".//examples/object_detection_basketball.gif">
149-
</p>
150-
</div>
151-
152-
**Figure 4.** Detection of players moving around the basketball court, based on <a href="https://research.google.com/youtube8m/">YouTube-8M</a> dataset.
153122

154123
## 🏆 Contribution
155124

@@ -191,3 +160,7 @@ This project is licensed under the GPL-3.0 License - see the [LICENSE][2] file f
191160
[13]: https://github.com/SkalskiP/ILearnDeepLearning.py/tree/master/02_data_science_toolkit/02_yolo_object_detection
192161
[14]: https://skalskip.github.io/make-sense/
193162
[15]: https://github.com/SkalskiP/make-sense/issues
163+
[16]: https://github.com/ultralytics/yolov5
164+
[17]: https://github.com/SkalskiP/yolov5js
165+
[18]: https://github.com/SkalskiP/yolov5js-zoo
166+
[19]: https://github.com/ultralytics/yolov5/blob/master/export.py

docker/Dockerfile

+6-7
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
1-
FROM node:14.18.0
1+
FROM node:16.16.0
22

33
RUN apt-get update && apt-get -y install git && rm -rf /var/lib/apt/lists/*
44

5-
RUN mkdir /workspace && \
6-
cd /workspace && \
7-
git clone https://github.com/SkalskiP/make-sense.git && \
8-
cd make-sense && \
5+
COPY ./ /make-sense
6+
7+
RUN cd /make-sense && \
98
npm install
109

11-
WORKDIR /workspace/make-sense
10+
WORKDIR /make-sense
1211

13-
ENTRYPOINT ["npm", "start"]
12+
ENTRYPOINT ["npm", "run", "dev"]

mkdocs.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ copyright: Copyright &copy; 2019 Piotr Skalski
1515

1616
# Customization
1717
extra:
18-
version: 1.8.0-alpha
18+
version: 1.11.0-alpha
1919
social:
2020
- icon: fontawesome/brands/github
2121
link: https://github.com/SkalskiP

package-lock.json

+57-4
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "make-sense",
3-
"version": "1.0.0",
3+
"version": "1.11.0-alpha",
44
"private": true,
55
"dependencies": {
66
"@emotion/react": "^11.9.3",
@@ -14,6 +14,7 @@
1414
"@tensorflow/tfjs-backend-webgl": "^3.19.0",
1515
"@tensorflow/tfjs-core": "^3.19.0",
1616
"@tensorflow/tfjs-node": "^3.19.0",
17+
"axios": "^1.1.3",
1718
"classnames": "^2.3.1",
1819
"file-saver": "^2.0.5",
1920
"jszip": "^3.10.0",
@@ -31,10 +32,10 @@
3132
"yolov5js": "^1.0.0"
3233
},
3334
"scripts": {
34-
"dev": "vite",
35-
"start": "vite",
35+
"dev": "vite --host --port 3000",
36+
"start": "vite --port 3000",
3637
"build": "vite build",
37-
"preview": "vite preview",
38+
"preview": "vite preview --host --port 3000",
3839
"test": "jest",
3940
"test:coverage": "jest --coverage",
4041
"lint": "eslint src/**/*.ts src/**.tsx"

public/ico/api.png

2.52 KB
Loading
1.18 KB
Loading

public/ico/roboflow-logo.png

97.6 KB
Loading

public/ico/youtube-logo.png

929 Bytes
Loading

src/App.tsx

+20-5
Original file line numberDiff line numberDiff line change
@@ -13,18 +13,27 @@ import {SizeItUpView} from './views/SizeItUpView/SizeItUpView';
1313
import {PlatformModel} from './staticModels/PlatformModel';
1414
import classNames from 'classnames';
1515
import NotificationsView from './views/NotificationsView/NotificationsView';
16+
import { RoboflowAPIDetails } from './store/ai/types';
1617

1718
interface IProps {
1819
projectType: ProjectType;
1920
windowSize: ISize;
2021
isObjectDetectorLoaded: boolean;
2122
isPoseDetectionLoaded: boolean;
2223
isYOLOV5ObjectDetectorLoaded: boolean;
24+
roboflowAPIDetails: RoboflowAPIDetails;
2325
}
2426

25-
const App: React.FC<IProps> = ({
26-
projectType, windowSize, isObjectDetectorLoaded, isPoseDetectionLoaded, isYOLOV5ObjectDetectorLoaded
27-
}) => {
27+
const App: React.FC<IProps> = (
28+
{
29+
projectType,
30+
windowSize,
31+
isObjectDetectorLoaded,
32+
isPoseDetectionLoaded,
33+
isYOLOV5ObjectDetectorLoaded,
34+
roboflowAPIDetails
35+
}
36+
) => {
2837
const selectRoute = () => {
2938
if (!!PlatformModel.mobileDeviceData.manufacturer && !!PlatformModel.mobileDeviceData.os)
3039
return <MobileMainView/>;
@@ -38,7 +47,11 @@ const App: React.FC<IProps> = ({
3847
}
3948
}
4049
};
41-
const isAILoaded = isObjectDetectorLoaded || isPoseDetectionLoaded || isYOLOV5ObjectDetectorLoaded
50+
const isAILoaded = isObjectDetectorLoaded
51+
|| isPoseDetectionLoaded
52+
|| isYOLOV5ObjectDetectorLoaded
53+
|| (roboflowAPIDetails.model !== '' && roboflowAPIDetails.key !== '' && roboflowAPIDetails.status)
54+
4255
return (
4356
<div className={classNames('App', {'AI': isAILoaded})} draggable={false}
4457
>
@@ -49,12 +62,14 @@ const App: React.FC<IProps> = ({
4962
);
5063
};
5164

65+
5266
const mapStateToProps = (state: AppState) => ({
5367
projectType: state.general.projectData.type,
5468
windowSize: state.general.windowSize,
5569
isSSDObjectDetectorLoaded: state.ai.isSSDObjectDetectorLoaded,
5670
isPoseDetectorLoaded: state.ai.isPoseDetectorLoaded,
57-
isYOLOV5ObjectDetectorLoaded: state.ai.isYOLOV5ObjectDetectorLoaded
71+
isYOLOV5ObjectDetectorLoaded: state.ai.isYOLOV5ObjectDetectorLoaded,
72+
roboflowAPIDetails: state.ai.roboflowAPIDetails
5873
});
5974

6075
export default connect(

src/ai/ObjectDetector.ts

Whitespace-only changes.

0 commit comments

Comments
 (0)