def _generator(feeding_data):
     intermediary_feeding_data = feeding_data
     for generator in generators:
         image, angle = generator(intermediary_feeding_data)
         intermediary_feeding_data = FeedingData(image, angle)
     return intermediary_feeding_data.image(
     ), intermediary_feeding_data.steering_angle
示例#2
0
 def _generator(feeding_data):
     count = np.random.randint(0, len(generators)+1)
     intermediary_feeding_data = feeding_data
     for index in range(count):
         generator = generators[index]
         image, angle = generator(intermediary_feeding_data)
         intermediary_feeding_data = FeedingData(image, angle)
     return intermediary_feeding_data.image(), intermediary_feeding_data.steering_angle
    def test_record_allocation_angle_type_with_zeros(self):
        data_set = DriveDataSet([
            FeedingData(None, 0.0),
            FeedingData(None, 0.1),
            FeedingData(None, -0.1),
            FeedingData(None, 0.25),
            FeedingData(None, -0.25),
            FeedingData(None, -1),
            FeedingData(None, 0.001),
            FeedingData(None, 0.251),
            FeedingData(None, -0.249),
        ])

        allocator = AngleSegmentRecordAllocator(
            data_set, AngleSegment((-1.0, -0.25), 10),
            AngleSegment((-0.25, -0.249), 10), AngleSegment((-0.249, -0.1),
                                                            10),
            AngleSegment((-0.1, 0), 10), AngleSegment((0, 0.001), 10),
            AngleSegment((0.001, 0.1), 10), AngleSegment((0.1, 0.25), 10),
            AngleSegment((0.25, 0.251), 10), AngleSegment((0.251, 1.001), 10),
            AngleSegment((1.001, 2.0), 10))
        records = allocator.allocate(any_number(), any_number(), len(data_set))
        self.assertEqual(same_range_angles(allocator, records, 0), [0.0])
        self.assertEqual(same_range_angles(allocator, records, 0.1), [0.1])
        self.assertEqual(same_range_angles(allocator, records, -0.1), [-0.1])
        self.assertEqual(same_range_angles(allocator, records, 0.25), [0.25])
        self.assertEqual(same_range_angles(allocator, records, -0.25), [-0.25])
        self.assertEqual(same_range_angles(allocator, records, 1), [0.251])
        self.assertEqual(same_range_angles(allocator, records, -1), [-1])
        self.assertEqual(same_range_angles(allocator, records, 0.001), [0.001])
        self.assertEqual(same_range_angles(allocator, records, -0.001), [-0.1])
        self.assertEqual(same_range_angles(allocator, records, 0.252), [0.251])
        self.assertEqual(same_range_angles(allocator, records, -0.249),
                         [-0.249])
    def test_pipe_line_generators(self):
        def generator(feeding_data):
            return feeding_data.image(), feeding_data.steering_angle + 1

        generator = pipe_line_generators(generator, generator, generator)
        image, angle = generator(FeedingData([[[1, 1, 1]]], 2))
        np.testing.assert_almost_equal(image, [[[1, 1, 1]]])
        self.assertEqual(angle, 5)
    def test_filter(self):
        def generator1(feeding_data):
            return feeding_data.image(), 0.01

        def generator2(feeding_data):
            return feeding_data.image(), 1

        generator = filter_generator(random_generators(generator1, generator2))
        image, angle = generator(FeedingData([[[1, 1, 1]]], 2))
        np.testing.assert_almost_equal(image, [[[1, 1, 1]]])
        self.assertEqual(
            angle, 1,
            "should always pickup generator2 as it pass the threshold")
    def test_record_allocation_angle_type_with_zeros_in_range(self):
        data_set = DriveDataSet([
            FeedingData(None, 0.03),
            FeedingData(None, -0.03),
            FeedingData(None, 0.15),
            FeedingData(None, -0.15),
            FeedingData(None, 0.26),
            FeedingData(None, -0.26)
        ])
        allocator = AngleTypeWithZeroRecordAllocator(data_set, any_number(),
                                                     any_number(),
                                                     any_number(),
                                                     any_number(),
                                                     any_number(), 0.25)

        self.assertEqual(angles(allocator.zero_angles), [])
        self.assertEqual(angles(allocator.zero_angles_left), [])
        self.assertEqual(angles(allocator.zero_angles_right), [])
        self.assertEqual(angles(allocator.center_angles), [0.03, -0.03])
        self.assertEqual(angles(allocator.left_angles), [-0.15, -0.26])
        self.assertEqual(angles(allocator.right_angles), [0.15, 0.26])
 def test_flip_generator(self):
     record = FeedingData(np.array([[[1, 1, 1], [2, 2, 2]]]), 0.1)
     image, angle = flip_generator(record)
     np.testing.assert_almost_equal(image, [[[2, 2, 2], [1, 1, 1]]])
     self.assertEqual(-0.1, angle)