diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..d0a740d --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,16 @@ +{ + // 使用 IntelliSense 了解相关属性。 + // 悬停以查看现有属性的描述。 + // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "Python: main.py", + "type": "python", + "request": "launch", + "program": "main.py", + "console": "integratedTerminal", + "justMyCode": false + } + ] +} \ No newline at end of file diff --git a/isat.yaml b/isat.yaml index 1bf8c69..f033f5f 100644 --- a/isat.yaml +++ b/isat.yaml @@ -21,5 +21,5 @@ label: - color: '#5c3566' name: fence language: en -mask_alpha: 0.4 +mask_alpha: 0.7 vertex_size: 2 diff --git a/main.py b/main.py index 6791910..4398988 100644 --- a/main.py +++ b/main.py @@ -3,7 +3,9 @@ # import os from PyQt5 import QtWidgets -from widgets.mainwindow import MainWindow +import os +os.environ['SAM_ANN_BASE_DIR'] = os.path.dirname(__file__) +from sam_ann.widgets.mainwindow import MainWindow import sys diff --git a/tools/__init__.py b/sam_ann/__init__.py similarity index 100% rename from tools/__init__.py rename to sam_ann/__init__.py diff --git a/annotation.py b/sam_ann/annotation.py similarity index 100% rename from annotation.py rename to sam_ann/annotation.py diff --git a/configs.py b/sam_ann/configs.py similarity index 93% rename from configs.py rename to sam_ann/configs.py index bb3aaea..f51ed17 100644 --- a/configs.py +++ b/sam_ann/configs.py @@ -1,6 +1,7 @@ import yaml from enum import Enum - +import os +BASE_DIR = os.environ['SAM_ANN_BASE_DIR'] DEFAULT_CONFIG_FILE = 'default.yaml' CONFIG_FILE = 'isat.yaml' diff --git a/icons.py b/sam_ann/icons.py similarity index 100% rename from icons.py rename to sam_ann/icons.py diff --git a/icons_rc.py b/sam_ann/icons_rc.py similarity index 100% rename from icons_rc.py rename to sam_ann/icons_rc.py diff --git a/mobile_sam/__init__.py b/sam_ann/mobile_sam/__init__.py similarity index 100% rename from mobile_sam/__init__.py rename to sam_ann/mobile_sam/__init__.py diff --git a/mobile_sam/automatic_mask_generator.py b/sam_ann/mobile_sam/automatic_mask_generator.py similarity index 100% rename from mobile_sam/automatic_mask_generator.py rename to sam_ann/mobile_sam/automatic_mask_generator.py diff --git a/mobile_sam/build_sam.py b/sam_ann/mobile_sam/build_sam.py similarity index 100% rename from mobile_sam/build_sam.py rename to sam_ann/mobile_sam/build_sam.py diff --git a/mobile_sam/modeling/__init__.py b/sam_ann/mobile_sam/modeling/__init__.py similarity index 100% rename from mobile_sam/modeling/__init__.py rename to sam_ann/mobile_sam/modeling/__init__.py diff --git a/mobile_sam/modeling/common.py b/sam_ann/mobile_sam/modeling/common.py similarity index 100% rename from mobile_sam/modeling/common.py rename to sam_ann/mobile_sam/modeling/common.py diff --git a/mobile_sam/modeling/image_encoder.py b/sam_ann/mobile_sam/modeling/image_encoder.py similarity index 100% rename from mobile_sam/modeling/image_encoder.py rename to sam_ann/mobile_sam/modeling/image_encoder.py diff --git a/mobile_sam/modeling/mask_decoder.py b/sam_ann/mobile_sam/modeling/mask_decoder.py similarity index 100% rename from mobile_sam/modeling/mask_decoder.py rename to sam_ann/mobile_sam/modeling/mask_decoder.py diff --git a/mobile_sam/modeling/prompt_encoder.py b/sam_ann/mobile_sam/modeling/prompt_encoder.py similarity index 100% rename from mobile_sam/modeling/prompt_encoder.py rename to sam_ann/mobile_sam/modeling/prompt_encoder.py diff --git a/mobile_sam/modeling/sam.py b/sam_ann/mobile_sam/modeling/sam.py similarity index 100% rename from mobile_sam/modeling/sam.py rename to sam_ann/mobile_sam/modeling/sam.py diff --git a/mobile_sam/modeling/tiny_vit_sam.py b/sam_ann/mobile_sam/modeling/tiny_vit_sam.py similarity index 100% rename from mobile_sam/modeling/tiny_vit_sam.py rename to sam_ann/mobile_sam/modeling/tiny_vit_sam.py diff --git a/mobile_sam/modeling/transformer.py b/sam_ann/mobile_sam/modeling/transformer.py similarity index 100% rename from mobile_sam/modeling/transformer.py rename to sam_ann/mobile_sam/modeling/transformer.py diff --git a/mobile_sam/predictor.py b/sam_ann/mobile_sam/predictor.py similarity index 100% rename from mobile_sam/predictor.py rename to sam_ann/mobile_sam/predictor.py diff --git a/mobile_sam/utils/__init__.py b/sam_ann/mobile_sam/utils/__init__.py similarity index 100% rename from mobile_sam/utils/__init__.py rename to sam_ann/mobile_sam/utils/__init__.py diff --git a/mobile_sam/utils/amg.py b/sam_ann/mobile_sam/utils/amg.py similarity index 100% rename from mobile_sam/utils/amg.py rename to sam_ann/mobile_sam/utils/amg.py diff --git a/mobile_sam/utils/onnx.py b/sam_ann/mobile_sam/utils/onnx.py similarity index 100% rename from mobile_sam/utils/onnx.py rename to sam_ann/mobile_sam/utils/onnx.py diff --git a/mobile_sam/utils/transforms.py b/sam_ann/mobile_sam/utils/transforms.py similarity index 100% rename from mobile_sam/utils/transforms.py rename to sam_ann/mobile_sam/utils/transforms.py diff --git a/segment_any/gpu_resource.py b/sam_ann/segment_any/gpu_resource.py similarity index 100% rename from segment_any/gpu_resource.py rename to sam_ann/segment_any/gpu_resource.py diff --git a/segment_any/segment_any.py b/sam_ann/segment_any/segment_any.py similarity index 81% rename from segment_any/segment_any.py rename to sam_ann/segment_any/segment_any.py index 9b8257e..5c1f7aa 100644 --- a/segment_any/segment_any.py +++ b/sam_ann/segment_any/segment_any.py @@ -7,38 +7,38 @@ import torch import numpy as np import timm - +import os class SegAny: def __init__(self, checkpoint): - if 'mobile_sam' in checkpoint: + if 'mobile_sam' in os.path.basename(checkpoint): # mobile sam from mobile_sam import sam_model_registry, SamPredictor print('- mobile sam!') self.model_type = "vit_t" - elif 'sam_hq_vit' in checkpoint: + elif 'sam_hq_vit' in os.path.basename(checkpoint): # sam hq from segment_anything_hq import sam_model_registry, SamPredictor print('- sam hq!') - if 'vit_b' in checkpoint: + if 'vit_b' in os.path.basename(checkpoint): self.model_type = "vit_b" - elif 'vit_l' in checkpoint: + elif 'vit_l' in os.path.basename(checkpoint): self.model_type = "vit_l" - elif 'vit_h' in checkpoint: + elif 'vit_h' in os.path.basename(checkpoint): self.model_type = "vit_h" - elif 'vit_tiny' in checkpoint: + elif 'vit_tiny' in os.path.basename(checkpoint): self.model_type = "vit_tiny" else: raise ValueError('The checkpoint named {} is not supported.'.format(checkpoint)) - elif 'sam_vit' in checkpoint: + elif 'sam_vit' in os.path.basename(checkpoint): # sam from segment_anything import sam_model_registry, SamPredictor print('- sam!') - if 'vit_b' in checkpoint: + if 'vit_b' in os.path.basename(checkpoint): self.model_type = "vit_b" - elif 'vit_l' in checkpoint: + elif 'vit_l' in os.path.basename(checkpoint): self.model_type = "vit_l" - elif 'vit_h' in checkpoint: + elif 'vit_h' in os.path.basename(checkpoint): self.model_type = "vit_h" else: raise ValueError('The checkpoint named {} is not supported.'.format(checkpoint)) diff --git a/segment_anything/__init__.py b/sam_ann/segment_anything/__init__.py similarity index 100% rename from segment_anything/__init__.py rename to sam_ann/segment_anything/__init__.py diff --git a/segment_anything/automatic_mask_generator.py b/sam_ann/segment_anything/automatic_mask_generator.py similarity index 100% rename from segment_anything/automatic_mask_generator.py rename to sam_ann/segment_anything/automatic_mask_generator.py diff --git a/segment_anything/build_sam.py b/sam_ann/segment_anything/build_sam.py similarity index 100% rename from segment_anything/build_sam.py rename to sam_ann/segment_anything/build_sam.py diff --git a/segment_anything/modeling/__init__.py b/sam_ann/segment_anything/modeling/__init__.py similarity index 100% rename from segment_anything/modeling/__init__.py rename to sam_ann/segment_anything/modeling/__init__.py diff --git a/segment_anything/modeling/common.py b/sam_ann/segment_anything/modeling/common.py similarity index 100% rename from segment_anything/modeling/common.py rename to sam_ann/segment_anything/modeling/common.py diff --git a/segment_anything/modeling/image_encoder.py b/sam_ann/segment_anything/modeling/image_encoder.py similarity index 100% rename from segment_anything/modeling/image_encoder.py rename to sam_ann/segment_anything/modeling/image_encoder.py diff --git a/segment_anything/modeling/mask_decoder.py b/sam_ann/segment_anything/modeling/mask_decoder.py similarity index 100% rename from segment_anything/modeling/mask_decoder.py rename to sam_ann/segment_anything/modeling/mask_decoder.py diff --git a/segment_anything/modeling/prompt_encoder.py b/sam_ann/segment_anything/modeling/prompt_encoder.py similarity index 100% rename from segment_anything/modeling/prompt_encoder.py rename to sam_ann/segment_anything/modeling/prompt_encoder.py diff --git a/segment_anything/modeling/sam.py b/sam_ann/segment_anything/modeling/sam.py similarity index 100% rename from segment_anything/modeling/sam.py rename to sam_ann/segment_anything/modeling/sam.py diff --git a/segment_anything/modeling/transformer.py b/sam_ann/segment_anything/modeling/transformer.py similarity index 100% rename from segment_anything/modeling/transformer.py rename to sam_ann/segment_anything/modeling/transformer.py diff --git a/segment_anything/predictor.py b/sam_ann/segment_anything/predictor.py similarity index 100% rename from segment_anything/predictor.py rename to sam_ann/segment_anything/predictor.py diff --git a/segment_anything/utils/__init__.py b/sam_ann/segment_anything/utils/__init__.py similarity index 100% rename from segment_anything/utils/__init__.py rename to sam_ann/segment_anything/utils/__init__.py diff --git a/segment_anything/utils/amg.py b/sam_ann/segment_anything/utils/amg.py similarity index 100% rename from segment_anything/utils/amg.py rename to sam_ann/segment_anything/utils/amg.py diff --git a/segment_anything/utils/onnx.py b/sam_ann/segment_anything/utils/onnx.py similarity index 100% rename from segment_anything/utils/onnx.py rename to sam_ann/segment_anything/utils/onnx.py diff --git a/segment_anything/utils/transforms.py b/sam_ann/segment_anything/utils/transforms.py similarity index 100% rename from segment_anything/utils/transforms.py rename to sam_ann/segment_anything/utils/transforms.py diff --git a/segment_anything_hq/__init__.py b/sam_ann/segment_anything_hq/__init__.py similarity index 100% rename from segment_anything_hq/__init__.py rename to sam_ann/segment_anything_hq/__init__.py diff --git a/segment_anything_hq/automatic_mask_generator.py b/sam_ann/segment_anything_hq/automatic_mask_generator.py similarity index 100% rename from segment_anything_hq/automatic_mask_generator.py rename to sam_ann/segment_anything_hq/automatic_mask_generator.py diff --git a/segment_anything_hq/build_sam.py b/sam_ann/segment_anything_hq/build_sam.py similarity index 100% rename from segment_anything_hq/build_sam.py rename to sam_ann/segment_anything_hq/build_sam.py diff --git a/segment_anything_hq/build_sam_baseline.py b/sam_ann/segment_anything_hq/build_sam_baseline.py similarity index 100% rename from segment_anything_hq/build_sam_baseline.py rename to sam_ann/segment_anything_hq/build_sam_baseline.py diff --git a/segment_anything_hq/modeling/__init__.py b/sam_ann/segment_anything_hq/modeling/__init__.py similarity index 100% rename from segment_anything_hq/modeling/__init__.py rename to sam_ann/segment_anything_hq/modeling/__init__.py diff --git a/segment_anything_hq/modeling/common.py b/sam_ann/segment_anything_hq/modeling/common.py similarity index 100% rename from segment_anything_hq/modeling/common.py rename to sam_ann/segment_anything_hq/modeling/common.py diff --git a/segment_anything_hq/modeling/image_encoder.py b/sam_ann/segment_anything_hq/modeling/image_encoder.py similarity index 100% rename from segment_anything_hq/modeling/image_encoder.py rename to sam_ann/segment_anything_hq/modeling/image_encoder.py diff --git a/segment_anything_hq/modeling/mask_decoder.py b/sam_ann/segment_anything_hq/modeling/mask_decoder.py similarity index 100% rename from segment_anything_hq/modeling/mask_decoder.py rename to sam_ann/segment_anything_hq/modeling/mask_decoder.py diff --git a/segment_anything_hq/modeling/mask_decoder_hq.py b/sam_ann/segment_anything_hq/modeling/mask_decoder_hq.py similarity index 100% rename from segment_anything_hq/modeling/mask_decoder_hq.py rename to sam_ann/segment_anything_hq/modeling/mask_decoder_hq.py diff --git a/segment_anything_hq/modeling/prompt_encoder.py b/sam_ann/segment_anything_hq/modeling/prompt_encoder.py similarity index 100% rename from segment_anything_hq/modeling/prompt_encoder.py rename to sam_ann/segment_anything_hq/modeling/prompt_encoder.py diff --git a/segment_anything_hq/modeling/sam.py b/sam_ann/segment_anything_hq/modeling/sam.py similarity index 100% rename from segment_anything_hq/modeling/sam.py rename to sam_ann/segment_anything_hq/modeling/sam.py diff --git a/segment_anything_hq/modeling/tiny_vit_sam.py b/sam_ann/segment_anything_hq/modeling/tiny_vit_sam.py similarity index 100% rename from segment_anything_hq/modeling/tiny_vit_sam.py rename to sam_ann/segment_anything_hq/modeling/tiny_vit_sam.py diff --git a/segment_anything_hq/modeling/transformer.py b/sam_ann/segment_anything_hq/modeling/transformer.py similarity index 100% rename from segment_anything_hq/modeling/transformer.py rename to sam_ann/segment_anything_hq/modeling/transformer.py diff --git a/segment_anything_hq/predictor.py b/sam_ann/segment_anything_hq/predictor.py similarity index 100% rename from segment_anything_hq/predictor.py rename to sam_ann/segment_anything_hq/predictor.py diff --git a/segment_anything_hq/utils/__init__.py b/sam_ann/segment_anything_hq/utils/__init__.py similarity index 100% rename from segment_anything_hq/utils/__init__.py rename to sam_ann/segment_anything_hq/utils/__init__.py diff --git a/segment_anything_hq/utils/amg.py b/sam_ann/segment_anything_hq/utils/amg.py similarity index 100% rename from segment_anything_hq/utils/amg.py rename to sam_ann/segment_anything_hq/utils/amg.py diff --git a/segment_anything_hq/utils/onnx.py b/sam_ann/segment_anything_hq/utils/onnx.py similarity index 100% rename from segment_anything_hq/utils/onnx.py rename to sam_ann/segment_anything_hq/utils/onnx.py diff --git a/segment_anything_hq/utils/transforms.py b/sam_ann/segment_anything_hq/utils/transforms.py similarity index 100% rename from segment_anything_hq/utils/transforms.py rename to sam_ann/segment_anything_hq/utils/transforms.py diff --git a/sam_ann/tools/__init__.py b/sam_ann/tools/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/tools/fromCOCO.py b/sam_ann/tools/fromCOCO.py similarity index 100% rename from tools/fromCOCO.py rename to sam_ann/tools/fromCOCO.py diff --git a/tools/toCOCO.py b/sam_ann/tools/toCOCO.py similarity index 100% rename from tools/toCOCO.py rename to sam_ann/tools/toCOCO.py diff --git a/tools/toLABELME.py b/sam_ann/tools/toLABELME.py similarity index 100% rename from tools/toLABELME.py rename to sam_ann/tools/toLABELME.py diff --git a/tools/toVOC.py b/sam_ann/tools/toVOC.py similarity index 100% rename from tools/toVOC.py rename to sam_ann/tools/toVOC.py diff --git a/ui/COCO_to_ISAT_dialog.py b/sam_ann/ui/COCO_to_ISAT_dialog.py similarity index 99% rename from ui/COCO_to_ISAT_dialog.py rename to sam_ann/ui/COCO_to_ISAT_dialog.py index 5f1be98..5e0d41c 100644 --- a/ui/COCO_to_ISAT_dialog.py +++ b/sam_ann/ui/COCO_to_ISAT_dialog.py @@ -117,4 +117,4 @@ class Ui_Dialog(object): self.label.setText(_translate("Dialog", "Convert COCO json to ISAT jsons.All layer attr is 1.")) self.pushButton_cancel.setText(_translate("Dialog", "cancel")) self.pushButton_apply.setText(_translate("Dialog", "convert")) -import icons_rc + diff --git a/ui/COCO_to_ISAT_dialog.ui b/sam_ann/ui/COCO_to_ISAT_dialog.ui similarity index 100% rename from ui/COCO_to_ISAT_dialog.ui rename to sam_ann/ui/COCO_to_ISAT_dialog.ui diff --git a/ui/ISAT_to_COCO_dialog.py b/sam_ann/ui/ISAT_to_COCO_dialog.py similarity index 99% rename from ui/ISAT_to_COCO_dialog.py rename to sam_ann/ui/ISAT_to_COCO_dialog.py index bd55b5c..8a849f2 100644 --- a/ui/ISAT_to_COCO_dialog.py +++ b/sam_ann/ui/ISAT_to_COCO_dialog.py @@ -110,4 +110,4 @@ class Ui_Dialog(object): self.label.setText(_translate("Dialog", "Convert ISAT jsons to COCO json.The layer attr will be lost.")) self.pushButton_cancel.setText(_translate("Dialog", "cancel")) self.pushButton_apply.setText(_translate("Dialog", "convert")) -import icons_rc + diff --git a/ui/ISAT_to_COCO_dialog.ui b/sam_ann/ui/ISAT_to_COCO_dialog.ui similarity index 100% rename from ui/ISAT_to_COCO_dialog.ui rename to sam_ann/ui/ISAT_to_COCO_dialog.ui diff --git a/ui/ISAT_to_LABELME_dialog.py b/sam_ann/ui/ISAT_to_LABELME_dialog.py similarity index 100% rename from ui/ISAT_to_LABELME_dialog.py rename to sam_ann/ui/ISAT_to_LABELME_dialog.py diff --git a/ui/ISAT_to_LABELME_dialog.ui b/sam_ann/ui/ISAT_to_LABELME_dialog.ui similarity index 100% rename from ui/ISAT_to_LABELME_dialog.ui rename to sam_ann/ui/ISAT_to_LABELME_dialog.ui diff --git a/ui/ISAT_to_VOC_dialog.py b/sam_ann/ui/ISAT_to_VOC_dialog.py similarity index 99% rename from ui/ISAT_to_VOC_dialog.py rename to sam_ann/ui/ISAT_to_VOC_dialog.py index 02d8a70..f6efd33 100644 --- a/ui/ISAT_to_VOC_dialog.py +++ b/sam_ann/ui/ISAT_to_VOC_dialog.py @@ -124,4 +124,4 @@ class Ui_Dialog(object): self.label.setText(_translate("Dialog", "Convert ISAT annotations to VOC png.")) self.pushButton_cancel.setText(_translate("Dialog", "cancel")) self.pushButton_apply.setText(_translate("Dialog", "convert")) -import icons_rc + diff --git a/ui/ISAT_to_VOC_dialog.ui b/sam_ann/ui/ISAT_to_VOC_dialog.ui similarity index 100% rename from ui/ISAT_to_VOC_dialog.ui rename to sam_ann/ui/ISAT_to_VOC_dialog.ui diff --git a/ui/MainWindow.py b/sam_ann/ui/MainWindow.py similarity index 99% rename from ui/MainWindow.py rename to sam_ann/ui/MainWindow.py index 0930472..12233c9 100644 --- a/ui/MainWindow.py +++ b/sam_ann/ui/MainWindow.py @@ -494,5 +494,4 @@ class Ui_MainWindow(object): self.actionContour_External.setWhatsThis(_translate("MainWindow", "External contour save only.")) self.actionContour_All.setText(_translate("MainWindow", "All")) self.actionContour_All.setStatusTip(_translate("MainWindow", "All contour save.")) - self.actionContour_All.setWhatsThis(_translate("MainWindow", "All contour save.")) -import icons_rc + self.actionContour_All.setWhatsThis(_translate("MainWindow", "All contour save.")) \ No newline at end of file diff --git a/ui/MainWindow.ui b/sam_ann/ui/MainWindow.ui similarity index 100% rename from ui/MainWindow.ui rename to sam_ann/ui/MainWindow.ui diff --git a/ui/about_dialog.py b/sam_ann/ui/about_dialog.py similarity index 99% rename from ui/about_dialog.py rename to sam_ann/ui/about_dialog.py index 62e5a56..721a0e1 100644 --- a/ui/about_dialog.py +++ b/sam_ann/ui/about_dialog.py @@ -74,4 +74,4 @@ class Ui_Dialog(object): self.label_2.setText(_translate("Dialog", "ISAT with Segment anything.")) self.label_4.setText(_translate("Dialog", "ISAT Copyright (C) 2022 yatengLG.\n" "http://www.yatenglg.cn/isat")) -import icons_rc + diff --git a/ui/about_dialog.ui b/sam_ann/ui/about_dialog.ui similarity index 100% rename from ui/about_dialog.ui rename to sam_ann/ui/about_dialog.ui diff --git a/ui/anno_dock.py b/sam_ann/ui/anno_dock.py similarity index 99% rename from ui/anno_dock.py rename to sam_ann/ui/anno_dock.py index cf9be55..d7c79be 100644 --- a/ui/anno_dock.py +++ b/sam_ann/ui/anno_dock.py @@ -68,4 +68,4 @@ class Ui_Form(object): _translate = QtCore.QCoreApplication.translate Form.setWindowTitle(_translate("Form", "Form")) self.checkBox_visible.setText(_translate("Form", "Visible")) -import icons_rc + diff --git a/ui/anno_dock.ui b/sam_ann/ui/anno_dock.ui similarity index 100% rename from ui/anno_dock.ui rename to sam_ann/ui/anno_dock.ui diff --git a/ui/category_choice.py b/sam_ann/ui/category_choice.py similarity index 99% rename from ui/category_choice.py rename to sam_ann/ui/category_choice.py index a9a71e0..98f646e 100644 --- a/ui/category_choice.py +++ b/sam_ann/ui/category_choice.py @@ -125,4 +125,4 @@ class Ui_Dialog(object): self.checkBox_iscrowded.setText(_translate("Dialog", "is crowded")) self.pushButton_cancel.setText(_translate("Dialog", "cancel")) self.pushButton_apply.setText(_translate("Dialog", "apply")) -import icons_rc + diff --git a/ui/category_choice.ui b/sam_ann/ui/category_choice.ui similarity index 100% rename from ui/category_choice.ui rename to sam_ann/ui/category_choice.ui diff --git a/ui/category_dock.py b/sam_ann/ui/category_dock.py similarity index 100% rename from ui/category_dock.py rename to sam_ann/ui/category_dock.py diff --git a/ui/category_dock.ui b/sam_ann/ui/category_dock.ui similarity index 100% rename from ui/category_dock.ui rename to sam_ann/ui/category_dock.ui diff --git a/ui/en.ts b/sam_ann/ui/en.ts similarity index 100% rename from ui/en.ts rename to sam_ann/ui/en.ts diff --git a/ui/file_dock.py b/sam_ann/ui/file_dock.py similarity index 100% rename from ui/file_dock.py rename to sam_ann/ui/file_dock.py diff --git a/ui/file_dock.ui b/sam_ann/ui/file_dock.ui similarity index 100% rename from ui/file_dock.ui rename to sam_ann/ui/file_dock.ui diff --git a/ui/info_dock.py b/sam_ann/ui/info_dock.py similarity index 100% rename from ui/info_dock.py rename to sam_ann/ui/info_dock.py diff --git a/ui/info_dock.ui b/sam_ann/ui/info_dock.ui similarity index 100% rename from ui/info_dock.ui rename to sam_ann/ui/info_dock.ui diff --git a/ui/setting_dialog.py b/sam_ann/ui/setting_dialog.py similarity index 99% rename from ui/setting_dialog.py rename to sam_ann/ui/setting_dialog.py index b59132b..4dee411 100644 --- a/ui/setting_dialog.py +++ b/sam_ann/ui/setting_dialog.py @@ -108,4 +108,3 @@ class Ui_Dialog(object): self.pushButton_export.setText(_translate("Dialog", "Export")) self.cancel_button.setText(_translate("Dialog", "Cancel")) self.apply_button.setText(_translate("Dialog", "Apply")) -import icons_rc diff --git a/ui/setting_dialog.ui b/sam_ann/ui/setting_dialog.ui similarity index 100% rename from ui/setting_dialog.ui rename to sam_ann/ui/setting_dialog.ui diff --git a/ui/shortcut_dialog.py b/sam_ann/ui/shortcut_dialog.py similarity index 99% rename from ui/shortcut_dialog.py rename to sam_ann/ui/shortcut_dialog.py index fe56a62..bd5e76f 100644 --- a/ui/shortcut_dialog.py +++ b/sam_ann/ui/shortcut_dialog.py @@ -289,4 +289,4 @@ class Ui_Dialog(object): self.label_8.setText(_translate("Dialog", "To top")) self.label_28.setText(_translate("Dialog", "Polygons Visible")) self.label_29.setText(_translate("Dialog", "V")) -import icons_rc + diff --git a/ui/shortcut_dialog.ui b/sam_ann/ui/shortcut_dialog.ui similarity index 100% rename from ui/shortcut_dialog.ui rename to sam_ann/ui/shortcut_dialog.ui diff --git a/ui/zh_CN.ts b/sam_ann/ui/zh_CN.ts similarity index 100% rename from ui/zh_CN.ts rename to sam_ann/ui/zh_CN.ts diff --git a/widgets/COCO_to_ISAT_dialog.py b/sam_ann/widgets/COCO_to_ISAT_dialog.py similarity index 96% rename from widgets/COCO_to_ISAT_dialog.py rename to sam_ann/widgets/COCO_to_ISAT_dialog.py index 8fc8d38..e322b56 100644 --- a/widgets/COCO_to_ISAT_dialog.py +++ b/sam_ann/widgets/COCO_to_ISAT_dialog.py @@ -2,8 +2,8 @@ # @Author : LG from PyQt5 import QtWidgets, QtCore -from ui.COCO_to_ISAT_dialog import Ui_Dialog -from tools.fromCOCO import FROMCOCO +from sam_ann.ui.COCO_to_ISAT_dialog import Ui_Dialog +from sam_ann.tools.fromCOCO import FROMCOCO class COCOtoISATDialog(QtWidgets.QDialog, Ui_Dialog): diff --git a/widgets/ISAT_to_COCO_dialog.py b/sam_ann/widgets/ISAT_to_COCO_dialog.py similarity index 96% rename from widgets/ISAT_to_COCO_dialog.py rename to sam_ann/widgets/ISAT_to_COCO_dialog.py index c906e4d..7228adf 100644 --- a/widgets/ISAT_to_COCO_dialog.py +++ b/sam_ann/widgets/ISAT_to_COCO_dialog.py @@ -2,8 +2,8 @@ # @Author : LG from PyQt5 import QtWidgets, QtCore, QtGui -from ui.ISAT_to_COCO_dialog import Ui_Dialog -from tools.toCOCO import TOCOCO +from sam_ann.ui.ISAT_to_COCO_dialog import Ui_Dialog +from sam_ann.tools.toCOCO import TOCOCO class ISATtoCOCODialog(QtWidgets.QDialog, Ui_Dialog): diff --git a/widgets/ISAT_to_LABELME_dialog.py b/sam_ann/widgets/ISAT_to_LABELME_dialog.py similarity index 96% rename from widgets/ISAT_to_LABELME_dialog.py rename to sam_ann/widgets/ISAT_to_LABELME_dialog.py index 9d5e9e2..516b7a9 100644 --- a/widgets/ISAT_to_LABELME_dialog.py +++ b/sam_ann/widgets/ISAT_to_LABELME_dialog.py @@ -2,8 +2,8 @@ # @Author : LG from PyQt5 import QtWidgets, QtCore, QtGui -from ui.ISAT_to_LABELME_dialog import Ui_Dialog -from tools.toLABELME import TOLABELME +from sam_ann.ui.ISAT_to_LABELME_dialog import Ui_Dialog +from sam_ann.tools.toLABELME import TOLABELME import os class ISATtoLabelMeDialog(QtWidgets.QDialog, Ui_Dialog): diff --git a/widgets/ISAT_to_VOC_dialog.py b/sam_ann/widgets/ISAT_to_VOC_dialog.py similarity index 96% rename from widgets/ISAT_to_VOC_dialog.py rename to sam_ann/widgets/ISAT_to_VOC_dialog.py index c46d1aa..e74311d 100644 --- a/widgets/ISAT_to_VOC_dialog.py +++ b/sam_ann/widgets/ISAT_to_VOC_dialog.py @@ -2,9 +2,9 @@ # @Author : LG from PyQt5 import QtWidgets, QtCore, QtGui -from ui.ISAT_to_VOC_dialog import Ui_Dialog -import tools.toVOC as toVOC -from configs import load_config +from sam_ann.ui.ISAT_to_VOC_dialog import Ui_Dialog +import sam_ann.tools.toVOC as toVOC +from sam_ann.configs import load_config import os diff --git a/widgets/about_dialog.py b/sam_ann/widgets/about_dialog.py similarity index 87% rename from widgets/about_dialog.py rename to sam_ann/widgets/about_dialog.py index 8b8b386..30c1ba4 100644 --- a/widgets/about_dialog.py +++ b/sam_ann/widgets/about_dialog.py @@ -2,7 +2,7 @@ # @Author : LG from PyQt5 import QtWidgets, QtCore, QtGui -from ui.about_dialog import Ui_Dialog +from sam_ann.ui.about_dialog import Ui_Dialog class AboutDialog(QtWidgets.QDialog, Ui_Dialog): def __init__(self, parent): diff --git a/widgets/annos_dock_widget.py b/sam_ann/widgets/annos_dock_widget.py similarity index 99% rename from widgets/annos_dock_widget.py rename to sam_ann/widgets/annos_dock_widget.py index ba753a8..d938848 100644 --- a/widgets/annos_dock_widget.py +++ b/sam_ann/widgets/annos_dock_widget.py @@ -2,7 +2,7 @@ # @Author : LG from PyQt5 import QtWidgets, QtCore, QtGui -from ui.anno_dock import Ui_Form +from sam_ann.ui.anno_dock import Ui_Form import functools import re diff --git a/widgets/canvas.py b/sam_ann/widgets/canvas.py similarity index 98% rename from widgets/canvas.py rename to sam_ann/widgets/canvas.py index 7436ecb..ae6bb98 100644 --- a/widgets/canvas.py +++ b/sam_ann/widgets/canvas.py @@ -2,8 +2,8 @@ # @Author : LG from PyQt5 import QtWidgets, QtGui, QtCore -from widgets.polygon import Polygon, Vertex -from configs import STATUSMode, CLICKMode, DRAWMode, CONTOURMode +from sam_ann.widgets.polygon import Polygon, Vertex +from sam_ann.configs import STATUSMode, CLICKMode, DRAWMode, CONTOURMode from PIL import Image import numpy as np import cv2 @@ -39,6 +39,11 @@ class AnnotationScene(QtWidgets.QGraphicsScene): self.clear() self.image_data = np.array(Image.open(image_path)) + if len(self.image_data.shape) == 2: + self.image_data = np.stack([self.image_data] * 3, axis=-1) + if self.image_data.shape[-1] >= 4: + self.image_data = self.image_data[:, :, :3] + self.image_item = QtWidgets.QGraphicsPixmapItem() self.image_item.setZValue(0) @@ -138,7 +143,7 @@ class AnnotationScene(QtWidgets.QGraphicsScene): def start_segment_anything(self): self.draw_mode = DRAWMode.SEGMENTANYTHING - + self.start_draw() def start_draw_polygon(self): diff --git a/widgets/category_choice_dialog.py b/sam_ann/widgets/category_choice_dialog.py similarity index 96% rename from widgets/category_choice_dialog.py rename to sam_ann/widgets/category_choice_dialog.py index 7b67494..408640d 100644 --- a/widgets/category_choice_dialog.py +++ b/sam_ann/widgets/category_choice_dialog.py @@ -2,9 +2,9 @@ # @Author : LG -from ui.category_choice import Ui_Dialog +from sam_ann.ui.category_choice import Ui_Dialog from PyQt5 import QtWidgets, QtGui, QtCore -from configs import load_config, CONFIG_FILE, DEFAULT_CONFIG_FILE +from sam_ann.configs import load_config, CONFIG_FILE, DEFAULT_CONFIG_FILE import os diff --git a/widgets/category_dock_widget.py b/sam_ann/widgets/category_dock_widget.py similarity index 97% rename from widgets/category_dock_widget.py rename to sam_ann/widgets/category_dock_widget.py index fac3498..dd8e9c7 100644 --- a/widgets/category_dock_widget.py +++ b/sam_ann/widgets/category_dock_widget.py @@ -2,7 +2,7 @@ # @Author : LG from PyQt5 import QtWidgets, QtCore -from ui.category_dock import Ui_Form +from sam_ann.ui.category_dock import Ui_Form class CategoriesDockWidget(QtWidgets.QWidget, Ui_Form): diff --git a/widgets/category_edit_dialog.py b/sam_ann/widgets/category_edit_dialog.py similarity index 97% rename from widgets/category_edit_dialog.py rename to sam_ann/widgets/category_edit_dialog.py index 51d6dc1..320d469 100644 --- a/widgets/category_edit_dialog.py +++ b/sam_ann/widgets/category_edit_dialog.py @@ -2,9 +2,9 @@ # @Author : LG -from ui.category_choice import Ui_Dialog +from sam_ann.ui.category_choice import Ui_Dialog from PyQt5 import QtWidgets, QtGui, QtCore -from configs import load_config, CONFIG_FILE, DEFAULT_CONFIG_FILE +from sam_ann.configs import load_config, CONFIG_FILE, DEFAULT_CONFIG_FILE import os diff --git a/widgets/files_dock_widget.py b/sam_ann/widgets/files_dock_widget.py similarity index 96% rename from widgets/files_dock_widget.py rename to sam_ann/widgets/files_dock_widget.py index 81352a0..b9d50bb 100644 --- a/widgets/files_dock_widget.py +++ b/sam_ann/widgets/files_dock_widget.py @@ -2,7 +2,7 @@ # @Author : LG from PyQt5 import QtWidgets, QtCore, QtGui -from ui.file_dock import Ui_Form +from sam_ann.ui.file_dock import Ui_Form import os diff --git a/widgets/info_dock_widget.py b/sam_ann/widgets/info_dock_widget.py similarity index 95% rename from widgets/info_dock_widget.py rename to sam_ann/widgets/info_dock_widget.py index f5b66e5..2ce0b8b 100644 --- a/widgets/info_dock_widget.py +++ b/sam_ann/widgets/info_dock_widget.py @@ -2,7 +2,7 @@ # @Author : LG from PyQt5 import QtWidgets, QtCore, QtGui -from ui.info_dock import Ui_Form +from sam_ann.ui.info_dock import Ui_Form class InfoDockWidget(QtWidgets.QWidget, Ui_Form): def __init__(self, mainwindow): diff --git a/widgets/mainwindow.py b/sam_ann/widgets/mainwindow.py similarity index 95% rename from widgets/mainwindow.py rename to sam_ann/widgets/mainwindow.py index 131441d..c2b53f1 100644 --- a/widgets/mainwindow.py +++ b/sam_ann/widgets/mainwindow.py @@ -2,33 +2,34 @@ # @Author : LG from PyQt5 import QtWidgets, QtCore, QtGui -from ui.MainWindow import Ui_MainWindow -from widgets.setting_dialog import SettingDialog -from widgets.category_choice_dialog import CategoryChoiceDialog -from widgets.category_edit_dialog import CategoryEditDialog -from widgets.category_dock_widget import CategoriesDockWidget -from widgets.annos_dock_widget import AnnosDockWidget -from widgets.files_dock_widget import FilesDockWidget -from widgets.info_dock_widget import InfoDockWidget -from widgets.right_button_menu import RightButtonMenu -from widgets.shortcut_dialog import ShortcutDialog -from widgets.about_dialog import AboutDialog -from widgets.ISAT_to_VOC_dialog import ISATtoVOCDialog -from widgets.ISAT_to_COCO_dialog import ISATtoCOCODialog -from widgets.ISAT_to_LABELME_dialog import ISATtoLabelMeDialog -from widgets.COCO_to_ISAT_dialog import COCOtoISATDialog -from widgets.canvas import AnnotationScene, AnnotationView -from configs import STATUSMode, MAPMode, load_config, save_config, CONFIG_FILE, DEFAULT_CONFIG_FILE -from annotation import Object, Annotation -from widgets.polygon import Polygon +from sam_ann.ui.MainWindow import Ui_MainWindow +from sam_ann.widgets.setting_dialog import SettingDialog +from sam_ann.widgets.category_choice_dialog import CategoryChoiceDialog +from sam_ann.widgets.category_edit_dialog import CategoryEditDialog +from sam_ann.widgets.category_dock_widget import CategoriesDockWidget +from sam_ann.widgets.annos_dock_widget import AnnosDockWidget +from sam_ann.widgets.files_dock_widget import FilesDockWidget +from sam_ann.widgets.info_dock_widget import InfoDockWidget +from sam_ann.widgets.right_button_menu import RightButtonMenu +from sam_ann.widgets.shortcut_dialog import ShortcutDialog +from sam_ann.widgets.about_dialog import AboutDialog +from sam_ann.widgets.ISAT_to_VOC_dialog import ISATtoVOCDialog +from sam_ann.widgets.ISAT_to_COCO_dialog import ISATtoCOCODialog +from sam_ann.widgets.ISAT_to_LABELME_dialog import ISATtoLabelMeDialog +from sam_ann.widgets.COCO_to_ISAT_dialog import COCOtoISATDialog +from sam_ann.widgets.canvas import AnnotationScene, AnnotationView +from sam_ann.configs import STATUSMode, MAPMode, load_config, save_config, CONFIG_FILE, DEFAULT_CONFIG_FILE +from sam_ann.annotation import Object, Annotation +from sam_ann.widgets.polygon import Polygon +from sam_ann.configs import BASE_DIR import os from PIL import Image import functools import imgviz import numpy as np -from segment_any.segment_any import SegAny -from segment_any.gpu_resource import GPUResource_Thread, osplatform -import icons_rc +from sam_ann.segment_any.segment_any import SegAny +from sam_ann.segment_any.gpu_resource import GPUResource_Thread, osplatform +import sam_ann.icons_rc class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): @@ -188,7 +189,7 @@ class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow): self.statusbar.addPermanentWidget(self.labelData) # - model_names = sorted([pth for pth in os.listdir('segment_any') if pth.endswith('.pth') or pth.endswith('.pt')]) + model_names = sorted([pth for pth in os.listdir(os.path.join(BASE_DIR, 'checkpoints')) if pth.endswith('.pth') or pth.endswith('.pt')]) self.pths_actions = {} for model_name in model_names: action = QtWidgets.QAction(self) diff --git a/widgets/polygon.py b/sam_ann/widgets/polygon.py similarity index 99% rename from widgets/polygon.py rename to sam_ann/widgets/polygon.py index e3ec7d0..37b46c1 100644 --- a/widgets/polygon.py +++ b/sam_ann/widgets/polygon.py @@ -2,7 +2,7 @@ # @Author : LG from PyQt5 import QtCore, QtWidgets, QtGui -from annotation import Object +from sam_ann.annotation import Object import typing class Vertex(QtWidgets.QGraphicsPathItem): diff --git a/widgets/right_button_menu.py b/sam_ann/widgets/right_button_menu.py similarity index 100% rename from widgets/right_button_menu.py rename to sam_ann/widgets/right_button_menu.py diff --git a/widgets/setting_dialog.py b/sam_ann/widgets/setting_dialog.py similarity index 98% rename from widgets/setting_dialog.py rename to sam_ann/widgets/setting_dialog.py index dd9b3dd..f014563 100644 --- a/widgets/setting_dialog.py +++ b/sam_ann/widgets/setting_dialog.py @@ -2,8 +2,8 @@ # @Author : LG from PyQt5 import QtWidgets, QtCore, QtGui -from ui.setting_dialog import Ui_Dialog -from configs import * +from sam_ann.ui.setting_dialog import Ui_Dialog +from sam_ann.configs import * import os diff --git a/widgets/shortcut_dialog.py b/sam_ann/widgets/shortcut_dialog.py similarity index 86% rename from widgets/shortcut_dialog.py rename to sam_ann/widgets/shortcut_dialog.py index 78d0065..fed75cf 100644 --- a/widgets/shortcut_dialog.py +++ b/sam_ann/widgets/shortcut_dialog.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # @Author : LG -from ui.shortcut_dialog import Ui_Dialog +from sam_ann.ui.shortcut_dialog import Ui_Dialog from PyQt5 import QtGui, QtCore, QtWidgets class ShortcutDialog(QtWidgets.QDialog, Ui_Dialog): diff --git a/ui/zh_CN.qm b/ui/zh_CN.qm deleted file mode 100644 index a2527a3..0000000 Binary files a/ui/zh_CN.qm and /dev/null differ