Способы и системы для формирования обучающих данных для обнаружения горизонта и плоскости дороги
METHODS AND SYSTEMS FOR GENERATING TRAINING DATA FOR DETECTING HORIZON AND ROAD PLANE

Область техники, к которой относится изобретение
[001] Настоящая технология относится к компьютерным способам и системам для машинного обучения, в частности, к способам и системам для формирования обучающих данных с целью их использования при обучении системы машинного обучения беспилотного транспортного средства обнаружению горизонта и/или плоскости дороги.
Уровень техники
[002] Одна из проблем, связанных с правильной эксплуатацией беспилотного транспортного средства, заключается в правильном определении плоскости дороги перед беспилотным транспортным средством. Большинство алгоритмов, используемых при работе беспилотного транспортного средства, выполняют вычисления на основе проекции дорожной сцены с высоты птичьего полета. Неправильно определенная плоскость дороги может вызывать искажение изображения дороги в проекции с высоты птичьего полета. Это может привести к «неестественному» движению беспилотного транспортного средства под управлением алгоритмов, выполняющих вычисления и управляющих транспортным средством на основе этой искаженной проекции вида с высоты птичьего полета.
[003] Один из традиционных подходов к решению этой проблемы использует лидарную систему (LiDAR, Light Detection and Ranging) в беспилотном транспортном средстве для определения плоскости дороги в пределах дальности действия этой системы (например, порядка 100 м). На основе набора лидарных точек в таком способе определяется подмножество точек, принадлежащих поверхности дороги. На основе определенной поверхности дороги определяется плоскость дороги в пределах дальности действия лидара.
[004] Несмотря на распространение в настоящее время лидарных систем в беспилотных транспортных средствах, ими оснащены не все беспилотные транспортные средства. Поэтому желательно обеспечить альтернативу лидарам при определении плоскости дороги, чтобы единая система определения плоскости дороги и линии горизонта могла использоваться на беспилотных транспортных средствах как при наличии лидарной системы, так и при ее отсутствии.
[005] Одна из возможных альтернатив - использование для определения плоскости дороги не данные лидара, а изображения с камеры. Камеры намного дешевле и существенно проще в обслуживании, чем лидары. Тем не менее, камеры обеспечивают лишь двумерное изображение без информации о глубине, которую обеспечивает лидар, что требует более сложных вычислительных подходов к определению плоскости дороги.
Раскрытие изобретения
[006] Чтобы преодолеть трудности, связанные с использованием лидарной системы или другой дорогостоящей и сложной технологии датчиков для определения плоскости дороги, разработчики настоящей технологии использовали для определения плоскости дороги изображения, обеспечиваемые камерой. Это достигается путем обучения алгоритма машинного обучения предсказанию плоскости дороги на основе изображений с камеры. При этом обучение алгоритма машинного обучения надежному предсказанию плоскости дороги на основе изображения требует использования большого набора обучающих данных.
[007] «Простой» подход к созданию набора обучающих данных - вручную добавлять линию горизонта к изображениям с камеры. Положение линии горизонта однозначно представляет плоскость дороги, поскольку все плоскости, параллельные дороге, сходятся в бесконечности к линии горизонта. Тем не менее, определение положения линии горизонта лишь по изображению не всегда возможно. Например, линия горизонта на изображении может быть частично или полностью скрыта деревьями или другими объектами. Кроме того, формирование вручную больших наборов данных для алгоритмов машинного обучения является чрезвычайно дорогостоящим и трудоемким процессом.
[008] Соответственно, настоящая технология обеспечивает альтернативу использованию линий горизонта, вручную добавленных к изображениям, для алгоритмов машинного обучения при определении плоскости дороги на основе изображений. В частности, настоящая технология использует автоматизированный подход к формированию больших наборов обучающих данных для обучения алгоритма машинного обучения предсказанию плоскости дороги на основе изображения. Затем технология использует алгоритмы машинного обучения, обученные с использованием этих наборов данных, для управления беспилотным транспортным средством. Таким образом настоящая технология эффективно улучшает работу беспилотных или полуавтономных транспортных средств.
[009] В соответствии с одним аспектом настоящего изобретения эта технология реализована в способе создания модели машинного обучения для применения в беспилотном транспортном средстве с целью предсказания плоскости дороги на основе изображения. Способ включает в себя формирование набора обучающих данных в вычислительном устройстве путем приема данных, собранных при эксплуатации обучающего транспортного средства на дороге, включая изображение, связанное с первым местоположением обучающего транспортного средства на дороге, и одометрические данные, связанные со вторым расположением обучающего транспортного средства на дороге. На изображении показан участок дороги, связанный со вторым местоположением обучающего транспортного средства. Формирование набора обучающих данных включает в себя определение плоскости дороги во втором местоположении обучающего транспортного средства на основе одометрических данных, определение линии на изображении, представляющей плоскость дороги во втором местоположении обучающего транспортного средства, добавление к изображению этой линии для формирования обучающего примера и добавления этого обучающего примера в набор обучающих данных. Способ также включает в себя предоставление набора обучающих данных алгоритму машинного обучения, выполняемому в вычислительном устройстве, с целью формирования модели машинного обучения для применения в беспилотном транспортном средстве и определение новой плоскости дороги на основе нового входящего изображения камеры с использованием этой модели машинного обучения.
[010] В некоторых реализациях обучающее транспортное средство эксплуатируется в первом местоположении в первый момент времени и во втором местоположении во второй момент времени, более поздний, чем первый момент времени. В некоторых реализациях второе местоположение находится впереди первого местоположения на траектории движения обучающего транспортного средства на дороге, а расстояние между первым местоположением и вторым местоположением задано заранее.
[011] В некоторых реализациях одометрические данные основаны на лидарных данных во втором местоположении. В некоторых из этих реализаций лидарные данные являются разреженными.
[012] В некоторых реализациях линия определяется на основе набора точек изображения. По меньшей мере две точки изображения в наборе точек изображения соответствуют положениям на задней оси или на передней оси обучающего транспортного средства во втором местоположении.
[013] В некоторых реализациях алгоритм машинного обучения содержит сверточную нейронную сеть, а модель машинного обучения определяет эту сверточную нейронную сеть. В некоторых реализациях добавление к изображению линии включает в себя прорисовку этой линии на изображении.
[014] В соответствии с другим аспектом настоящего изобретения реализован способ управления беспилотным транспортным средством. Способ включает в себя получение изображения в первом местоположении беспилотного транспортного средства с помощью электронной камеры. На изображении показан участок дороги, по которому движется беспилотное транспортное средство, включая второе местоположение, находящееся впереди первого местоположения на дороге. Способ также включает в себя предоставление этого изображения для модели машинного обучения, работающей в вычислительном устройстве и определяющей расчетную плоскость дороги на основе этого изображения и использующей эту расчетную плоскость дороги для управления беспилотным транспортным средством. Модель машинного обучения обучается с использованием набора обучающих данных, сформированного, по меньшей мере частично, путем получения данных, собранных при эксплуатации обучающего транспортного средства на обучающей дороге. Эти данные включают в себя обучающее изображение, связанное с первым местоположением обучающего транспортного средства на обучающей дороге, и обучающие одометрические данные, связанные со вторым местоположением обучающего транспортного средства на обучающей дороге. На обучающем изображении показан участок обучающей дороги, связанный со вторым местоположением обучающего транспортного средства. Модель машинного обучения также обучается путем определения плоскости обучающей дороги во втором местоположении обучающего транспортного средства на основе обучающих одометрических данных, определения линии на изображении, представляющей плоскость обучающей дороги во втором местоположении обучающего транспортного средства, добавления к изображению такой линии для формирования обучающего примера и добавления этого обучающего примера в набор обучающих данных.
[015] В соответствии с еще одним аспектом настоящего изобретения эта технология реализована в беспилотном транспортном средстве. Беспилотное транспортное средство содержит электронную камеру, предназначенную для получения изображения в первом местоположении беспилотного транспортного средства, показывающего участок дороги, по которому движется беспилотное транспортное средство, включая второе местоположение, находящееся на дороге впереди первого местоположения. Беспилотное транспортное средство также содержит вычислительное устройство, включая процессор и память, при этом в памяти хранятся запрограммированные команды, которые при исполнении их процессором предписывают вычислительному устройству предоставлять изображение для модели машинного обучения, хранящейся в памяти, выполняемой на вычислительном устройстве и определяющей расчетную плоскость дороги на основе этого изображения, и управлять беспилотным транспортным средством на дороге, по меньшей мере частично, на основе этой расчетной плоскости дороги. Модель машинного обучения содержит значения, хранящиеся в памяти и определенные алгоритмом машинного обучения с использованием набора обучающих данных, сформированного, по меньшей мере частично, путем приема данных, собранных при эксплуатации обучающего автомобиля на обучающей дороге, причем эти данные содержат обучающее изображение, связанное с первым местоположением обучающего автомобиля на обучающей дороге, и обучающие одометрические данные, связанные со вторым местоположением обучающего автомобиля на обучающей дороге. На обучающем изображении показан участок обучающей дороги, связанный со вторым местоположением обучающего транспортного средства. Набор обучающих данных затем дополняется путем определения плоскости дороги во втором местоположении обучающего транспортного средства на основе одометрических данных, определения линии на изображении, представляющей плоскость дороги во втором местоположении обучающего транспортного средства, добавления этой линии к изображению для формирования обучающего примера и добавления этого обучающего примера в набор обучающих данных.
[016] В соответствии с другим аспектом настоящего изобретения эта технология реализована в способе создания модели машинного обучения для использования при навигации беспилотного транспортного средства с целью определения плоскости дороги на основе изображения. Способ включает в себя формирование набора обучающих данных в вычислительном устройстве путем приема данных о поверхности от первого датчика, установленного на обучающем транспортном средстве, при этом данные о поверхности связаны с сегментом окружающей среды, содержащим обучающую дорогу в пределах заранее заданного расстояния от обучающего транспортного средства. Формирование набора обучающих данных также включает в себя получение обучающего изображения с камеры, установленной на обучающем транспортном средстве, причем обучающее изображение связано с первым положением обучающего транспортного средства на обучающей дороге и содержит сегмент окружающей среды с обучающей дорогой. Формирование набора обучающих данных также включает в себя определение прогнозируемой будущей плоскости обучающей дороги на основе данных поверхности, определение линии, представляющей прогнозируемую будущую плоскость обучающей дороги на обучающем изображении, добавление этой линии к обучающему изображению для формирования обучающего примера и добавление этого обучающего примера в набор обучающих данных. Способ также включает в себя предоставление набора обучающих данных алгоритму машинного обучения, выполняемому в вычислительном устройстве, для формирования модели машинного обучения, используемой в беспилотном транспортном средстве, и определение новой плоскости дороги на основе нового входящего изображения камеры с использованием этой модели машинного обучения.
[017] В некоторых реализациях согласно этому аспекту изобретения определение прогнозируемой будущей плоскости обучающей дороги включает в себя определение усредненной плоскости обучающей дороги от первого положения обучающего транспортного средства до заранее заданного расстояния от обучающего транспортного средства. В некоторых реализациях первый датчик представляет собой лидар, а данные о поверхности, полученные от первого датчика, представляют собой набор точек лидарных данных, при этом подмножество набора точек лидарных данных принадлежит поверхности обучающей дороги. В некоторых из этих реализаций определение прогнозируемой будущей плоскости обучающей дороги включает в себя использование алгоритма консенсуса случайной выборки (RANSAC, Random Sample Consensus) для набора точек лидарных данных.
[018] В некоторых реализациях определение линии включает в себя построение линии на базе набора точек изображения. По меньшей мере две точки изображения в наборе точек изображения соответствуют точкам, по существу принадлежащим прогнозируемой будущей плоскости обучающей дороги и расположенным на заранее заданном расстоянии от обучающего транспортного средства.
[019] В некоторых реализациях алгоритм машинного обучения содержит сверточную нейронную сеть. В некоторых реализациях модель машинного обучения формирует набор параметров, однозначно представляющих прогнозируемую усредненную плоскость новой дороги в пределах заранее заданного расстояния. В некоторых реализациях добавление к изображению линии включает в себя прорисовку этой линии на изображении.
[020] В соответствии с еще одним аспектом изобретения настоящая технология реализована в способе управления беспилотным транспортным средством. Способ включает в себя получение изображения в первом местоположении беспилотного транспортного средства с помощью камеры, причем изображение показывает участок дороги, по которому движется автономное транспортное средство, и содержит сегмент окружающей среды с дорогой в пределах заранее заданного расстояния от беспилотного транспортного средства. Способ также включает в себя предоставление этого изображения для модели машинного обучения, работающей в вычислительном устройстве, определяющей расчетную плоскость дороги на основе этого изображения и использующей эту расчетную плоскость дороги для управления беспилотным транспортным средством на дороге. Модель машинного обучения обучается с использованием набора обучающих данных, сформированного, по меньшей мере частично, путем получения данных о поверхности от первого датчика, установленного на обучающем транспортном средстве, при этом данные о поверхности связаны с обучающим сегментом окружающей среды, содержащим обучающую дорогу в пределах заранее заданного расстояния от обучающего транспортного средства. Формирование набора обучающих данных включает в себя получение обучающего изображения с камеры, установленной на обучающем транспортном средстве, при этом обучающее изображение связано с первым положением обучающего транспортного средства на обучающей дороге и содержит обучающий сегмент окружающей среды с обучающей дорогой. Обучение модели машинного обучения включает в себя определение прогнозируемой будущей плоскости обучающей дороги на основе данных поверхности, определение линии, представляющей прогнозируемую будущую плоскость обучающей дороги на обучающем изображении, добавление этой линии к обучающему изображению для формирования обучающего примера и добавление этого обучающего примера в набор обучающих данных.
[021] В соответствии с еще одним аспектом изобретения настоящая технология реализована в беспилотном транспортном средстве. Беспилотное транспортное средство содержит электронную камеру, снимающую изображение в первом местоположении беспилотного транспортного средства, при этом изображение показывает участок дороги, по которому движется беспилотное транспортное средство, и содержит сегмент окружающей среды с дорогой на заранее заданном расстоянии от беспилотного транспортного средства. Беспилотное транспортное средство также содержит вычислительное устройство, включая процессор и память, при этом в памяти хранятся запрограммированные команды, которые при исполнении их процессором предписывают вычислительному устройству предоставлять изображение для модели машинного обучения, хранящейся в памяти, выполняемой на вычислительном устройстве и определяющей расчетную плоскость дороги на основе этого изображения, и управлять беспилотным транспортным средством на дороге, по меньшей мере частично, на основе этой расчетной плоскости дороги. Модель машинного обучения содержит значения, хранящиеся в памяти и определенные алгоритмом машинного обучения с использованием набора обучающих данных, сформированного, по меньшей мере частично, путем получения данных о поверхности от первого датчика, установленного на обучающем транспортном средстве, данных о поверхности, связанных с обучающим сегментом окружающей среды, содержащим обучающую дорогу в пределах заранее заданного расстояния от обучающего транспортного средства, приема обучающего изображения от обучающей камеры, установленной на обучающем транспортном средстве, при этом обучающее изображение связано с первым положением обучающего транспортного средства на обучающей дороге и содержит обучающий сегмент окружающей среды с обучающей дорогой, определения прогнозируемой будущей плоскости обучающей дороги на основе данных о поверхности, определения линии, представляющей прогнозируемую будущую плоскость обучающей дороги на обучающем изображении, добавления этой линии к обучающему изображению для формирования обучающего примера и добавления этого обучающего примера в набор обучающих данных.
[022] Дополнительные и/или альтернативные признаки, аспекты и преимущества вариантов осуществления настоящей технологии содержатся в дальнейшем описании, в приложенных чертежах и в формуле изобретения.
Краткое описание чертежей
[023] Эти и другие функции, аспекты и преимущества настоящей технологии поясняются в дальнейшем описании, в приложенной формуле изобретения и на следующих чертежах.
[024] На фиг. 1 представлена схема примера компьютерной системы для реализации некоторых вариантов осуществления систем и/или способов согласно настоящей технологии.
[025] На фиг. 2 представлено беспилотное транспортное средство, пригодное для использования с некоторыми реализациями настоящей технологии.
[026] На фиг. 3 представлена блок-схема способа создания модели машинного обучения для применения в беспилотном транспортном средстве с целью прогнозирования плоскости дороги на основе изображения в соответствии с некоторыми реализациями настоящей технологии.
[027] На фиг. 4 представлено изображение, иллюстрирующее способ формирования набора обучающих данных в соответствии с некоторыми реализациями настоящей технологии.
[028] На фиг. 5 представлено изображение с обозначениями, используемое при формировании набора обучающих данных в соответствии с некоторыми реализациями настоящей технологии.
[029] На фиг. 6 представлена блок-схема способа формирования набора обучающих данных для модели машинного обучения, используемой в беспилотном транспортном средстве с целью прогнозирования плоскости дороги на основе изображения, в соответствии с некоторыми реализациями настоящей технологии.
[030] На фиг. 7 представлено изображение с обозначениями, снятое камерой на обучающем транспортном средстве, иллюстрирующее второй способ формирования набора обучающих данных в соответствии с некоторыми реализациями настоящей технологии.
[031] На фиг. 8 представлена блок-схема второго способа формирования набора обучающих данных для модели машинного обучения, используемой в беспилотном транспортном средстве с целью прогнозирования плоскости дороги на основе изображения, в соответствии с некоторыми реализациями настоящей технологии.
[032] На фиг. 9 представлена блок-схема способа управления беспилотным транспортным средством в соответствии с некоторыми реализациями настоящей технологии.
Осуществление изобретения
[033] Различные иллюстративные варианты осуществления раскрываемой технологии более подробно описаны ниже со ссылкой на приложенные чертежи. При этом настоящая технология может быть реализована во множестве различных форм и ее не следует рассматривать как ограниченную представленными здесь иллюстративными вариантами осуществления. На чертежах абсолютные и относительные размеры слоев и областей для ясности могут быть увеличены. На всех изображениях одинаковые обозначения относятся к одинаковым элементам.
[034] Представленные здесь примеры и условный язык предназначены для обеспечения лучшего понимания принципов настоящей технологии, а не для ограничения ее объема до таких специально приведенных примеров и условий. Очевидно, что специалисты в данной области техники способны разработать различные способы и устройства, которые явно не описаны и не показаны, но реализуют принципы настоящей технологии в пределах ее существа и объема.
[035] Кроме того, чтобы способствовать лучшему пониманию, последующее описание может содержать упрощенные варианты реализации настоящей технологии. Специалистам в данной области должно быть понятно, что различные варианты осуществления данной технологии могут быть значительно сложнее.
[036] В некоторых случаях также приводятся полезные примеры модификаций настоящей технологии. Они способствуют пониманию, но также не определяют объема или границ настоящей технологии. Представленный перечень модификаций не является исчерпывающим, и специалист в данной области может разработать другие модификации в пределах объема настоящей технологии. Кроме того, если в некоторых случаях модификации не описаны, это не означает, что они невозможны и/или что описание содержит единственно возможный вариант реализации того или иного элемента настоящей технологии.
[037] Следует понимать, что несмотря на использование здесь терминов «первый», «второй», «третий» и т.д. для описания различных элементов, такие элементы не должны ограничиваться этими терминами. Эти термины используются для обеспечения отличия одного элемента от другого. Таким образом, первый элемент, обсуждаемый ниже, можно назвать вторым элементом без отступления от концепций настоящего изобретения. Используемый здесь термин «и/или» включает в себя все возможные комбинации одного или нескольких соответствующих перечисленных элементов.
[038] Следует понимать, что если элемент упоминается как «подключенный» или «соединенный» с другим элементом, он может быть напрямую подключен или соединен с другим элементом или при этом могут присутствовать промежуточные элементы. Когда элемент упоминается как «непосредственно подключенный» или «непосредственно соединенный» с другим элементом, промежуточные элементы отсутствуют. Другие слова, используемые для описания взаимосвязи между элементами, следует интерпретировать аналогичным образом (например, «между» или «непосредственно между», «соседствующий» или «непосредственно соседствующий» и т.д.).
[039] Используемая здесь терминология предназначена лишь для описания конкретных иллюстративных вариантов осуществления и не предназначена для ограничения настоящей технологии. Используемые здесь речевые формы единственного числа означают и формы множественного числа, если контекст явно не указывает на иное. Кроме того, следует понимать, что термины «содержит» и/или «содержащий», используемые в данном описании, определяют наличие заявленных функций, признаков, шагов, операций, элементов и/или компонентов, но не исключают наличие или добавление одной или нескольких других функций, признаков, шагов, операций, элементов, компонентов и/или их групп.
[040] Функции различных элементов, показанных на чертежах, включая любой функциональный блок, обозначенный как «процессор», могут быть реализованы с использованием специализированных аппаратных средств, а также аппаратных средств, способных выполнять программное обеспечение. Если используется процессор, эти функции могут выполняться одним выделенным процессором, одним совместно используемым процессором или множеством отдельных процессоров, некоторые из которых могут использоваться совместно. В некоторых реализациях настоящей технологии процессор может представлять собой процессор общего назначения, такой как центральный процессор (CPU), или специализированный процессор, такой как процессор цифровых сигналов (DSP). Кроме того, явное использование термина «процессор» не должно трактоваться как указание исключительно на аппаратные средства, способные выполнять программное обеспечение, и может неявно включать, без ограничения ими, специализированную интегральную схему (ASIC), программируемую логическую матрицу (FPGA), постоянное запоминающее устройство (ROM) для хранения программного обеспечения, оперативное запоминающее устройство (RAM) и энергонезависимое хранилище данных. Также могут подразумеваться другие аппаратные средства, общего назначения и/или заказные.
[041] Программные модули или просто модули или блоки, реализация которых предполагается в виде программных средств, могут быть представлены здесь как любое сочетание элементов блок-схемы или других элементов, указывающих на выполнение шагов процесса и/или содержащих текстовое описание. Такие модули могут выполняться аппаратными средствами, показанными явно или подразумеваемыми. Кроме того, следует понимать, что любой модуль может включать в себя, для примера, но без ограничения этим, логику компьютерной программы, команды компьютерной программы, программное обеспечение, стек, микропрограммное обеспечение, аппаратные схемы или их комбинацию, которая обеспечивает требуемые возможности.
[042] В контексте настоящего описания термин «база данных» означает любой структурированный набор данных, независимо от его конкретной структуры, программного обеспечения для управления базой данных или компьютерных аппаратных средств для хранения этих данных, их применения или обеспечения их использования иным способом. База данных может располагаться в тех же аппаратных средствах, где реализован процесс, обеспечивающий хранение или использование информации, хранящейся в базе данных, либо база данных может располагаться в отдельных аппаратных средствах, таких как специализированный сервер или множество серверов.
[043] Настоящая технология может быть реализована как система, способ и/или компьютерный программный продукт. Компьютерный программный продукт может включать в себя машиночитаемый носитель данных (или несколько носителей), хранящий машиночитаемые программные команды, при исполнении которых процессором реализуются аспекты описанной технологии. Машиночитаемый носитель данных может быть, например, электронным запоминающим устройством, магнитным запоминающим устройством, оптическим запоминающим устройством, электромагнитным запоминающим устройством, полупроводниковым запоминающим устройством или любой подходящей их комбинацией. Неограничивающий список более конкретных примеров машиночитаемого носителя данных включает в себя: портативный компьютерный диск, жесткий диск, оперативную память (RAM), постоянную память (ROM), флэш-память, оптический диск, карту памяти, дискету, носитель с механическим или визуальным кодированием (например, перфокарту или штрих-код) и/или любую их комбинацию. Машиночитаемый носитель данных, используемый здесь, следует рассматривать как энергонезависимый машиночитаемый носитель. Он не должен рассматриваться как непостоянный сигнал, такой как радиоволны или другие свободно распространяющиеся электромагнитные волны, передаваемые через окружающую среду или волновод, либо другие средства передачи данных (например, световые импульсы, проходящие через оптоволоконный кабель) или электрические сигналы, передаваемые по проводам.
[044] Должно быть понятно, что машиночитаемые программные команды могут быть загружены в соответствующие вычислительные или обрабатывающие устройства с машиночитаемого носителя данных или на внешний компьютер либо во внешнее запоминающее устройство через сеть, например, Интернет, локальную сеть, глобальную сеть и/или беспроводную сеть. Сетевой интерфейс в вычислительном или обрабатывающем устройстве может принимать машиночитаемые программные команды через сеть и пересылать их для хранения на машиночитаемом носителе данных в соответствующем вычислительном или обрабатывающем устройстве.
[045] Машиночитаемые программные команды для выполнения операций согласно изобретению могут быть командами ассемблера, машинными командами, командами встроенного программного обеспечения, данными конфигурации для интегральных схем либо исходным или объектным кодом, написанным на любой комбинации одного или нескольких языков программирования. Машиночитаемые программные команды могут выполняться полностью на компьютере пользователя, частично на компьютере пользователя, как автономный пакет программного обеспечения, частично на компьютере пользователя и частично на удаленном компьютере или полностью на удаленном компьютере или сервере. В последнем случае удаленный компьютер может быть подключен к компьютеру пользователя через сеть любого вида.
[046] Все утверждения в данном документе, касающиеся принципов, аспектов и реализаций настоящей технологии, а также ее конкретные примеры, предназначены для охвата их структурных и функциональных эквивалентов, независимо от того, известны они в настоящее время или будут разработаны в будущем. Например, специалистам в данной области техники должно быть понятно, что любые описанные здесь структурные схемы соответствуют концептуальным представлениям иллюстративных принципиальных схем, реализующих принципы настоящей технологии. Также следует понимать, что любые блок-схемы, графики, диаграммы состояний, псевдокод и т.п. представляют различные процессы, которые могут быть фактически представлены в машиночитаемых программных командах. Эти машиночитаемые программные команды могут быть предоставлены процессору или другому программируемому устройству обработки данных для формирования машинного кода, так что команды, исполняемые процессором компьютера или другого программируемого устройства обработки данных, определяют средства для реализации функций или действий, указанных в схеме процесса и/или в одном или нескольких блоках блок-схемы. Эти машиночитаемые программные команды также могут храниться на машиночитаемом носителе данных, который может использоваться для управления компьютером, устройством программируемой обработки данных и/или другими устройствами, чтобы они функционировали определенным образом, так что машиночитаемый носитель данных, содержащий эти команды, представляет собой готовое изделие с командами, реализующими аспекты функций или действий, указанных на блок-схемах, графиках, диаграммах состояний, псевдокоде и т.п.
[047] Машиночитаемые программные команды также могут быть загружены в компьютер, другое программируемое устройство обработки данных или другие устройства, чтобы инициировать выполнение ряда рабочих шагов на компьютере, другом программируемом устройстве или других устройствах для формирования процесса, реализуемого компьютером, так что команды, исполняемые на компьютере, другом программируемом устройстве или другом устройстве, реализуют функции или действия, указанные в блок-схемах, графиках, диаграммах переходов состояний, псевдокоде и т.п.
[048] В некоторых альтернативных реализациях функции, указанные на блок-схемах, графиках, диаграммах состояний, псевдокоде и т.п., могут выполняться не в том порядке, который указан на чертежах. Например, два блока, показанные последовательно на блок-схеме, могут выполняться по существу одновременно или такие блоки могут иногда выполняться в обратном порядке, в зависимости от задействованных функций. Также следует отметить, что каждая из функций, присутствующих на чертежах, и комбинации таких функций могут быть реализованы специализированными аппаратными системами, выполняющими указанные функции или действия, или комбинациями аппаратных средств специального назначения и компьютерных команд.
[049] Учитывая вышеизложенные принципы, далее рассмотрены некоторые не имеющие ограничительного характера примеры, иллюстрирующие различные варианты реализации аспектов настоящего изобретения.
Компьютерная система
[050] На фиг. 1 показана компьютерная система 100. Компьютерная система 100 может быть многопользовательским компьютером, однопользовательским компьютером, портативным компьютером, планшетным компьютером, смартфоном, встроенной системой управления или любой другой компьютерной системой, известной в настоящее время или разработанной в будущем. Кроме того, следует понимать, что некоторые или все элементы компьютерной системы 100 могут быть виртуализированы. Как показано на фиг. 1, компьютерная система 100 содержит один или несколько процессоров 102, память 110, интерфейс 120 хранилища данных и сетевой интерфейс 140. Эти системные элементы соединены между собой шиной 150, которая может включать в себя одну или несколько внутренних и/или внешних шин (не показаны) (например, шину PCI, универсальную последовательную шину, шину IEEE 1394 Firewire, шину SCSI, шину Serial-ATA и т.д.), с которыми различные элементы оборудования связаны электронными средствами.
[051] Память 110, которая может быть памятью с произвольным доступом или памятью любого другого типа, может содержать данные 112, операционную систему 114 и программу 116. Данные 112 могут быть любыми данными, являющимися входными или выходными данными любой программы в компьютерной системе 100. Операционная система 114 представляет собой операционную систему, такую как Microsoft Windows или Linux. Программа 116 может быть любой программой или набором программ, содержащих запрограммированные команды, которые могут выполняться процессором для управления действиями, предпринимаемыми компьютерной системой 100.
[052] Интерфейс 120 хранилища данных используется для подключения устройств хранения, таких как запоминающее устройство 125, к компьютерной системе 100. Одним из видов запоминающего устройства 125 является твердотельный накопитель, который может использовать набор интегральных микросхем для постоянного хранения данных. Другим видом устройства 125 является жесткий диск, то есть электромеханическое устройство, которое использует для хранения и извлечения цифровых данных магнитный носитель. Кроме того, запоминающее устройство 125 может быть оптическим приводом, устройством чтения карт, принимающим съемную карту памяти, например, SD-карту, или устройством флэш-памяти, которое может быть подключено к компьютерной системе 100, например, через универсальную последовательную шину (USB).
[053] В некоторых реализациях компьютерная система 100 может использовать хорошо известные методы виртуальной памяти, которые позволяют программам компьютерной системы 100 вести себя так, как если бы они имели доступ к большому непрерывному адресному пространству вместо доступа к нескольким меньшим по объему пространствам хранения, таким как память 110 и запоминающее устройство 125. Следовательно, несмотря на то, что данные 112, операционная система 114 и программы 116 показаны как постоянно находящиеся в памяти 110, специалисты в данной области техники должны понимать, что эти компоненты не обязательно одновременно полностью содержатся в памяти 110.
[054] Процессоры 102 могут включать в себя один или несколько микропроцессоров и/или других интегральных схем. Процессоры 102 исполняют программные команды, хранящиеся в памяти 110. При запуске компьютерной системы 100  процессоры 102 могут первоначально выполнять процедуру загрузки и/или программные команды операционной системы 114.
[055] Сетевой интерфейс 140 используется для подключения компьютерной системы 100 к другим компьютерным системам или сетевым устройствам (не показаны) через сеть 160. Сетевой интерфейс 140 может содержать комбинацию аппаратного и программного обеспечения, позволяющую осуществлять связь по сети 160. В некоторых реализациях сетевой интерфейс 140 может быть беспроводным сетевым интерфейсом. Программное обеспечение в сетевом интерфейсе 140 может включать в себя программное обеспечение, использующее один или несколько сетевых протоколов для связи по сети 160. Например, сетевые протоколы могут включать в себя протокол TCP/IP (Transmission Control Protocol/Internet Protocol).
[056] Следует понимать, что компьютерная система 100 является лишь примером и что описанная здесь технология может использоваться с компьютерными системами или с другими вычислительными устройствами, имеющими другие конфигурации.
Беспилотное транспортное средство
[057] На фиг. 2 показано беспилотное транспортное средство 200. Беспилотное транспортное средство 200 изображено как легковой автомобиль, но следует понимать, что это понятие может включать в себя другие транспортные средства для отдыха или транспортировки, такие как любые разновидности частных или коммерческих автомобилей, грузовиков, мотоциклов и т.п. Несмотря на то, что беспилотное транспортное средство 200 изображено как наземное транспортное средство, настоящая технология может использоваться в любом автономном или полуавтоматическом транспортном средстве, способном использовать информацию о плоскости дороги или линии горизонта при работе в автоматическом режиме. Например, беспилотное транспортное средство 200 может быть летательным аппаратом, использующим информацию о линии горизонта или поверхности дороги при автоматическом взлете и посадке.
[058] Беспилотное транспортное средство 200 может быть полностью самоуправляемым транспортным средством или частично управляемым транспортным средством, в котором человек-водитель управляет некоторыми аспектами работы транспортного средства, в то время как другие аспекты (например, «автопилот» на автомагистралях) автоматизированы. Следует отметить, что у транспортного средства может быть любой производитель, модель, год выпуска, масса, габариты, распределение массы, площадь поверхности, высота, тип привода (например, 2x или 4x), тип шин, тормозная система, топливная система, пробег, идентификационный номер, объем двигателя или другие характеристики или параметры.
[059] Беспилотное транспортное средство 200 содержит вычислительное устройство 210, управляющее по меньшей мере некоторыми аспектами работы беспилотного транспортного средства 200. На реализацию вычислительного устройства 210 не накладывается особых ограничений. В качестве примера, вычислительное устройство 210 может быть реализовано как блок управления двигателем транспортного средства, центральный процессор транспортного средства, навигационное устройство транспортного средства, планшет, персональный компьютер, встроенный в беспилотное транспортное средство 200 и т.п. Таким образом, следует отметить, что вычислительное устройство 210 может быть или не быть постоянно связанным с беспилотным транспортным средством 200. Дополнительно или в качестве альтернативы, вычислительное устройство 210 может быть реализовано в устройстве беспроводной связи, таком как мобильный телефон (например, смартфон или радиотелефон). В некоторых реализациях вычислительное устройство 210 содержит дисплей 270.
[060] Вычислительное устройство 210 может содержать некоторые или все элементы компьютерной системы 100, как показано на фиг. 1. Обычно вычислительное устройство 210 содержит аппаратные средства и/или программное обеспечение и/или микропрограммное обеспечение или их комбинацию для обработки данных, как более подробно описано ниже. Следует отметить, что вычислительное устройство 210 может обмениваться данными с другими компьютерными системами (не показаны) через сеть (не показана), включая серверы и компьютерные системы на других беспилотных транспортных средствах (например, в одноранговой или самоорганизующейся ячеистой сети (mesh network)). Эта связь, тем не менее, не является необходимой для работы беспилотного транспортного средства 200, поскольку могут возникать ситуации, в которых беспилотное транспортное средство 200 может находиться за пределами дальности связи беспроводной или сотовой сети или по другим причинам не может передавать данные по сети.
[061] Беспилотное транспортное средство 200 также содержит датчик 230 изображения, предназначенный для формирования одного или нескольких цифровых изображений по меньшей мере части окружающей области беспилотного транспортного средства 200. Датчик 230 формирования изображения соединен каналом связи с вычислительным устройством 210 для передачи полученных изображений в вычислительное устройство 210 для их обработки, как более подробно описано ниже.
[062] В некоторых реализациях датчик 230 изображения может содержать камеру. Например, в одной конкретной реализации настоящей технологии камера может быть цифровой черно-белой камерой с разрешением, достаточным для обнаружения объектов на заранее заданном расстоянии порядка 100 м или более (при этом камеры с другими характеристиками, разрешениями и диапазонами также входят в объем настоящей заявки).
[063] Датчик 230 формирования изображения может быть установлен на внутренней поверхности верхней части лобового стекла беспилотного транспортного средства 200, при этом другие места также входят в объем настоящей заявки, включая передний капот, крышу, решетку радиатора или передний бампер беспилотного транспортного средства 200. В некоторых реализациях настоящей технологии датчик 230 формирования изображения может быть смонтирован в специальном корпусе (не показан), установленном в верхней части беспилотного транспортного средства 200. В некоторых реализациях настоящей технологии датчик 230 изображения может быть реализован в виде набора камер. Например, этот набор может содержать достаточное количество камер для формирования окружающего или панорамного цифрового изображения области, окружающей беспилотное транспортное средство 200.
[064] В некоторых реализациях настоящей технологии камера (одна или несколько камер в составе датчика 230 изображения) могут захватывать заранее заданную часть окружающей области вокруг беспилотного транспортного средства 200. Например, в некоторых реализациях настоящей технологии камера может формировать цифровое изображение (или серию цифровых изображений), которые захватывают приблизительно 90 градусов окружающей области вокруг беспилотного транспортного средства 200 вдоль пути движения беспилотного транспортного средства 200. Понятно, что также могут использоваться другие конфигурации, в частности, камеры могут захватывать приблизительно 180 градусов, т.е. формировать полные панорамные изображения.
[065] Следует отметить, что в некоторых реализациях настоящей технологии могут использоваться дополнительные датчики. Для простоты беспилотное транспортное средство 200 показано на фиг. 2 только с датчиком 230 изображения, тем не менее, в других реализациях беспилотное транспортное средство 200 может содержать дополнительные датчики, без выхода за пределы настоящей технологии.
Формирование модели машинного обучения
[066] На фиг. 3 представлена блок-схема 300 обобщенного способа создания модели машинного обучения для применения в беспилотном транспортном средстве с целью прогнозирования плоскости дороги на основе изображения. В блоке 302 вычислительное устройство, такое как компьютерная система 100, описанная выше со ссылкой на фиг. 1, используется для формирования набора обучающих данных, используемого при обучении алгоритма машинного обучения. В общем случае этот набор обучающих данных может быть сформирован автоматически из данных, собранных при эксплуатации обучающего транспортного средства на обучающих дорогах. Два способа формирования набора обучающих данных подробно описаны ниже в разделах «Первый способ формирования набора обучающих данных» и «Второй способ формирования набора обучающих данных».
[067] Следует отметить, что обучающее транспортное средство не обязательно должно быть беспилотным. Несмотря на то, что в качестве обучающего транспортного средства может использоваться беспилотное транспортное средство, такое обучающее транспортное средство также может управляться человеком-водителем или дистанционно. Обучающие дороги могут быть любыми дорогами, в достаточной степени представляющие виды дорог, по которым может двигаться беспилотное транспортное средство.
[068] Данные, полученные обучающим транспортным средством, могут быть собраны до формирования набора обучающих данных и сохранены, например, в базе данных. Эти данные могут включать в себя данные изображений, данные о времени и месте сбора данных, а также подробные данные от других датчиков, таких как лидарная система. Несмотря на то, что обучающее транспортное средство может содержать многочисленные сложные и/или дорогие системы датчиков, описанная здесь технология предназначена для обучения алгоритмов машинного обучения принятию решений на основе данных изображения с камеры. Следовательно, после обучения алгоритмы машинного обучения согласно настоящей технологии можно использовать на беспилотном транспортном средстве, содержащем камеру, но не обязательно имеющем набор датчиков, использованный обучающим транспортным средством для сбора данных.
[069] В некоторых реализациях сформированный набор обучающих данных может храниться в базе данных, которая может затем использоваться для обучения алгоритма машинного обучения. Специалисту в данной области техники должно быть понятно, что существует много обычных способов, которыми может быть представлен и сохранен сформированный набор обучающих данных.
[070] В блоке 304 сформированный набор обучающих данных предоставляется алгоритму машинного обучения, выполняемому в вычислительном устройстве, для обучения этого алгоритма. Это обеспечивает «модель машинного обучения», содержащую, например, набор весов и/или другие данные, которые представляют и/или определяют обученный алгоритм машинного обучения. Эта модель машинного обучения может быть применена в других системах, выполняющих соответствующий алгоритм машинного обучения, чтобы использовать результаты обучения без необходимости повторного обучения алгоритма.
[071] Алгоритм машинного обучения может быть обучен с использованием всего сформированного набора обучающих данных или подмножества сформированного набора обучающих данных. В некоторых реализациях часть сформированного набора обучающих данных (например, 2/3 набора обучающих данных, выбранных случайным образом) может использоваться для обучения алгоритма машинного обучения, а другая часть набора обучающих данных (например, оставшаяся 1/3 набора обучающих данных) может использоваться для оценки характеристик обученного алгоритма машинного обучения до того, как обученный алгоритм будет использован в беспилотном транспортном средстве.
[072] Кроме того, следует понимать, что вычислительное устройство, используемое для обучения алгоритма машинного обучения, может быть тем же вычислительным устройством, что использовалось для формирования набора обучающих данных, или может быть другим вычислительным устройством. В некоторых реализациях вычислительное устройство, используемое для обучения алгоритма машинного обучения, может содержать специализированное оборудование, такое как один или несколько специализированных тензорных процессоров или другие специализированные блоки обработки, предназначенные для ускорения операций, обычно используемых в алгоритмах машинного обучения.
[073] Обучаемый алгоритм машинного обучения может быть любым подходящим известным алгоритмом машинного обучения. Например, алгоритм машинного обучения может быть нейронной сетью, способной принимать данные изображения в качестве входных данных и выдавать параметры, определяющие плоскость дороги и/или линию горизонта на изображении. В частности, предполагается, что для определения плоскости дороги или линии горизонта на изображении может использоваться обычная «сверточная нейронная сеть», обученная с использованием набора обучающих данных, сформированного в соответствии с описанной здесь технологией. Сверточные нейронные сети, часто используемые в системах машинного зрения, представляют собой многослойные нейронные сети, имеющие входной и выходной слои, а также многочисленные скрытые слои, которые могут включать в себя (в зависимости от конкретной реализации сверточной нейронной сети) объединяющие слои, полносвязные слои и слои нормализации. Алгоритмы нейронных сетей, содержащих несколько скрытых слоев искусственных нейронов, такие как сверточные нейронные сети, могут называться «глубокими нейронными сетями» или (в более общем смысле) алгоритмами «глубокого обучения».
[074] Несмотря на то, что с использованием набора обучающих данных, сформированного в соответствии с описанной технологией, может быть обучена обычная сверточная нейронная сеть, описанные здесь способы могут быть адаптированы для использования с самым разными традиционными алгоритмами машинного обучения. Сюда входят, помимо прочего, другие алгоритмы «глубокого обучения» или иные алгоритмы машинного обучения, такие как нейронные сети других видов или «коннекционные» системы, деревья решений, леса решений, байесовские сети или другие известные или еще не разработанные алгоритмы машинного обучения, использующие наборы обучающих данных (например, контролируемые или частично контролируемые алгоритмы обучения).
[075] На этапе 306 модель машинного обучения, сформированная путем обучения алгоритма машинного обучения с использованием набора обучающих данных, используется в беспилотном транспортном средстве для определения плоскости дороги и/или линии горизонта на основе данных изображения, предоставленных камерой.
Первый способ формирования набора обучающих данных
[076] В первой реализации способа формирования набора обучающих данных этот набор создается с использованием данных, собранных обучающим транспортным средством, которым может управлять человек-оператор, либо обучающим транспортным средством в режиме дистанционного управления или в беспилотном режиме. Обучающее транспортное средство оснащено камерой или другим устройством формирования изображений, а также датчиком, таким как лидар, или другим датчиком, способным обеспечивать поток одометрических данных. В общем случае данный способ обеспечивает формирование обучающих данных на основе изображений дороги впереди транспортного средства в сочетании с фактическими данными ориентации дороги, полученными позднее, например, когда транспортное средство находится на дороге на 100 м дальше того места, где было снято изображение.
1
1
2
2
1
2
1
2
[077] Например, как показано на фиг. 4, данные собираются во время движения обучающего транспортного средства 402 по дороге 404. Эти данные содержат изображение 406 дороги 404, снятое обучающим транспортным средством 402 в момент времени t, когда обучающее транспортное средство находится в местоположении l на дороге 404, и одометрические данные 408, снятые обучающим транспортным средством в момент времени t, когда обучающее транспортное средство находится в местоположении l на дороге 404. В некоторых реализациях местоположение l может находиться на заранее заданном расстоянии от местоположения l, например, 100 м, но могут использоваться и другие расстояния. В некоторых реализациях другие критерии, такие как данные о скорости обучающего транспортного средства 402 и время (т.е. разница между t и t), могут использоваться для определения того, какие одометрические данные 408 следует использовать для конкретного изображения 406.
2
2
2
2
[078] Одометрические данные 408 в местоположении l используются для определения ориентации обучающего транспортного средства 402 в местоположении l. Одометрические данные 408 обычно представляют собой данные о наклоне обучающего транспортного средства 402 по всем осям (например, по осям x, y и z) с центром в точке l. В некоторых реализациях в качестве индикатора ориентации транспортного средства может использоваться ориентация задней оси (не показана) обучающего транспортного средства 402, а используемые координаты могут быть центрированы, например, в средней точке задней оси обучающего транспортного средства 402. В таких реализациях плоскость дороги может быть рассчитана на основе известной высоты задней оси и должно быть понятно, что вектор, перпендикулярный задней оси в направлении «вниз» (относительно задней оси) будет также перпендикулярен поверхности дороги. Преимуществом данного способа является то, что одометрические данные 408 обеспечивают по существу точную ориентацию в местоположении l, поэтому нет необходимости, например, в ее оценке или в усреднении.
[079] Одометрические данные 408 могут быть собраны любым установленным на обучающем транспортном средстве 402 датчиком (не показан), способным определять ориентацию обучающего транспортного средства 402. В некоторых вариантах осуществления такой датчик может содержать лидарную систему (не показана), а ориентация обучающего транспортного средства 402 может определяться из облака лидарных точек с использованием известного метода, такого как традиционный итерационный алгоритм ближайшей точки, применяемый к последовательным облакам лидарных точек.
1
2
2
2
[080] После того, как изображение 406 для обучающего транспортного средства 402 в местоположении l и данные ориентации в местоположении l определены, на изображении определяется линия (не показана), представляющая плоскость дороги в местоположении l. Это может обеспечиваться, например, путем сопоставления двух пикселей на изображении 406, соответствующих двум точкам задней оси обучающего транспортного средства 402, когда обучающее транспортное средство 402 находится в местоположении l. В реализациях, использующих лидар на обучающем транспортном средстве 402, лидар и камера, формирующая изображения, могут быть откалиброваны для облегчения этого сопоставления. После сопоставления этих двух пикселей между ними может быть построена линия для представления плоскости дороги на изображении, после чего изображение и линия, представляющая плоскость дороги, могут быть добавлены в набор обучающих данных.
[081] Затем этот набор обучающих данных можно использовать для обучения алгоритма машинного обучения определению набора параметров из изображения, на котором эти параметры однозначно представляют будущую плоскость дороги. В некоторых реализациях эти параметры могут представлять будущую плоскость дороги на заранее заданном расстоянии (например, 100 м).
1
2
1
[082] Как показано на фиг. 5, в различных реализациях параметры, сформированные алгоритмом машинного обучения, могут быть такими параметрами, как точки на изображении, точки пересечения с краями изображения, наклон и точка пересечения, угол и точка пересечения или любые другие параметры, однозначно определяющие на изображении линию 510, представляющую плоскость дороги. На фиг. 5 представлено изображение 406, снятое в местоположении l, при этом точки 520 и 522 пересечения линии 510 с краями изображения 406 показаны в качестве примеров параметров, которые могут быть определены алгоритмом машинного обучения. Угол 524 α также показан в качестве примера такого параметра. Любые два из этих параметров, показанных для примера на фиг. 5, могут использоваться для определения линии 510. Расположение линии по вертикальной оси указывает направление уклона плоскости дороги, а отношение точек 520 и 522 пересечения или угол 524 α указывает угол наклона плоскости дороги. Следует отметить, что несмотря на то, что на фиг. 5 показано транспортное средство, это сделано лишь для иллюстрации линии 510, совпадающей с задней осью транспортного средства в местоположении l. Само транспортное средство, разумеется, не будет присутствовать на изображении 406, сделанном с него в местоположении l.
[083] На фиг. 6 показана блок-схема одной реализации способа 600 для формирования набора обучающих данных для модели машинного обучения, используемой в беспилотном транспортном средстве с целью прогнозирования плоскости дороги на основе изображения. В блоке 602 способа принимаются данные, собранные в результате эксплуатации обучающего транспортного средства на дороге. Данные включают в себя изображение, связанное с первым местоположением обучающего транспортного средства на дороге, и одометрические данные, связанные со вторым местоположением обучающего транспортного средства на дороге. На изображении показан участок дороги, связанный со вторым местоположением обучающего транспортного средства.
[084] В некоторых реализациях обучающее транспортное средство находится в первом местоположении в первый момент времени и во втором местоположении во второй момент времени, более поздний, чем первый момент времени. Тем не менее, следует отметить, что при формировании набора обучающих данных это не всегда может быть так. В некоторых реализациях изображение может быть получено после одометрических данных или данные изображения и одометрии могут быть получены разными обучающими транспортными средствами или одним и тем же обучающим транспортным средством во время двух разных поездок по дороге.
[085] В некоторых реализациях первое местоположение может быть на заранее заданном расстоянии от второго местоположения либо по прямому пути (например, по прямой линии), либо по дороге или другой траектории движения обучающего транспортного средства. В некоторых реализациях могут использоваться разные способы для определения первого и второго местоположений, такие как способы, основанные на времени, скорости или других измеренных параметрах. В целом, описанные здесь способы могут применяться для обеспечения наборов обучающих данных, в которых второе местоположение видно на изображении, полученном в первом местоположении.
[086] Одометрические данные могут быть собраны любым датчиком, способным определять ориентацию обучающего транспортного средства. В некоторых реализациях датчик может содержать лидарную систему, а ориентация обучающего транспортного средства может определяться на основе данных, обеспечиваемых этой лидарной системой. Например, ориентация может определяться из облака лидарных точек с использованием традиционного метода, хорошо известного специалистам в данной области техники, такого как итерационный алгоритм ближайшей точки, применяемый к последовательным облакам лидарных точек.
[087] Преимуществом данного способа является то, что относительно дорогая лидарная система должна присутствовать лишь на обучающем транспортном средстве, на котором формируется набор обучающих данных для алгоритма машинного обучения. После обучения этот алгоритм машинного обучения может использоваться на многих транспортных средствах, оборудованных лишь камерой, без использования лидарной системы. Следует также отметить, что способ 500 может использоваться даже с разреженным лидарным облаком, которое может обеспечиваться лидарной системой, частично загрязненной в условиях дорожного движения.
[088] В блоке 604 определяется плоскость дороги во втором местоположении на основе одометрических данных. В некоторых реализациях одометрические данные включают в себя наклон обучающего транспортного средства по всем осям. В некоторых реализациях ориентация задней оси обучающего транспортного средства может использоваться в качестве индикатора ориентации транспортного средства, а используемые координаты могут быть центрированы в средней точке задней оси обучающего транспортного средства. В некоторых реализациях плоскость дороги может быть рассчитана на основе известной высоты задней оси. Частично это основано на векторе, перпендикулярном задней оси в направлении «вниз», перпендикулярном также поверхности дороги. Следует понимать, что другие части обучающего транспортного средства, такие как «центр» транспортного средства, передняя ось или другие координаты, связанные с положением обучающего транспортного средства, также могут использоваться для определения местоположения и ориентации обучающего транспортного средства во втором местоположении.
[089] В блоке 606 на изображении определяется линия, представляющая плоскость дороги во втором местоположении. Это выполняется на основе плоскости дороги, определенной в блоке 604, и сопоставления по меньшей мере двух точек на плоскости дороги во втором местоположении с положениями (такими как пиксели) на изображении, полученном в первом местоположении. В некоторых реализациях это может выполняться путем сопоставления двух пикселей изображения, соответствующих двум точкам на задней оси, передней оси или другому известному месту обучающего транспортного средства, когда обучающее транспортное средство находится во втором местоположении. В реализациях, использующих лидар на обучающем транспортном средстве, этот лидар и камера, формирующая изображения, могут быть откалиброваны для облегчения такого сопоставления. Как только эти два пикселя сопоставлены, между ними может быть построена линия для представления плоскости дороги на изображении.
[090] В блоке 608 для формирования обучающего примера к изображению добавляется линия, представляющая плоскость дороги. В некоторых реализациях такое «добавление» может быть выполнено путем внесения информации об этой линии в структуру данных, содержащую данные изображения и информацию о линии. В некоторых реализациях линия может быть действительно отмечена или прорисована на изображении.
[091] В блоке 610 обучающий пример добавляется к набору обучающих данных. Записи в наборе обучающих данных включают в себя как изображение, так и «правильный» или желаемый результат (т.е. фактические данные, используемые для разметки обучающего примера) в виде линии на изображении, представляющей плоскость дороги в некотором известном месте относительно положения транспортного средства, в котором было получено это изображение. Добавление обучающего примера в набор обучающих данных может быть выполнено, например, путем добавления обучающего примера в базу данных обучающих примеров для обучения беспилотного транспортного средства предсказанию плоскости дороги на основе изображения. Эта база данных или по меньшей мере подмножества данных из этой базы данных могут затем использоваться для обучения алгоритма машинного обучения.
Второй способ формирования набора обучающих данных
[092] Второй способ формирования набора обучающих данных в целом основан на использовании знаний о плоскости дороги, определенной на основе точек лидарных данных, в качестве эталонных данных для добавления на соответствующее изображение с камеры линии, однозначно представляющей плоскость дороги. Этот способ проиллюстрирован на фиг. 7, на которой представлено изображение 700, снятое камерой (не показана) на беспилотном транспортном средстве (не показано), вместе с другими отметками для иллюстрации второго способа.
1
1
[093] Второй способ формирования набора обучающих данных включает в себя получение лидарного облака точек 702 данных, связанных с обучающим транспортным средством, в местоположении l на дороге 704. Полученные точки 702 данных распределены в пределах зоны обзора лидарной системы (не показана), формирующей точки 702 данных. Например, дальность действия лидарной системы, используемой для этой цели, может составлять приблизительно 100 м, поэтому лидарное облако содержит точки в пределах приблизительно 100 м от местоположения l.
1
[094] Плоскость дороги определяется на основе точек 702 данных, принадлежащих поверхности дороги 704 в пределах поля обзора. Это можно сделать с помощью обычного метода, такого как традиционный алгоритм RANSAC. Алгоритм RANSAC - хорошо известный итерационный алгоритм для исключения выбросов в собранных данных или устранения их влияния. Реализация алгоритма RANSAC хорошо известна большинству специалистов в данной области техники и многие реализации алгоритма RANSAC на различных языках программирования доступны для скачивания. Должно быть понятно, что плоскость дороги, определенная с использованием этого метода, является не фактической плоскостью дороги, а усредненной плоскостью, связанной с участком дороги, начинающимся в местоположении l и ограниченным полем обзора лидарной системы. Это является разумной предварительной оценкой для построения будущей плоскости дороги. Усредненная плоскость обновляется после получения нового лидарного облака точек данных. Кроме того, следует отметить, что этот метод описан в терминах облака точек данных, формируемых лидарной системой, но при этом можно использовать и другие датчики, например, радары, формирующие аналогичные трехмерные карты точек в известном диапазоне дальности.
1
1
[095] В дополнение к лидарным данным, в местоположении l снимается изображение 700 с камеры, установленной на обучающем транспортном средстве. Затем определяется линия 706, однозначно представляющая плоскость дороги на изображении, и линия 706 добавляется к изображению 700. В некоторых реализациях линия 706 может быть определена с использованием по меньшей мере двух лидарных точек 708 и 710, принадлежащих определенной плоскости дороги, приблизительно на заранее заданном расстоянии (например, 100 м) от местоположения l. Заранее заданное расстояние должно быть относительно далеким от точки обзора, соответствующей изображению, чтобы имитировать линию горизонта, представляющую собой линию, к которой все плоскости, параллельные дороге, сходятся в бесконечности. После выбора по меньшей мере двух лидарных точек 708 и 710, принадлежащих плоскости дороги, способ находит два пикселя на изображении 700, соответствующие двум лидарным точкам 708 и 710, и определяет линию 706 на основе этих двух пикселей. В некоторых реализациях нахождение на изображении двух пикселей, соответствующих лидарным точкам, облегчается калибровкой лидара и камеры.
[096] После добавления линии 706 к изображению 700 оно может быть добавлено в набор обучающих данных. Когда набор обучающих данных содержит достаточное количество обучающих примеров (например, заранее заданное число обучающих примеров, зависящее от используемого алгоритма машинного обучения), его можно использовать для обучения алгоритма машинного обучения так, чтобы он определял по изображению набор параметров, однозначно представляющих будущую плоскость дороги. В некоторых реализациях эти параметры могут представлять будущую плоскость дороги на заранее заданном расстоянии (например, 100 м). В различных реализациях параметры, сформированные алгоритмом машинного обучения, могут включать в себя: точки на изображении, точки пересечения с краями изображения, уклон и точку пересечения, угол и точку пересечения или любые другие параметры, однозначно определяющие линию на изображении, представляющую плоскость дороги. На фиг. 7 в качестве примеров параметров, которые могут быть определены алгоритмом машинного обучения, показаны точки 720 и 722 пересечения линии 706 с краями изображения 700. Угол 724 α также показан в качестве примера такого параметра. Из этих показанных на фиг. 7 иллюстративных параметров для определения линии 706 могут использоваться любые два. Расположение линии на вертикальной оси указывает на уклон плоскости дороги, а соотношение точек пересечения 720 и 722 или угол 724 α указывает угол наклона плоскости дороги.
[097] На фиг. 8 показана блок-схема 800 одной реализации второго способа для формирования набора обучающих данных для модели машинного обучения, используемой в беспилотном транспортном средстве с целью прогнозирования плоскости дороги на основе изображения. В блоке 802 способа принимаются данные о поверхности от датчика, установленного на обучающем транспортном средстве. Датчиком может быть, например, лидарная система или другой датчик, формирующий трехмерную карту точек до некоторой дальности. Данные поверхности связаны с сегментом окружающей среды, содержащим дорогу на заранее заданном расстоянии, например, порядка 100 м, от обучающего транспортного средства. В реализациях, использующих лидар, данные поверхности представляют собой набор лидарных точек данных, в котором некоторое подмножество этих точек принадлежит поверхности дороги.
[098] В блоке 804 принимается обучающее изображение от камеры, установленной на обучающем транспортном средстве. Обучающее изображение снимается примерно в том же местоположении обучающего транспортного средства на обучающей дороге, где получены данные о поверхности, и показывает по меньшей мере некоторый сегмент окружающей среды с обучающей дорогой.
[099] В блоке 806 на основе данных о поверхности определяется прогнозируемая будущая плоскость дороги. В некоторых реализациях это может быть сделано с использованием известного алгоритма, такого как алгоритм RANSAC. Следует отметить, что плоскость дороги, определенная с использованием этого способа, является не фактической плоскостью дороги, а усредненной плоскостью, связанной с участком дороги, начиная с местоположения беспилотного транспортного средства, на котором было снято это изображение, и ограниченной полем обзора датчика или меньшим заранее заданным расстоянием (например, приблизительно 100 м).
[0100] В блоке 808 определяется линия, представляющая на изображении прогнозируемую будущую плоскость дороги. В некоторых реализациях эта линия может быть определена с использованием по меньшей мере двух точек из данных поверхности, соответствующих определенной плоскости дороги, приблизительно на заранее заданном расстоянии (например, 100 м) от местоположения беспилотного транспортного средства. Заданное расстояние должно быть относительно далеким от точки обзора изображения, чтобы имитировать линию горизонта, представляющую собой линию, к которой все плоскости, параллельные дороге, сходятся в бесконечности. После выбора по меньшей мере двух точек, принадлежащих плоскости дороги, в этом способе находятся два пикселя в обучающем изображении, соответствующие двум точкам из данных поверхности, и на основе этих двух пикселей определяется линия.
[0101] В блоке 810 к обучающему изображению для формирования обучающего примера добавляется линия, представляющая плоскость дороги. В некоторых реализациях такое «добавление» может быть выполнено путем внесения информации об этой линии в структуру данных, содержащую данные обучающего изображения и информацию о линии. В некоторых реализациях эта линия может быть действительно отмечена или прорисована на обучающем изображении. Это должно быть определено, по меньшей мере частично, в алгоритме обучения, обучаемом с использованием этого набора обучающих данных.
[0102] В блоке 812 обучающий пример добавляется к набору обучающих данных. Записи в наборе обучающих данных включают в себя как изображение, так и «правильный» или желаемый результат в виде линии на изображении, представляющей плоскость дороги в некотором известном месте относительно положения транспортного средства, в котором был сделан снимок. Добавление обучающего примера в набор обучающих данных может выполняться, например, путем добавления обучающего примера в базу данных обучающих примеров для обучения беспилотного транспортного средства предсказанию плоскости дороги на основе изображения. Эта база данных или по меньшей мере подмножества данных из этой базы данных могут затем использоваться для обучения алгоритма машинного обучения.
Способ управления транспортным средством
[0103] На фиг. 9 представлен способ управления беспилотным транспортным средством. Таким беспилотным транспортным средством может быть, например, беспилотное транспортное средство 200, описанное выше со ссылкой на фиг. 2, содержащее вычислительное устройство 210 и датчик 230 изображения. В соответствии с настоящей технологией, модель машинного обучения, сформированная согласно способу, описанному выше на фиг. 3, и обученная с использованием набора обучающих данных, сформированного, как описано выше, загружается в вычислительное устройство 210 на беспилотном транспортном средстве и соответствующий алгоритм машинного обучения (т.е. алгоритм машинного обучения, способный использовать обученную модель машинного обучения) переходит к использованию модели машинного обучения для оценки плоскости дороги и/или линии горизонта с применением изображений с датчика 230 изображения, используемых в качестве входных данных.
[0104] Этот процесс проиллюстрирован на блок-схеме 900 на фиг. 9. В блоке 902 изображение снимается камерой в первом местоположении беспилотного транспортного средства. На изображении показан участок дороги, по которой движется беспилотное транспортное средство, включая сегмент окружающей среды с дорогой в пределах заранее заданного расстояния (например, приблизительно 100 м) от беспилотного транспортного средства.
[0105] В блоке 904 изображение передается модели машинного обучения, используемой с алгоритмом машинного обучения, выполняемым в вычислительном устройстве беспилотного транспортного средства. Модель машинного обучения формирует выходные данные, дающие оценку плоскости дороги на основе этого изображения. В некоторых реализациях выходные данные представлены в виде параметров, описывающих линию, однозначно определяющую плоскость дороги, как описано выше.
[0106] Следует понимать, что в соответствии с настоящей технологией модель машинного обучения, используемая для оценки плоскости дороги, является результатом обучения алгоритма машинного обучения с использованием набора обучающих данных, сформированного в соответствии с одним из способов, описанных выше со ссылкой на фиг. 4-8.
[0107] В блоке 906 расчетная плоскость дороги используется для управления движением беспилотного транспортного средства по дороге. В некоторых реализациях расчетная плоскость дороги может использоваться для создания проекции вида с высоты птичьего полета сцены дороги впереди беспилотного транспортного средства. Этот вид с высоты птичьего полета затем используется в других расчетах и модулях для управления беспилотным транспортным средством.
[0108] Для специалиста в данной области могут быть очевидными возможные изменения и усовершенствования описанных выше вариантов осуществления настоящей технологии. Предшествующее описание приведено лишь в качестве примера, а не для ограничения объема изобретения. Следовательно, объем настоящей технологии ограничен исключительно объемом приложенной формулы изобретения.