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
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)