def run_prediction_pickle():
    from config_farm import configuration_10_160_17L_4scales_v1 as cfg
    import mxnet

    data_pickle_file_path = '../data_provider_farm/data_folder/data_list_brainwash_test.pkl'
    from data_provider_farm.pickle_provider import PickleProvider
    pickle_provider = PickleProvider(data_pickle_file_path)
    positive_index = pickle_provider.positive_index
    negative_index = pickle_provider.negative_index
    all_index = positive_index
    print("num of positive: %d\nnum of negative: %d" %
          (len(positive_index), len(negative_index)))
    # import random
    # random.shuffle(all_index)

    symbol_file_path = '../symbol_farm/symbol_10_160_17L_4scales_v1_deploy.json'
    model_file_path = '../saved_model/configuration_10_160_17L_4scales_v1_2019-09-20-13-08-26/train_10_160_17L_4scales_v1_iter_800000.params'
    my_predictor = Predict(
        mxnet=mxnet,
        symbol_file_path=symbol_file_path,
        model_file_path=model_file_path,
        ctx=mxnet.gpu(0),
        receptive_field_list=cfg.param_receptive_field_list,
        receptive_field_stride=cfg.param_receptive_field_stride,
        bbox_small_list=cfg.param_bbox_small_list,
        bbox_large_list=cfg.param_bbox_large_list,
        receptive_field_center_start=cfg.param_receptive_field_center_start,
        num_output_scales=cfg.param_num_output_scales)

    for idx in all_index:
        im, _, bboxes_gt = pickle_provider.read_by_index(idx)

        bboxes = my_predictor.predict(im,
                                      resize_scale=1,
                                      score_threshold=0.5,
                                      top_k=10000,
                                      NMS_threshold=0.6)
        for bbox in bboxes:
            cv2.rectangle(im, (bbox[0], bbox[1]), (bbox[2], bbox[3]),
                          (0, 255, 0), 2)

        cv2.imshow('im', im)
        key = cv2.waitKey()
        for n in range(self.num_output_scales):
            data_batch.append_label(mask_batch_list[n])
            data_batch.append_label(label_batch_list[n])

        return data_batch

    def get_batch_size(self):
        return self.batch_size


if __name__ == '__main__':
    from config_farm import configuration_30_320_20L_4scales_v1 as cfg
    from data_provider_farm.pickle_provider import PickleProvider
    import mxnet

    train_data_provider = PickleProvider(cfg.param_trainset_pickle_file_path)
    train_dataiter = Multithread_DataIter_for_CrossEntropy(
        mxnet_module=mxnet,
        num_threads=cfg.param_num_thread_train_dataiter,
        data_provider=train_data_provider,
        batch_size=cfg.param_train_batch_size,
        enable_horizon_flip=cfg.param_enable_horizon_flip,
        enable_vertical_flip=cfg.param_enable_vertical_flip,
        enable_random_brightness=cfg.param_enable_random_brightness,
        brightness_params=cfg.param_brightness_factors,
        enable_random_saturation=cfg.param_enable_random_saturation,
        saturation_params=cfg.param_saturation_factors,
        enable_random_contrast=cfg.param_enable_random_contrast,
        contrast_params=cfg.param_contrast_factors,
        enable_blur=cfg.param_enable_blur,
        blur_params=cfg.param_blur_factors,
def run():
    logging_GOCD.init_logging(log_file_path=param_log_file_path,
                              log_file_mode=param_log_mode)

    logging.info('Preparing before training.')
    sys.path.append('..')
    from symbol_farm import symbol_10_320_20L_5scales_v2 as net

    net_symbol, data_names, label_names = net.get_net_symbol()
    net_initializer = mxnet.initializer.Xavier()

    logging.info('Get net symbol successfully.')

    # -----------------------------------------------------------------------------------------------
    # 构造dataiter
    from data_provider_farm.pickle_provider import PickleProvider
    from data_iterator_farm.multithread_dataiter_for_cross_entropy_v2 import Multithread_DataIter_for_CrossEntropy as DataIter

    train_data_provider = PickleProvider(param_trainset_pickle_file_path)
    train_dataiter = DataIter(
        mxnet_module=mxnet,
        num_threads=param_num_thread_train_dataiter,
        data_provider=train_data_provider,
        batch_size=param_train_batch_size,
        enable_horizon_flip=param_enable_horizon_flip,
        enable_vertical_flip=param_enable_vertical_flip,
        enable_random_brightness=param_enable_random_brightness,
        brightness_params=param_brightness_factors,
        enable_random_saturation=param_enable_random_saturation,
        saturation_params=param_saturation_factors,
        enable_random_contrast=param_enable_random_contrast,
        contrast_params=param_contrast_factors,
        enable_blur=param_enable_blur,
        blur_params=param_blur_factors,
        blur_kernel_size_list=param_blur_kernel_size_list,
        neg_image_ratio=param_neg_image_ratio,
        num_image_channels=param_num_image_channel,
        net_input_height=param_net_input_height,
        net_input_width=param_net_input_width,
        num_output_scales=param_num_output_scales,
        receptive_field_list=param_receptive_field_list,
        receptive_field_stride=param_receptive_field_stride,
        feature_map_size_list=param_feature_map_size_list,
        receptive_field_center_start=param_receptive_field_center_start,
        bbox_small_list=param_bbox_small_list,
        bbox_large_list=param_bbox_large_list,
        bbox_small_gray_list=param_bbox_small_gray_list,
        bbox_large_gray_list=param_bbox_large_gray_list,
        num_output_channels=param_num_output_channels,
        neg_image_resize_factor_interval=param_neg_image_resize_factor_interval
    )

    val_dataiter = None
    if param_valset_pickle_file_path != '' and param_val_batch_size != 0 and param_num_val_loops != 0 and param_num_thread_val_dataiter != 0:
        val_data_provider = PickleProvider(param_valset_pickle_file_path)
        val_dataiter = DataIter(
            mxnet_module=mxnet,
            num_threads=param_num_thread_val_dataiter,
            data_provider=val_data_provider,
            batch_size=param_val_batch_size,
            enable_horizon_flip=param_enable_horizon_flip,
            enable_vertical_flip=param_enable_vertical_flip,
            enable_random_brightness=param_enable_random_brightness,
            brightness_params=param_brightness_factors,
            enable_random_saturation=param_enable_random_saturation,
            saturation_params=param_saturation_factors,
            enable_random_contrast=param_enable_random_contrast,
            contrast_params=param_contrast_factors,
            enable_blur=param_enable_blur,
            blur_params=param_blur_factors,
            blur_kernel_size_list=param_blur_kernel_size_list,
            neg_image_ratio=param_neg_image_ratio,
            num_image_channels=param_num_image_channel,
            net_input_height=param_net_input_height,
            net_input_width=param_net_input_width,
            num_output_scales=param_num_output_scales,
            receptive_field_list=param_receptive_field_list,
            receptive_field_stride=param_receptive_field_stride,
            feature_map_size_list=param_feature_map_size_list,
            receptive_field_center_start=param_receptive_field_center_start,
            bbox_small_list=param_bbox_small_list,
            bbox_large_list=param_bbox_large_list,
            bbox_small_gray_list=param_bbox_small_gray_list,
            bbox_large_gray_list=param_bbox_large_gray_list,
            num_output_channels=param_num_output_channels,
            neg_image_resize_factor_interval=
            param_neg_image_resize_factor_interval)
    # ---------------------------------------------------------------------------------------------
    # 构造metric
    from metric_farm.metric_default import Metric

    train_metric = Metric(param_num_output_scales)
    val_metric = None
    if val_dataiter is not None:
        val_metric = Metric(param_num_output_scales)

    train_GOCD.start_train(
        param_dict=param_dict,
        mxnet_module=mxnet,
        context=[mxnet.gpu(i) for i in param_GPU_idx_list],
        train_dataiter=train_dataiter,
        train_metric=train_metric,
        train_metric_update_frequency=param_train_metric_update_frequency,
        num_train_loops=param_num_train_loops,
        val_dataiter=val_dataiter,
        val_metric=val_metric,
        num_val_loops=param_num_val_loops,
        validation_interval=param_validation_interval,
        optimizer_name=param_optimizer_name,
        optimizer_params=param_optimizer_params,
        net_symbol=net_symbol,
        net_initializer=net_initializer,
        net_data_names=data_names,
        net_label_names=label_names,
        pretrained_model_param_path=param_pretrained_model_param_path,
        display_interval=param_display_interval,
        save_prefix=param_save_prefix,
        model_save_interval=param_model_save_interval,
        start_index=param_start_index)
Example #4
0
def run():
    logging_GOCD.init_logging(log_file_path=param_log_file_path,
                              log_file_mode=param_log_mode)

    logging.info('Preparing before training.')
    sys.path.append('..')
    from net_farm.naivenet import naivenet20

    net = naivenet20()
    net_initializer = 'default'

    # if torch.cuda.is_available():
    #     net.cuda()
    #     cudnn.benchmark = True

    torch.cuda.set_device(param_gpu_id_list[0])
    net = net.cuda(param_gpu_id_list[0])

    # construct the learning rate scheduler
    param_optimizer = optim.SGD(net.parameters(),
                                lr=param_learning_rate,
                                momentum=param_momentum,
                                weight_decay=param_weight_decay)
    # param_lr_scheduler = optim.lr_scheduler.StepLR(param_optimizer, 500000, 0.1)
    param_lr_scheduler = optim.lr_scheduler.MultiStepLR(
        param_optimizer,
        milestones=param_scheduler_step_list,
        gamma=param_scheduler_factor)

    loss_criterion = cross_entropy_with_hnm_for_one_class_detection(
        param_hnm_ratio, param_num_output_scales)

    logging.info('Get net model successfully.')

    # -------------------------------------------------------------------------
    # init dataiter
    from data_provider_farm.pickle_provider import PickleProvider
    from data_iterator_farm.multithread_dataiter_for_cross_entropy_v2 import \
         Multithread_DataIter_for_CrossEntropy as DataIter

    train_data_provider = PickleProvider(param_trainset_pickle_file_path)
    train_dataiter = DataIter(
        torch_module=torch,
        num_threads=param_num_thread_train_dataiter,
        data_provider=train_data_provider,
        batch_size=param_train_batch_size,
        enable_horizon_flip=param_enable_horizon_flip,
        enable_vertical_flip=param_enable_vertical_flip,
        enable_random_brightness=param_enable_random_brightness,
        brightness_params=param_brightness_factors,
        enable_random_saturation=param_enable_random_saturation,
        saturation_params=param_saturation_factors,
        enable_random_contrast=param_enable_random_contrast,
        contrast_params=param_contrast_factors,
        enable_blur=param_enable_blur,
        blur_params=param_blur_factors,
        blur_kernel_size_list=param_blur_kernel_size_list,
        neg_image_ratio=param_neg_image_ratio,
        num_image_channels=param_num_image_channel,
        net_input_height=param_net_input_height,
        net_input_width=param_net_input_width,
        num_output_scales=param_num_output_scales,
        receptive_field_list=param_receptive_field_list,
        receptive_field_stride=param_receptive_field_stride,
        feature_map_size_list=param_feature_map_size_list,
        receptive_field_center_start=param_receptive_field_center_start,
        bbox_small_list=param_bbox_small_list,
        bbox_large_list=param_bbox_large_list,
        bbox_small_gray_list=param_bbox_small_gray_list,
        bbox_large_gray_list=param_bbox_large_gray_list,
        num_output_channels=param_num_output_channels,
        neg_image_resize_factor_interval=param_neg_image_resize_factor_interval
    )

    val_dataiter = None
    if param_valset_pickle_file_path != '' and param_val_batch_size != 0 and \
       param_num_val_loops != 0 and param_num_thread_val_dataiter != 0:
        val_data_provider = PickleProvider(param_valset_pickle_file_path)
        val_dataiter = DataIter(
            torch_module=torch,
            num_threads=param_num_thread_val_dataiter,
            data_provider=val_data_provider,
            batch_size=param_val_batch_size,
            enable_horizon_flip=param_enable_horizon_flip,
            enable_vertical_flip=param_enable_vertical_flip,
            enable_random_brightness=param_enable_random_brightness,
            brightness_params=param_brightness_factors,
            enable_random_saturation=param_enable_random_saturation,
            saturation_params=param_saturation_factors,
            enable_random_contrast=param_enable_random_contrast,
            contrast_params=param_contrast_factors,
            enable_blur=param_enable_blur,
            blur_params=param_blur_factors,
            blur_kernel_size_list=param_blur_kernel_size_list,
            neg_image_ratio=param_neg_image_ratio,
            num_image_channels=param_num_image_channel,
            net_input_height=param_net_input_height,
            net_input_width=param_net_input_width,
            num_output_scales=param_num_output_scales,
            receptive_field_list=param_receptive_field_list,
            receptive_field_stride=param_receptive_field_stride,
            feature_map_size_list=param_feature_map_size_list,
            receptive_field_center_start=param_receptive_field_center_start,
            bbox_small_list=param_bbox_small_list,
            bbox_large_list=param_bbox_large_list,
            bbox_small_gray_list=param_bbox_small_gray_list,
            bbox_large_gray_list=param_bbox_large_gray_list,
            num_output_channels=param_num_output_channels,
            neg_image_resize_factor_interval=
            param_neg_image_resize_factor_interval)
    # -------------------------------------------------------------------------
    # init metric
    from metric_farm.metric_default import Metric

    train_metric = Metric(param_num_output_scales)
    val_metric = None
    if val_dataiter is not None:
        val_metric = Metric(param_num_output_scales)

    train_GOCD.start_train(
        param_dict=param_dict,
        task_name=param_task_name,
        torch_module=torch,
        gpu_id_list=param_gpu_id_list,
        train_dataiter=train_dataiter,
        train_metric=train_metric,
        train_metric_update_frequency=param_train_metric_update_frequency,
        num_train_loops=param_num_train_loops,
        val_dataiter=val_dataiter,
        val_metric=val_metric,
        num_val_loops=param_num_val_loops,
        validation_interval=param_validation_interval,
        optimizer=param_optimizer,
        lr_scheduler=param_lr_scheduler,
        net=net,
        net_initializer=net_initializer,
        loss_criterion=loss_criterion,
        pretrained_model_param_path=param_pretrained_model_param_path,
        display_interval=param_display_interval,
        save_prefix=param_save_prefix,
        model_save_interval=param_model_save_interval,
        start_index=param_start_index)