118
правок
Изменения
Сверточные нейронные сети
{{В разработке}}
{{Определение|definition ='''Оценка положения''' (англ. ''Pose Estimation'') {{--- представляет собой сочетание аппаратных средств }} задача определения положения и программного обеспечения, которое позволяет определить абсолютное положение ориентации объекта или группы объектов в пространстве. }}
== Области применения ==
Задача оценки положения движущихся и статичных объектов возникает во множестве прикладных областей. Сейчас происходит подъем популярности разработки устройств и систем, отслеживающих положения объектов окружающего мира и использующих эту информацию для различных целей, рассмотрим . Рассмотрим несколько областей:
#'''Транспортные средства с встроенными системами помощи водителю ''' ''(автопилот, круиз контроль и др.)''. Которые Эти системы помогают водителю с парковкой, контролируют скорость и направление движения, а также предупреждают об объектах, находящихся на дороге, о типе дорожного покрытия и возможных авариях.#'''Дополненная реальность:''' устройства , в которых в реальное изображение, получаемое с помощью видеокамер, встраивается некоторая информация , полезная человеку.#'''Виртуальная реальность: ''' оценка положения, как технология , является критически важной для достижения эффекта погружения в виртуальную реальность. В сочетании с отслеживанием ориентации становится возможным измерять и передавать в ВР виртуальную реальность все 6 степеней свободы ([https://en.wikipedia.org/wiki/Six_degrees_of_freedom 6-DoF]) реального мира.#'''Робототехника: '''Роботы роботы (Медицинскиемедицинские, научные, промышленные и др.) , которые основывают свое движение на построении карты окружения и препятствий.#'''Веб-технологии: '''Исследование юзабилити и исследование пользовательского опытаи удобства использования продукта. Можно [[Отслеживание_направления_взгляда_пользователя_в_браузере|отслеживать взгляд пользователя]], чтобы понимать какие блоки сайта привлекают наибольшее внимание.
== Методы решения задачи оценки положения ==
=== Акустические методы===
Акустические приборы слежения используют ультразвуковые (высокочастотные) звуковые волны для измерения положения и ориентации целевого объектав пространстве. Для определения положения объекта либо измеряется время пролёта ([https://en.wikipedia.org/wiki/Time_of_arrival time-of-arrival]) звуковой волны от передатчика к приёмникам, либо разность фаз синусоидальной звуковой волны при приёмо-передаче. Алгоритмы трекинга отслеживания положения при использовании акустических приборов основаны на [https://en.wikipedia.org/wiki/True_range_multilateration Трилатерациитрилатерации] и расчете [https://en.wikipedia.org/wiki/Angle_of_arrival Угла Прибытияугла прибытия].При использовании данных методов, разработчики сталкиваются с некоторыми проблемами: акустические трекеры, как правило имею , имеют низкую скорость обновления , связанную с низкой скорости скоростью звука в воздухе, скорость звука в воздухе которая зависит от внешних факторов среды, таких как температура, давление и влажность.
=== Радиочастотные методы ===
Методов, основанных на радиочастотах , достаточно много.#'''Позиционирования Позиционированиe с использованием пассивных радиочастотных идентификаторов [https://ru.wikipedia.org/wiki/RFID#Антиколлизионный_механизм_(меток) RFID]''' <br /> Основное назначение систем с пассивными RFID метками – {{---}} идентификация. Они применяются в системах, традиционно использовавших штрих-коды или магнитные карточки – : в системах распознавания товаров и грузов, опознания людей, в системах контроля и управления доступом (СКУД) и т.п.Система включает RFID метки с уникальными кодами и считыватели и работает следующим образом. Считыватель непрерывно генерирует радиоизлучение заданной частоты. ЧИП метки, попадая в зону действия считывателя, использует это излучение в качестве источника электропитания и передает на считыватель идентификационный код. Радиус действия считывателя составляет около метра.<br />#'''Позиционирование с использованием активных [https://ru.wikipedia.org/wiki/RFID#Антиколлизионный_механизм_(меток) RFID] ''' <br/>Активные радиочастотные метки используются при необходимости отслеживания предметов на относительно больших расстояниях (например, на территории сортировочной площадки). Рабочие частоты активных RFID – меток {{---}} 455МГц, 2,.4ГГц или 5,.8ГГц, а радиус действия – {{---}} до ста метров. Питаются активные метки от встроенного аккумулятора.Существуют активные метки двух типов: [https://ru.wikipedia.org/wiki/Маркерный_радиомаяк радиомаякиТранспондер транспондеры] и [https://ru.wikipedia.org/wiki/Транспондер транспондерыМаркерный_радиомаяк радиомаяки]. Транспондеры включаются, получая сигнал считывателя. Они применяются в АС оплаты проезда, на КПП, въездных порталах и других подобных системах.Радиомаяки используются в системах позиционирования реального времени. Радиомаяк отправляет пакеты с уникальным идентификационным кодом по команде либо с заданной периодичностью. Пакеты принимаются как минимум тремя приемниками, расположенными по периметру контролируемой зоны. Расстояние от маячка до приемников с фиксированными координатами определяются по углу направления на маячок [https://en.wikipedia.org/wiki/Angle_of_arrival Angle of arrival] (AoA), по времени прихода сигнала [https://en.wikipedia.org/wiki/Time_of_arrival Time of arrival] (ToA) или по времени распространения сигнала от маячка до приемника [https://en.wikipedia.org/wiki/Time_of_flight Time-of-flight] (ToF).Инфраструктура системы строится на базе проводной сети и в двух последних случаях требует синхронизации.<br />#''' Ultra Wideband (UWB) позиционирование '''<br/> Технология UWB (сверхширокополосная) использует короткие импульсы с максимальной полосой пропускания при минимальной центральной частоте. У большинства производителей центральная частота составляет несколько гигагерц, а относительная ширина полосы – {{---}} 25-100%. Технология используется в связи, радиолокации, измерении расстояний и позиционировании.Это обеспечивается передачей коротких импульсов, широкополосных по своей природе. Идеальный импульс (волна конечной амплитуды и бесконечно малой длительности), как показывает [https://ru.wikipedia.org/wiki/Анализ_Фурье анализ Фурье], обеспечивает бесконечную полосу пропускания. UWB сигнал не походит на модулированные синусоидальные волны, а напоминает серию импульсов. Производители предлагают разные варианты UWB технологии. Различаются формы импульсов. В некоторых случаях используются относительно мощные одиночные импульсы, в других – {{---}} сотни миллионов маломощных импульсов в секунду. Применяется как когерентная (последовательная) обработка сигнала, так и не когерентная. Все это приводит к значительному различию характеристик UWB систем разных производителей.
=== Магнитные методы ===
=== Оптические методы ===
Оптические методы представляют собой совокупность алгоритмов [httpshttp://runeerc.wikipediaifmo.orgru/wiki/index.php?title=Компьютерное_зрение компьютерного зрения] и отслеживающих устройств, в роли которых выступают камеры видимого или инфракрасного диапазона, стерео-камеры и камеры глубины. Оптический трекинг основан на том же принципе, что и стереоскопического зрения стереоскопическое зрениe человека. Когда человек смотрит на объект с помощью бинокулярного зрения, он в состоянии определить , приблизительно на каком расстоянии объект находится. Не достаточно просто установить пару несколько камер для имитации стереоскопического зрения человека. Камеры должны определить расстояние до объекта и его положения в пространстве, так что их необходимо откалибровать.[https://ru.wikipedia.org/wiki/Оптическая_система Оптические системы] надежны и относительно дешевы, но их с ними трудно калиброватьпровести начальную калибровку. Кроме того, система требует прямой линии света без закупорки, в противном случае мы получаем неправильные данные.
В зависимости от наличия специальных оптических маркеров выделяют отдельно:
*'''Без маркерный Безмаркерный трекинг: '''как правило строится на сложных алгоритмах с использованием двух и более камер, либо стерео -камер с сенсорами глубины. Используется наибольшим образом в автомобилях с автопилотам автопилотом и иными системами помощи водителю.
*'''Трекинг с использованием маркеров:''' предполагает заранее заданную модель объекта, которую можно отслеживать даже с одной камерой. Маркерами обычно служат источники инфракрасного излучения (как активные, так и пассивные), а также видимые маркеры наподобие [https://ru.wikipedia.org/wiki/QR-код QR]-кодов. Такой вид трекинга возможен только в пределах прямой видимости маркера.
=== Задача Perspective-n-Point (PnP) === При оптическом отслеживании для определения положения объекта в пространстве решается так называемая задача PnP (Perspective-n-Point), когда по перспективной проекции объекта на плоскость сенсора камеры необходимо определить положение объекта в 3D-пространстве.
Для заданной 3D-модели объекта и 2D-проекции объекта на плоскость камеры решается система уравнений. В результате чего получается множество возможных решений. Количество решений зависит от числа точек в 3D-модели объекта. Однозначное решение для определения 6-DoF положения объекта можно получить как минимум при 4 точках. Для треугольника получается от 2 до 4 возможных решений, то есть положение не может быть определено однозначно. <div style="text-align: center"><ul> <li style="display: inline-block;"> [[Файл:Pnp.gif |400px|thumb| rightcenter| Рис. 1 Задача (PnP)]]</li>При оптическом отслеживании для определения положения объекта в пространстве решается так называемая задача PnP (Perspective<li style="display: inline-n-Point),когда по перспективной проекции объекта на плоскость сенсора камеры необходимо определить положение объекта в 3D-пространствеblock;"> [[Файл:triangles.gif |400px|thumb|center| Рис.2 Решение "треугольников"]] </li></ul></div>
Решение предлагается достаточно большим количеством алгоритмов, реализованных в виде библиотек:
#'''[http://sv-journal.org/2015-4/09/index.php?lang=ru POS]''' ''(Pose from Orthography and Scaling)'', аппроксимирующий перспективную проекцию с помощью масштабированной ортогональной проекции и находящий матрицу поворота и вектор сдвига объекта путём решения линейной системы уравнений.
#'''[https://github.com/opencv/opencv/wiki/Posit POSIT]''' ''(POS with ITerations)'', который использует в цикле аппроксимацию нахождения положения POS для нахождения более хорошей масштабированной ортогональной проекции особых точек, а затем применяет POS к этим точкам, а не к исходным. POSIT сходится к точному решению за несколько итераций.
#'''[https://opencv.org/ OpenCV]''' — {{---}} библиотека компьютерного зрения широкого назначения с открытым исходным кодом. Основные части библиотеки — {{---}} интерпретация изображений и алгоритмы машинного обучения. Список возможностей, предоставляемых OpenCV, весьма обширен: интерпретация изображений, калибровка камеры по эталону, устранение оптических искажений, анализ перемещения объекта, определение формы объекта и слежение за объектом, сегментация объекта и др. Нам же интереcтно интереcен метод [https://docs.opencv.org/3.1.0/d9/d0c/group__calib3d.html#ga549c2075fac14829ff4a58bc931c033d solvePnP].
=== SLAM — <ref>[https://ru.wikipedia.org/wiki/SLAM_(%D0%BC%D0%B5%D1%82%D0%BE%D0%B4) simultaneous localization and mapping ]</ref> {{---}} Simultaneous Localization and Mapping === Метод одновременной локализации и построения карты (SLAM) — {{---}} наиболее популярный способ позиционирования, который применяется для отслеживания положения в пространстве.[[Файл:Slam.png |400px|thumb| right| Рис. 3 Метод SLAM]]Алгоритм состоит из двух частей: первая — {{---}} составление карты неизвестного окружающего пространства на основе измерений (данные с [https://ru.wikipedia.org/wiki/Одометр одометра] или [https://ru.wikipedia.org/wiki/Стереоскопический_фотоаппарат стерео-камеры]), вторая — {{---}} определение своего местоположения (локализация) в пространстве на основе сравнения текущих измерений с имеющейся картой пространства. Данный цикл непрерывно пере вычисляетсяперевычисляется, при этом результаты одного процесса участвуют в вычислениях другого процесса. Наиболее популярные методы решения задачи включают в себя фильтр частиц и расширенный [https://ru.wikipedia.org/wiki/Фильтр_Калмана фильтр Калмана].SLAM удобен для мобильных решений виртуальной и дополненной реальности. Недостатком данного подхода является большая вычислительная сложность.
=== Инерциальный трекинг ===
Современные инерциальные измерительные системы ([https://en.wikipedia.org/wiki/Inertial_measurement_unit IMU]) на основе [https://ru.wikipedia.org/wiki/Микроэлектромеханические_системы MEMS-технологии] позволяют отслеживать ориентацию (roll, pitch, yaw) в пространстве с большой точностью и минимальными задержками.[[Файл:gyro.gif |400px|thumb| right| Рис. 4 MEMS]]
Благодаря алгоритмам [https://en.wikipedia.org/wiki/Sensor_fusion «sensor fusion»] на основе [https://robotclass.ru/articles/complementary-filter комплементарного фильтра] или [https://ru.wikipedia.org/wiki/Фильтр_Калмана фильтра Калмана] данные с гироскопа и акселерометра успешно корректируют друг друга и обеспечивают точность как для кратковременных измерений, так и для длительного периода. Однако определение координат (перемещения) за счёт двойного интегрирования линейного ускорения ([https://en.wikipedia.org/wiki/Dead_reckoning dead reckoning]), вычисленного из сырых данных с [https://ru.wikipedia.org/wiki/Акселерометр акселерометра], не удовлетворяет требованиям по точности на длительных периодах времени. Акселерометр сам по себе даёт сильно зашумленные данные, и при интегрировании ошибка увеличивается со временем квадратично.Решить данную проблему помогает комбинирование инерциального подхода к трекингу с другими методами, которые периодически корректируют, так называемый, дрифт акселерометра.
=== Гибридные методы ===
Так как ни один из методов не является безупречным, и все они имеют свои слабые места, наиболее разумно комбинировать различные методы отслеживания. Так инерциальный трекинг (IMU) может обеспечить высокую частоту обновления данных (до 1000 Гц), в то время как оптические методы могут дать стабильную точность в длительные периоды времени (корректирование дрифта).
== Примеры задач, решаемых с помощью ML Оценка положения человека ===== Обнаружение и обработка дорожных знаков и пешеходов === ====Введение ==== '''Обнаружение объектов''' является хорошо известной проблемой в области компьютерного зрения и глубокого обучения. Существует два компонента в модели обнаружения объекта, а именно, базовая нейронная сеть и нейронная сеть обнаружения .Во-первых, '''базовые нейтральные сети''' -это CNN, которые извлекают объекты из изображения, из объектов низкого уровня, таких как линии, ребра или круги, в объекты более высокого уровня, такие как лицо, человек, светофор или знак стоп и т. д. Несколько хорошо известных базовых нейронных сетей-это LeNet, InceptionNet(он же. GoogleNet), ResNet, VGG-Net, AlexNet, MobileNet и др. Эта [https://medium.com/@RaghavPrabhu/cnn-architectures-lenet-alexnet-vgg-googlenet-and-resnet-7c81c017b848 превосходная статья] обсуждает различия между этими базовыми нейтральными сетями ниже. Затем '''нейронные сети обнаружения''' присоединяются к концу базовой нейронной сети и используются для одновременной идентификации нескольких объектов из одного изображения с помощью извлеченных признаков. Некоторые из популярных сетей обнаружения-SSD (Single Shot MultiBox Detector), R-CNN (регион с функциями CNN), более быстрый R-CNN и YOLO (вы смотрите только один раз) и т. д. В [https://en.wikipedia.org/wiki/Object_detection этой статье] рассматриваются различия между этими нейронными сетями обнаружения. ====Modeling training==== Выделим несколько этапов связанных с модельным обучением.#Сбор и маркировка изображений (20-30 мин)#Выбор модели#Трансферное обучение / модельное обучение (3-4 часа)#Сохранить вывод модели в формате Edge TPU (5 мин)#Запуск вывода модели на Raspberry Pi ====Сбор и маркировка изображений====У нас есть 6 типов объектов, а именно: красный свет, зеленый свет, знак остановки, ограничение скорости 40 миль в час, ограничение скорости 25 миль в час и несколько фигурок Lego в качестве пешеходов.[[Файл:Obj.jpg |400px|thumb| right| Рис. 5 Установленные объекты]] Таким образом, у нас будет около 50 подобных фотографий, с объектами размещенными случайным образом на каждом изображении. Затем пометим каждое изображение с помощью ограничительной рамки для каждого объекта на изображении. С помощью бесплатного инструмента, называемый [https://tzutalin.github.io/labelImg/ labelImg] ''(для Windows / Mac / Linux)'' это можно сделать довольно быстро и просто. ====Выбор модели====На Raspberry Pi, так как мы имеем ограниченные вычислительные мощности, мы должны выбрать модель, которая работает относительно быстро и точно. После экспериментов с несколькими моделями, свой выбор остановим на <tt> MobileNet v2 SSD COCO</tt> модель как оптимальный баланс между скоростью и точностью. ====Трансферное Обучение / Модельное Обучение ==== Для этого шага будем использовать Google Colab. Подготовка данных для обучения: repo_dir_path = '/content/DeepPiCar' % cd{ repo_dir_path} / models/ object_detection # Convert train folder annotation xml files to a single csv file, # generate the `label_map.pbtxt` file to `data/` directory as well. !python code/xml_to_csv.py -i data/ images/ train - o data/ annotations/ train_labels.csv -l data/ annotations # Convert test folder annotation xml files to a single csv. !python code/xml_to_csv.py -i data/ images/ test -o data/ annotations/ test_labels.csv # Generate `train.record` !python code/generate_tfrecord.py --csv_input=data/annotations/train_labels.csv - - output_path= data/ annotations/ train.record -- img_path=data/images/train --label_map data/annotations/label_map.pbtxt # Generate `test.record` !python code/generate_tfrecord.py --csv_input=data/annotations/test_labels.csv - - output_path= data/ annotations/ test.record -- img_path=data/images/test --label_map data/annotations/label_map.pbtxt Приведенный выше код преобразует xml-файлы меток, созданные инструментом LabelImg, в двоичный формат, так что TensorFlow может обрабатывать быстро. Загружаем Pre-trained Model: MODEL_FILE = MODEL + '.tar.gz' DOWNLOAD_BASE = 'http://download.tensorflow.org/models/object_detection/' DEST_DIR = '/content/models/research/pretrained_model' if not( os.path.exists( MODEL_FILE)): urllib.request.urlretrieve( DOWNLOAD_BASE + MODEL_FILE, MODEL_FILE) tar = tarfile.open( MODEL_FILE) tar.extractall() tar.close() os.remove( MODEL_FILE) if(os.path.exists( DEST_DIR)): shutil.rmtree(DEST_DIR) os.rename( MODEL, DEST_DIR) fine_tune_checkpoint = os.path.join( DEST_DIR, "model.ckpt") print( fine_tune_checkpoint) Приведенный выше код загрузит предварительно обученные файлы модели для <tt>ssd_mobilenet_v2_quantized_300x300_coco_2019_01_03</tt> модель и мы будем только использовать <tt>model.ckpt файл</tt>. Тренируем модель: num_steps = 2000 num_eval_steps = 50 model_dir = '/content/gdrive/My Drive/Colab Notebooks/TransferLearning/Training' pipeline_file = 'ssd_mobilenet_v2_quantized_300x300_coco.config' !python /content/models/research/object_detection/model_main.py \ - - pipeline_config_path= { pipeline_fname} \ --model_dir='{model_dir}' \ --alsologtostderr \ --num_train_steps={num_steps} \ --num_eval_steps={num_eval_steps} Этот шаг занимает 3-4 часа, в зависимости от количества шагов, которые вы тренируете ''(они же эпохи или num_steps)''. После того, как тренировка будет завершена, вы увидите кучу файлов в <tt>model_dir</tt>. Мы ищем самое последнее <tt>model.ckpt-xxxx.meta</tt> файл.Во время обучения мы можем отслеживать прогрессирование потерь и точности с помощью '''TensorBoard'''. Тестируем обученную модель: [[Файл:Newobj.jpg |400px|thumb| right| Рис. 6 Опознанные объекты]] После тренировки прогоняем несколько изображений из тестового набора данных через нашу новую модель. Как и ожидалось, практически все объекты на изображении были идентифицированы с относительно высокой достоверностью. Более отдаленные объекты становились больше и легче обнаружить, когда наша машина приближалась к ним. Сохраняем вывод модели в формате Edge TPU: После того, как модель обучена, мы должны экспортировать модель meta файл в диаграмму вывода в формате <tt>Google ProtoBuf</tt>, а затем в формат, который Edge TPU accelerator может понимать и обрабатывать. ====Планирование и управление движением==== Теперь, когда DeepPiCar может обнаружить и определить, какие объекты находятся перед ним, нам все еще нужно сказать ему, что с ними делать, т. е. управление движением. Существует два подхода к управлению движением, т. е. основанный на правилах и сквозной.<br/>#'''Подход, основанный на правилах''' значит, нам нужно точно сказать машине, что делать, когда она сталкивается с каждым объектом. Например, скажите автомобилю остановиться, если он видит красный свет или пешехода, или ехать медленнее, если он видит более низкий знак ограничения скорости и т. д. Это сродни тому, что мы сделали в части 4, где мы рассказали автомобилю, как перемещаться по полосе движения с помощью набора кодов/правил.#'''Сквозной подход''' просто кормит автомобиль большим количеством видеоматериалов хороших водителей, и автомобиль, через глубокое обучение, выясняет сам по себе, что он должен остановиться перед красными огнями и пешеходами или замедлиться, когда ограничение скорости падает.В статье рассматривается первый подход. Правила довольно просты: если ни один объект не обнаружен, то привод на последнем известном ограничении скорости. Если какой-то объект обнаружен, этот объект изменит скорость автомобиля или ограничение скорости. Во-первых, определяем базовый класс, <tt>TrafficObject</tt>, который представляет собой любые дорожные знаки или пешеходов, которые могут быть обнаружены на дороге. Он содержит метод, <tt>set_car_state(car_state)</tt>. <tt>car_stateСловарь</tt> содержит две переменные, а именно: <tt>speed, и speed_limit</tt>, который будет изменен этим методом. Он также имеет вспомогательный метод, <tt>is_close_by()</tt>, который проверяет, находится ли обнаруженный объект достаточно близко. (Ну, поскольку наша единственная камера не может определить расстояние, приближаем расстояние с высотой объекта. Чтобы точно определить расстояние, нам понадобится лидар или его маленький кузен, ультразвуковой датчик или система камер стереовидения, как в Тесле.) class TrafficObject(object): def set_car_state( self, car_state): pass @staticmethod def is_close_by( obj, frame_height, min_height_pct= 0,05): # default: if a sign is 10% of the height of frame obj_height = obj.bounding_box[ 1] [1] - obj.bounding_box[0][1] return obj_height / frame_height >> min_height_pct Реализация для красного света и пешехода тривиальны, просто устанавливают скорость автомобиля 0. class RedTrafficLight(TrafficObject): def set_car_state( self, car_state): logging.debug('red light: stopping car') car_state['speed'] = 0 class Pedestrian(TrafficObject): def set_car_state( self, car_state): logging.debug('pedestrian: stopping car') car_state['speed'] = 0 Как 25 миль в час, так и 40 миль в час ограничения скорости могут использовать только один класс SpeedLimit, который принимает <tt>speed_limit</tt> в качестве параметра инициализации. Когда знак обнаружен, просто установливаем ограничение скорости автомобиля до соответствующего предела. class SpeedLimit( TrafficObject): def __init__(self, speed_limit): self.speed_limit = speed_limit def set_car_state( self, car_state): logging.debug('speed limit: set limit to %d' % self.speed_limit) car_state['speed_limit'] = self.speed_limitРеализация зеленого света еще проще, так как он ничего не делает, но печать зеленого света обнаруживается (код не показан).
==См. также==
*[[Отслеживание направления взгляда пользователя в браузере]]
*[[Сегментация изображений]]
*[[Вписывание части изображения]]
*[[Глубокое обучение]]
*[[Сверточные нейронные сети]]
== Примечания ==
<references/>
== Источники информации==
* [https://ru.qwe.wiki/wiki/Augmented_reality Дополненная реальность.]
* [https://ru.qwe.wiki/wiki/Positional_tracking Positional tracking.]
* [http://docs.cntd.ru/document/gost-r-54621-2011 ГОСТ Р 54621-2011. Информационные технологии. Радиочастотная идентификация для управления предметами.]
* [https://habr.com/ru/post/482220/ Локализация по Aruco маркерам]
* [https://habr.com/ru/post/397757/ Обзор методов и технологий отслеживания положения для виртуальной реальности.]
* [https://nanonets.com/blog/object-tracking-deepsort/ DeepSORT: Deep Learning to Track Custom Objects in a Video.]
* [https://githubnanonets.com/cpuryblog/lookiehuman-lookie/tree/master/blogcode Проект по трекингу взгляда]* [https://habr.com/ru/company/ruvds/blog/426055/ TensorFlow.js и clmtrackr.js: отслеживание направления взгляда]* [https://towardsdatascience.com/deeppicarpose-partestimation-62d-963334b2abe0 DeepPiCar — Part 6: Traffic Sign and Pedestrian Detection and Handlingguide/ Оценка положения человека.]
{{В разработке}}
[[Категория:Компьютерное зрение]]
[[Категория:Оценка положения]]