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.4.6 #6278

Merged
merged 38 commits into from
Jun 9, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
960e614
Bump version for next release v2.5.0 (#6168)
azhavoro May 18, 2023
8ad485b
Fixed skeleton dumping (#6157)
bsekachev May 19, 2023
692b16c
pth-facebookresearch-sam-vit-h: add NVIDIA environment variables to t…
SpecLad May 19, 2023
df31dc7
Improve task creation with cloud storage and share data (#6074)
Marishka17 May 20, 2023
9c8b8b2
Fix development environment documentation (#6099)
yasakova-anastasia May 22, 2023
0a092f9
Bump SDK and CLI versions (#6170)
azhavoro May 22, 2023
cfe2ea3
Update Django to 4.x (#6122)
azhavoro May 22, 2023
aee9fff
Adjusted documentation to shared storage mounting (#6193)
bsekachev May 24, 2023
0a5bad7
[Snyk] Security upgrade pillow from 9.3.0 to 9.4.0 (#6092)
snyk-bot May 25, 2023
f93cbba
Bump requests from 2.26.0 to 2.31.0 in /tests/python (#6184)
dependabot[bot] May 25, 2023
6d7050d
Use new github action for getting changed files (#6114)
May 25, 2023
37d24e4
Fix linters (#6199)
May 25, 2023
36d8913
Update traefik version used in HTTPS config (#6164)
pktiuk May 26, 2023
a5cbd1a
Make serverless function naming and Docker image naming consistent (#…
SpecLad May 26, 2023
9b38f3e
Fix skeleton tracks (#6075)
May 26, 2023
23e5998
Add annotations to frontend helm template. (#6163)
senthilkumarkj May 26, 2023
ed3dbe8
Open resource links from any organization/sandbox (#5892)
klakhov May 26, 2023
87dd7ff
Switch to uvicorn (#6195)
azhavoro May 30, 2023
21503b3
analytics documentation updated (#6205)
mdacoca May 31, 2023
2584b96
Fix comments for PR 5892 (#6206)
May 31, 2023
f7fd06c
Fixed resources import (#5909)
Marishka17 Jun 2, 2023
a76428f
[Snyk] Security upgrade cryptography from 40.0.2 to 41.0.0 (#6227)
snyk-bot Jun 2, 2023
85ffdd2
Improve container debugging experience (#6211)
zhiltsov-max Jun 2, 2023
679fcad
Release notes updated (#6232)
mdacoca Jun 2, 2023
520d219
Updated CHANGELOG for v2.5.0 (#6234)
azhavoro Jun 2, 2023
75acfc5
Fix analytics tests (#6231)
azhavoro Jun 4, 2023
20f65e5
Fix nightly build (#6225)
yasakova-anastasia Jun 4, 2023
04a1f0b
Added logs for chunk cache (#6209)
azhavoro Jun 5, 2023
8df8872
Fix predefined sorting for task data (#5083)
zhiltsov-max Jun 8, 2023
504a66e
lambda manager: send signal before calling function (#6215)
Jun 8, 2023
7fa1925
Allow slashes in export filename (#6265)
klakhov Jun 8, 2023
cb207b6
Update documentation (#6270)
Jun 8, 2023
6233491
webhooks documentation updated (#6246)
mdacoca Jun 8, 2023
9fab8c5
Add dataset examples and update some links in docs (#6259)
zhiltsov-max Jun 8, 2023
e5ea213
Add support for semi-auto annotations (#6263)
pktiuk Jun 8, 2023
7181946
Error while enabling SAM on CPU (#6249)
Jun 9, 2023
aef7a98
Bump version to 2.4.6
azhavoro Jun 9, 2023
a4de2fc
Merge remote-tracking branch 'origin/master' into release-2.4.6
azhavoro Jun 9, 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
15 changes: 3 additions & 12 deletions .github/workflows/schedule.yml
Original file line number Diff line number Diff line change
Expand Up @@ -120,9 +120,6 @@ jobs:
with:
python-version: '3.8'

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Getting CVAT UI cache from the default branch
uses: actions/cache@v3
with:
Expand Down Expand Up @@ -155,9 +152,9 @@ jobs:
- name: Pull CVAT server image
run: |
docker pull ${{ steps.meta-server.outputs.tags }}
docker tag ${{ steps.meta-server.outputs.tags }} cvat/server:dev
docker tag ${{ steps.meta-server.outputs.tags }} cvat/server:local
docker tag ${{ steps.meta-server.outputs.tags }} cvat/server:latest
docker tag cvat/ui:latest cvat/ui:dev
docker tag cvat/ui:latest cvat/ui:local

- name: OPA tests
run: |
Expand Down Expand Up @@ -218,9 +215,6 @@ jobs:
with:
node-version: '16.x'

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: Login to Docker Hub
uses: docker/login-action@v2
with:
Expand Down Expand Up @@ -349,9 +343,6 @@ jobs:
steps:
- uses: actions/checkout@v3

- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2

- name: CVAT server. Extract metadata (tags, labels) for Docker
id: meta-server
uses: docker/metadata-action@master
Expand All @@ -369,7 +360,7 @@ jobs:
- name: Pull CVAT server image
run: |
docker pull ${{ steps.meta-server.outputs.tags }}
docker tag ${{ steps.meta-server.outputs.tags }} cvat/server:dev
docker tag ${{ steps.meta-server.outputs.tags }} cvat/server:local

- name: Downloading coverage results
uses: actions/download-artifact@v2
Expand Down
2 changes: 2 additions & 0 deletions .remarkignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,4 @@
cvat-sdk/docs/
cvat-sdk/README.md
.env/
site/themes/
23 changes: 23 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -270,6 +270,28 @@
"env": {},
"console": "internalConsole"
},
{
"name": "server: RQ - cleaning",
"type": "python",
"request": "launch",
"stopOnEntry": false,
"justMyCode": false,
"python": "${command:python.interpreterPath}",
"program": "${workspaceRoot}/manage.py",
"args": [
"rqworker",
"cleaning",
"--worker-class",
"cvat.rqworker.SimpleWorker"
],
"django": true,
"cwd": "${workspaceFolder}",
"env": {
"DJANGO_LOG_SERVER_HOST": "localhost",
"DJANGO_LOG_SERVER_PORT": "8282"
},
"console": "internalConsole"
},
{
"name": "server: migrate",
"type": "python",
Expand Down Expand Up @@ -433,6 +455,7 @@
"server: RQ - annotation",
"server: RQ - webhooks",
"server: RQ - scheduler",
"server: RQ - cleaning",
"server: git",
]
}
Expand Down
21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,27 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## \[2.4.6] - 2023-06-09
### Added
- \[Server API\] An option to supply custom file ordering for task data uploads (<https://github.com/opencv/cvat/pull/5083>)
- New option ``semi-auto`` is available as annotations source (<https://github.com/opencv/cvat/pull/6263>)

### Changed
- Allowed to use dataset manifest for the `predefined` sorting method for task data (<https://github.com/opencv/cvat/pull/5083>)

### Changed
- Replaced Apache mod_wsgi with Uvicorn ASGI server for backend use(<https://github.com/opencv/cvat/pull/6195>)

### Fixed
- Incorrect location of temporary file during job annotation import.(<https://github.com/opencv/cvat/pull/5909>)
- Deletion of uploaded file along with annotations/backups when an RQ job
has been initiated, but no subsequent status check requests have been made.(<https://github.com/opencv/cvat/pull/5909>)
- Deletion of uploaded files, including annotations and backups,
after they have been uploaded to the server using the TUS protocol but before an RQ job has been initiated. (<https://github.com/opencv/cvat/pull/5909>)
- Simultaneous creation of tasks or projects with identical names from backups by multiple users.(<https://github.com/opencv/cvat/pull/5909>)
- \[Server API\] The `predefined` sorting method for task data uploads (<https://github.com/opencv/cvat/pull/5083>)
- Allowed slashes in export filenames. (<https://github.com/opencv/cvat/pull/6265>)

## \[2.4.5] - 2023-06-02
### Added
- Integrated support for sharepoint and cloud storage files, along with
Expand Down
11 changes: 5 additions & 6 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ FROM ${BASE_IMAGE} as build-image-base

RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get --no-install-recommends install -yq \
apache2-dev \
curl \
g++ \
gcc \
Expand Down Expand Up @@ -42,8 +41,8 @@ RUN curl -sL https://github.com/cisco/openh264/archive/v${OPENH264_VERSION}.tar.
make -j5 && make install-shared PREFIX=${PREFIX} && make clean

WORKDIR /tmp/ffmpeg
RUN curl -sL https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.bz2 --output - | \
tar -jx --strip-components=1 && \
RUN curl -sL https://ffmpeg.org/releases/ffmpeg-${FFMPEG_VERSION}.tar.gz --output - | \
tar -zx --strip-components=1 && \
./configure --disable-nonfree --disable-gpl --enable-libopenh264 \
--enable-shared --disable-static --disable-doc --disable-programs --prefix="${PREFIX}" && \
make -j5 && make install && make clean
Expand Down Expand Up @@ -102,19 +101,18 @@ ENV DJANGO_CONFIGURATION=${DJANGO_CONFIGURATION}
# Install necessary apt packages
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get --no-install-recommends install -yq \
apache2 \
bzip2 \
ca-certificates \
curl \
git \
git-lfs \
libapache2-mod-xsendfile \
libgeos-c1v5 \
libgl1 \
libgomp1 \
libldap-2.5-0 \
libpython3.10 \
libsasl2-2 \
nginx \
p7zip-full \
poppler-utils \
python3 \
Expand Down Expand Up @@ -172,10 +170,11 @@ RUN if [ "${CVAT_DEBUG_ENABLED}" = 'yes' ]; then \
fi

# Install and initialize CVAT, copy all necessary files
COPY cvat/nginx.conf /etc/nginx/nginx.conf
COPY --chown=${USER} components /tmp/components
COPY --chown=${USER} supervisord/ ${HOME}/supervisord
COPY --chown=${USER} ssh ${HOME}/.ssh
COPY --chown=${USER} mod_wsgi.conf wait-for-it.sh manage.py ${HOME}/
COPY --chown=${USER} wait-for-it.sh manage.py backend_entrypoint.sh ${HOME}/
COPY --chown=${USER} utils/ ${HOME}/utils
COPY --chown=${USER} cvat/ ${HOME}/cvat

Expand Down
8 changes: 8 additions & 0 deletions backend_entrypoint.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
#!/bin/sh

set -e

${HOME}/wait-for-it.sh ${CVAT_POSTGRES_HOST}:5432 -t 0
python3 ${HOME}/manage.py migrate
python3 ${HOME}/manage.py collectstatic --no-input
exec /usr/bin/supervisord -c supervisord/server.conf
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.16.6",
"version": "2.16.7",
"description": "Part of Computer Vision Annotation Tool which presents its canvas library",
"main": "src/canvas.ts",
"scripts": {
Expand Down
2 changes: 1 addition & 1 deletion cvat-canvas/src/typescript/shared.ts
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ export interface DrawnState {
occluded?: boolean;
hidden?: boolean;
lock: boolean;
source: 'AUTO' | 'MANUAL';
source: 'AUTO' | 'SEMI-AUTO' | 'MANUAL';
shapeType: string;
points?: number[];
rotation: number;
Expand Down
2 changes: 1 addition & 1 deletion cvat-core/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "cvat-core",
"version": "9.1.1",
"version": "9.1.3",
"description": "Part of Computer Vision Tool which presents an interface for client-side integration",
"main": "src/api.ts",
"scripts": {
Expand Down
40 changes: 24 additions & 16 deletions cvat-core/src/annotations-objects.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,14 @@ function copyShape(state: TrackedShape, data: Partial<TrackedShape> = {}): Track
};
}

function computeNewSource(currentSource: Source): Source {
if ([Source.AUTO, Source.SEMI_AUTO].includes(currentSource)) {
return Source.SEMI_AUTO;
}

return Source.MANUAL;
}

export interface BasicInjection {
labels: Record<number, Label>;
groups: { max: number };
Expand Down Expand Up @@ -596,7 +604,7 @@ export class Shape extends Drawn {
const undoRotation = this.rotation;
const redoRotation = rotation;
const undoSource = this.source;
const redoSource = this.readOnlyFields.includes('source') ? this.source : Source.MANUAL;
const redoSource = this.readOnlyFields.includes('source') ? this.source : computeNewSource(this.source);

this.history.do(
HistoryActions.CHANGED_ROTATION,
Expand All @@ -622,7 +630,7 @@ export class Shape extends Drawn {
const undoPoints = this.points;
const redoPoints = points;
const undoSource = this.source;
const redoSource = this.readOnlyFields.includes('source') ? this.source : Source.MANUAL;
const redoSource = this.readOnlyFields.includes('source') ? this.source : computeNewSource(this.source);

this.history.do(
HistoryActions.CHANGED_POINTS,
Expand All @@ -648,7 +656,7 @@ export class Shape extends Drawn {
const undoOccluded = this.occluded;
const redoOccluded = occluded;
const undoSource = this.source;
const redoSource = this.readOnlyFields.includes('source') ? this.source : Source.MANUAL;
const redoSource = this.readOnlyFields.includes('source') ? this.source : computeNewSource(this.source);

this.history.do(
HistoryActions.CHANGED_OCCLUDED,
Expand All @@ -674,7 +682,7 @@ export class Shape extends Drawn {
const undoOutside = this.outside;
const redoOutside = outside;
const undoSource = this.source;
const redoSource = this.readOnlyFields.includes('source') ? this.source : Source.MANUAL;
const redoSource = this.readOnlyFields.includes('source') ? this.source : computeNewSource(this.source);

this.history.do(
HistoryActions.CHANGED_OCCLUDED,
Expand All @@ -700,7 +708,7 @@ export class Shape extends Drawn {
const undoZOrder = this.zOrder;
const redoZOrder = zOrder;
const undoSource = this.source;
const redoSource = this.readOnlyFields.includes('source') ? this.source : Source.MANUAL;
const redoSource = this.readOnlyFields.includes('source') ? this.source : computeNewSource(this.source);

this.history.do(
HistoryActions.CHANGED_ZORDER,
Expand Down Expand Up @@ -1179,7 +1187,7 @@ export class Track extends Drawn {
protected saveRotation(rotation: number, frame: number): void {
const wasKeyframe = frame in this.shapes;
const undoSource = this.source;
const redoSource = this.readOnlyFields.includes('source') ? this.source : Source.MANUAL;
const redoSource = this.readOnlyFields.includes('source') ? this.source : computeNewSource(this.source);
const undoShape = wasKeyframe ? this.shapes[frame] : undefined;
const redoShape = wasKeyframe ?
{ ...this.shapes[frame], rotation } : copyShape(this.get(frame), { rotation });
Expand All @@ -1199,7 +1207,7 @@ export class Track extends Drawn {
protected savePoints(points: number[], frame: number): void {
const wasKeyframe = frame in this.shapes;
const undoSource = this.source;
const redoSource = this.readOnlyFields.includes('source') ? this.source : Source.MANUAL;
const redoSource = this.readOnlyFields.includes('source') ? this.source : computeNewSource(this.source);
const undoShape = wasKeyframe ? this.shapes[frame] : undefined;
const redoShape = wasKeyframe ?
{ ...this.shapes[frame], points } : copyShape(this.get(frame), { points });
Expand All @@ -1219,7 +1227,7 @@ export class Track extends Drawn {
protected saveOutside(frame: number, outside: boolean): void {
const wasKeyframe = frame in this.shapes;
const undoSource = this.source;
const redoSource = this.readOnlyFields.includes('source') ? this.source : Source.MANUAL;
const redoSource = this.readOnlyFields.includes('source') ? this.source : computeNewSource(this.source);
const undoShape = wasKeyframe ? this.shapes[frame] : undefined;
const redoShape = wasKeyframe ?
{ ...this.shapes[frame], outside } :
Expand All @@ -1240,7 +1248,7 @@ export class Track extends Drawn {
protected saveOccluded(occluded: boolean, frame: number): void {
const wasKeyframe = frame in this.shapes;
const undoSource = this.source;
const redoSource = this.readOnlyFields.includes('source') ? this.source : Source.MANUAL;
const redoSource = this.readOnlyFields.includes('source') ? this.source : computeNewSource(this.source);
const undoShape = wasKeyframe ? this.shapes[frame] : undefined;
const redoShape = wasKeyframe ?
{ ...this.shapes[frame], occluded } :
Expand All @@ -1261,7 +1269,7 @@ export class Track extends Drawn {
protected saveZOrder(zOrder: number, frame: number): void {
const wasKeyframe = frame in this.shapes;
const undoSource = this.source;
const redoSource = this.readOnlyFields.includes('source') ? this.source : Source.MANUAL;
const redoSource = this.readOnlyFields.includes('source') ? this.source : computeNewSource(this.source);
const undoShape = wasKeyframe ? this.shapes[frame] : undefined;
const redoShape = wasKeyframe ?
{ ...this.shapes[frame], zOrder } :
Expand All @@ -1287,7 +1295,7 @@ export class Track extends Drawn {
}

const undoSource = this.source;
const redoSource = this.readOnlyFields.includes('source') ? this.source : Source.MANUAL;
const redoSource = this.readOnlyFields.includes('source') ? this.source : computeNewSource(this.source);
const undoShape = wasKeyframe ? this.shapes[frame] : undefined;
const redoShape = keyframe ? copyShape(this.get(frame)) : undefined;

Expand Down Expand Up @@ -2027,7 +2035,7 @@ export class SkeletonShape extends Shape {
protected saveRotation(rotation, frame): void {
const undoSkeletonPoints = this.elements.map((element) => element.points);
const undoSource = this.source;
const redoSource = this.readOnlyFields.includes('source') ? this.source : Source.MANUAL;
const redoSource = this.readOnlyFields.includes('source') ? this.source : computeNewSource(this.source);

const bbox = computeWrappingBox(undoSkeletonPoints.flat());
const [cx, cy] = [bbox.x + bbox.width / 2, bbox.y + bbox.height / 2];
Expand Down Expand Up @@ -2075,7 +2083,7 @@ export class SkeletonShape extends Shape {
const updateElements = (affectedElements, action, property: 'points' | 'occluded' | 'hidden' | 'lock') => {
const undoSkeletonProperties = this.elements.map((element) => element[property]);
const undoSource = this.source;
const redoSource = this.readOnlyFields.includes('source') ? this.source : Source.MANUAL;
const redoSource = this.readOnlyFields.includes('source') ? this.source : computeNewSource(this.source);

try {
this.history.freeze(true);
Expand Down Expand Up @@ -2246,7 +2254,7 @@ export class MaskShape extends Shape {
const points = mask2Rle(maskPoints);

const redoPoints = points;
const redoSource = Source.MANUAL;
const redoSource = computeNewSource(this.source);

const undo = (): void => {
this.points = undoPoints;
Expand Down Expand Up @@ -2807,7 +2815,7 @@ export class SkeletonTrack extends Track {
protected saveRotation(rotation: number, frame: number): void {
const undoSkeletonShapes = this.elements.map((element) => element.shapes[frame]);
const undoSource = this.source;
const redoSource = this.readOnlyFields.includes('source') ? this.source : Source.MANUAL;
const redoSource = this.readOnlyFields.includes('source') ? this.source : computeNewSource(this.source);

const elementsData = this.elements.map((element) => element.get(frame));
const skeletonPoints = elementsData.map((data) => data.points);
Expand Down Expand Up @@ -2952,7 +2960,7 @@ export class SkeletonTrack extends Track {
const undoSkeletonProperties = this.elements.map((element) => element[property] || null);
const undoSkeletonShapes = this.elements.map((element) => element.shapes[frame]);
const undoSource = this.source;
const redoSource = this.readOnlyFields.includes('source') ? this.source : Source.MANUAL;
const redoSource = this.readOnlyFields.includes('source') ? this.source : computeNewSource(this.source);

const errors = [];
try {
Expand Down
1 change: 1 addition & 0 deletions cvat-core/src/enums.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ export enum ShapeType {

export enum Source {
MANUAL = 'manual',
SEMI_AUTO = 'semi-auto',
AUTO = 'auto',
}

Expand Down
2 changes: 1 addition & 1 deletion cvat-core/src/object-state.ts
Original file line number Diff line number Diff line change
Expand Up @@ -454,7 +454,7 @@ export default class ObjectState {
}),
);

if ([Source.MANUAL, Source.AUTO].includes(serialized.source)) {
if ([Source.MANUAL, Source.SEMI_AUTO, Source.AUTO].includes(serialized.source)) {
data.source = serialized.source;
}
if (typeof serialized.zOrder === 'number') {
Expand Down
Loading