Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release v2.9.0 #7169

Merged
merged 30 commits into from
Nov 23, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
630770e
Added skeleton keypoints detector COCO Whole Body (#7033)
bsekachev Nov 6, 2023
fda007b
Update develop after v2.8.2
cvat-bot[bot] Nov 6, 2023
3774e85
Update develop after v2.8.2 (#7104)
cvat-bot[bot] Nov 7, 2023
0f58426
Remove usages of datetime.utcfromtimestamp (#7102)
SpecLad Nov 7, 2023
40cb454
Documentation: invite user outside of the organization (#7074)
mdacoca Nov 7, 2023
92f5181
Handle task creation with unsupported data types from cloud storage w…
Marishka17 Nov 7, 2023
1ef6ba0
Fix GT job creation races (#7096)
zhiltsov-max Nov 7, 2023
118cc72
Update keydb to 6.3.4 (#7118)
azhavoro Nov 9, 2023
c87cb3b
Removed functions code && supported functions plugin (#5979)
klakhov Nov 9, 2023
6eb3ef4
Helm: keep the data PersistentVolumeClaim after uninstall (#7123)
SpecLad Nov 10, 2023
e1d4f30
Documentation: user roles updated (#7120)
mdacoca Nov 13, 2023
4e2df00
Removed not relevant FAQ item (#7137)
bsekachev Nov 14, 2023
401989d
Added new tools to join masks together and to slice a polygon/mask in…
bsekachev Nov 14, 2023
8d2d1b1
helm-chart: make backend templates more uniform (#7127)
SpecLad Nov 15, 2023
ea287e3
Update traefik to 2.10.* (#7150)
azhavoro Nov 16, 2023
6354472
helm-chart: add a way to easily set parameters for all backend pods (…
SpecLad Nov 16, 2023
f1f6e78
[Helm] update ingress templates (#7132)
azhavoro Nov 16, 2023
6ae1cff
Turn on Traefik access logs (#7109)
SpecLad Nov 17, 2023
e569fa3
added information about prefix (#7147)
mdacoca Nov 17, 2023
a9a98b3
Update CITATION.cff (#7140)
bsekachev Nov 20, 2023
bb579e8
Fixed multiple changing job state (#7158)
bsekachev Nov 22, 2023
dcaf115
Organization workflow guide (#7143)
mdacoca Nov 22, 2023
fe21844
Limit 1 user to 1 active task at a time (#7106)
Marishka17 Nov 22, 2023
410ea0b
Fixed missed exif rotation (#7162)
bsekachev Nov 22, 2023
e530ebb
Remove cloudstorages/id/content endpoint (#6946)
Marishka17 Nov 22, 2023
e401679
Fix UX issues on models page (#7164)
klakhov Nov 23, 2023
1b0f719
Fixed drawn marker (#7168)
bsekachev Nov 23, 2023
791ba7f
Merge pull request #7166 from opencv/dev-release-2.8.2
SpecLad Nov 23, 2023
41dd850
Prepare release v2.9.0
cvat-bot[bot] Nov 23, 2023
e465c1e
release notes update
mdacoca Nov 22, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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/upload-artifact@v3.1.1
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'

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
Loading