def __init__(self, param, parent): core.CWorkflowTaskWidget.__init__(self, parent) if param is None: self.parameters = PanopticFpnParam() else: self.parameters = param # Create layout : QGridLayout by default self.gridLayout = QGridLayout() # cuda parameter cuda_label = QLabel("CUDA") self.cuda_ckeck = QCheckBox() self.cuda_ckeck.setChecked(True) self.gridLayout.setColumnStretch(0, 0) self.gridLayout.addWidget(self.cuda_ckeck, 0, 0) self.gridLayout.setColumnStretch(1, 1) self.gridLayout.addWidget(cuda_label, 0, 1) self.gridLayout.setColumnStretch(2, 2) # Set widget layout layout_ptr = qtconversion.PyQtToQt(self.gridLayout) self.setLayout(layout_ptr) if not self.parameters.cuda: self.cuda_ckeck.setChecked(False)
def __init__(self, param, parent): core.CWorkflowTaskWidget.__init__(self, parent) if param is None: self.parameters = DatasetPascalVocParam() else: self.parameters = param # Create layout : QGridLayout by default self.grid_layout = QGridLayout() self.browse_ann_folder = pyqtutils.append_browse_file(grid_layout=self.grid_layout, label="Annotation folder", path=self.parameters.annotation_folder_path, mode=QFileDialog.Directory) self.browse_img_folder = pyqtutils.append_browse_file(grid_layout=self.grid_layout, label="Image folder", path=self.parameters.image_folder_path, mode=QFileDialog.Directory) self.browse_instance_seg_folder = pyqtutils.append_browse_file(grid_layout=self.grid_layout, label="Instance segmentation folder", path=self.parameters.instance_seg_folder_path, mode=QFileDialog.Directory) self.browse_class_file = pyqtutils.append_browse_file(grid_layout=self.grid_layout, label="Classes file", path=self.parameters.class_path, mode=QFileDialog.ExistingFile) # PyQt -> Qt wrapping layout_ptr = qtconversion.PyQtToQt(self.grid_layout) # Set widget layout self.setLayout(layout_ptr)
def __init__(self, param, parent): core.CWorkflowTaskWidget.__init__(self, parent) if param is None: self.parameters = DatasetCocoParam() else: self.parameters = param # Create layout : QGridLayout by default self.grid_layout = QGridLayout() self.browse_json = pyqtutils.append_browse_file( self.grid_layout, label="COCO json file", path=self.parameters.json_path, filter="*.json") self.browse_img_folder = pyqtutils.append_browse_file( self.grid_layout, label="Image folder", filter="", path=self.parameters.image_folder, mode=QFileDialog.Directory) # PyQt -> Qt wrapping layout_ptr = qtconversion.PyQtToQt(self.grid_layout) # Set widget layout self.setLayout(layout_ptr)
def __init__(self, param, parent): core.CWorkflowTaskWidget.__init__(self, parent) if param is None: self.parameters = DatasetYoloParam() else: self.parameters = param # Create layout : QGridLayout by default self.grid_layout = QGridLayout() self.browse_folder = pyqtutils.append_browse_file( grid_layout=self.grid_layout, label="YOLO dataset folder", path=self.parameters.data_folder_path, mode=QFileDialog.Directory) self.browse_class_file = pyqtutils.append_browse_file( grid_layout=self.grid_layout, label="YOLO classes file", path=self.parameters.class_file_path, mode=QFileDialog.ExistingFile) # PyQt -> Qt wrapping layout_ptr = qtconversion.PyQtToQt(self.grid_layout) # Set widget layout self.setLayout(layout_ptr)
def __init__(self, param, parent): core.CWorkflowTaskWidget.__init__(self, parent) if param is None: self.parameters = DatasetWgisdParam() else: self.parameters = param # Create layout : QGridLayout by default self.grid_layout = QGridLayout() self.browse_folder = pyqtutils.append_browse_file( grid_layout=self.grid_layout, label="Dataset folder", path=self.parameters.data_folder_path, mode=QFileDialog.Directory) self.browse_class_file = pyqtutils.append_browse_file( grid_layout=self.grid_layout, label="Classes file", path=self.parameters.class_file_path, mode=QFileDialog.ExistingFile) self.combo_seg_mask_mode = pyqtutils.append_combo( grid_layout=self.grid_layout, label="Segmentation masks") self.combo_seg_mask_mode.addItem("None") self.combo_seg_mask_mode.addItem("Instance") self.combo_seg_mask_mode.addItem("Panoptic") self.combo_seg_mask_mode.setCurrentText(self.parameters.seg_mask_mode) # PyQt -> Qt wrapping layout_ptr = qtconversion.PyQtToQt(self.grid_layout) # Set widget layout self.setLayout(layout_ptr)
def __init__(self, param, parent): core.CWorkflowTaskWidget.__init__(self, parent) if param is None: self.parameters = TrainFasterRcnnParam() else: self.parameters = param # Create layout : QGridLayout by default self.grid_layout = QGridLayout() self.spin_workers = pyqtutils.append_spin( self.grid_layout, label="Data loader workers", value=self.parameters.cfg["num_workers"], min=0, max=8, step=2) self.spin_batch = pyqtutils.append_spin( self.grid_layout, label="Batch size", value=self.parameters.cfg["batch_size"], min=1, max=1024, step=1) self.spin_epoch = pyqtutils.append_spin( self.grid_layout, label="Epochs", value=self.parameters.cfg["epochs"], min=1) self.spin_size = pyqtutils.append_spin( self.grid_layout, label="Input size", value=self.parameters.cfg["input_size"]) label_model_format = QLabel("Model format") row = self.grid_layout.rowCount() self.grid_layout.addWidget(label_model_format, row, 0) self.check_pth = QCheckBox("pth") self.check_pth.setChecked(self.parameters.cfg["export_pth"]) self.grid_layout.addWidget(self.check_pth, row, 1) self.check_onnx = QCheckBox("onnx") self.check_onnx.setChecked(self.parameters.cfg["export_onnx"]) self.grid_layout.addWidget(self.check_onnx, row + 1, 1) self.browse_folder = pyqtutils.append_browse_file( self.grid_layout, label="Output folder", path=self.parameters.cfg["output_folder"], tooltip="Select output folder", mode=QFileDialog.Directory) # PyQt -> Qt wrapping layout_ptr = qtconversion.PyQtToQt(self.grid_layout) # Set widget layout self.setLayout(layout_ptr)
def __init__(self, param, parent): core.CWorkflowTaskWidget.__init__(self, parent) if param is None: self.parameters = InferYolactParam() else: self.parameters = param # Create layout : QGridLayout by default self.grid_layout = QGridLayout() # Confidence label_confidence = QLabel("Confidence") self.spin_confidence = QDoubleSpinBox() self.spin_confidence.setRange(0, 1) self.spin_confidence.setSingleStep(0.05) self.spin_confidence.setDecimals(2) self.spin_confidence.setValue(self.parameters.confidence) # Predictions count label_pred_count = QLabel("Max predictions count") self.spin_pred_count = QSpinBox() self.spin_pred_count.setRange(1, 100) self.spin_pred_count.setSingleStep(1) self.spin_pred_count.setValue(self.parameters.top_k) # Mask transparency label_mask_alpha = QLabel("Mask transparency") self.spin_mask_alpha = QDoubleSpinBox() self.spin_mask_alpha.setRange(0, 1) self.spin_mask_alpha.setSingleStep(0.05) self.spin_mask_alpha.setDecimals(2) self.spin_mask_alpha.setValue(self.parameters.mask_alpha) # Device self.checkbox = QCheckBox("CUDA") if self.parameters.device == "cuda": self.checkbox.setChecked(True) else: self.checkbox.setChecked(False) # Fill layout self.grid_layout.addWidget(label_confidence, 0, 0, 1, 1) self.grid_layout.addWidget(self.spin_confidence, 0, 1, 1, 1) self.grid_layout.addWidget(label_pred_count, 1, 0, 1, 1) self.grid_layout.addWidget(self.spin_pred_count, 1, 1, 1, 1) self.grid_layout.addWidget(label_mask_alpha, 2, 0, 1, 1) self.grid_layout.addWidget(self.spin_mask_alpha, 2, 1, 1, 1) self.grid_layout.addWidget(self.checkbox, 3, 0, 1, 2) # PyQt -> Qt wrapping layout_ptr = qtconversion.PyQtToQt(self.grid_layout) # Set widget layout self.setLayout(layout_ptr)
def __init__(self, param, parent): core.CWorkflowTaskWidget.__init__(self, parent) if param is None: self.parameters = TrainResnetParam() else: self.parameters = param # Create layout : QGridLayout by default self.grid_layout = QGridLayout() self.combo_model = pyqtutils.append_combo(self.grid_layout, "Model name") self.combo_model.addItem("resnet18") self.combo_model.addItem("resnet34") self.combo_model.addItem("resnet50") self.combo_model.addItem("resnet101") self.combo_model.addItem("resnet152") self.spin_workers = pyqtutils.append_spin(self.grid_layout, label="Data loader workers", value=self.parameters.cfg["num_workers"], min=0, max=8, step=2) self.spin_batch = pyqtutils.append_spin(self.grid_layout, label="Batch size", value=self.parameters.cfg["batch_size"], min=1, max=1024, step=1) self.spin_epoch = pyqtutils.append_spin(self.grid_layout, label="Epochs", value=self.parameters.cfg["epochs"], min=1) self.spin_classes = pyqtutils.append_spin(self.grid_layout, label="Classes", value=self.parameters.cfg["classes"], min=1) self.spin_size = pyqtutils.append_spin(self.grid_layout, label="Input size", value=self.parameters.cfg["input_size"]) self.check_pretrained = pyqtutils.append_check(self.grid_layout, label="Pre-trained model", checked=self.parameters.cfg["use_pretrained"]) self.check_features = pyqtutils.append_check(self.grid_layout, label="Feature Extract mode", checked=self.parameters.cfg["feature_extract"]) label_model_format = QLabel("Model format") row = self.grid_layout.rowCount() self.grid_layout.addWidget(label_model_format, row, 0) self.check_pth = QCheckBox("pth") self.check_pth.setChecked(self.parameters.cfg["export_pth"]) self.grid_layout.addWidget(self.check_pth, row, 1) self.check_onnx = QCheckBox("onnx") self.check_onnx.setChecked(self.parameters.cfg["export_onnx"]) self.grid_layout.addWidget(self.check_onnx, row+1, 1) self.browse_folder = pyqtutils.append_browse_file(self.grid_layout, label="Output folder", path=self.parameters.cfg["output_folder"], tooltip="Select output folder", mode=QFileDialog.Directory) # PyQt -> Qt wrapping layout_ptr = qtconversion.PyQtToQt(self.grid_layout) # Set widget layout self.setLayout(layout_ptr)
def __init__(self, param, parent): core.CWorkflowTaskWidget.__init__(self, parent) if param is None: self.parameters = NeuralStyleTransferParam() else: self.parameters = param self.param_changed = False # Create layout : QGridLayout by default self.grid_layout = QGridLayout() # Combobox for inference backend label_backend = QLabel("DNN backend") self.combo_backend = QComboBox() self.fill_combo_backend() self.combo_backend.setCurrentIndex(self.combo_backend.findData(self.parameters.backend)) self.combo_backend.currentIndexChanged.connect(self.on_backend_changed) # Combobox for inference target label_target = QLabel("DNN target") self.combo_target = QComboBox() self.fill_combo_target(self.parameters.backend) self.combo_target.setCurrentIndex(self.combo_target.findData(self.parameters.target)) self.combo_target.currentIndexChanged.connect(self.on_param_changed) # Combobox for models label_model = QLabel("Select your model") self.combo_model = QComboBox() self.fill_combo_model() self.combo_model.currentIndexChanged.connect(self.on_param_changed) try: current_index = self.model_paths.index(self.parameters.model_path) self.combo_model.setCurrentIndex(current_index) except: self.combo_model.setCurrentIndex(0) # Fill layout self.grid_layout.addWidget(label_backend, 0, 0, 1, 1) self.grid_layout.addWidget(self.combo_backend, 0, 1, 1, 1) self.grid_layout.addWidget(label_target, 1, 0, 1, 1) self.grid_layout.addWidget(self.combo_target, 1, 1, 1, 1) self.grid_layout.addWidget(label_model, 2, 0, 1, 1) self.grid_layout.addWidget(self.combo_model, 2, 1, 1, 1) # PyQt -> Qt wrapping layout_ptr = qtconversion.PyQtToQt(self.grid_layout) # Set widget layout self.setLayout(layout_ptr)
def __init__(self, param, parent): core.CWorkflowTaskWidget.__init__(self, parent) if param is None: self.parameters = ResnetParam() else: self.parameters = param # Create layout : QGridLayout by default self.grid_layout = QGridLayout() self.combo_model = pyqtutils.append_combo(self.grid_layout, "Model name") self.combo_model.addItem("resnet18") self.combo_model.addItem("resnet34") self.combo_model.addItem("resnet50") self.combo_model.addItem("resnet101") self.combo_model.addItem("resnet152") self.combo_model.setCurrentIndex(self._get_model_name_index()) self.combo_dataset = pyqtutils.append_combo(self.grid_layout, "Trained on") self.combo_dataset.addItem("ImageNet") self.combo_dataset.addItem("Custom") self.combo_dataset.setCurrentIndex(self._get_dataset_index()) self.combo_dataset.currentIndexChanged.connect( self.on_combo_dataset_changed) self.spin_size = pyqtutils.append_spin( self.grid_layout, label="Input size", value=self.parameters.input_size) self.browse_model = pyqtutils.append_browse_file( self.grid_layout, "Model path", self.parameters.model_path) self.browse_classes = pyqtutils.append_browse_file( self.grid_layout, "Classes path", self.parameters.classes_path) if self.parameters.dataset == "ImageNet": self.browse_model.set_path("Not used") self.browse_model.setEnabled(False) self.browse_classes.setEnabled(False) # PyQt -> Qt wrapping layout_ptr = qtconversion.PyQtToQt(self.grid_layout) # Set widget layout self.setLayout(layout_ptr)
def __init__(self, param, parent): core.CWorkflowTaskWidget.__init__(self, parent) if param is None: self.parameters = CovidNetParam() else: self.parameters = param # Create layout : QGridLayout by default self.grid_layout = QGridLayout() # PyQt -> Qt wrapping layout_ptr = qtconversion.PyQtToQt(self.grid_layout) # Set widget layout self.setLayout(layout_ptr)
def __init__(self, param, parent): core.CWorkflowTaskWidget.__init__(self, parent) if param is None: self.parameters = Deeplabv3plusParam() else: self.parameters = param # Create layout : QGridLayout by default self.gridLayout = QGridLayout() self.qcomboLabel = QLabel("Trained on") self.combo_dataset = QComboBox() self.combo_dataset.addItem("Custom") self.combo_dataset.addItem("Cityscapes") self.combo_dataset.setCurrentIndex(0 if self.parameters.dataset == "Custom" else 1) self.combo_dataset.currentIndexChanged.connect( self.on_combo_dataset_changed) self.qlabelConfigFile = QLabel("Select a config file (.yaml) :") self.qbrowseWidgetConfigFile = BrowseFileWidget( path=self.parameters.configFile, mode=QFileDialog.ExistingFile) self.qlabelModelFile = QLabel("Select a model file (.pth) :") self.qbrowseWidgetModelFile = BrowseFileWidget( path=self.parameters.modelFile, mode=QFileDialog.ExistingFile) self.gridLayout.addWidget(self.qcomboLabel, 0, 0, 1, 1) self.gridLayout.addWidget(self.combo_dataset, 0, 1, 1, 2) self.gridLayout.addWidget(self.qlabelConfigFile, 1, 0, 1, 1) self.gridLayout.addWidget(self.qbrowseWidgetConfigFile, 1, 1, 1, 2) self.gridLayout.addWidget(self.qlabelModelFile, 2, 0, 1, 1) self.gridLayout.addWidget(self.qbrowseWidgetModelFile, 2, 1, 1, 2) # PyQt -> Qt wrapping layout_ptr = qtconversion.PyQtToQt(self.gridLayout) # Set widget layout self.setLayout(layout_ptr) if self.parameters.dataset != "Custom": self.qlabelModelFile.setEnabled(False) self.qlabelConfigFile.setEnabled(False) self.qbrowseWidgetConfigFile.setEnabled(False) self.qbrowseWidgetModelFile.setEnabled(False)
def __init__(self, param, parent): core.CWorkflowTaskWidget.__init__(self, parent) if param is None: self.parameters = MaskRcnnParam() else: self.parameters = param # Create layout : QGridLayout by default self.grid_layout = QGridLayout() self.combo_dataset = pyqtutils.append_combo(self.grid_layout, "Trained on") self.combo_dataset.addItem("Coco2017") self.combo_dataset.addItem("Custom") self.combo_dataset.setCurrentIndex(self._get_dataset_index()) self.combo_dataset.currentIndexChanged.connect( self.on_combo_dataset_changed) self.browse_model = pyqtutils.append_browse_file( self.grid_layout, "Model path", self.parameters.model_path) self.browse_classes = pyqtutils.append_browse_file( self.grid_layout, "Classes path", self.parameters.classes_path) self.spin_confidence = pyqtutils.append_double_spin( self.grid_layout, "Confidence", self.parameters.confidence, 0.0, 1.0, 0.1, 2) self.spin_mask_thresh = pyqtutils.append_double_spin( self.grid_layout, "Mask threshold", self.parameters.mask_threshold, 0.0, 1.0, 0.1, 2) if self.parameters.dataset == "Coco2017": self.browse_model.set_path("Not used") self.browse_model.setEnabled(False) self.browse_classes.setEnabled(False) # PyQt -> Qt wrapping layout_ptr = qtconversion.PyQtToQt(self.grid_layout) # Set widget layout self.setLayout(layout_ptr)
def __init__(self, param, parent): core.CWorkflowTaskWidget.__init__(self, parent) if param is None: self.parameters = MorphoSnakesParam() else: self.parameters = param # variable self.MAX_SPINBOX = 10000000 # Create layout : QGridLayout by default self.gridLayout = QGridLayout() # all parameters widgets # snacks methods avaiable self.mgac = QWidget() self.chanVese = QWidget() # set all parameters widgets self.methodWidget() self.mgacWidget() self.chanVeseWidget() # main widget self.stack = QStackedWidget() self.stack.addWidget(self.mgac) self.stack.addWidget(self.chanVese) self.gridLayout.addWidget(self.stack, 2, 0) self.gridLayout.setRowStretch(3, 3) # PyQt -> Qt wrapping layout_ptr = qtconversion.PyQtToQt(self.gridLayout) # Set widget layout self.setLayout(layout_ptr) # update left parameter panel if self.parameters.method != "mgac": self.comboMethod.setCurrentIndex(1)
def __init__(self, param, parent): core.CWorkflowTaskWidget.__init__(self, parent) if param is None: self.parameters = KeyptsRcnnParam() else: self.parameters = param # Create layout : QGridLayout by default self.gridLayout = QGridLayout() # cuda parameter cuda_label = QLabel("CUDA") self.cuda_ckeck = QCheckBox() self.cuda_ckeck.setChecked(True) # proba parameter proba_label = QLabel("Threshold :") self.proba_spinbox = QDoubleSpinBox() self.proba_spinbox.setValue(0.8) self.proba_spinbox.setSingleStep(0.1) self.proba_spinbox.setMaximum(1) if self.parameters.proba != 0.8: self.proba_spinbox.setValue(self.parameters.proba) self.gridLayout.setColumnStretch(0, 0) self.gridLayout.addWidget(self.cuda_ckeck, 0, 0) self.gridLayout.setColumnStretch(1, 1) self.gridLayout.addWidget(cuda_label, 0, 1) self.gridLayout.addWidget(proba_label, 1, 0) self.gridLayout.addWidget(self.proba_spinbox, 1, 1) self.gridLayout.setColumnStretch(2, 2) # Set widget layout layoutPtr = qtconversion.PyQtToQt(self.gridLayout) self.setLayout(layoutPtr) if not self.parameters.cuda: self.cuda_ckeck.setChecked(False)
def __init__(self, param, parent): core.CWorkflowTaskWidget.__init__(self, parent) if param is None: self.parameters = ColorfulImageColorizationParam() else: self.parameters = param self.param_changed = False # Create layout : QGridLayout by default self.grid_layout = QGridLayout() # Combobox for inference backend label_backend = QLabel("DNN backend") self.combo_backend = QComboBox() self.fill_combo_backend() self.combo_backend.setCurrentIndex( self.combo_backend.findData(self.parameters.backend)) self.combo_backend.currentIndexChanged.connect(self.on_backend_changed) # Combobox for inference target label_target = QLabel("DNN target") self.combo_target = QComboBox() self.fill_combo_target(self.parameters.backend) self.combo_target.setCurrentIndex( self.combo_target.findData(self.parameters.target)) self.combo_target.currentIndexChanged.connect(self.on_param_changed) # Fill layout self.grid_layout.addWidget(label_backend, 0, 0, 1, 1) self.grid_layout.addWidget(self.combo_backend, 0, 1, 1, 1) self.grid_layout.addWidget(label_target, 1, 0, 1, 1) self.grid_layout.addWidget(self.combo_target, 1, 1, 1, 1) # PyQt -> Qt wrapping layout_ptr = qtconversion.PyQtToQt(self.grid_layout) # Set widget layout self.setLayout(layout_ptr)
def __init__(self, param, parent): core.CWorkflowTaskWidget.__init__(self, parent) if param is None: self.parameters = MaskRcnnParam() else: self.parameters = param # Create layout : QGridLayout by default self.gridLayout = QGridLayout() # cuda parameter self.cuda_check = QCheckBox("CUDA") self.cuda_check.setChecked(self.parameters.device == "cuda") # dataset dataset_label = QLabel("Trained on") self.dataset_combo = QComboBox() self.dataset_combo.addItem("COCO") self.dataset_combo.addItem("CityScapes") self.dataset_combo.setCurrentText(self.parameters.dataset) # probability parameter proba_label = QLabel("Threshold :") self.proba_spinbox = QDoubleSpinBox() self.proba_spinbox.setValue(self.parameters.proba) self.proba_spinbox.setSingleStep(0.1) self.proba_spinbox.setMaximum(1) self.gridLayout.addWidget(self.cuda_check, 0, 0) self.gridLayout.setColumnStretch(0, 0) self.gridLayout.addWidget(dataset_label, 1, 0) self.gridLayout.addWidget(self.dataset_combo, 1, 1) self.gridLayout.addWidget(proba_label, 2, 0) self.gridLayout.addWidget(self.proba_spinbox, 2, 1) # Set widget layout layout_ptr = qtconversion.PyQtToQt(self.gridLayout) self.setLayout(layout_ptr)
def __init__(self, param, parent): core.CWorkflowTaskWidget.__init__(self, parent) if param is None: self.parameters = DatasetViaParam() else: self.parameters = param # Create layout : QGridLayout by default self.grid_layout = QGridLayout() self.browse_json = pyqtutils.append_browse_file( self.grid_layout, label="VIA json file", path=self.parameters.via_json_path, filter="*.json") # PyQt -> Qt wrapping layout_ptr = qtconversion.PyQtToQt(self.grid_layout) # Set widget layout self.setLayout(layout_ptr)
def __init__(self, param, parent): core.CWorkflowTaskWidget.__init__(self, parent) if param is None: self.parameters = RaftOpticalFlowParam() else: self.parameters = param # Create layout : QGridLayout by default self.gridLayout = QGridLayout() # cuda parameter cuda_label = QLabel("CUDA") self.cuda_ckeck = QCheckBox() if self.parameters.cuda: self.cuda_ckeck.setChecked(True) if not self.parameters.cuda: self.cuda_ckeck.setChecked(False) self.cuda_ckeck.setEnabled(False) # model size parameter self.rbtn1 = QRadioButton("Small-sized Optical Flow") self.rbtn1.setChecked(True) self.rbtn2 = QRadioButton("Normal-sized Optical Flow") self.gridLayout.addWidget(self.cuda_ckeck, 0, 0) self.gridLayout.addWidget(cuda_label, 0, 1) self.gridLayout.addWidget(self.rbtn1, 1, 0) self.gridLayout.addWidget(self.rbtn2, 1, 1) # PyQt -> Qt wrapping layout_ptr = qtconversion.PyQtToQt(self.gridLayout) # Set widget layout self.setLayout(layout_ptr)
def __init__(self, param, parent): core.CWorkflowTaskWidget.__init__(self, parent) if param is None: self.parameters = ThresholdParam() else: self.parameters = param self.MAX_SPINBOX = 10000000 self.gridLayout = QGridLayout() # all parameters widgets self.stack_none = QWidget() self.stack_otsu = QWidget() self.stack_yen = QWidget() self.stack_local = QWidget() self.stack_minimum = QWidget() self.stack_triangle = QWidget() self.stack_niblack = QWidget() self.stack_sauvola = QWidget() self.stack_multiotsu = QWidget() self.stack_hysteris = QWidget() self.stack_isodata = QWidget() self.stack_li = QWidget() # set all parameters widgets self.stack_methodWidget() self.stack_triangleWidget() self.stack_minimumWidget() self.stack_localWidget() self.stack_niblackWidget() self.stack_sauvolaWidget() self.stack_multiotsuWidget() self.stack_hysterisWidget() self.stack_otsuWidget() self.stack_yenWidget() self.stack_isodataWidget() self.stack_liWidget() # main widget self.stack = QStackedWidget() self.stack.addWidget(self.stack_otsu) self.stack.addWidget(self.stack_local) self.stack.addWidget(self.stack_niblack) self.stack.addWidget(self.stack_triangle) self.stack.addWidget(self.stack_multiotsu) self.stack.addWidget(self.stack_hysteris) self.stack.addWidget(self.stack_minimum) self.stack.addWidget(self.stack_none) self.stack.addWidget(self.stack_yen) self.stack.addWidget(self.stack_isodata) self.stack.addWidget(self.stack_li) self.stack.addWidget(self.stack_sauvola) self.gridLayout.addWidget(self.stack, 2, 0) layout_ptr = qtconversion.PyQtToQt(self.gridLayout) self.setLayout(layout_ptr) # update left parameter panel if self.parameters.local_method != None: index = self.stack_comboMethod.findText(self.parameters.local_method, Qt.MatchFixedString) self.stack_comboMethod.setCurrentIndex(index)
def __init__(self, param, parent): core.CWorkflowTaskWidget.__init__(self, parent) if param is None: self.parameters = InferYoloV5Param() else: self.parameters = param # Create layout : QGridLayout by default self.grid_layout = QGridLayout() self.combo_model = pyqtutils.append_combo(self.grid_layout, "Model") self.combo_model.addItem("yolov5n") self.combo_model.addItem("yolov5s") self.combo_model.addItem("yolov5m") self.combo_model.addItem("yolov5l") self.combo_model.addItem("yolov5x") self.combo_model.setCurrentText(self.parameters.model_name) self.combo_dataset = pyqtutils.append_combo(self.grid_layout, "Trained on") self.combo_dataset.addItem("COCO") self.combo_dataset.addItem("Custom") self.combo_dataset.setCurrentIndex(0 if self.parameters.dataset == "COCO" else 1) self.combo_dataset.currentIndexChanged.connect( self.on_combo_dataset_changed) self.label_model_path = QLabel("Model path") self.browse_model = pyqtutils.BrowseFileWidget( path=self.parameters.model_path, tooltip="Select file", mode=QFileDialog.ExistingFile) row = self.grid_layout.rowCount() self.grid_layout.addWidget(self.label_model_path, row, 0) self.grid_layout.addWidget(self.browse_model, row, 1) self.label_model_path.setVisible(False if self.parameters.dataset == "COCO" else True) self.browse_model.setVisible(False if self.parameters.dataset == "COCO" else True) self.spin_size = pyqtutils.append_spin(self.grid_layout, "Input size", self.parameters.input_size) self.spin_confidence = pyqtutils.append_double_spin( self.grid_layout, "Confidence", self.parameters.conf_thres, step=0.05, decimals=2) self.spin_iou = pyqtutils.append_double_spin(self.grid_layout, "IOU threshold", self.parameters.iou_thres, step=0.05, decimals=2) # PyQt -> Qt wrapping layout_ptr = qtconversion.PyQtToQt(self.grid_layout) # Set widget layout self.setLayout(layout_ptr)
def __init__(self, param, parent): core.CWorkflowTaskWidget.__init__(self, parent) if param is None: self.parameters = TrainDeeplabv3plusParam() else: self.parameters = param # Create layout : QGridLayout by default self.gridLayout = QGridLayout() # PyQt -> Qt wrapping layout_ptr = qtconversion.PyQtToQt(self.gridLayout) inputSizeLabel = QLabel("Desired input size:") self.widthSpinBox = QSpinBox() self.widthSpinBox.setRange(16, 4096) self.widthSpinBox.setSingleStep(16) self.widthSpinBox.setValue(self.parameters.cfg["inputWidth"]) self.heightSpinBox = QSpinBox() self.heightSpinBox.setRange(16, 4096) self.heightSpinBox.setSingleStep(16) self.heightSpinBox.setValue(self.parameters.cfg["inputHeight"]) maxIterLabel = QLabel("Max iter:") self.maxIterSpinBox = QSpinBox() self.maxIterSpinBox.setRange(0, 2147483647) self.maxIterSpinBox.setSingleStep(1) self.maxIterSpinBox.setValue(self.parameters.cfg["maxIter"]) batchSizeLabel = QLabel("Batch size:") self.batchSizeSpinBox = QSpinBox() self.batchSizeSpinBox.setRange(1, 2147483647) self.batchSizeSpinBox.setSingleStep(1) self.batchSizeSpinBox.setValue(self.parameters.cfg["batchSize"]) splitTrainTestLabel = QLabel("Train test percentage:") self.splitTrainTestSpinBox = QSpinBox() self.splitTrainTestSpinBox.setRange(0,100) self.splitTrainTestSpinBox.setSingleStep(1) self.splitTrainTestSpinBox.setValue(self.parameters.cfg["splitTrainTest"]) evalPeriodLabel = QLabel("Evaluation period:") self.evalPeriodSpinBox = QSpinBox() self.evalPeriodSpinBox.setRange(0,2147483647) self.evalPeriodSpinBox.setSingleStep(1) self.evalPeriodSpinBox.setValue(self.parameters.cfg["evalPeriod"]) baseLearningRateLabel = QLabel("Base learning rate:") self.baseLearningRateSpinBox = QDoubleSpinBox() self.baseLearningRateSpinBox.setRange(0, 10) self.baseLearningRateSpinBox.setDecimals(4) self.baseLearningRateSpinBox.setSingleStep(0.0001) self.baseLearningRateSpinBox.setValue(self.parameters.cfg["learningRate"]) resnetDepthLabel = QLabel("Resnet depth:") self.resnetDepthComboBox = QComboBox() depths = ["50", "101"] self.resnetDepthComboBox.addItems(depths) self.resnetDepthComboBox.setCurrentText(str(self.parameters.cfg["resnetDepth"])) earlyStoppingLabel = QLabel("Early stopping:") self.earlyStoppingCheckBox = QCheckBox() self.earlyStoppingCheckBox.setChecked(self.parameters.cfg["earlyStopping"]) self.earlyStoppingCheckBox.clicked.connect(self.showPatienceSpinBox) self.patienceLabel = QLabel("Patience:") self.patienceLabel.hide() self.patienceSpinBox = QSpinBox() self.patienceSpinBox.setRange(0, 2147483647) self.patienceSpinBox.setSingleStep(1) self.patienceSpinBox.setValue(self.parameters.cfg["patience"]) self.patienceSpinBox.hide() yaml_label = QLabel("Advanced YAML config:") self.yaml_browse_widget = BrowseFileWidget(path=self.parameters.cfg["expertModeCfg"], mode=QFileDialog.ExistingFile) self.numGPUQLabel = QLabel("Number of GPU:") self.numGPUSpinBox = QSpinBox() self.numGPUSpinBox.setRange(1, 16) self.numGPUSpinBox.setSingleStep(1) self.numGPUSpinBox.setValue(self.parameters.cfg["numGPU"]) # Output folder output_label = QLabel("Output folder:") self.output_browse_widget = BrowseFileWidget(path=self.parameters.cfg["outputFolder"], tooltip="Select folder", mode=QFileDialog.Directory) # Set widget layout self.gridLayout.addWidget(inputSizeLabel, 0, 0, 1, 1) self.gridLayout.addWidget(self.widthSpinBox, 0, 1, 1, 1) self.gridLayout.addWidget(self.heightSpinBox, 0, 2, 1, 1) self.gridLayout.addWidget(maxIterLabel, 1, 0, 1, 1) self.gridLayout.addWidget(self.maxIterSpinBox, 1, 1, 1, 2) self.gridLayout.addWidget(batchSizeLabel, 2, 0, 1, 1) self.gridLayout.addWidget(self.batchSizeSpinBox, 2, 1, 1, 2) self.gridLayout.addWidget(splitTrainTestLabel, 3, 0, 1, 1) self.gridLayout.addWidget(self.splitTrainTestSpinBox, 3, 1, 1, 2) self.gridLayout.addWidget(evalPeriodLabel, 4, 0, 1, 1) self.gridLayout.addWidget(self.evalPeriodSpinBox, 4, 1, 1, 2) self.gridLayout.addWidget(baseLearningRateLabel, 5, 0, 1, 1) self.gridLayout.addWidget(self.baseLearningRateSpinBox, 5, 1, 1, 2) self.gridLayout.addWidget(resnetDepthLabel, 6, 0, 1, 2) self.gridLayout.addWidget(self.resnetDepthComboBox, 6, 1, 1, 2) self.gridLayout.addWidget(earlyStoppingLabel, 7, 0, 1, 1) self.gridLayout.addWidget(self.earlyStoppingCheckBox, 7, 1, 1, 2) self.gridLayout.addWidget(self.patienceLabel, 8, 0, 1, 1) self.gridLayout.addWidget(self.patienceSpinBox, 8, 1, 1, 2) self.gridLayout.addWidget(yaml_label, 9, 0, 1, 1) self.gridLayout.addWidget(self.yaml_browse_widget, 9, 1, 1, 2) self.gridLayout.addWidget(self.numGPUQLabel, 10, 0, 1, 1) self.gridLayout.addWidget(self.numGPUSpinBox, 10, 1, 1, 2) self.gridLayout.addWidget(output_label, 11, 0, 1, 1) self.gridLayout.addWidget(self.output_browse_widget, 11, 1, 1, 2) self.setLayout(layout_ptr)
def __init__(self, param, parent): core.CWorkflowTaskWidget.__init__(self, parent) if param is None: self.param = ResNetActionRecognitionParam() else: self.param = param self.param_changed = False # Create layout : QGridLayout by default self.grid_layout = QGridLayout() # Sample duration label_duration = QLabel("Sample duration (in frame)") self.spin_duration = QSpinBox() self.spin_duration.setRange(1, 100) self.spin_duration.setSingleStep(1) self.spin_duration.setValue(self.param.sample_duration) # Rolling prediction on/off self.check_rolling = QCheckBox("Rolling prediction") self.check_rolling.setChecked(self.param.rolling) # Combobox for models label_model = QLabel("Model") self.combo_models = QComboBox() self.fill_combo_models() self.combo_models.currentIndexChanged.connect(self.on_param_changed) self.combo_models.setCurrentIndex( self.combo_models.findData(self.param.model_path)) # Combobox for inference backend label_backend = QLabel("DNN backend") self.combo_backend = QComboBox() self.fill_combo_backend() self.combo_backend.setCurrentIndex( self.combo_backend.findData(self.param.backend)) self.combo_backend.currentIndexChanged.connect(self.on_backend_changed) # Combobox for inference target label_target = QLabel("DNN target") self.combo_target = QComboBox() self.fill_combo_target(self.param.backend) self.combo_target.setCurrentIndex( self.combo_target.findData(self.param.target)) self.combo_target.currentIndexChanged.connect(self.on_param_changed) # Fill layout self.grid_layout.addWidget(label_backend, 0, 0, 1, 1) self.grid_layout.addWidget(self.combo_backend, 0, 1, 1, 1) self.grid_layout.addWidget(label_target, 1, 0, 1, 1) self.grid_layout.addWidget(self.combo_target, 1, 1, 1, 1) self.grid_layout.addWidget(label_model, 2, 0, 1, 1) self.grid_layout.addWidget(self.combo_models, 2, 1, 1, 1) self.grid_layout.addWidget(label_duration, 3, 0, 1, 1) self.grid_layout.addWidget(self.spin_duration, 3, 1, 1, 1) self.grid_layout.addWidget(self.check_rolling, 4, 0, 1, 2) # PyQt -> Qt wrapping layoutPtr = qtconversion.PyQtToQt(self.grid_layout) # Set widget layout self.setLayout(layoutPtr)