From 36fdcea8d6cc077e91ab6a59188ca4310f5060c5 Mon Sep 17 00:00:00 2001 From: Kirill Lakhov Date: Thu, 28 Jul 2022 10:56:54 +0300 Subject: [PATCH] OpenCV.js caching and autoload (#30) --- CHANGELOG.md | 1 + cvat-ui/package.json | 2 +- .../handle-popover-visibility.tsx | 10 +- .../controls-side-bar/opencv-control.tsx | 94 ++++++++++-------- .../standard-workspace/styles.scss | 4 + .../utils/opencv-wrapper/opencv-wrapper.ts | 27 ++++- cvat/apps/opencv/views.py | 4 +- .../en/docs/manual/advanced/opencv-tools.md | 3 +- site/content/en/images/image198.jpg | Bin 5936 -> 13302 bytes site/content/en/images/image199.jpg | Bin 9096 -> 19386 bytes site/content/en/images/image221.jpg | Bin 5636 -> 15357 bytes .../case_101_opencv_basic_actions.js | 4 +- 12 files changed, 100 insertions(+), 49 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 21cc1932..1d99f096 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added Python SDK package (`cvat-sdk`) - Previews for jobs - Documentation for LDAP authentication () +- OpenCV.js caching and autoload () - Publishing dev version of CVAT docker images () ### Changed diff --git a/cvat-ui/package.json b/cvat-ui/package.json index b5aaddf3..36e245ba 100644 --- a/cvat-ui/package.json +++ b/cvat-ui/package.json @@ -1,6 +1,6 @@ { "name": "cvat-ui", - "version": "1.40.0", + "version": "1.40.1", "description": "CVAT single-page application", "main": "src/index.tsx", "scripts": { diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/controls-side-bar/handle-popover-visibility.tsx b/cvat-ui/src/components/annotation-page/standard-workspace/controls-side-bar/handle-popover-visibility.tsx index 1c35b208..23850c86 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/controls-side-bar/handle-popover-visibility.tsx +++ b/cvat-ui/src/components/annotation-page/standard-workspace/controls-side-bar/handle-popover-visibility.tsx @@ -5,10 +5,15 @@ import React, { useState } from 'react'; import Popover, { PopoverProps } from 'antd/lib/popover'; +interface OwnProps { + overlayClassName?: string; + onVisibleChange?: (visible: boolean) => void; +} + export default function withVisibilityHandling(WrappedComponent: typeof Popover, popoverType: string) { - return (props: PopoverProps): JSX.Element => { + return (props: OwnProps & PopoverProps): JSX.Element => { const [visible, setVisible] = useState(false); - const { overlayClassName, ...rest } = props; + const { overlayClassName, onVisibleChange, ...rest } = props; const overlayClassNames = typeof overlayClassName === 'string' ? overlayClassName.split(/\s+/) : []; const popoverClassName = `cvat-${popoverType}-popover`; overlayClassNames.push(popoverClassName); @@ -34,6 +39,7 @@ export default function withVisibilityHandling(WrappedComponent: typeof Popover, } } setVisible(_visible); + if (onVisibleChange) onVisibleChange(_visible); }} /> ); diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/controls-side-bar/opencv-control.tsx b/cvat-ui/src/components/annotation-page/standard-workspace/controls-side-bar/opencv-control.tsx index 3101e367..511a56cf 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/controls-side-bar/opencv-control.tsx +++ b/cvat-ui/src/components/annotation-page/standard-workspace/controls-side-bar/opencv-control.tsx @@ -210,6 +210,7 @@ class OpenCVControlComponent extends React.PureComponent => { @@ -286,7 +287,7 @@ class OpenCVControlComponent extends React.PureComponent { shape.shapePoints = points; - }).catch((error) => { + }).catch((error: any) => { reject(error); }); } @@ -590,6 +591,33 @@ class OpenCVControlComponent extends React.PureComponent { + try { + this.setState({ + initializationError: false, + initializationProgress: 0, + }); + await openCVWrapper.initialize((progress: number) => { + this.setState({ initializationProgress: progress }); + }); + const trackers = Object.values(openCVWrapper.tracking); + this.setState({ + libraryInitialized: true, + activeTracker: trackers[0], + trackers, + }); + } catch (error: any) { + notification.error({ + description: error.toString(), + message: 'Could not initialize OpenCV library', + }); + this.setState({ + initializationError: true, + initializationProgress: -1, + }); + } + } + private renderDrawingContent(): JSX.Element { const { activeLabelID } = this.state; const { labels, canvasInstance, onInteractionStart } = this.props; @@ -773,42 +801,21 @@ class OpenCVControlComponent extends React.PureComponent - = 0 ? 17 : 24}> - + + { + initializationProgress >= 0 ? + OpenCV is loading : ( + + ) + } {initializationProgress >= 0 && ( - + { - if (libraryInitialized !== openCVWrapper.isInitialized) { + onVisibleChange={(visible: boolean) => { + const { initializationProgress } = this.state; + if (!visible || initializationProgress >= 0) return; + + if (!openCVWrapper.isInitialized || openCVWrapper.initializationInProgress) { + this.initializeOpenCV(); + } else if (libraryInitialized !== openCVWrapper.isInitialized) { this.setState({ libraryInitialized: openCVWrapper.isInitialized, }); diff --git a/cvat-ui/src/components/annotation-page/standard-workspace/styles.scss b/cvat-ui/src/components/annotation-page/standard-workspace/styles.scss index a3fc7e59..fc785379 100644 --- a/cvat-ui/src/components/annotation-page/standard-workspace/styles.scss +++ b/cvat-ui/src/components/annotation-page/standard-workspace/styles.scss @@ -226,6 +226,10 @@ width: $grid-unit-size * 14; justify-content: center; } + + .ant-progress { + margin-left: $grid-unit-size; + } } .cvat-opencv-initialization-button { diff --git a/cvat-ui/src/utils/opencv-wrapper/opencv-wrapper.ts b/cvat-ui/src/utils/opencv-wrapper/opencv-wrapper.ts index cd6097a9..589168b4 100644 --- a/cvat-ui/src/utils/opencv-wrapper/opencv-wrapper.ts +++ b/cvat-ui/src/utils/opencv-wrapper/opencv-wrapper.ts @@ -30,13 +30,17 @@ export interface Tracking { export class OpenCVWrapper { private initialized: boolean; private cv: any; + private onProgress: ((percent: number) => void) | null; + private injectionProcess: Promise | null; public constructor() { this.initialized = false; this.cv = null; + this.onProgress = null; + this.injectionProcess = null; } - public async initialize(onProgress: (percent: number) => void): Promise { + private async inject(): Promise { const response = await fetch(`${baseURL}/opencv/opencv.js`); if (response.status !== 200) { throw new Error(`Response status ${response.status}. ${response.statusText}`); @@ -67,7 +71,7 @@ export class OpenCVWrapper { // Cypress workaround: content-length is always zero in cypress, it is done optional here // Just progress bar will be disabled const percentage = contentLength ? (receivedLength * 100) / +(contentLength as string) : 0; - onProgress(+percentage.toFixed(0)); + if (this.onProgress) this.onProgress(+percentage.toFixed(0)); } } @@ -79,13 +83,32 @@ export class OpenCVWrapper { const global = window as any; this.cv = await global.cv; + } + + public async initialize(onProgress: (percent: number) => void): Promise { + this.onProgress = onProgress; + + if (!this.injectionProcess) { + this.injectionProcess = this.inject(); + } + await this.injectionProcess; + + this.injectionProcess = null; this.initialized = true; } + public removeProgressCallback(): void { + this.onProgress = null; + } + public get isInitialized(): boolean { return this.initialized; } + public get initializationInProgress(): boolean { + return !!this.injectionProcess; + } + public get contours(): Contours { if (!this.initialized) { throw new Error('Need to initialize OpenCV first'); diff --git a/cvat/apps/opencv/views.py b/cvat/apps/opencv/views.py index d0b3b265..3090ad68 100644 --- a/cvat/apps/opencv/views.py +++ b/cvat/apps/opencv/views.py @@ -7,4 +7,6 @@ def OpenCVLibrary(request): dirname = os.path.join(settings.STATIC_ROOT, 'opencv', 'js') pattern = os.path.join(dirname, 'opencv_*.js') path = glob.glob(pattern)[0] - return sendfile(request, path) + response = sendfile(request, path) + response['Cache-Control'] = "public, max-age=604800" + return response diff --git a/site/content/en/docs/manual/advanced/opencv-tools.md b/site/content/en/docs/manual/advanced/opencv-tools.md index 1b5093b9..c0484037 100644 --- a/site/content/en/docs/manual/advanced/opencv-tools.md +++ b/site/content/en/docs/manual/advanced/opencv-tools.md @@ -9,7 +9,8 @@ The tool based on [Open CV](https://opencv.org/) Computer Vision library which is an open-source product that includes many CV algorithms. Some of these algorithms can be used to simplify the annotation process. -First step to work with OpenCV is to load it into CVAT. Click on the toolbar icon, then click `Load OpenCV`. +First step to work with OpenCV is to load it into CVAT. +Click on the toolbar icon, library will be downloaded automatically. ![](/images/image198.jpg) diff --git a/site/content/en/images/image198.jpg b/site/content/en/images/image198.jpg index 049e22c0279d476f75579f03c7ce8295164113c7..05aecae914f728b9886888a164261c5a47fc670f 100644 GIT binary patch literal 13302 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
  • k*kY&%xQZ#>%PkCYFpZ~+28KkzX`OdNK#;V#f1s;|Lv9SwQZ|nWMz%k zG!BqUG58ewQ->tb(Bj>5*{pO5SfuNjM?}QfdN?f_8FPT1_V!m{$dVYpnEJP*a{8EZ zPcpSVK>*c?1!?d&M1)zbhv#@R1pLiCUN!7B$GT>7Lb1`WjVr%kS<|d*0H{gN>(7@L zlxT20Ot_owQ6qYQ@gd(!E-tZmCT?!c+lcntxcVwYL~*&R6U0Hn?;!pwxvewK+|?E2 z{IJ_&FBSp_jb>d^rr_x&bz9VBFcJTd)Oi`gQwE<~Edhzivj@sGSqkT}oX-rV^k}pd zo?RG4JVcUqx{6JKd!`1gvhnIN-ki?z0^5`>!rD27D`3NXWdrZ$w<9d2rP5~DX9I(W zHJ@_`Q|(Yb5DQlv!^Bn55E757F`P#t_~%+y`>8QQ>f)E4vYIvgciskji0s3FGwTyyUzA*#OxS!;RZ-sy`< zVN}Nxo<5_7Env_7 z&21N#uP}Z|r!3`~k`e&}zvw3lx)592yv=YL70Fj&2~vS=pAJI44pgoxXmJ<)>P`*C z4qIa?zqIV8P>}y_lbySAhf&Voik!%BVl2$9p(lHrn!#W6%5lLYF|FziXQyLc5%0s~q2y|d5%8k#<>%qe5xG~B+oMCz z%T*rn2D0tv#y70o-DZzHGALCR^{;3Bi;4LQkCMGXF->kyg#N|+h5y4@zgc$;KotYR zLPVGMD-{&}(8h~9qOou76+#;W$?OY+9ZQD<lmyPzgQob#`odJjijcg5!0Y(A<000CGfCL5#2Ki3@BfKpG z0s$cZ`2hN70Q*PyCw5R!5Kz#6Wc+7|w;lj8G++T_1q=ik0E!F(h79u72f_mY0lXLX zTj_s)UvNkWC{QqH7!X*v_e2ngf6fDdfq;TTKte&oz#;(v;NW23(BKf@V88Q%fkT3T zLO`KoKr^AD!4NUZBcm|0VAKydWXKVGv

    k(4EYT|oXKwzk{AKTkM*n~W97ZqgyH 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 YU*pz7EGh@wV`=*UvRc|b`)%?60gfE@r2qf` literal 9096 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 diff --git a/site/content/en/images/image221.jpg b/site/content/en/images/image221.jpg index eb1bf352eac12215a483d31028b16567595bc46c..31c695293693930170f4ff84fe33ee4e49ea6ca3 100644 GIT binary patch literal 15357 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 K`(G5kE&o5D= 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 SNRai30GTI|k_Vp-r~V6g-SZj% diff --git a/tests/cypress/integration/actions_tasks2/case_101_opencv_basic_actions.js b/tests/cypress/integration/actions_tasks2/case_101_opencv_basic_actions.js index 25341b8f..cbfd1b09 100644 --- a/tests/cypress/integration/actions_tasks2/case_101_opencv_basic_actions.js +++ b/tests/cypress/integration/actions_tasks2/case_101_opencv_basic_actions.js @@ -80,7 +80,9 @@ context('OpenCV. Intelligent scissors. Histogram Equalization. TrackerMIL.', () describe(`Testing case "${caseId}"`, () => { it('Load OpenCV.', () => { cy.interactOpenCVControlButton(); - cy.get('.cvat-opencv-control-popover').find('.cvat-opencv-initialization-button').click(); + cy.get('.cvat-opencv-control-popover').within(() => { + cy.contains('OpenCV is loading').should('not.exist'); + }); // Intelligent cissors button be visible cy.get('.cvat-opencv-drawing-tool').should('exist').and('be.visible'); });