Ejemplo n.º 1
0
    def __init__(self):
        self.already_marked_dir = 'Datasets/legacy_jsons/agro'
        self.already_marked_list = os.listdir(self.already_marked_dir)

        super(WindowClassificationPicture, self).__init__()
        self.setWindowTitle("Plant Disease Recognizer")

        # TODO some dev stuff
        # with open(self.choose_json(content_title='config data')) as config_fp:
        with open('config_create_json.json') as config_fp:
            config_dict = json.load(config_fp)

        # self.img_path = self.choose_picture()
        # self.img_name = os.path.splitext(self.img_path)[0]

        self.window_shape = config_dict['window_shape']
        self.classes = config_dict['classes']
        self.default_label_size = config_dict['qt_label_size']
        self.img_thumb = config_dict['img_thumb']

        self._init_hbox_control()
        self._init_main_menu()

        self.main_layout = MyGridWidget(hbox_control=self.hbox_control)
        self.setCentralWidget(self.main_layout)
        self.showFullScreen()

        self.choose_and_render_image()

        # for offset calculation
        self.last_x = 0
        self.last_y = 0
Ejemplo n.º 2
0
    def __init__(self):
        super(WindowPredictOnImage, self).__init__()
        with open(os.path.abspath('config_full_system.json')) as config_fp:
            self.config_dict = json.load(config_fp)

            # load layers
            self.clusterer = get_clusterer_by_name(
                self.config_dict['clusterer']['name'],
                self.config_dict['clusterer']['args'])
            if self.config_dict['preprocessor']['use']:
                self.segmentator = get_preprocessor_by_name(
                    self.config_dict['preprocessor']['name'],
                    self.config_dict['preprocessor']['args'])
            self.classifier = get_classifier_by_name(
                self.config_dict['classifier']['name'],
                self.config_dict['classifier']['args'])
            self.bad_key = self.config_dict['classifier']['bad_key']

            self._define_max_key_len()
            self._parse_image()

            self.main_layout = MyGridWidget(hbox_control=self.hbox_control)
            self.pbar = QProgressBar(self)
            self.main_layout.layout.addWidget(self.pbar)
            self.right_text_labels = []

            self.setCentralWidget(self.main_layout)
            self.showFullScreen()
            self.update_main_layout()
Ejemplo n.º 3
0
    def __init__(self, x_data, y_data, y_predicted):
        super(WindowShowUnetFitting, self).__init__()
        with open('config_full_system.json') as config_fp:
            self.label_size = json.load(config_fp)['gui']['qt_label_size']

        self.main_layout = MyGridWidget(hbox_control=self.hbox_control)
        self.setCentralWidget(self.main_layout)
        self.showFullScreen()
        self.update_main_layout(x_data, y_data, y_predicted)
Ejemplo n.º 4
0
    def __init__(self, x_data, y_data, y_predicted, classes):
        super(WindowShowPredictions, self).__init__()

        config_dict = self.load_dict_from_json_with_keys(
            key_list=['qt_label_size'])
        self.label_size = config_dict['qt_label_size']

        self.x_data = x_data
        self.y_data = y_data
        self.y_predicted = y_predicted
        self.classes = classes

        self._define_max_key_len()

        self.main_layout = MyGridWidget(hbox_control=self.hbox_control)
        self.setCentralWidget(self.main_layout)
        self.showFullScreen()
        self.update_main_layout()
Ejemplo n.º 5
0
    def __init__(self, json_list):
        super(WindowMultipleExamples, self).__init__()
        self.postfix = 'joined'

        self.label_size = (224, 224)

        # TODO maybe will be restored someday
        # with open(self.choose_json(content_title='config augmentation data')) as aug_config_fp:
        with open('config_data_augmentation.json') as aug_config_fp:
            aug_config_dict = json.load(aug_config_fp)
            alghs_dict = aug_config_dict['algorithms']

            self.max_aug_part = aug_config_dict['aug_part']
            self.augment_all = aug_config_dict['augment_all']
            self.output_json = aug_config_dict['output_json']
            self.save_data_binary = aug_config_dict['save_data_to_binary']
            self.save_data_dir = aug_config_dict['save_data_to_dir']

            for key, value in alghs_dict.items():
                if value['use'] and len(
                        value['val_list']) != self.max_aug_part:
                    raise Exception('bad val_list size for %s' % key)

            self.arg_dict = {
                'use_noise': alghs_dict['noise']['use'],
                'intensity_noise_list': alghs_dict['noise']['val_list'],
                'use_deform': alghs_dict['deform']['use'],
                'k_deform_list': alghs_dict['deform']['val_list'],
                'use_blur': alghs_dict['blur']['use'],
                'rad_list': alghs_dict['blur']['val_list'],
                'use_affine': alghs_dict['affine']['use'],
                'affine_list': alghs_dict['affine']['val_list'],
                'use_contrast': alghs_dict['contrast']['use'],
                'contrast_list': alghs_dict['contrast']['val_list']
            }

        if json_list == None:
            raise Exception('No passed json')
        self.json_name = os.path.splitext(json_list[0])[0]

        if len(json_list) == 1:
            print('Parsing preprocessed json')
            self.classes, img_shape, self.x_data, self.y_data = \
                dmk.json_big_load(json_list[0])
            self.x_data = np.array(self.x_data, dtype='uint8')
            self.y_data = np.array(self.y_data, dtype='uint8')
        else:
            print('Parsing json list')
            self.classes, self.x_data, self.y_data = dmk.get_data_from_json_list(
                json_list=json_list,
                # remove_classes=None,
                # TODO some dev stuff
                remove_classes=[
                    'альтернариоз', 'прочие инфекции', 'морщинистая мозаика',
                    'полосатая мозаика'
                ])
        self.init_size = len(self.x_data)
        self.img_shape = self.x_data.shape[1:]
        # TODO some dev stuff
        # self.classes['здоровый куст'] = self.classes['марь белая']
        # del self.classes['марь белая']
        # self.classes['мозаика'] = self.classes['прочие мозаики']
        # del self.classes['прочие мозаики']
        # self.classes['сорняк'] = self.classes['прочие сорняки']
        # del self.classes['прочие сорняки']

        self._define_max_class()

        self.main_layout = MyGridWidget(hbox_control=self.hbox_control)
        self.setCentralWidget(self.main_layout)

        self.showFullScreen()
        self.show_full()

        print("---------------------------------")
        print('classes      = %s' % str(self.classes))
        print('max_classes  = %s' % str(self.max_aug_for_classes))
        print('ex_num = %d' %
              sum(map(lambda x: x['num'], self.classes.values())))
        print("---------------------------------")

        self.show_histogram(labels=list(self.classes.keys()),
                            values=list(
                                map(lambda val: val['num'],
                                    self.classes.values())))