コード例 #1
0
    def test_angle_segment_shift_image(self):
        data_set = self.create_real_dataset(
            filter_method=drive_record_filter_include_all)
        allocator = AngleSegmentRecordAllocator(
            data_set,
            AngleSegment((-1.5, -0.5), 10),  # big sharp left
            AngleSegment((-0.5, -0.25), 14),  # sharp left
            AngleSegment((-0.25, -0.249),
                         1),  # sharp turn left (zero right camera)
            AngleSegment((-0.249, -0.1), 12),  # big turn left
            AngleSegment((-0.1, 0), 12),  # straight left
            AngleSegment((0, 0.001), 2),  # straight zero center camera
            AngleSegment((0.001, 0.1), 12),  # straight right
            AngleSegment((0.1, 0.25), 12),  # big turn right
            AngleSegment((0.25, 0.251),
                         1),  # sharp turn right (zero left camera)
            AngleSegment((0.251, 0.5), 14),  # sharp right
            AngleSegment((0.5, 1.5), 10)  # big sharp right
        )

        # a pipe line with shift -> flip -> brightness -> shadow augment processes
        generator = pipe_line_generators(
            shift_image_generator(angle_offset_pre_pixel=0.0015),
            flip_random_generator, brightness_image_generator(0.35),
            shadow_generator)

        self._angle_distribution(
            "angle_distribution_generator_angle_segment_shift_image",
            100,
            256,
            allocator=allocator.allocate,
            generator=generator)
コード例 #2
0
def segment_normal_distribution_shift_flip_brightness_shadow_reg():
    data_set = DriveDataSet.from_csv(
        "datasets/udacity-sample-track-1/driving_log.csv",
        crop_images=True,
        all_cameras_images=True,
        filter_method=drive_record_filter_include_all)
    # fine tune every part of training data so that make it meat std distrubtion
    allocator = AngleSegmentRecordAllocator(
        data_set,
        AngleSegment((-1.5, -0.5), 10),  # big sharp left
        AngleSegment((-0.5, -0.25), 14),  # sharp left
        AngleSegment((-0.25, -0.249),
                     3),  # sharp turn left (zero right camera)
        AngleSegment((-0.249, -0.1), 10),  # big turn left
        AngleSegment((-0.1, 0), 11),  # straight left
        AngleSegment((0, 0.001), 4),  # straight zero center camera
        AngleSegment((0.001, 0.1), 11),  # straight right
        AngleSegment((0.1, 0.25), 10),  # big turn right
        AngleSegment((0.25, 0.251), 3),  # sharp turn right (zero left camera)
        AngleSegment((0.251, 0.5), 14),  # sharp right
        AngleSegment((0.5, 1.5), 10)  # big sharp right
    )
    # a pipe line with shift -> flip -> brightness -> shadow augment processes
    augment = pipe_line_generators(
        shift_image_generator(angle_offset_pre_pixel=0.002), flip_generator,
        brightness_image_generator(0.35), shadow_generator)
    data_generator = DataGenerator(allocator.allocate, augment)
    model = nvidia_with_regularizer(input_shape=data_set.output_shape(),
                                    dropout=0.2)
    Trainer(model,
            learning_rate=0.0001,
            epoch=45,
            multi_process=use_multi_process,
            custom_name=inspect.stack()[0][3]).fit_generator(
                data_generator.generate(batch_size=256))
コード例 #3
0
 def test_angle_distribution_generator_45_10_45_pipe_line(self):
     data_set = self.create_real_dataset(
         filter_method=drive_record_filter_exclude_duplicated_small_angles)
     allocator = AngleTypeWithZeroRecordAllocator(data_set, 20, 20, 15, 15,
                                                  15, 0.25)
     generator = pipe_line_generators(
         shift_image_generator(angle_offset_pre_pixel=0.002),
         flip_generator, brightness_image_generator(0.25))
     self._angle_distribution(
         "angle_distribution_generator_exclude_duplicated_small_angles_40_20_40_pipe_line",
         100,
         256,
         allocator=allocator.allocate,
         angle_offset_pre_pixel=0.006,
         generator=generator)
コード例 #4
0
def raw_data_centre_left_right_crop_shift_flip():
    data_set = DriveDataSet.from_csv(
        "datasets/udacity-sample-track-1/driving_log.csv",
        crop_images=True,
        all_cameras_images=True,
        filter_method=drive_record_filter_include_all)
    allocator = RecordRandomAllocator(data_set)
    # shift_image_generator was the only difference
    generator = pipe_line_generators(
        shift_image_generator(angle_offset_pre_pixel=0.002), flip_generator)
    data_generator = DataGenerator(allocator.allocate, generator)
    model = nvidia(input_shape=data_set.output_shape(), dropout=0.5)
    Trainer(model,
            learning_rate=0.0001,
            epoch=20,
            multi_process=use_multi_process,
            custom_name=inspect.stack()[0][3]).fit_generator(
                data_generator.generate(batch_size=128))
コード例 #5
0
def segment_left_centre_right():
    data_set = DriveDataSet.from_csv(
        "datasets/udacity-sample-track-1/driving_log.csv",
        crop_images=True,
        all_cameras_images=True,
        filter_method=drive_record_filter_include_all)

    allocator = AngleTypeWithZeroRecordAllocator(
        data_set,
        left_percentage=20,
        right_percentage=20,
        zero_percentage=8,
        zero_left_percentage=6,
        zero_right_percentage=6,
        left_right_image_offset_angle=0.25)
    generator = pipe_line_generators(
        shift_image_generator(angle_offset_pre_pixel=0.002), flip_generator,
        brightness_image_generator(0.25), shadow_generator)
    data_generator = DataGenerator(allocator.allocate, generator)
    model = nvidia(input_shape=data_set.output_shape(), dropout=0.5)
    Trainer(model, learning_rate=0.0001,
            epoch=10).fit_generator(data_generator.generate(batch_size=128))
コード例 #6
0
    def _angle_distribution(self,
                            name,
                            batches,
                            batch_size,
                            allocator,
                            angle_offset_pre_pixel=0.002,
                            generator=None):

        if generator is None:
            generator = pipe_line_random_generators(
                image_itself,
                shift_image_generator(
                    angle_offset_pre_pixel=angle_offset_pre_pixel),
                flip_generator)
        data_generator = DataGenerator(allocator, generator)
        angles = np.array([])
        for index in range(batches):
            print("batch {} / {}".format(index, batches))
            _, _angles = next(data_generator.generate(batch_size=batch_size))
            angles = np.append(angles, _angles)

        plt = Plot.angle_distribution(angles)
        plt.savefig("angle/{}.jpg".format(name))