Skip to content

Commit

Permalink
Merge branch 'develop' into zm/update-docs
Browse files Browse the repository at this point in the history
  • Loading branch information
zhiltsov-max authored Nov 27, 2023
2 parents f8614b9 + 3bf88c5 commit 95abefe
Show file tree
Hide file tree
Showing 170 changed files with 4,224 additions and 3,120 deletions.
2 changes: 2 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,8 @@ jobs:
COVERAGE_PROCESS_START: ".coveragerc"
run: |
pytest tests/python/ --cov --cov-report=json
for COVERAGE_FILE in `find -name "coverage*.json" -type f -printf "%f\n"`; do mv ${COVERAGE_FILE} "${COVERAGE_FILE%%.*}_0.json"; done
ONE_RUNNING_JOB_IN_QUEUE_PER_USER="true" pytest tests/python/rest_api/test_queues.py --cov --cov-report=json
- name: Uploading code coverage results as an artifact
uses: actions/[email protected]
Expand Down
82 changes: 80 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,84 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

<!-- scriv-insert-here -->

<a id='changelog-2.9.0'></a>
## \[2.9.0\] - 2023-11-23

### Added

- CVAT now supports serverless Nuclio functions that return skeleton annotations.
We've added a keypoint detector that supports skeletons for the following classes:
body, head, foot, and hands. Deployment command: `./deploy_cpu.sh pytorch/mmpose/hrnet32/nuclio/`
(<https://github.com/opencv/cvat/pull/7033>)

- Implemented a feature that allows slicing one polygon/mask shape into two parts
(<https://github.com/opencv/cvat/pull/7084>)

- Implemented a feature that allows joining several masks into a single one
(<https://github.com/opencv/cvat/pull/7084>)

- \[Helm\] Introduced values that apply to all backend deployments/jobs
(<https://github.com/opencv/cvat/pull/7148>)

### Changed

- The "use cache" option on the server is now ignored when creating a
task with cloud storage data (<https://github.com/opencv/cvat/pull/7087>)

- The Docker Compose file and Helm chart have been updated to enable Traefik
access logs by default and change the log format to JSON
(<https://github.com/opencv/cvat/pull/7109>)

- \[Helm\] The PersistentVolumeClaim for the volume used to hold application
data is now retained after uninstall
(<https://github.com/opencv/cvat/pull/7123>)

- \[Helm\] All backend-related deployments now
use `cvat-app` as the value for the `app` label
(<https://github.com/opencv/cvat/pull/7127>)

- \[Helm\] The minimum compatible Kubernetes version
is now 1.19.0 (<https://github.com/opencv/cvat/pull/7132>)

- \[Helm\] The CVAT hostname can now be configured with `ingress.hostname` option
(<https://github.com/opencv/cvat/pull/7132>)

- \[Helm\] The `ingress.tls` configuration has been reworked.
(<https://github.com/opencv/cvat/pull/7132>)

- \[Helm\] The Traefik subchart updated to 25.0.0 (appVersion v2.10.5)
(<https://github.com/opencv/cvat/pull/7132>)

- \[Docker Compose\] Traefik updated to v2.10.\*
(<https://github.com/opencv/cvat/pull/7150>)

### Removed

- Support for V1 cloudstorages/id/content endpoint
(<https://github.com/opencv/cvat/pull/6946>)

- \[Helm\] `ingress.hosts` has been removed, use `ingress.hostname` instead.
(<https://github.com/opencv/cvat/pull/7132>)

### Fixed

- Fixed a data race condition during GT job creation
(<https://github.com/opencv/cvat/pull/7096>)

- Resolved an issue where the job state could not be changed
multiple times without reloading the annotation view
(<https://github.com/opencv/cvat/pull/7158>)

- Corrected an issue where compressed chunks did not
utilize the Exif rotation tag
(<https://github.com/opencv/cvat/pull/7162>)

- Minor styling issues on empty models page
(<https://github.com/opencv/cvat/pull/7164>)

- Fixed minor issue when brush marker is appended to a final mask
(<https://github.com/opencv/cvat/pull/7168>)

<a id='changelog-2.8.2'></a>
## \[2.8.2\] - 2023-11-06

Expand Down Expand Up @@ -61,8 +139,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
(<https://github.com/opencv/cvat/pull/7025>)

- Bug with viewing dependent RQ jobs for downloading resources from
cloud storage when file path contains sub-directories.
This is relevant for admins that can view detailed information about RQ queues.
cloud storage when file path contains sub-directories.
This is relevant for admins that can view detailed information about RQ queues.
(<https://github.com/opencv/cvat/pull/6975>)

- OpenCV.js memory leak with TrackerMIL
Expand Down
6 changes: 3 additions & 3 deletions CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ identifiers:
- type: doi
value: 10.5281/zenodo.4009388
repository-code: 'https://github.com/opencv/cvat'
url: 'http://cvat.ai/'
url: 'https://cvat.ai/'
abstract: >-
Annotate better with CVAT, the industry-leading
data engine for machine learning. Used and trusted
Expand All @@ -33,6 +33,6 @@ keywords:
- deep-learning
- annotation
license: MIT
version: 2.2.0
date-released: '2022-09-12'
version: 2.8.2
date-released: '2023-11-06'

6 changes: 0 additions & 6 deletions changelog.d/20231024_123046_boris_keypoints.md

This file was deleted.

4 changes: 4 additions & 0 deletions changelog.d/20231111_000533_yta56116_patch_1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
### Changed

- Update nvidia/cuda image version from 11.7.0 to 11.7.1 in transt serverless function.
(<https://github.com/opencv/cvat/pull/7124>)
4 changes: 4 additions & 0 deletions changelog.d/20231117_123912_maria_fix_cs_deletion_handling.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
### Fixed

- Reset source/target storage if related cloud storage has been deleted
(<https://github.com/opencv/cvat/pull/6801>)
193 changes: 36 additions & 157 deletions cvat-canvas/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,144 +22,16 @@ yarn run build
yarn run build --mode=development # without a minification
```

## Using

Canvas itself handles:

- Shape context menu (PKM)
- Image moving (mousedrag)
- Image resizing (mousewheel)
- Image fit (dblclick)
- Remove point (PKM)
- Polyshape editing (Shift + LKM)

### API Methods

```ts
enum RectDrawingMethod {
CLASSIC = 'By 2 points',
EXTREME_POINTS = 'By 4 points'
}

enum CuboidDrawingMethod {
CLASSIC = 'From rectangle',
CORNER_POINTS = 'By 4 points',
}

enum Mode {
IDLE = 'idle',
DRAG = 'drag',
RESIZE = 'resize',
DRAW = 'draw',
EDIT = 'edit',
MERGE = 'merge',
SPLIT = 'split',
GROUP = 'group',
INTERACT = 'interact',
SELECT_ROI = 'select_roi',
DRAG_CANVAS = 'drag_canvas',
ZOOM_CANVAS = 'zoom_canvas',
}

interface Configuration {
smoothImage?: boolean;
autoborders?: boolean;
displayAllText?: boolean;
textFontSize?: number;
textPosition?: 'auto' | 'center';
textContent?: string;
undefinedAttrValue?: string;
showProjections?: boolean;
forceDisableEditing?: boolean;
intelligentPolygonCrop?: boolean;
forceFrameUpdate?: boolean;
creationOpacity?: number;
CSSImageFilter?: string;
}

interface DrawData {
enabled: boolean;
shapeType?: string;
rectDrawingMethod?: RectDrawingMethod;
cuboidDrawingMethod?: CuboidDrawingMethod;
numberOfPoints?: number;
initialState?: any;
crosshair?: boolean;
}

interface InteractionData {
shapeType: string;
minVertices?: number;
}

interface GroupData {
enabled: boolean;
resetGroup?: boolean;
}

interface MergeData {
enabled: boolean;
}

interface SplitData {
enabled: boolean;
}

interface InteractionResult {
points: number[];
shapeType: string;
button: number;
};

interface DrawnData {
shapeType: string;
points: number[];
objectType?: string;
occluded?: boolean;
attributes?: [index: number]: string;
label?: Label;
color?: string;
}

interface Canvas {
html(): HTMLDivElement;
setup(frameData: any, objectStates: any[], zLayer?: number): void;
setupReviewROIs(reviewROIs: Record<number, number[]>): void;
activate(clientID: number | null, attributeID?: number): void;
rotate(rotationAngle: number): void;
focus(clientID: number, padding?: number): void;
fit(): void;
grid(stepX: number, stepY: number): void;

interact(interactionData: InteractionData): void;
draw(drawData: DrawData): void;
group(groupData: GroupData): void;
split(splitData: SplitData): void;
merge(mergeData: MergeData): void;
select(objectState: any): void;

fitCanvas(): void;
bitmap(enable: boolean): void;
selectROI(enable: boolean): void;
dragCanvas(enable: boolean): void;
zoomCanvas(enable: boolean): void;

mode(): Mode;
cancel(): void;
configure(configuration: Configuration): void;
isAbleToChangeFrame(): boolean;
destroy(): void;

readonly geometry: Geometry;
}
```
For API methods, their arguments and return types, please look at ``canvas.ts``.

### API CSS

- All drawn objects (shapes, tracks) have an id `cvat_canvas_shape_{objectState.clientID}`
- Drawn shapes and tracks have classes `cvat_canvas_shape`,
`cvat_canvas_shape_activated`,
`cvat_canvas_shape_grouping`,
`cvat_canvas_shape_selection`,
`cvat_canvas_shape_merging`,
`cvat_canvas_shape_drawing`,
`cvat_canvas_shape_occluded`
Expand All @@ -185,10 +57,12 @@ Standard JS events are used.
- canvas.drawn => {state: DrawnData}
- canvas.interacted => {shapes: InteractionResult[]}
- canvas.editstart
- canvas.edited => {state: ObjectState, points: number[]}
- canvas.splitted => {state: ObjectState}
- canvas.groupped => {states: ObjectState[]}
- canvas.merged => {states: ObjectState[]}
- canvas.edited => {state: ObjectState, points: number[], rotation?: number}
- canvas.splitted => {state: ObjectState, frame: number, duration: number}
- canvas.groupped => {states: ObjectState[], duration: number}
- canvas.joined => {states: ObjectState[], points: number[], duration: number}
- canvas.sliced => {state: ObjectState, results: number[][], duration: number}
- canvas.merged => {states: ObjectState[], duration: number}
- canvas.canceled
- canvas.dragstart
- canvas.dragstop
Expand All @@ -197,11 +71,13 @@ Standard JS events are used.
- canvas.zoom
- canvas.reshape
- canvas.fit
- canvas.regionselected => {points: number[]}
- canvas.dragshape => {id: number}
- canvas.roiselected => {points: number[]}
- canvas.resizeshape => {id: number}
- canvas.contextmenu => { mouseEvent: MouseEvent, objectState: ObjectState, pointID: number }
- canvas.error => { exception: Error }
- canvas.message => { messages: { type: 'text' | 'list'; content: string | string[]; className?: string; icon?: 'info' | 'loading' }[] | null, topic: string }
- canvas.error => { exception: Error, domain?: string }
- canvas.destroy
```

Expand Down Expand Up @@ -232,28 +108,31 @@ canvas.draw({

## API Reaction

| | IDLE | GROUP | SPLIT | DRAW | MERGE | EDIT | DRAG | RESIZE | ZOOM_CANVAS | DRAG_CANVAS | INTERACT |
| ----------------- | ---- | ----- | ----- | ---- | ----- | ---- | ---- | ------ | ----------- | ----------- | -------- |
| setup() | + | + | + | +/- | + | +/- | +/- | +/- | + | + | + |
| activate() | + | - | - | - | - | - | - | - | - | - | - |
| rotate() | + | + | + | + | + | + | + | + | + | + | + |
| focus() | + | + | + | + | + | + | + | + | + | + | + |
| fit() | + | + | + | + | + | + | + | + | + | + | + |
| grid() | + | + | + | + | + | + | + | + | + | + | + |
| draw() | + | - | - | + | - | - | - | - | - | - | - |
| interact() | + | - | - | - | - | - | - | - | - | - | + |
| split() | + | - | + | - | - | - | - | - | - | - | - |
| group() | + | + | - | - | - | - | - | - | - | - | - |
| merge() | + | - | - | - | + | - | - | - | - | - | - |
| fitCanvas() | + | + | + | + | + | + | + | + | + | + | + |
| dragCanvas() | + | - | - | - | - | - | + | - | - | + | - |
| zoomCanvas() | + | - | - | - | - | - | - | + | + | - | - |
| cancel() | - | + | + | + | + | + | + | + | + | + | + |
| configure() | + | + | + | + | + | + | + | + | + | + | + |
| bitmap() | + | + | + | + | + | + | + | + | + | + | + |
| setZLayer() | + | + | + | + | + | + | + | + | + | + | + |
| setupReviewROIs() | + | + | + | + | + | + | + | + | + | + | + |
| destroy() | + | + | + | + | + | + | + | + | + | + | + |
| | IDLE | GROUP | SPLIT | DRAW | MERGE | EDIT | DRAG | RESIZE | ZOOM_CANVAS | DRAG_CANVAS | INTERACT | JOIN | SLICE | SELECT_REGION |
| -------------- | ---- | ----- | ----- | ---- | ----- | ---- | ---- | ------ | ----------- | ----------- | -------- | ---- | ----- | ------------- |
| setup() | + | + | + | +/- | + | +/- | +/- | +/- | + | + | + | + | + | + |
| activate() | + | - | - | - | - | - | - | - | - | - | - | - | - | - |
| rotate() | + | + | + | + | + | + | + | + | + | + | + | + | + | + |
| focus() | + | + | + | + | + | + | + | + | + | + | + | + | + | + |
| fit() | + | + | + | + | + | + | + | + | + | + | + | + | + | + |
| grid() | + | + | + | + | + | + | + | + | + | + | + | + | + | + |
| draw() | + | - | - | + | - | - | - | - | - | - | - | - | - | - |
| interact() | + | - | - | - | - | - | - | - | - | - | + | - | - | - |
| split() | + | - | + | - | - | - | - | - | - | - | - | - | - | - |
| group() | + | + | - | - | - | - | - | - | - | - | - | - | - | - |
| merge() | + | - | - | - | + | - | - | - | - | - | - | - | - | - |
| edit() | + | - | - | - | - | + | - | - | - | - | - | - | - | - |
| join() | + | - | - | - | - | - | - | - | - | - | - | + | - | - |
| slice() | + | - | - | - | - | - | - | - | - | - | - | - | + | - |
| selectRegion() | + | - | - | - | - | - | - | - | - | - | - | - | - | + |
| fitCanvas() | + | + | + | + | + | + | + | + | + | + | + | + | + | + |
| dragCanvas() | + | - | - | - | - | - | + | - | - | + | - | - | - | - |
| zoomCanvas() | + | - | - | - | - | - | - | + | + | - | - | - | - | - |
| cancel() | - | + | + | + | + | + | + | + | + | + | + | + | + | + |
| configure() | + | + | + | + | + | + | + | + | + | + | + | + | + | + |
| bitmap() | + | + | + | + | + | + | + | + | + | + | + | + | + | + |
| setZLayer() | + | + | + | + | + | + | + | + | + | + | + | + | + | + |
| destroy() | + | + | + | + | + | + | + | + | + | + | + | + | + | + |

<!--lint enable maximum-line-length-->

Expand Down
2 changes: 1 addition & 1 deletion cvat-canvas/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "cvat-canvas",
"version": "2.18.1",
"version": "2.19.0",
"description": "Part of Computer Vision Annotation Tool which presents its canvas library",
"main": "src/canvas.ts",
"scripts": {
Expand Down
Loading

0 comments on commit 95abefe

Please sign in to comment.