Skip to content

Commit d4ea708

Browse files
authored
Merge pull request #55 from SkalskiP/develop
1.3.0-alpha relese merge
2 parents 86584b1 + a5f5742 commit d4ea708

File tree

73 files changed

+1445
-597
lines changed

Some content is hidden

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

73 files changed

+1445
-597
lines changed

README.md

Lines changed: 34 additions & 178 deletions
Original file line numberDiff line numberDiff line change
@@ -20,22 +20,8 @@ Andrew Ng
2020

2121
## Sneak Peek
2222

23-
### Bounding boxes
24-
25-
<p align="center">
26-
<img width="1000" src=".//examples/bbox-demo.gif" alt="bbox">
27-
</p>
28-
29-
### Points
30-
3123
<p align="center">
32-
<img width="1000" src=".//examples/points-demo.gif" alt="points">
33-
</p>
34-
35-
### Polygons
36-
37-
<p align="center">
38-
<img width="1000" src=".//examples/polygon-demo.gif" alt="polygon">
24+
<img width="1000" src=".//examples/alfa-demo.gif" alt="bbox">
3925
</p>
4026

4127
## Set Up the Project Locally
@@ -53,8 +39,23 @@ npm install
5339
# serve with hot reload at localhost:3000
5440
npm start
5541
```
42+
To ensure proper functionality of the application locally, an npm `6.x.x` and node.js `v11.x.x` versions are required. More information about this problem is available in the [#16][4].
43+
44+
## Supported Keyboard Shortcuts
45+
46+
| Functionality | Context | Mac | Windows / Linux |
47+
|:-----------------------------------|:--------:|:---:|:----------------:|
48+
| Polygon autocomplete | Editor | <kbd>Enter</kbd> | <kbd>Enter</kbd> |
49+
| Cancel polygon drawing | Editor | <kbd>Escape</kbd> | <kbd>Escape</kbd> |
50+
| Delete currently selected label | Editor | <kbd>Backspace</kbd> | <kbd>Delete</kbd> |
51+
| Load previous image | Editor | <kbd>⌥</kbd> + <kbd>Left</kbd> | <kbd>Ctrl</kbd> + <kbd>Left</kbd> |
52+
| Load next image | Editor | <kbd>⌥</kbd> + <kbd>Right</kbd> | <kbd>Ctrl</kbd> + <kbd>Right</kbd> |
53+
| Zoom in | Editor | <kbd>⌥</kbd> + <kbd>+</kbd> | <kbd>Ctrl</kbd> + <kbd>+</kbd> |
54+
| Zoom out | Editor | <kbd>⌥</kbd> + <kbd>-</kbd> | <kbd>Ctrl</kbd> + <kbd>-</kbd> |
55+
| Move image | Editor | <kbd>Up</kbd> / <kbd>Down</kbd> / <kbd>Left</kbd> / <kbd>Right</kbd> | <kbd>Up</kbd> / <kbd>Down</kbd> / <kbd>Left</kbd> / <kbd>Right</kbd> |
56+
| Exit popup | Popup | <kbd>Escape</kbd> | <kbd>Escape</kbd> |
5657

57-
Some Windows 10 users may also have problems with running applications locally. The problems can be solved by adding additional dependencies to the project, through a command: `npm install normalize.css --save`. More information about this problem is available in the [#16][4].
58+
**Table 1.** Supported keyboard shortcuts
5859

5960
## Supported Output Formats
6061

@@ -64,182 +65,35 @@ Some Windows 10 users may also have problems with running applications locally.
6465
| **Rect** |||||||
6566
| **Polygon** |||||||
6667

67-
**Table 1.** The matrix of supported labels export format, where:
68+
**Table 2.** The matrix of supported labels export format, where:
6869
* ☑ - supported format
6970
* ☐ - not yet supported format
7071
* ☒ - format does not make sense for a given label type
7172

73+
You can find examples of export files along with a description and schema on our [Wiki][7].
7274

75+
## Privacy
7376

74-
**A .zip package containing files in YOLO format**
75-
76-
<details><summary><i>example of file in YOLO format</i></summary><p>
77-
78-
**Schema:**
79-
80-
`label_index rel_rect_center_x rel_rect_center_y rel_rect_width rel_rect_height`
81-
82-
**Where:**
83-
84-
`label_index` - index of the selected label
85-
`rel_rect_center_x` - horizontal position of the centre of the rect in relation to overall image width, value between [0, 1]
86-
`rel_rect_center_y` - vertical position of the centre of the rect in relation to overall image height, value between [0, 1]
87-
`rel_rect_width` - rect width in relation to overall image width, value between [0, 1]
88-
`rel_rect_height` - rect height in relation to overall image height, value between [0, 1]
89-
90-
**Example:**
91-
92-
```
93-
1 0.404528 0.543963 0.244094 0.727034
94-
2 0.610236 0.494751 0.188976 0.437008
95-
1 0.754921 0.791339 0.354331 0.413386
96-
```
97-
</p></details>
98-
99-
**A .zip package containing files in Pascal VOC XML format**
100-
101-
<details><summary><i>example of file in Pascal VOC XML format</i></summary><p>
102-
103-
**Schema:**
104-
105-
```xml
106-
<annotation>
107-
<folder>{ project_name }</folder>
108-
<filename>{ image_name }</filename>
109-
<path>{ /project_name/file_name }</path>
110-
<source>
111-
<database>Unspecified</database>
112-
</source>
113-
<size>
114-
<width>{ image_width }</width>
115-
<height>{ image_height }</height>
116-
<depth>3</depth>
117-
</size>
118-
<object>
119-
<name>{ label_name }</name>
120-
<pose>Unspecified</pose>
121-
<truncated>Unspecified</truncated>
122-
<difficult>Unspecified</difficult>
123-
<bndbox>
124-
<xmin>{ rect_left }</xmin>
125-
<ymin>{ rect_top }</ymin>
126-
<xmax>{ rect_right }</xmax>
127-
<ymax>{ rect_bottom }</ymax>
128-
</bndbox>
129-
</object>
130-
</annotation>
131-
```
132-
133-
**Where:**
134-
135-
`project_name` - user-defined project name
136-
`image_name` - name of the photo file
137-
`label_name` - selected label name
138-
`rect_left` - absolute horizontal distance between the left edge of the image and the left edge of the rect in pixels
139-
`rect_top` - absolute vertical distance between the top edge of the image and the top edge of the rect in pixels
140-
`rect_right` - absolute horizontal distance between the left edge of the image and the right edge of the rect in pixels
141-
`rect_bottom` - absolute vertical distance between the top edge of the image and the bottom edge of the rect in pixels
142-
`image_width` - absolute image width in pixels
143-
`image_height` - absolute image height in pixels
144-
145-
**Example:**
146-
147-
```xml
148-
<annotation>
149-
<folder>my-project-name</folder>
150-
<filename>000007.jpg</filename>
151-
<path>/my-project-name/000007.jpg</path>
152-
<source>
153-
<database>Unspecified</database>
154-
</source>
155-
<size>
156-
<width>1280</width>
157-
<height>960</height>
158-
<depth>3</depth>
159-
</size>
160-
<object>
161-
<name>kiwi</name>
162-
<pose>Unspecified</pose>
163-
<truncated>Unspecified</truncated>
164-
<difficult>Unspecified</difficult>
165-
<bndbox>
166-
<xmin>208</xmin>
167-
<ymin>486</ymin>
168-
<xmax>497</xmax>
169-
<ymax>718</ymax>
170-
</bndbox>
171-
</object>
172-
<object>
173-
<name>banaba</name>
174-
<pose>Unspecified</pose>
175-
<truncated>Unspecified</truncated>
176-
<difficult>Unspecified</difficult>
177-
<bndbox>
178-
<xmin>643</xmin>
179-
<ymin>118</ymin>
180-
<xmax>1178</xmax>
181-
<ymax>799</ymax>
182-
</bndbox>
183-
</object>
184-
</annotation>
185-
```
186-
</p></details>
187-
188-
**Single CSV file**
189-
190-
<details><summary><i>example of CSV file</i></summary><p>
77+
We don't store your images, because we don't send them anywhere in the first place.
19178

192-
**Schema:**
79+
## Road Map
19380

194-
`label_name,rect_left,rect_top,rect_width,rect_height,image_name,image_width,image_height`
81+
Our application is being actively developed. Check out our plans for the near future on our [Wiki][6]. If you have an idea for a new functionality, please hit us on [Twitter][3] and [Gitter][5] or create an issue where you can describe your concept. In the meantime, see what improvements we are planning for you in the future.
19582

196-
**Where:**
83+
## Contribution
19784

198-
`label_name` - selected label name
199-
`rect_left` - absolute horizontal distance between the left edge of the image and the left edge of the rect in pixels
200-
`rect_top` - absolute vertical distance between the top edge of the image and the top edge of the rect in pixels
201-
`rect_width` - absolute rect width in pixels
202-
`rect_height` - absolute rect height in pixels
203-
`image_width` - absolute image width in pixels
204-
`image_height` - absolute image height in pixels
85+
Feel free to file [issues](https://github.com/SkalskiP/make-sense/issues) or [pull requests](https://github.com/SkalskiP/make-sense/pulls).
20586

206-
**Example:**
87+
## Citation
20788

20889
```
209-
banana,491,164,530,614,000000.jpg,1280,960
210-
banana,462,245,466,353,000001.jpg,1280,960
211-
banana,542,477,587,375,000001.jpg,1280,960
212-
banana,636,109,561,695,000007.jpg,1280,960
213-
kiwi,198,477,317,251,000007.jpg,1280,960
214-
kiwi,558,423,219,222,000008.jpg,1280,960
215-
kiwi,758,360,252,236,000008.jpg,1280,960
90+
@MISC{make-sense,
91+
author = {Piotr Skalski},
92+
title = {{Make Sense}},
93+
howpublished = "\url{https://github.com/SkalskiP/make-sense/}",
94+
year = {2019},
95+
}
21696
```
217-
</p></details>
218-
219-
## Privacy
220-
221-
We don't store your images, because we don't send them anywhere in the first place.
222-
223-
## Road Map
224-
225-
Our application is being actively developed. If you have an idea for a new functionality, please hit us on [Twitter][3] and [Gitter][5] or create an issue where you can describe your concept. In the meantime, see what improvements we are planning for you in the future.
226-
227-
- [X] Export rect labels in Pascal VOC XML format
228-
- [X] Labelling objects using polygons
229-
- [X] Export polygon labels in VGG JSON format
230-
- [ ] Optimization of the process of loading photos from disk - queuing
231-
- [ ] Labelling objects using lines
232-
- [ ] Autofill in label selection dropdown
233-
- [ ] Export labels in COCO JSON format
234-
- [ ] Export segmentation labels as image mask
235-
- [ ] Separate tab with settings
236-
- [ ] Support basic image operations like crop and resize
237-
- [ ] Converting video to image frames
238-
- [ ] Keyboard shortcuts to improve productivity
239-
- [ ] Automatic detection of objects in a photo - all you have to do is to label them
240-
- [ ] OCR labelling
241-
- [ ] Integration with external storage - Amazon S3, Google Drive, Dropbox
242-
- [ ] Copy annotations from previous image into the next one
24397

24498
## Citation
24599

@@ -263,3 +117,5 @@ Copyright (c) 2019-present, Piotr Skalski
263117
[3]: https://twitter.com/PiotrSkalski92
264118
[4]: https://github.com/SkalskiP/make-sense/issues/16
265119
[5]: https://gitter.im/make-sense-ai/community?utm_source=share-link&utm_medium=link&utm_campaign=share-link
120+
[6]: https://github.com/SkalskiP/make-sense/wiki/Road-Map
121+
[7]: https://github.com/SkalskiP/make-sense/wiki/Supported-Output-Formats

examples/alfa-demo.gif

2.05 MB
Loading

public/ico/hand-fill-grab.png

694 Bytes
Loading

public/ico/hand-fill.png

795 Bytes
Loading

public/ico/hand.png

1.27 KB
Loading

public/ico/zoom-fit.png

1.46 KB
Loading

public/ico/zoom-in.png

1.22 KB
Loading

public/ico/zoom-max.png

1.35 KB
Loading

public/ico/zoom-out.png

1.2 KB
Loading

src/App.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,20 @@ import {ProjectType} from "./data/enums/ProjectType";
66
import {AppState} from "./store";
77
import {connect} from "react-redux";
88
import PopupView from "./views/PopupView/PopupView";
9-
import {MobileDeviceData} from "./data/MobileDeviceData";
109
import MobileMainView from "./views/MobileMainView/MobileMainView";
1110
import {ISize} from "./interfaces/ISize";
1211
import {Settings} from "./settings/Settings";
1312
import {SizeItUpView} from "./views/SizeItUpView/SizeItUpView";
13+
import {PlatformModel} from "./staticModels/PlatformModel";
1414

1515
interface IProps {
1616
projectType: ProjectType;
17-
mobileDeviceData: MobileDeviceData;
1817
windowSize: ISize;
1918
}
2019

21-
const App: React.FC<IProps> = ({projectType, mobileDeviceData, windowSize}) => {
20+
const App: React.FC<IProps> = ({projectType, windowSize}) => {
2221
const selectRoute = () => {
23-
if (!!mobileDeviceData.manufacturer && !!mobileDeviceData.os)
22+
if (!!PlatformModel.mobileDeviceData.manufacturer && !!PlatformModel.mobileDeviceData.os)
2423
return <MobileMainView/>;
2524
if (!projectType)
2625
return <MainView/>;
@@ -34,7 +33,9 @@ const App: React.FC<IProps> = ({projectType, mobileDeviceData, windowSize}) => {
3433
};
3534

3635
return (
37-
<div className="App">
36+
<div className="App"
37+
draggable={false}
38+
>
3839
{selectRoute()}
3940
<PopupView/>
4041
</div>
@@ -43,7 +44,6 @@ const App: React.FC<IProps> = ({projectType, mobileDeviceData, windowSize}) => {
4344

4445
const mapStateToProps = (state: AppState) => ({
4546
projectType: state.editor.projectType,
46-
mobileDeviceData: state.general.mobileDeviceData,
4747
windowSize: state.general.windowSize
4848
});
4949

0 commit comments

Comments
 (0)