Этот пост является частью 12-месячного проекта ускоренного обучения Month to Master. На май: Моя цель - построить программную часть беспилотного автомобиля.
Вчера я представил основной метод обучения новым техническим навыкам, который я называю V-Method. Используя этот метод, я начинаю свои исследования с узкоспециализированного примера (который должен точно имитировать мой желаемый конечный результат) и использую его в качестве отправной точки для изучения соответствующих лежащих в основе концепций осязаемым, организованным и иерархическим способом.
Поэтому сегодня моей целью было запустить на моем компьютере код, который я мог бы использовать для своего беспилотного автомобиля.
В поисках кода
Немного погуглив, я нашел на Github проект, который хорошо соответствовал моим потребностям. Код берет входное изображение дороги и пытается определить, где проходят полосы движения.
Итак, отсюда…
К этому…
Моя цель на сегодня состояла в том, чтобы попытаться воспроизвести этот результат с помощью кода, запущенного на моем собственном компьютере.
Приступаем к настройке
Прежде чем я смог запустить какой-либо код, мне нужно было убедиться, что мой компьютер настроен с соответствующими библиотеками программного обеспечения. В частности, мне нужно было установить библиотеки numpy, matplotlib и OpenCV для Python.
После того, как я сориентировался в Терминале (командная строка на Mac) и нашел некоторые инструкции в Интернете, я столкнулся с моей первой ошибкой ...
Вместо того, чтобы пытаться выяснить, что именно означает эта ошибка или как исправить ее самостоятельно, я использовал наиболее эффективный из известных мне методов отладки: я скопировал и вставил все сообщение об ошибке в Google.
Я перешел по третьей ссылке и нашел такой ответ:
После выполнения этих нескольких команд (путем копирования и вставки их в Терминал и нажатия «Enter») все, казалось, работало правильно.
Я был официально настроен (по крайней мере, на данный момент).
Запуск кода
Теперь, когда я был настроен, пришло время запустить код. После того, как я снова использовал Google, чтобы пополнить свои ограниченные знания о Терминале, я получил код для запуска, и, похоже, ничего не сломалось.
Я получил этот вывод…
Прохладный! Итак, эти числа, по сути, являются математическим представлением двух полос движения.
Все идет нормально. Но где визуальные эффекты?
В проекте Github, который я пытался воспроизвести, код также выводил эти красивые графики ...
А также изображение с красными накладками…
К сожалению, мой код не выводил ни одного из них, и при этом он не сохранял никаких изображений в моем локальном каталоге.
Итак, я снова вернулся к Google и поискал «save image python» в надежде выяснить, как сохранить изображение на выходе.
Google любезно посоветовал мне использовать функцию cv2.imwrite (), что я и сделал, и это сработало. И под словом «работал» я имею в виду… Я смог сохранить изображение фотографии в оттенках серого с линиями полос, визуализированными в белом цвете.
А вот еще ...
И еще один…
Что теперь?
Это хорошее начало.
По сути, как только я смогу эффективно определять полосы движения, я могу использовать эту информацию, чтобы научить свой беспилотный автомобиль управлять автомобилем (в пределах полос движения). Кроме того, поскольку видео - это просто набор из множества фотографий, обработка видео должна работать таким же образом (пока я могу понять, как разбить видео на фотографии в реальном времени для обработки).
Завтра, поскольку код более или менее работает, я постараюсь построчно пройтись по проекту и начать выяснять, как он на самом деле работает.
А пока урок таков: если вы готовы согласиться с тем, что у вас часто нет ответов на все вопросы, но вы готовы погуглить и немного поэкспериментировать, вы все равно можете добиться прогресса.
Конечно, у меня еще нет четкого концептуального понимания, но теперь у меня есть функциональный пример, который я могу использовать в качестве отправной точки.
Прочтите следующий пост. Прочтите предыдущий пост.