1 00:00:00,090 --> 00:00:01,100 In this video, I'd like to 2 00:00:01,200 --> 00:00:02,840 show you a fun and historically 3 00:00:03,390 --> 00:00:05,820 important example of Neural Network Learning. 4 00:00:06,720 --> 00:00:09,300 Of using a Neural Network for autonomous driving 5 00:00:09,870 --> 00:00:12,430 that is getting a car to learn to drive itself. 6 00:00:13,810 --> 00:00:14,980 The video that I 7 00:00:15,130 --> 00:00:16,450 showed a minute, was something 8 00:00:16,820 --> 00:00:18,290 that I've gotten from Dean Pomilieu, 9 00:00:18,470 --> 00:00:20,000 who Colleague who works 10 00:00:20,260 --> 00:00:22,000 out in Carnegie Mellon University out 11 00:00:22,140 --> 00:00:23,440 on the east coast of the United States, 12 00:00:24,460 --> 00:00:25,310 and in part of the 13 00:00:25,350 --> 00:00:27,980 video you see visualizations like 14 00:00:28,230 --> 00:00:29,930 this, and what I should tell you what the visualization 15 00:00:30,080 --> 00:00:31,170 looks like before starting to 16 00:00:31,260 --> 00:00:32,830 video. Down here 17 00:00:33,170 --> 00:00:34,860 on the lower left is the 18 00:00:35,100 --> 00:00:36,150 view seen by the car 19 00:00:36,750 --> 00:00:37,580 of what's in front of it 20 00:00:37,840 --> 00:00:38,980 and so here you know, you will kind 21 00:00:39,130 --> 00:00:40,250 of see you know, a road that's 22 00:00:40,450 --> 00:00:41,390 maybe going a bit to 23 00:00:41,470 --> 00:00:42,100 the left and going a little bit to 24 00:00:42,670 --> 00:00:45,060 the right, and up 25 00:00:45,250 --> 00:00:47,230 here on top, this 26 00:00:47,820 --> 00:00:49,820 first horizontal bar shows the 27 00:00:49,940 --> 00:00:51,510 direction selected by the 28 00:00:51,750 --> 00:00:53,110 human driver and is the 29 00:00:53,580 --> 00:00:54,630 location of this bright 30 00:00:55,180 --> 00:00:56,830 white band that shows the 31 00:00:57,100 --> 00:00:58,490 steering direction selected by the 32 00:00:58,690 --> 00:01:00,450 human driver, where, you 33 00:01:00,680 --> 00:01:01,780 know, here, far to the left 34 00:01:02,150 --> 00:01:03,280 corresponds to steering hard left; 35 00:01:03,910 --> 00:01:05,180 here corresponds to steering hard 36 00:01:05,450 --> 00:01:06,830 to the right; and so 37 00:01:06,980 --> 00:01:08,280 this location, which is a 38 00:01:08,500 --> 00:01:09,390 little bit to the left, 39 00:01:09,720 --> 00:01:10,730 a little bit left of 40 00:01:10,890 --> 00:01:12,120 center, means that the human 41 00:01:12,280 --> 00:01:13,350 driver, at this point, was 42 00:01:13,520 --> 00:01:14,600 steering slightly to the left. A 43 00:01:16,020 --> 00:01:17,340 nd this second part here 44 00:01:17,880 --> 00:01:18,800 corresponds to the steering 45 00:01:19,140 --> 00:01:20,720 direction selected by the 46 00:01:20,870 --> 00:01:22,020 learning algorithm; and again, the 47 00:01:22,110 --> 00:01:23,060 location of this sort 48 00:01:23,310 --> 00:01:24,790 of white band, means the 49 00:01:24,850 --> 00:01:26,560 neural network was here, selecting 50 00:01:27,040 --> 00:01:28,300 a steering direction just slightly to 51 00:01:28,380 --> 00:01:29,440 the left and in fact, 52 00:01:29,970 --> 00:01:30,980 before the neural network starts 53 00:01:31,390 --> 00:01:33,020 learning initially, you 54 00:01:33,170 --> 00:01:34,990 see that the network outputs a 55 00:01:35,170 --> 00:01:36,410 grey band, like a 56 00:01:36,580 --> 00:01:38,500 grey uniform, grey band throughout 57 00:01:38,890 --> 00:01:40,260 this region, so the uniform 58 00:01:40,740 --> 00:01:42,210 grey fuzz corresponds to the 59 00:01:42,330 --> 00:01:43,880 neural network having been randomly 60 00:01:44,450 --> 00:01:46,180 initialized, and initially having 61 00:01:46,510 --> 00:01:47,960 no idea how to 62 00:01:48,020 --> 00:01:49,650 drive the car, or initially having 63 00:01:50,050 --> 00:01:52,500 no idea what direction to steer in. 64 00:01:52,590 --> 00:01:53,640 And it's only after it's learned 65 00:01:53,860 --> 00:01:55,290 for a while that it will then start 66 00:01:55,700 --> 00:01:57,520 to output like a solid white 67 00:01:57,770 --> 00:01:58,640 band in just a small 68 00:01:58,800 --> 00:02:00,260 part of the region corresponding 69 00:02:00,700 --> 00:02:01,870 to choosing a particular steering direction. 70 00:02:02,960 --> 00:02:04,710 And that corresponds to when a neural network. 71 00:02:05,340 --> 00:02:06,890 Becomes more confident in selecting, you know, 72 00:02:08,080 --> 00:02:09,250 a and in one 73 00:02:10,220 --> 00:02:11,560 location rather than outputting 74 00:02:11,920 --> 00:02:13,110 a sort of light gray 75 00:02:13,300 --> 00:02:14,570 fuzz, but instead outputting 76 00:02:14,970 --> 00:02:17,010 a white band that's 77 00:02:17,410 --> 00:02:19,220 more constantly selecting one steering direction. 78 00:02:21,340 --> 00:02:21,880 Alban is a system 79 00:02:22,340 --> 00:02:24,850 of artificial neural networks, that learns to steer 80 00:02:25,280 --> 00:02:26,400 by watching a person drive. Alban 81 00:02:27,590 --> 00:02:29,550 is designed to control the 82 00:02:29,670 --> 00:02:31,310 tube a modified army 83 00:02:31,920 --> 00:02:32,840 Humvee who could put 84 00:02:33,020 --> 00:02:35,200 sensors, computers and actuators 85 00:02:36,160 --> 00:02:37,800 for autonomous navigation experiments. 86 00:02:41,190 --> 00:02:42,480 The initial spec in 87 00:02:42,750 --> 00:02:44,730 configuring Alban is training in 88 00:02:46,770 --> 00:02:48,160 the training the person drives 89 00:02:48,580 --> 00:02:50,640 to be a car while Alban watches. 90 00:02:55,810 --> 00:02:58,420 Once every two seconds, Alban 91 00:02:58,690 --> 00:02:59,800 digitizes a video image 92 00:03:00,320 --> 00:03:03,260 of the road ahead, and records the person's steering direction. 93 00:03:11,790 --> 00:03:13,140 This training image is reduced 94 00:03:13,560 --> 00:03:15,260 in resolution to 30 by 95 00:03:15,470 --> 00:03:16,980 32 pixels and provided 96 00:03:17,590 --> 00:03:19,100 as input to Alban's three-layer 97 00:03:21,920 --> 00:03:21,920 network. 98 00:03:22,460 --> 00:03:25,330 Using the back propagation learning algorithm; Alban 99 00:03:25,370 --> 00:03:26,590 is training to output the same 100 00:03:26,940 --> 00:03:28,450 steering direction as the 101 00:03:28,530 --> 00:03:29,970 human driver for that image 102 00:03:33,450 --> 00:03:35,970 Initially, the network's steering response is random. 103 00:03:43,930 --> 00:03:45,010 After about two minutes of 104 00:03:45,100 --> 00:03:46,760 training, the network learns 105 00:03:47,080 --> 00:03:48,730 to accurately imitate the steering 106 00:03:49,110 --> 00:03:56,430 reactions of the 107 00:03:58,670 --> 00:04:03,440 human driver. This same 108 00:04:03,710 --> 00:04:06,440 training procedure is repeated for other road types. 109 00:04:09,940 --> 00:04:11,680 After the networks have been trained the 110 00:04:11,770 --> 00:04:12,900 operator pushes the run 111 00:04:13,200 --> 00:04:14,650 switch and often begins 112 00:04:15,050 --> 00:04:20,380 driving. 12 times 113 00:04:20,870 --> 00:04:23,010 per second, Alban digitizes an 114 00:04:23,090 --> 00:04:25,130 image and feeds it to its neural networks. 115 00:04:33,210 --> 00:04:34,980 Each network, running in parallel, 116 00:04:35,930 --> 00:04:38,140 produces a steering direction and a measure of it's 117 00:04:40,050 --> 00:04:40,050 confidence in its response. 118 00:04:46,610 --> 00:04:49,480 The steering direction 119 00:04:50,140 --> 00:04:51,120 from the most confident network. 120 00:04:52,340 --> 00:04:53,650 In this case, the network trained 121 00:04:54,000 --> 00:04:56,640 for the one-lane road is used to control the vehicle. 122 00:05:04,750 --> 00:05:07,840 Suddenly, an intersection appears ahead 123 00:05:08,310 --> 00:05:09,350 of the vehicle. 124 00:05:23,090 --> 00:05:24,450 As the vehicle approaches the intersection, 125 00:05:25,680 --> 00:05:27,740 the confidence of the one-lane network decreases. 126 00:05:38,070 --> 00:05:40,030 As it crosses the intersection, and 127 00:05:40,130 --> 00:05:41,160 the two-lane road ahead comes 128 00:05:41,440 --> 00:05:44,610 into view, the confidence of the two-lane network rises. 129 00:05:51,260 --> 00:05:53,000 When it's confidence rises, the two-lane 130 00:05:53,420 --> 00:05:54,630 network is selected to steer, 131 00:05:55,050 --> 00:05:56,780 safely guiding the vehicle 132 00:05:57,380 --> 00:05:59,030 into it's lane, on the two-lane road. 133 00:06:05,400 --> 00:06:06,670 So that was autonomous 134 00:06:07,010 --> 00:06:09,790 driving using a neural network. Of course, there are more 135 00:06:10,150 --> 00:06:11,070 recently more modern attempts 136 00:06:11,910 --> 00:06:14,000 to do autonomous driving in a few properties, in 137 00:06:14,180 --> 00:06:15,730 the U.S., in Europe, and so on. 138 00:06:16,270 --> 00:06:18,040 They're giving more robust driving 139 00:06:18,400 --> 00:06:19,760 controllers than this, but I 140 00:06:20,080 --> 00:06:21,910 think it's still pretty remarkable and 141 00:06:22,040 --> 00:06:23,190 pretty amazing how a simple 142 00:06:23,690 --> 00:06:25,440 neural network trained with back-propagation 143 00:06:26,140 --> 00:06:28,990 can, you know, actually learn to drive a car somewhat well.