coralnet-toolbox 0.0.74__tar.gz → 0.0.76__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/PKG-INFO +13 -10
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/README.md +7 -7
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Annotations/QtPolygonAnnotation.py +57 -12
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Annotations/QtRectangleAnnotation.py +44 -14
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Explorer/QtDataItem.py +52 -22
- coralnet_toolbox-0.0.76/coralnet_toolbox/Explorer/QtExplorer.py +1757 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Explorer/QtSettingsWidgets.py +101 -15
- coralnet_toolbox-0.0.76/coralnet_toolbox/Explorer/QtViewers.py +1568 -0
- coralnet_toolbox-0.0.76/coralnet_toolbox/Explorer/transformer_models.py +70 -0
- coralnet_toolbox-0.0.76/coralnet_toolbox/Explorer/yolo_models.py +112 -0
- coralnet_toolbox-0.0.76/coralnet_toolbox/IO/QtExportMaskAnnotations.py +727 -0
- coralnet_toolbox-0.0.76/coralnet_toolbox/Icons/system_monitor.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/ImportDataset/QtBase.py +239 -147
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/run.py +102 -16
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/QtAnnotationWindow.py +16 -10
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/QtEventFilter.py +4 -4
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/QtImageWindow.py +3 -7
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/QtMainWindow.py +104 -64
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/QtProgressBar.py +1 -0
- coralnet_toolbox-0.0.76/coralnet_toolbox/QtSystemMonitor.py +370 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Rasters/RasterTableModel.py +20 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Results/ConvertResults.py +14 -8
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Results/ResultsProcessor.py +3 -2
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/SAM/QtDeployGenerator.py +2 -5
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/SAM/QtDeployPredictor.py +11 -3
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/SeeAnything/QtDeployGenerator.py +146 -116
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/SeeAnything/QtDeployPredictor.py +55 -9
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tile/QtTileBatchInference.py +4 -4
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tools/QtPolygonTool.py +42 -3
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tools/QtRectangleTool.py +30 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tools/QtSAMTool.py +140 -91
- coralnet_toolbox-0.0.76/coralnet_toolbox/Transformers/Models/GroundingDINO.py +72 -0
- coralnet_toolbox-0.0.76/coralnet_toolbox/Transformers/Models/OWLViT.py +72 -0
- coralnet_toolbox-0.0.76/coralnet_toolbox/Transformers/Models/OmDetTurbo.py +68 -0
- coralnet_toolbox-0.0.76/coralnet_toolbox/Transformers/Models/QtBase.py +120 -0
- {coralnet_toolbox-0.0.74/coralnet_toolbox/AutoDistill → coralnet_toolbox-0.0.76/coralnet_toolbox/Transformers}/Models/__init__.py +1 -1
- {coralnet_toolbox-0.0.74/coralnet_toolbox/AutoDistill → coralnet_toolbox-0.0.76/coralnet_toolbox/Transformers}/QtBatchInference.py +15 -15
- {coralnet_toolbox-0.0.74/coralnet_toolbox/AutoDistill → coralnet_toolbox-0.0.76/coralnet_toolbox/Transformers}/QtDeployModel.py +18 -16
- {coralnet_toolbox-0.0.74/coralnet_toolbox/AutoDistill → coralnet_toolbox-0.0.76/coralnet_toolbox/Transformers}/__init__.py +1 -1
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/__init__.py +1 -1
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/utilities.py +21 -15
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox.egg-info/PKG-INFO +13 -10
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox.egg-info/SOURCES.txt +15 -9
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox.egg-info/requires.txt +5 -2
- coralnet_toolbox-0.0.76/diagram.svg +1 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/mkdocs.yml +1 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/pyproject.toml +2 -2
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/requirements.txt +5 -2
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/uv.lock +598 -498
- coralnet_toolbox-0.0.74/coralnet_toolbox/AutoDistill/Models/GroundingDINO.py +0 -81
- coralnet_toolbox-0.0.74/coralnet_toolbox/AutoDistill/Models/OWLViT.py +0 -76
- coralnet_toolbox-0.0.74/coralnet_toolbox/AutoDistill/Models/OmDetTurbo.py +0 -75
- coralnet_toolbox-0.0.74/coralnet_toolbox/AutoDistill/Models/QtBase.py +0 -112
- coralnet_toolbox-0.0.74/coralnet_toolbox/Explorer/QtExplorer.py +0 -3080
- coralnet_toolbox-0.0.74/coralnet_toolbox/IO/QtExportMaskAnnotations.py +0 -592
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/.editorconfig +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/.gitallowed +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/.github/ISSUE_TEMPLATE/general_question.md +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/.github/workflows/diagram.yml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/.github/workflows/docs-build.yml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/.github/workflows/docs.yml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/.github/workflows/installation.yml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/.github/workflows/macos.yml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/.github/workflows/pypi.yml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/.github/workflows/ubuntu.yml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/.github/workflows/windows.yml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/.gitignore +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/LICENSE.txt +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/MANIFEST.in +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Annotations/QtAnnotation.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Annotations/QtMaskAnnotation.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Annotations/QtMultiPolygonAnnotation.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Annotations/QtPatchAnnotation.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Annotations/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/BreakTime/QtBreakout.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/BreakTime/QtSnake.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/BreakTime/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Common/QtGraphicsUtility.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Common/QtMarginInput.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Common/QtOverlapInput.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Common/QtTileSizeInput.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Common/QtUpdateImagePaths.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/CoralNet/QtAuthenticate.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/CoralNet/QtDownload.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/CoralNet/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Explorer/QtFeatureStore.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Explorer/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/IO/QtExportAnnotations.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/IO/QtExportCoralNetAnnotations.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/IO/QtExportGeoJSONAnnotations.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/IO/QtExportLabels.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/IO/QtExportTagLabAnnotations.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/IO/QtExportTagLabLabels.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/IO/QtExportViscoreAnnotations.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/IO/QtImportAnnotations.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/IO/QtImportCoralNetAnnotations.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/IO/QtImportCoralNetLabels.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/IO/QtImportFrames.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/IO/QtImportImages.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/IO/QtImportLabels.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/IO/QtImportTagLabAnnotations.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/IO/QtImportTagLabLabels.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/IO/QtImportViscoreAnnotations.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/IO/QtOpenProject.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/IO/QtSaveProject.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/IO/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/1.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/2.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/3.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/4.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/5.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/add.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/all.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/apple.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/breakout.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/coral.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/edit.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/eye.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/hide.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/home.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/lock.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/machine.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/magic.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/opaque.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/parameters.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/patch.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/polygon.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/rabbit.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/rectangle.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/remove.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/rocket.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/select.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/settings.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/snake.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/target.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/tile.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/transparent.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/turtle.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/unlock.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/user.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/wizard.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/workarea.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Icons/www.png +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/BatchInference/QtBase.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/BatchInference/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/BatchInference/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/BatchInference/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/BatchInference/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/Community/cfg/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/Community/cfg/classify/convnext_tiny.yaml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/Community/cfg/classify/efficientnet_b0.yaml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/Community/cfg/classify/mobilenet_v3_large.yaml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/Community/cfg/classify/swin_t.yaml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/Community/cfg/detect/convnext_tiny.yaml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/Community/cfg/detect/mobilenet_v3_large-fpn.yaml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/Community/cfg/detect/mobilenet_v3_small-fpn.yaml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/Community/cfg/detect/resnet101.yaml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/Community/cfg/detect/swin_t-fpn.yaml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/Community/cfg/detect/swin_t.yaml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/Community/cfg/detect/yolo11-p2.yaml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/Community/cfg/detect/yolo11-p6.yaml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/Community/cfg/segment/convnext_tiny.yaml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/Community/cfg/segment/swin_t-fpn.yaml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/Community/cfg/segment/swin_t.yaml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/Community/cfg/segment/yolo11-p2.yaml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/Community/cfg/segment/yolo11-p6.yaml +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/ConfusionMatrix.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/DeployModel/QtBase.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/DeployModel/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/DeployModel/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/DeployModel/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/DeployModel/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/EvaluateModel/QtBase.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/EvaluateModel/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/EvaluateModel/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/EvaluateModel/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/EvaluateModel/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/ExportDataset/QtBase.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/ExportDataset/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/ExportDataset/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/ExportDataset/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/ExportDataset/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/ImportDataset/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/ImportDataset/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/ImportDataset/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/MergeDatasets/QtBase.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/MergeDatasets/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/MergeDatasets/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/OptimizeModel/QtBase.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/OptimizeModel/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/TrainModel/QtBase.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/TrainModel/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/TrainModel/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/TrainModel/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/TrainModel/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/TuneModel/QtBase.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/TuneModel/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/TuneModel/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/TuneModel/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/TuneModel/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/TuneModel/tuner.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/VideoInference/QtBase.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/VideoInference/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/VideoInference/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/VideoInference/QtInference.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/VideoInference/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/VideoInference/QtVideoWidget.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/bbox3d_utils.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/depth_model.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/detection_model.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/VideoInference/YOLO3D/load_camera_params.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/VideoInference/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/VideoInference/analytics.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/WeightedDataset.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/MachineLearning/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/QtConfidenceWindow.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/QtLabelWindow.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/QtPatchSampling.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/QtWorkArea.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Rasters/ImageFilter.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Rasters/QtRaster.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Rasters/RasterManager.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Rasters/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Results/CombineResults.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Results/MapResults.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Results/Masks.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Results/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/SAM/QtBatchInference.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/SAM/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/SeeAnything/QtBatchInference.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/SeeAnything/QtTrainModel.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/SeeAnything/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tile/QtTileCreation.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tile/TileDataset/QtBase.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tile/TileDataset/QtClassify.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tile/TileDataset/QtDetect.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tile/TileDataset/QtSegment.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tile/TileDataset/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tile/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tools/QtCutSubTool.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tools/QtMoveSubTool.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tools/QtPanTool.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tools/QtPatchTool.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tools/QtResizeSubTool.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tools/QtSeeAnythingTool.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tools/QtSelectSubTool.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tools/QtSelectTool.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tools/QtSubTool.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tools/QtSubtractSubTool.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tools/QtTool.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tools/QtWorkAreaTool.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tools/QtZoomTool.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/Tools/__init__.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox/main.py +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox.egg-info/dependency_links.txt +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox.egg-info/entry_points.txt +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/coralnet_toolbox.egg-info/top_level.txt +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/requirements_dev.txt +0 -0
- {coralnet_toolbox-0.0.74 → coralnet_toolbox-0.0.76}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: coralnet-toolbox
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.76
|
4
4
|
Summary: Tools for annotating and developing ML models for benthic imagery
|
5
5
|
Author-email: Jordan Pierce <jordan.pierce@noaa.gov>
|
6
6
|
License: MIT License
|
@@ -16,7 +16,7 @@ License-File: LICENSE.txt
|
|
16
16
|
Requires-Dist: PyQt5>=5.15.11
|
17
17
|
Requires-Dist: pyqtdarktheme
|
18
18
|
Requires-Dist: pyqtgraph
|
19
|
-
Requires-Dist: ultralytics>=8.3.
|
19
|
+
Requires-Dist: ultralytics>=8.3.191
|
20
20
|
Requires-Dist: lap>=0.5.12
|
21
21
|
Requires-Dist: open-clip-torch>=2.20.0
|
22
22
|
Requires-Dist: supervision>=0.24.0
|
@@ -27,7 +27,8 @@ Requires-Dist: pycocotools
|
|
27
27
|
Requires-Dist: ujson
|
28
28
|
Requires-Dist: timm==0.9.2
|
29
29
|
Requires-Dist: autodistill
|
30
|
-
Requires-Dist: transformers>=4.
|
30
|
+
Requires-Dist: transformers>=4.56.0
|
31
|
+
Requires-Dist: hf_xet
|
31
32
|
Requires-Dist: x-segment-anything>=0.0.8
|
32
33
|
Requires-Dist: yolo-tiling>=0.0.19
|
33
34
|
Requires-Dist: roboflow
|
@@ -38,6 +39,8 @@ Requires-Dist: beautifulsoup4>=4.12.2
|
|
38
39
|
Requires-Dist: webdriver_manager
|
39
40
|
Requires-Dist: dill
|
40
41
|
Requires-Dist: seaborn
|
42
|
+
Requires-Dist: GPUtil
|
43
|
+
Requires-Dist: psutil
|
41
44
|
Provides-Extra: all
|
42
45
|
Requires-Dist: coralnet-toolbox[extra]; extra == "all"
|
43
46
|
Dynamic: license-file
|
@@ -113,6 +116,7 @@ For a complete installation guide (including CUDA setup), see the [Installation
|
|
113
116
|
| **Overview** | Get the big picture | [📋 Read More](https://jordan-pierce.github.io/CoralNet-Toolbox/overview) |
|
114
117
|
| **Installation** | Detailed setup instructions | [⚙️ Setup Guide](https://jordan-pierce.github.io/CoralNet-Toolbox/installation) |
|
115
118
|
| **Usage** | Learn the tools | [🛠️ User Manual](https://jordan-pierce.github.io/CoralNet-Toolbox/usage) |
|
119
|
+
| **Hot Keys** | Keyboard shortcuts | [⌨️ Shortcuts](https://jordan-pierce.github.io/CoralNet-Toolbox/hot-keys) |
|
116
120
|
| **Classification** | Community tutorial | [🧠 AI Tutorial](https://jordan-pierce.github.io/CoralNet-Toolbox/classify) |
|
117
121
|
|
118
122
|
</div>
|
@@ -178,7 +182,7 @@ The toolbox integrates state-of-the-art models for efficient annotation workflow
|
|
178
182
|
| **Framework** | **Models** | **Capability** |
|
179
183
|
|:---:|:---:|:---:|
|
180
184
|
| **YOLOE** | See Anything | Visual prompt detection |
|
181
|
-
| **
|
185
|
+
| **Transformers** | Grounding DINO • OWLViT • OmDetTurbo | Zero-shot detection |
|
182
186
|
|
183
187
|
</div>
|
184
188
|
|
@@ -276,12 +280,9 @@ uv pip install coralnet-toolbox
|
|
276
280
|
### 🚀 **Step 3: GPU Acceleration (Optional)**
|
277
281
|
For CUDA-enabled systems:
|
278
282
|
```bash
|
279
|
-
# Example for CUDA
|
280
|
-
conda install nvidia/label/cuda-11.8.0::cuda-nvcc -y
|
281
|
-
conda install nvidia/label/cuda-11.8.0::cuda-toolkit -y
|
282
|
-
|
283
|
+
# Example for CUDA 12.9
|
283
284
|
# Install PyTorch with CUDA support
|
284
|
-
uv pip install torch torchvision --index-url https://download.pytorch.org/whl/
|
285
|
+
uv pip install torch torchvision --index-url https://download.pytorch.org/whl/cu129 --upgrade
|
285
286
|
```
|
286
287
|
|
287
288
|
### 🏃♂️ **Step 4: Launch**
|
@@ -308,7 +309,9 @@ uv pip install -U coralnet-toolbox==[latest_version]
|
|
308
309
|
### 🏗️ **Repository Structure**
|
309
310
|
|
310
311
|
<div align="center">
|
311
|
-
|
312
|
+
<a href="https://raw.githubusercontent.com/Jordan-Pierce/CoralNet-Toolbox/refs/heads/main/diagram.svg">
|
313
|
+
<img src="https://raw.githubusercontent.com/Jordan-Pierce/CoralNet-Toolbox/refs/heads/main/diagram.svg" alt="Visualization of the codebase" width="80%">
|
314
|
+
</a>
|
312
315
|
</div>
|
313
316
|
|
314
317
|
---
|
@@ -69,6 +69,7 @@ For a complete installation guide (including CUDA setup), see the [Installation
|
|
69
69
|
| **Overview** | Get the big picture | [📋 Read More](https://jordan-pierce.github.io/CoralNet-Toolbox/overview) |
|
70
70
|
| **Installation** | Detailed setup instructions | [⚙️ Setup Guide](https://jordan-pierce.github.io/CoralNet-Toolbox/installation) |
|
71
71
|
| **Usage** | Learn the tools | [🛠️ User Manual](https://jordan-pierce.github.io/CoralNet-Toolbox/usage) |
|
72
|
+
| **Hot Keys** | Keyboard shortcuts | [⌨️ Shortcuts](https://jordan-pierce.github.io/CoralNet-Toolbox/hot-keys) |
|
72
73
|
| **Classification** | Community tutorial | [🧠 AI Tutorial](https://jordan-pierce.github.io/CoralNet-Toolbox/classify) |
|
73
74
|
|
74
75
|
</div>
|
@@ -134,7 +135,7 @@ The toolbox integrates state-of-the-art models for efficient annotation workflow
|
|
134
135
|
| **Framework** | **Models** | **Capability** |
|
135
136
|
|:---:|:---:|:---:|
|
136
137
|
| **YOLOE** | See Anything | Visual prompt detection |
|
137
|
-
| **
|
138
|
+
| **Transformers** | Grounding DINO • OWLViT • OmDetTurbo | Zero-shot detection |
|
138
139
|
|
139
140
|
</div>
|
140
141
|
|
@@ -232,12 +233,9 @@ uv pip install coralnet-toolbox
|
|
232
233
|
### 🚀 **Step 3: GPU Acceleration (Optional)**
|
233
234
|
For CUDA-enabled systems:
|
234
235
|
```bash
|
235
|
-
# Example for CUDA
|
236
|
-
conda install nvidia/label/cuda-11.8.0::cuda-nvcc -y
|
237
|
-
conda install nvidia/label/cuda-11.8.0::cuda-toolkit -y
|
238
|
-
|
236
|
+
# Example for CUDA 12.9
|
239
237
|
# Install PyTorch with CUDA support
|
240
|
-
uv pip install torch torchvision --index-url https://download.pytorch.org/whl/
|
238
|
+
uv pip install torch torchvision --index-url https://download.pytorch.org/whl/cu129 --upgrade
|
241
239
|
```
|
242
240
|
|
243
241
|
### 🏃♂️ **Step 4: Launch**
|
@@ -264,7 +262,9 @@ uv pip install -U coralnet-toolbox==[latest_version]
|
|
264
262
|
### 🏗️ **Repository Structure**
|
265
263
|
|
266
264
|
<div align="center">
|
267
|
-
|
265
|
+
<a href="https://raw.githubusercontent.com/Jordan-Pierce/CoralNet-Toolbox/refs/heads/main/diagram.svg">
|
266
|
+
<img src="https://raw.githubusercontent.com/Jordan-Pierce/CoralNet-Toolbox/refs/heads/main/diagram.svg" alt="Visualization of the codebase" width="80%">
|
267
|
+
</a>
|
268
268
|
</div>
|
269
269
|
|
270
270
|
---
|
@@ -306,20 +306,30 @@ class PolygonAnnotation(Annotation):
|
|
306
306
|
self.set_cropped_bbox()
|
307
307
|
# Get the bounding box of the polygon
|
308
308
|
min_x, min_y, max_x, max_y = self.cropped_bbox
|
309
|
-
|
309
|
+
|
310
|
+
# Ensure min/max values are correctly ordered
|
311
|
+
min_x, max_x = min(min_x, max_x), max(min_x, max_x)
|
312
|
+
min_y, max_y = min(min_y, max_y), max(min_y, max_y)
|
313
|
+
|
314
|
+
# Clamp values to image bounds
|
315
|
+
min_x = max(0, min(rasterio_src.width - 1, min_x))
|
316
|
+
min_y = max(0, min(rasterio_src.height - 1, min_y))
|
317
|
+
max_x = max(min_x + 1, min(rasterio_src.width, max_x))
|
318
|
+
max_y = max(min_y + 1, min(rasterio_src.height, max_y))
|
319
|
+
|
310
320
|
# Calculate the window for rasterio
|
311
321
|
window = Window(
|
312
|
-
col_off=
|
313
|
-
row_off=
|
314
|
-
width=
|
315
|
-
height=
|
322
|
+
col_off=int(min_x),
|
323
|
+
row_off=int(min_y),
|
324
|
+
width=int(max_x - min_x),
|
325
|
+
height=int(max_y - min_y)
|
316
326
|
)
|
317
|
-
|
327
|
+
|
318
328
|
# Convert rasterio to QImage
|
319
329
|
q_image = rasterio_to_cropped_image(self.rasterio_src, window)
|
320
330
|
# Convert QImage to QPixmap
|
321
331
|
self.cropped_image = QPixmap.fromImage(q_image)
|
322
|
-
|
332
|
+
|
323
333
|
self.annotationUpdated.emit(self) # Notify update
|
324
334
|
|
325
335
|
def create_graphics_item(self, scene: QGraphicsScene):
|
@@ -423,7 +433,7 @@ class PolygonAnnotation(Annotation):
|
|
423
433
|
self.update_graphics_item()
|
424
434
|
self.annotationUpdated.emit(self) # Notify update
|
425
435
|
|
426
|
-
def update_annotation_size(self,
|
436
|
+
def update_annotation_size(self, scale_factor: float):
|
427
437
|
"""
|
428
438
|
Grow/shrink the polygon and its holes by scaling vertices radially from the centroid.
|
429
439
|
"""
|
@@ -433,18 +443,53 @@ class PolygonAnnotation(Annotation):
|
|
433
443
|
return
|
434
444
|
|
435
445
|
# 1. Use the true geometric centroid as the pivot for scaling.
|
436
|
-
# This is correctly calculated by the new set_centroid() method.
|
437
446
|
centroid_x = self.center_xy.x()
|
438
447
|
centroid_y = self.center_xy.y()
|
439
448
|
|
440
|
-
# 2. Determine the scale factor
|
449
|
+
# 2. Determine the scale factor.
|
441
450
|
step = 0.01 # Adjust for finer or coarser changes
|
442
|
-
if
|
451
|
+
if scale_factor > 1.0:
|
443
452
|
scale = 1.0 + step
|
444
|
-
elif
|
453
|
+
elif scale_factor < 1.0:
|
445
454
|
scale = 1.0 - step
|
446
455
|
else:
|
447
456
|
scale = 1.0
|
457
|
+
|
458
|
+
# Check for image boundaries before scaling
|
459
|
+
if hasattr(self, 'rasterio_src'):
|
460
|
+
# Before scaling, check if any point would go beyond image boundaries
|
461
|
+
img_width = self.rasterio_src.width
|
462
|
+
img_height = self.rasterio_src.height
|
463
|
+
padding = 10 # pixels of padding
|
464
|
+
|
465
|
+
# Check outer boundary points
|
466
|
+
for p in self.points:
|
467
|
+
dx = p.x() - centroid_x
|
468
|
+
dy = p.y() - centroid_y
|
469
|
+
new_x = centroid_x + dx * scale
|
470
|
+
new_y = centroid_y + dy * scale
|
471
|
+
|
472
|
+
if new_x < -padding or \
|
473
|
+
new_y < -padding or \
|
474
|
+
new_x > img_width + padding or \
|
475
|
+
new_y > img_height + padding:
|
476
|
+
# Point would be out of bounds, don't scale
|
477
|
+
return
|
478
|
+
|
479
|
+
# Check holes points too
|
480
|
+
for hole in self.holes:
|
481
|
+
for p in hole:
|
482
|
+
dx = p.x() - centroid_x
|
483
|
+
dy = p.y() - centroid_y
|
484
|
+
new_x = centroid_x + dx * scale
|
485
|
+
new_y = centroid_y + dy * scale
|
486
|
+
|
487
|
+
if new_x < -padding or \
|
488
|
+
new_y < -padding or \
|
489
|
+
new_x > img_width + padding or \
|
490
|
+
new_y > img_height + padding:
|
491
|
+
# Point would be out of bounds, don't scale
|
492
|
+
return
|
448
493
|
|
449
494
|
# 3. Scale the outer boundary points.
|
450
495
|
new_points = []
|
@@ -213,23 +213,29 @@ class RectangleAnnotation(Annotation):
|
|
213
213
|
# Get the bounding box of the rectangle
|
214
214
|
min_x, min_y, max_x, max_y = self.cropped_bbox
|
215
215
|
|
216
|
-
# Ensure min/max values are correctly ordered
|
216
|
+
# Ensure min/max values are correctly ordered
|
217
217
|
min_x, max_x = min(min_x, max_x), max(min_x, max_x)
|
218
218
|
min_y, max_y = min(min_y, max_y), max(min_y, max_y)
|
219
|
-
|
219
|
+
|
220
|
+
# Clamp values to image bounds
|
221
|
+
min_x = max(0, min(rasterio_src.width - 1, min_x))
|
222
|
+
min_y = max(0, min(rasterio_src.height - 1, min_y))
|
223
|
+
max_x = max(min_x + 1, min(rasterio_src.width, max_x))
|
224
|
+
max_y = max(min_y + 1, min(rasterio_src.height, max_y))
|
225
|
+
|
220
226
|
# Calculate the window for rasterio
|
221
227
|
window = Window(
|
222
|
-
col_off=
|
223
|
-
row_off=
|
224
|
-
width=
|
225
|
-
height=
|
228
|
+
col_off=int(min_x),
|
229
|
+
row_off=int(min_y),
|
230
|
+
width=int(max_x - min_x),
|
231
|
+
height=int(max_y - min_y)
|
226
232
|
)
|
227
|
-
|
233
|
+
|
228
234
|
# Convert rasterio to QImage
|
229
235
|
q_image = rasterio_to_cropped_image(self.rasterio_src, window)
|
230
236
|
# Convert QImage to QPixmap
|
231
237
|
self.cropped_image = QPixmap.fromImage(q_image)
|
232
|
-
|
238
|
+
|
233
239
|
self.annotationUpdated.emit(self) # Notify update
|
234
240
|
|
235
241
|
def create_graphics_item(self, scene: QGraphicsScene):
|
@@ -282,13 +288,37 @@ class RectangleAnnotation(Annotation):
|
|
282
288
|
# Clear the machine confidence
|
283
289
|
self.update_user_confidence(self.label)
|
284
290
|
|
285
|
-
#
|
286
|
-
|
287
|
-
|
288
|
-
|
289
|
-
|
291
|
+
# Calculate new dimensions
|
292
|
+
current_width = self.bottom_right.x() - self.top_left.x()
|
293
|
+
current_height = self.bottom_right.y() - self.top_left.y()
|
294
|
+
new_width = current_width * scale_factor
|
295
|
+
new_height = current_height * scale_factor
|
296
|
+
|
297
|
+
# Calculate tentative new corners
|
298
|
+
new_left = self.center_xy.x() - new_width / 2
|
299
|
+
new_top = self.center_xy.y() - new_height / 2
|
300
|
+
new_right = self.center_xy.x() + new_width / 2
|
301
|
+
new_bottom = self.center_xy.y() + new_height / 2
|
302
|
+
|
303
|
+
# Check if we're within valid image bounds (or use a reasonable padding)
|
304
|
+
# Assuming we have access to the image dimensions
|
305
|
+
if hasattr(self, 'rasterio_src'):
|
306
|
+
img_width = self.rasterio_src.width
|
307
|
+
img_height = self.rasterio_src.height
|
308
|
+
|
309
|
+
# Apply reasonable bounds with some margin
|
310
|
+
padding = 10 # pixels
|
311
|
+
if new_left < -padding or new_top < -padding or new_right > img_width + padding or new_bottom > img_height + padding:
|
312
|
+
# Don't resize beyond these limits
|
313
|
+
return
|
314
|
+
|
315
|
+
# Update the rectangle coordinates
|
316
|
+
self.top_left = QPointF(new_left, new_top)
|
317
|
+
self.bottom_right = QPointF(new_right, new_bottom)
|
318
|
+
|
319
|
+
# Update graphics and notify
|
290
320
|
self.update_graphics_item()
|
291
|
-
self.annotationUpdated.emit(self)
|
321
|
+
self.annotationUpdated.emit(self)
|
292
322
|
|
293
323
|
def resize(self, handle: str, new_pos: QPointF):
|
294
324
|
"""Resize the annotation based on the handle and new position."""
|
@@ -121,24 +121,45 @@ class AnnotationImageWidget(QWidget):
|
|
121
121
|
self.setToolTip(self.data_item.get_tooltip_text())
|
122
122
|
|
123
123
|
def recalculate_aspect_ratio(self):
|
124
|
-
"""Calculate
|
124
|
+
"""Calculate and store the annotation's aspect ratio."""
|
125
|
+
annotation = self.data_item.annotation
|
126
|
+
|
127
|
+
# Try to use the cropped_bbox attribute first
|
128
|
+
if hasattr(annotation, 'cropped_bbox'):
|
129
|
+
min_x, min_y, max_x, max_y = annotation.cropped_bbox
|
130
|
+
width = max_x - min_x
|
131
|
+
height = max_y - min_y
|
132
|
+
|
133
|
+
if height > 0:
|
134
|
+
self.aspect_ratio = width / height
|
135
|
+
return
|
136
|
+
|
137
|
+
# Fallback to bounding box methods
|
125
138
|
try:
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
139
|
+
top_left = annotation.get_bounding_box_top_left()
|
140
|
+
bottom_right = annotation.get_bounding_box_bottom_right()
|
141
|
+
|
142
|
+
if top_left and bottom_right:
|
143
|
+
width = bottom_right.x() - top_left.x()
|
144
|
+
height = bottom_right.y() - top_left.y()
|
145
|
+
|
146
|
+
if height > 0:
|
147
|
+
self.aspect_ratio = width / height
|
148
|
+
return
|
149
|
+
except (AttributeError, TypeError):
|
150
|
+
pass
|
151
|
+
|
152
|
+
# Last resort: try to get aspect ratio from the cropped image
|
153
|
+
try:
|
154
|
+
pixmap = annotation.get_cropped_image()
|
155
|
+
if pixmap and not pixmap.isNull() and pixmap.height() > 0:
|
156
|
+
self.aspect_ratio = pixmap.width() / pixmap.height()
|
157
|
+
return
|
158
|
+
except (AttributeError, TypeError):
|
159
|
+
pass
|
160
|
+
|
161
|
+
# Default to square if we can't determine aspect ratio
|
162
|
+
self.aspect_ratio = 1.0
|
142
163
|
|
143
164
|
def load_image(self):
|
144
165
|
"""Loads the image pixmap if it hasn't been loaded yet."""
|
@@ -356,16 +377,25 @@ class AnnotationDataItem:
|
|
356
377
|
return "<br>".join(tooltip_parts)
|
357
378
|
|
358
379
|
def get_effective_confidence(self):
|
359
|
-
"""
|
380
|
+
"""
|
381
|
+
Get the effective confidence value, handling scalar, array, and vector predictions.
|
382
|
+
"""
|
360
383
|
# First check if prediction probabilities are available from model predictions
|
361
384
|
if hasattr(self, 'prediction_probabilities') and self.prediction_probabilities is not None:
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
385
|
+
probs = self.prediction_probabilities
|
386
|
+
try:
|
387
|
+
# This will succeed for lists and multi-element numpy arrays
|
388
|
+
if len(probs) > 0:
|
389
|
+
return float(np.max(probs))
|
390
|
+
except TypeError:
|
391
|
+
# This will catch the error if `len()` is called on a scalar or 0-D array.
|
392
|
+
# In this case, the value of `probs` itself is the confidence score.
|
393
|
+
return float(probs)
|
394
|
+
|
366
395
|
# Fallback to existing confidence values
|
367
396
|
if self.annotation.verified and hasattr(self.annotation, 'user_confidence') and self.annotation.user_confidence:
|
368
397
|
return list(self.annotation.user_confidence.values())[0]
|
369
398
|
elif hasattr(self.annotation, 'machine_confidence') and self.annotation.machine_confidence:
|
370
399
|
return list(self.annotation.machine_confidence.values())[0]
|
400
|
+
|
371
401
|
return 0.0
|