Skip to content

Commit 6441503

Browse files
author
Nikita Manovich
authored
Merge branch 'develop' into develop
2 parents eef7451 + 51ff630 commit 6441503

File tree

98 files changed

+3023
-702
lines changed

Some content is hidden

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

98 files changed

+3023
-702
lines changed

.travis.yml

+3-1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ cache:
1111
- ~/.cache
1212

1313
addons:
14+
firefox: "latest"
1415
apt:
1516
packages:
1617
- libgconf-2-4
@@ -43,7 +44,8 @@ script:
4344
- docker exec -it cvat bash -ic "echo \"from django.contrib.auth.models import User; User.objects.create_superuser('${DJANGO_SU_NAME}', '${DJANGO_SU_EMAIL}', '${DJANGO_SU_PASSWORD}')\" | python3 ~/manage.py shell"
4445
# Install Cypress and run tests
4546
- cd ./tests && npm install
46-
- $(npm bin)/cypress run --headless --browser chrome && cd ..
47+
- $(npm bin)/cypress run --headless --browser chrome
48+
- $(npm bin)/cypress run --headless --browser firefox && cd ..
4749

4850
after_success:
4951
# https://coveralls-python.readthedocs.io/en/latest/usage/multilang.html

CHANGELOG.md

+24-11
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,29 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

7-
## [1.1.0] - Unreleased
7+
## [1.2.0] - Unreleased
8+
### Added
9+
- Added password reset functionality (<https://github.com/opencv/cvat/pull/2058>)
10+
- Ability to work with data on the fly (https://github.com/opencv/cvat/pull/2007)
11+
- Annotation in process outline color wheel (<https://github.com/opencv/cvat/pull/2084>)
12+
13+
### Changed
14+
- UI models (like DEXTR) were redesigned to be more interactive (<https://github.com/opencv/cvat/pull/2054>)
15+
- Used Ubuntu:20.04 as a base image for CVAT Dockerfile (<https://github.com/opencv/cvat/pull/2101>)
16+
17+
### Deprecated
18+
-
19+
20+
### Removed
21+
-
22+
23+
### Fixed
24+
- Fixed multiple errors which arises when polygon is of length 5 or less (<https://github.com/opencv/cvat/pull/2100>)
25+
26+
### Security
27+
-
28+
29+
## [1.1.0] - 2020-08-31
830
### Added
931
- Siammask tracker as DL serverless function (<https://github.com/opencv/cvat/pull/1988>)
1032
- [Datumaro] Added model info and source info commands (<https://github.com/opencv/cvat/pull/1973>)
@@ -19,22 +41,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1941
- Shape coordinates are rounded to 2 digits in dumped annotations (<https://github.com/opencv/cvat/pull/1970>)
2042
- COCO format does not produce polygon points for bbox annotations (<https://github.com/opencv/cvat/pull/1953>)
2143

22-
### Deprecated
23-
-
24-
25-
### Removed
26-
-
27-
2844
### Fixed
2945
- Issue loading openvino models for semi-automatic and automatic annotation (<https://github.com/opencv/cvat/pull/1996>)
3046
- Basic functions of CVAT works without activated nuclio dashboard
3147
- Fixed a case in which exported masks could have wrong color order (<https://github.com/opencv/cvat/issues/2032>)
3248
- Fixed error with creating task with labels with the same name (<https://github.com/opencv/cvat/pull/2031>)
3349
- Django RQ dashboard view (<https://github.com/opencv/cvat/pull/2069>)
34-
- Fixed multiple errors which arises when polygon is of length 5 or less (<https://github.com/opencv/cvat/pull/2100>)
35-
36-
### Security
37-
-
50+
- Object's details menu settings (<https://github.com/opencv/cvat/pull/2084>)
3851

3952
## [1.1.0-beta] - 2020-08-03
4053
### Added

CONTRIBUTING.md

+2-13
Original file line numberDiff line numberDiff line change
@@ -14,25 +14,14 @@ Next steps should work on clear Ubuntu 18.04.
1414

1515
- Install necessary dependencies:
1616
```sh
17-
sudo apt-get update && sudo apt-get --no-install-recommends install -y ffmpeg build-essential curl redis-server python3-dev python3-pip python3-venv python3-tk libldap2-dev libsasl2-dev
17+
sudo apt-get update && sudo apt-get --no-install-recommends install -y build-essential curl redis-server python3-dev python3-pip python3-venv python3-tk libldap2-dev libsasl2-dev pkg-config libavformat-dev libavcodec-dev libavdevice-dev libavutil-dev libswscale-dev libswresample-dev libavfilter-dev
1818
```
19-
Also please make sure that you have installed ffmpeg with all necessary libav* libraries and pkg-config package.
19+
Please make sure you have installed FFmpeg libraries (libav*) version 4.0 or higher.
2020
```sh
2121
# Node and npm (you can use default versions of these packages from apt (8.*, 3.*), but we would recommend to use newer versions)
2222
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
2323
sudo apt-get install -y nodejs
2424
25-
# General dependencies
26-
sudo apt-get install -y pkg-config
27-
28-
# Library components
29-
sudo apt-get install -y \
30-
libavformat-dev libavcodec-dev libavdevice-dev \
31-
libavutil-dev libswscale-dev libswresample-dev libavfilter-dev
32-
```
33-
See [PyAV Dependencies installation guide](http://docs.mikeboers.com/pyav/develop/overview/installation.html#dependencies)
34-
for details.
35-
3625
- Install [Visual Studio Code](https://code.visualstudio.com/docs/setup/linux#_debian-and-ubuntu-based-distributions)
3726
for development
3827

Dockerfile

+10-17
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM ubuntu:16.04
1+
FROM ubuntu:20.04
22

33
ARG http_proxy
44
ARG https_proxy
@@ -23,8 +23,6 @@ ENV DJANGO_CONFIGURATION=${DJANGO_CONFIGURATION}
2323
RUN apt-get update && \
2424
apt-get --no-install-recommends install -yq \
2525
software-properties-common && \
26-
add-apt-repository ppa:mc3man/xerus-media -y && \
27-
add-apt-repository ppa:mc3man/gstffmpeg-keep -y && \
2826
apt-get update && \
2927
DEBIAN_FRONTEND=noninteractive apt-get --no-install-recommends install -yq \
3028
apache2 \
@@ -33,15 +31,13 @@ RUN apt-get update && \
3331
build-essential \
3432
libapache2-mod-xsendfile \
3533
supervisor \
36-
ffmpeg \
37-
gstreamer0.10-ffmpeg \
38-
libavcodec-dev \
39-
libavdevice-dev \
40-
libavfilter-dev \
41-
libavformat-dev \
42-
libavutil-dev \
43-
libswresample-dev \
44-
libswscale-dev \
34+
libavcodec-dev=7:4.2.4-1ubuntu0.1 \
35+
libavdevice-dev=7:4.2.4-1ubuntu0.1 \
36+
libavfilter-dev=7:4.2.4-1ubuntu0.1 \
37+
libavformat-dev=7:4.2.4-1ubuntu0.1 \
38+
libavutil-dev=7:4.2.4-1ubuntu0.1 \
39+
libswresample-dev=7:4.2.4-1ubuntu0.1 \
40+
libswscale-dev=7:4.2.4-1ubuntu0.1 \
4541
libldap2-dev \
4642
libsasl2-dev \
4743
pkg-config \
@@ -50,16 +46,13 @@ RUN apt-get update && \
5046
tzdata \
5147
p7zip-full \
5248
git \
49+
git-lfs \
5350
ssh \
5451
poppler-utils \
5552
curl && \
56-
curl https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash && \
57-
apt-get --no-install-recommends install -y git-lfs && git lfs install && \
58-
python3 -m pip install --no-cache-dir -U pip==20.0.1 setuptools>=49.1.0 wheel==0.35.1 && \
53+
python3 -m pip install --no-cache-dir -U pip==20.0.1 setuptools==49.6.0 wheel==0.35.1 && \
5954
ln -fs /usr/share/zoneinfo/${TZ} /etc/localtime && \
6055
dpkg-reconfigure -f noninteractive tzdata && \
61-
add-apt-repository --remove ppa:mc3man/gstffmpeg-keep -y && \
62-
add-apt-repository --remove ppa:mc3man/xerus-media -y && \
6356
rm -rf /var/lib/apt/lists/* && \
6457
echo 'application/wasm wasm' >> /etc/mime.types
6558

Dockerfile.ci

+9-6
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,20 @@ FROM cvat/server
33
ENV DJANGO_CONFIGURATION=testing
44
USER root
55

6-
RUN curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
7-
echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | tee /etc/apt/sources.list.d/google-chrome.list && \
8-
curl https://deb.nodesource.com/setup_12.x | bash - && \
9-
apt-get update && \
6+
RUN apt-get update && \
107
DEBIAN_FRONTEND=noninteractive apt-get --no-install-recommends install -yq \
8+
gpg-agent \
119
apt-utils \
1210
build-essential \
11+
python3-dev \
12+
ruby \
13+
&& \
14+
curl https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && \
15+
echo 'deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main' | tee /etc/apt/sources.list.d/google-chrome.list && \
16+
curl https://deb.nodesource.com/setup_12.x | bash - && \
17+
DEBIAN_FRONTEND=noninteractive apt-get --no-install-recommends install -yq \
1318
google-chrome-stable \
1419
nodejs \
15-
python3-dev \
16-
ruby \
1720
&& \
1821
rm -rf /var/lib/apt/lists/*;
1922

cvat-canvas/README.md

+34-19
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ Canvas itself handles:
4646
IDLE = 'idle',
4747
DRAG = 'drag',
4848
RESIZE = 'resize',
49+
INTERACT = 'interact',
4950
DRAW = 'draw',
5051
EDIT = 'edit',
5152
MERGE = 'merge',
@@ -70,6 +71,11 @@ Canvas itself handles:
7071
crosshair?: boolean;
7172
}
7273

74+
interface InteractionData {
75+
shapeType: string;
76+
minVertices?: number;
77+
}
78+
7379
interface GroupData {
7480
enabled: boolean;
7581
resetGroup?: boolean;
@@ -83,6 +89,12 @@ Canvas itself handles:
8389
enabled: boolean;
8490
}
8591

92+
interface InteractionResult {
93+
points: number[];
94+
shapeType: string;
95+
button: number;
96+
};
97+
8698
interface DrawnData {
8799
shapeType: string;
88100
points: number[];
@@ -104,6 +116,7 @@ Canvas itself handles:
104116
grid(stepX: number, stepY: number): void;
105117

106118
draw(drawData: DrawData): void;
119+
interact(interactionData: InteractionData): void;
107120
group(groupData: GroupData): void;
108121
split(splitData: SplitData): void;
109122
merge(mergeData: MergeData): void;
@@ -146,6 +159,7 @@ Standard JS events are used.
146159
- canvas.moved => {states: ObjectState[], x: number, y: number}
147160
- canvas.find => {states: ObjectState[], x: number, y: number}
148161
- canvas.drawn => {state: DrawnData}
162+
- canvas.interacted => {shapes: InteractionResult[]}
149163
- canvas.editstart
150164
- canvas.edited => {state: ObjectState, points: number[]}
151165
- canvas.splitted => {state: ObjectState}
@@ -187,25 +201,26 @@ Standard JS events are used.
187201

188202
## API Reaction
189203

190-
| | IDLE | GROUP | SPLIT | DRAW | MERGE | EDIT | DRAG | RESIZE | ZOOM_CANVAS | DRAG_CANVAS |
191-
|--------------|------|-------|-------|------|-------|------|------|--------|-------------|-------------|
192-
| setup() | + | + | + | +/- | + | +/- | +/- | +/- | + | + |
193-
| activate() | + | - | - | - | - | - | - | - | - | - |
194-
| rotate() | + | + | + | + | + | + | + | + | + | + |
195-
| focus() | + | + | + | + | + | + | + | + | + | + |
196-
| fit() | + | + | + | + | + | + | + | + | + | + |
197-
| grid() | + | + | + | + | + | + | + | + | + | + |
198-
| draw() | + | - | - | - | - | - | - | - | - | - |
199-
| split() | + | - | + | - | - | - | - | - | - | - |
200-
| group() | + | + | - | - | - | - | - | - | - | - |
201-
| merge() | + | - | - | - | + | - | - | - | - | - |
202-
| fitCanvas() | + | + | + | + | + | + | + | + | + | + |
203-
| dragCanvas() | + | - | - | - | - | - | + | - | - | + |
204-
| zoomCanvas() | + | - | - | - | - | - | - | + | + | - |
205-
| cancel() | - | + | + | + | + | + | + | + | + | + |
206-
| configure() | + | + | + | + | + | + | + | + | + | + |
207-
| bitmap() | + | + | + | + | + | + | + | + | + | + |
208-
| setZLayer() | + | + | + | + | + | + | + | + | + | + |
204+
| | IDLE | GROUP | SPLIT | DRAW | MERGE | EDIT | DRAG | RESIZE | ZOOM_CANVAS | DRAG_CANVAS | INTERACT |
205+
|--------------|------|-------|-------|------|-------|------|------|--------|-------------|-------------|----------|
206+
| setup() | + | + | + | +/- | + | +/- | +/- | +/- | + | + | + |
207+
| activate() | + | - | - | - | - | - | - | - | - | - | - |
208+
| rotate() | + | + | + | + | + | + | + | + | + | + | + |
209+
| focus() | + | + | + | + | + | + | + | + | + | + | + |
210+
| fit() | + | + | + | + | + | + | + | + | + | + | + |
211+
| grid() | + | + | + | + | + | + | + | + | + | + | + |
212+
| draw() | + | - | - | + | - | - | - | - | - | - | - |
213+
| interact() | + | - | - | - | - | - | - | - | - | - | + |
214+
| split() | + | - | + | - | - | - | - | - | - | - | - |
215+
| group() | + | + | - | - | - | - | - | - | - | - | - |
216+
| merge() | + | - | - | - | + | - | - | - | - | - | - |
217+
| fitCanvas() | + | + | + | + | + | + | + | + | + | + | + |
218+
| dragCanvas() | + | - | - | - | - | - | + | - | - | + | - |
219+
| zoomCanvas() | + | - | - | - | - | - | - | + | + | - | - |
220+
| cancel() | - | + | + | + | + | + | + | + | + | + | + |
221+
| configure() | + | + | + | + | + | + | + | + | + | + | + |
222+
| bitmap() | + | + | + | + | + | + | + | + | + | + | + |
223+
| setZLayer() | + | + | + | + | + | + | + | + | + | + | + |
209224

210225
You can call setup() during editing, dragging, and resizing only to update objects, not to change a frame.
211226
You can change frame during draw only when you do not redraw an existing object

cvat-canvas/package-lock.json

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

cvat-canvas/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "cvat-canvas",
3-
"version": "2.0.2",
3+
"version": "2.1.0",
44
"description": "Part of Computer Vision Annotation Tool which presents its canvas library",
55
"main": "src/canvas.ts",
66
"scripts": {

cvat-canvas/src/typescript/canvas.ts

+12-14
Original file line numberDiff line numberDiff line change
@@ -8,26 +8,17 @@ import {
88
MergeData,
99
SplitData,
1010
GroupData,
11+
InteractionData,
12+
InteractionResult,
1113
CanvasModel,
1214
CanvasModelImpl,
1315
RectDrawingMethod,
1416
CuboidDrawingMethod,
1517
Configuration,
1618
} from './canvasModel';
17-
18-
import {
19-
Master,
20-
} from './master';
21-
22-
import {
23-
CanvasController,
24-
CanvasControllerImpl,
25-
} from './canvasController';
26-
27-
import {
28-
CanvasView,
29-
CanvasViewImpl,
30-
} from './canvasView';
19+
import { Master } from './master';
20+
import { CanvasController, CanvasControllerImpl } from './canvasController';
21+
import { CanvasView, CanvasViewImpl } from './canvasView';
3122

3223
import '../scss/canvas.scss';
3324
import pjson from '../../package.json';
@@ -43,6 +34,7 @@ interface Canvas {
4334
fit(): void;
4435
grid(stepX: number, stepY: number): void;
4536

37+
interact(interactionData: InteractionData): void;
4638
draw(drawData: DrawData): void;
4739
group(groupData: GroupData): void;
4840
split(splitData: SplitData): void;
@@ -118,6 +110,10 @@ class CanvasImpl implements Canvas {
118110
this.model.grid(stepX, stepY);
119111
}
120112

113+
public interact(interactionData: InteractionData): void {
114+
this.model.interact(interactionData);
115+
}
116+
121117
public draw(drawData: DrawData): void {
122118
this.model.draw(drawData);
123119
}
@@ -162,4 +158,6 @@ export {
162158
RectDrawingMethod,
163159
CuboidDrawingMethod,
164160
Mode as CanvasMode,
161+
InteractionData,
162+
InteractionResult,
165163
};

cvat-canvas/src/typescript/canvasController.ts

+11
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import {
1313
SplitData,
1414
GroupData,
1515
Mode,
16+
InteractionData,
1617
} from './canvasModel';
1718

1819
export interface CanvasController {
@@ -21,6 +22,7 @@ export interface CanvasController {
2122
readonly focusData: FocusData;
2223
readonly activeElement: ActiveElement;
2324
readonly drawData: DrawData;
25+
readonly interactionData: InteractionData;
2426
readonly mergeData: MergeData;
2527
readonly splitData: SplitData;
2628
readonly groupData: GroupData;
@@ -30,6 +32,7 @@ export interface CanvasController {
3032

3133
zoom(x: number, y: number, direction: number): void;
3234
draw(drawData: DrawData): void;
35+
interact(interactionData: InteractionData): void;
3336
merge(mergeData: MergeData): void;
3437
split(splitData: SplitData): void;
3538
group(groupData: GroupData): void;
@@ -84,6 +87,10 @@ export class CanvasControllerImpl implements CanvasController {
8487
this.model.draw(drawData);
8588
}
8689

90+
public interact(interactionData: InteractionData): void {
91+
this.model.interact(interactionData);
92+
}
93+
8794
public merge(mergeData: MergeData): void {
8895
this.model.merge(mergeData);
8996
}
@@ -124,6 +131,10 @@ export class CanvasControllerImpl implements CanvasController {
124131
return this.model.drawData;
125132
}
126133

134+
public get interactionData(): InteractionData {
135+
return this.model.interactionData;
136+
}
137+
127138
public get mergeData(): MergeData {
128139
return this.model.mergeData;
129140
}

0 commit comments

Comments
 (0)