Example #1
0
    def __init__(self,
                 gpu_id=1,
                 name=None,
                 is_conv_4=True,
                 mn_checkpoint=None,
                 dataset_name=MyDataset.dataset_name_miniimagenet,
                 is_check=False):
        self.gpu_id = gpu_id
        os.environ["CUDA_VISIBLE_DEVICES"] = str(self.gpu_id)

        self.name = name
        self.is_conv_4 = is_conv_4
        self.dataset_name = dataset_name
        self.num_way = 5
        self.num_shot = 1
        self.num_workers = 8
        self.episode_size = 15
        self.test_episode = 600
        self.mn_checkpoint = mn_checkpoint

        ###############################################################################################
        if self.is_conv_4:
            self.matching_net, self.batch_size = C4Net(hid_dim=64,
                                                       z_dim=64), 64
        else:
            self.matching_net, self.batch_size = ResNet12Small(
                avg_pool=True, drop_rate=0.1), 32
        ###############################################################################################

        self.is_check = is_check
        if self.is_check:
            self.log_file = None
            return

        self.log_file = Tools.new_dir(
            os.path.join(
                "../models_abl/{}/mn/result".format(self.dataset_name),
                "{}_{}.txt".format(self.name, Tools.get_format_time())))

        ###############################################################################################
        self.is_png = True
        self.data_root = MyDataset.get_data_root(
            dataset_name=self.dataset_name, is_png=self.is_png)
        _, _, self.transform_test = MyTransforms.get_transform(
            dataset_name=self.dataset_name,
            has_ic=True,
            is_fsl_simple=True,
            is_css=False)
        ###############################################################################################
        pass
    def __init__(self,
                 gpu_id,
                 ic_out_dim=512,
                 modify_head=False,
                 net_name=net_name_conv4):
        self.gpu_id = gpu_id
        os.environ["CUDA_VISIBLE_DEVICES"] = str(self.gpu_id)

        self.num_workers = 8
        self.batch_size = 64
        self.val_freq = 10

        # ic
        self.ic_out_dim = ic_out_dim
        self.ic_ratio = 1

        self.modify_head = modify_head

        self.net_name = net_name
        self.net = self.get_net(self.net_name)
        self.ic_net = ICNet(net=self.net)

        self.is_png = True
        # self.is_png = False

        self.learning_rate = 0.01
        self.train_epoch = 1700
        self.first_epoch, self.t_epoch = 500, 200
        self.adjust_learning_rate = Runner.adjust_learning_rate1

        self.model_name = "{}_{}_{}_{}_{}_{}_{}_{}_{}{}{}".format(
            self.gpu_id, self.net_name, self.batch_size, self.ic_out_dim,
            self.ic_ratio, self.train_epoch, self.first_epoch, self.t_epoch,
            self.learning_rate, "_head" if self.modify_head else "",
            "_png" if self.is_png else "")

        self.time = Tools.get_format_time()
        self.ic_dir = Tools.new_dir(
            "../models_abl/ic_res_xx/{}_{}_ic.pkl".format(
                self.time, self.model_name))
        self.log_file = self.ic_dir.replace(".pkl", ".txt")
        self.data_root = self.get_data_root()
        Tools.print(self.model_name, txt_path=self.log_file)
        Tools.print(self.data_root, txt_path=self.log_file)
        pass
Example #3
0
    def __init__(self,
                 gpu_id=1,
                 dataset_name=MyDataset.dataset_name_miniimagenet,
                 is_conv_4=True,
                 is_res34=True,
                 is_modify_head=True):
        self.gpu_id = gpu_id
        os.environ["CUDA_VISIBLE_DEVICES"] = str(self.gpu_id)

        self.dataset_name = dataset_name
        self.is_conv_4 = is_conv_4
        self.is_res34 = is_res34
        self.modify_head = is_modify_head

        self.num_workers = 8
        self.num_way = 5
        self.num_shot = 1
        self.val_freq = 10
        self.episode_size = 15
        self.test_episode = 600
        self.ic_out_dim = 512
        self.ic_ratio = 1
        self.learning_rate = 0.01
        self.loss_fsl_ratio = 1.0
        self.loss_ic_ratio = 1.0

        ###############################################################################################
        self.train_epoch = 1500
        self.first_epoch, self.t_epoch = 300, 200
        self.adjust_learning_rate = RunnerTool.adjust_learning_rate1
        ###############################################################################################

        ###############################################################################################
        self.is_png = True
        self.data_root = MyDataset.get_data_root(
            dataset_name=self.dataset_name, is_png=self.is_png)
        self.transform_train_ic, self.transform_train_fsl, self.transform_test = MyTransforms.get_transform(
            dataset_name=self.dataset_name,
            has_ic=True,
            is_fsl_simple=True,
            is_css=False)

        if self.is_res34:
            self.resnet = resnet34
            self.ic_net_name = "res34{}".format(
                "_head" if self.modify_head else "")
        else:
            self.resnet = resnet18
            self.ic_net_name = "res18{}".format(
                "_head" if self.modify_head else "")
            pass

        if self.is_conv_4:
            self.matching_net, self.batch_size, self.e_net_name = C4Net(
                hid_dim=64, z_dim=64), 64, "C4"
        else:
            self.matching_net, self.batch_size, self.e_net_name = ResNet12Small(
                avg_pool=True, drop_rate=0.1), 32, "R12S"
        ###############################################################################################

        self.model_name = "{}_{}_{}_{}_{}_{}_{}_{}_{}_{}_{}_{}_{}{}".format(
            self.gpu_id, self.ic_net_name, self.e_net_name, self.train_epoch,
            self.batch_size, self.num_way, self.num_shot, self.first_epoch,
            self.t_epoch, self.ic_out_dim, self.ic_ratio, self.loss_fsl_ratio,
            self.loss_ic_ratio, "_png" if self.is_png else "")

        self.time = Tools.get_format_time()
        _root_path = "../models_abl/{}/mn".format(self.dataset_name)
        self.mn_dir = "{}/{}_{}_mn.pkl".format(_root_path, self.time,
                                               self.model_name)
        self.ic_dir = "{}/{}_{}_ic.pkl".format(_root_path, self.time,
                                               self.model_name)
        self.log_file = self.ic_dir.replace(".pkl", ".txt")

        Tools.print(self.data_root, txt_path=self.log_file)
        Tools.print(self.model_name, txt_path=self.log_file)
        Tools.print(self.mn_dir, txt_path=self.log_file)
        Tools.print(self.ic_dir, txt_path=self.log_file)
        pass
result_name = "08-14-2"
cap = cv2.VideoCapture(1)

kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (3, 3))
background_sub_tractor_mog2 = cv2.createBackgroundSubtractorMOG2()

count = 0
while True:
    ret, frame = cap.read()
    if ret:
        mask = background_sub_tractor_mog2.apply(frame)
        mask = cv2.morphologyEx(mask, cv2.MORPH_OPEN, kernel)

        if np.sum(mask // 125) > 1000:
            count += 1
            Tools.print("{} {}".format(Tools.get_format_time(), count))
            if count > 5:
                file_name = "{}_{}.png".format(
                    Tools.get_format_time().replace(":", "_"), count)
                result_file_name = os.path.join(result_dir, result_name,
                                                file_name)
                cv2.imwrite(Tools.new_dir(result_file_name), frame)
            pass

        cv2.imshow('frame', frame)
        cv2.imshow('mask', mask)

        if cv2.waitKey(30) & 0xff == "q":
            break
    else:
        break