Содержание
Проект «Дорожные знаки» | Проект по ОБЖ (старшая группа):
Опубликовано 26.08.2022 — 11:56 — Кондратьева Марина Николаевна
Цель проекта: формирование у дошкольников умения ориентироваться в дорожной ситуации
Задачи проекта:
— уточнение и закрепление знаний дошкольников о правилах дорожного движения
— формирование знаний дошкольников о дорожных знаках
— привлечение родителей к работе по обучению детей ПДД
Скачать:
Предварительный просмотр:
Подписи к слайдам:
Слайд 1
Проект «Дорожные знаки» Руководитель проекта Осипова А.А. Муниципальное дошкольное образовательное учреждение Детский сад комбинированного вида № 4
Слайд 2
Срок реализации проекта: 2 месяца Время реализации проекта:: октябрь-ноябрь 2017года Участники проекта: воспитанники МДОУ старшего дошкольного возраста, родители, воспитатели старших и подготовительных групп
Слайд 3
Цель проекта: формирование у дошкольников умения ориентироваться в дорожной ситуации Задачи проекта: — уточнение и закрепление знаний дошкольников о правилах дорожного движения — формирование знаний дошкольников о дорожных знаках — привлечение родителей к работе по обучению детей ПДД
Слайд 4
Мероприятия в рамках проекта: — просмотр мультфильмов о дорожных знаках — проведение открытого занятия «Правила дорожного движения» с использованием магнитно-маркерной доски -проведение бесед с родителями — участие в районном конкурсе ЮИД ДОУ «Светофор собирает друзей» — участие в Первом Всероссийском конкурсе рисунков по ПДД «Новый дорожный знак глазами детей» — участие в детско-родительском конкурсе «День полиции» совместно с ГИБДД защита детско-родительского проекта «Дорога в детский сад» проведение спортивного досуга «По городу дорожных знаков»
Слайд 5
— проведение открытого занятия «Правила дорожного движения» с использованием магнитно-маркерной доски
Слайд 6
— участие в Первом Всероссийском конкурсе рисунков по ПДД «Новый дорожный знак глазами детей»
Слайд 7
— участие в детско-родительском конкурсе «День полиции» совместно с ГИБДД
Слайд 8
— защита детско-родительского проекта «Дорога в детский сад»
Слайд 9
— конкурс поделок «Мой приятель светофор
По теме: методические разработки, презентации и конспекты
«В стране дорожных знаков».
Сценарий шоу дорожных знаков для детей старшего дошкольного возраста
Сценарий шоу дорожных знаков для детей старшего дошкольного возраста о правилах дорожного движения и безопасного поведения на улицах…
КВН «Уроки Светофорика» в подготовительной логопедической группе Тема «Учимся читать дорожные знаки» КВН «Уроки Светофорика» в подготовительной логопедической группе Тема «Учимся читать дорожные знаки»
Цели: закреплять и углублять знания детей безопасного поведения на улице — где можно и где нельзя играть; правила безопасного перехода через дорогу, правильного поведения детей при катании на ве…
Знаки каждые нужны, знаки каждые важны
Цель: Дать представление о разных видах дорожных знаков — запрещающих и разрешающих;Задачи: Обучить детей различать дорожные знаки — разрешающие от запрещающих;- закрепить знания о правилах дорожного …
«Знаки разные нужны, знаки разные важны»
Мероприятие по безопасности дорожного движения с детьми дошкольного возраста». …
ПРОЕКТ предметно-пространственной среды группы по реализации самостоятельной совместной деятельности детей.Тема: «Дорожные знаки» (Изготовление дорожных знаков для летней площадки)
Проект направлен на разработку ситуацию сотрудничества детей и характеристику самостоятельной совместной деятельности детей (содержание деятельности и задачи работы с детьми) с учетом принципа тематич…
нод«Знаки разные нужны, знаки разные важны»
сценарий развлечения по профилактикеДДТТ в подготовительной группе "…
Сценарий викторины по правилам дорожного движения: «Знаки разные нужны, знаки разные важны!» для детей старшей группы.
Викторина ПДД(старшая группа)Ведущий: Здравствуйте, дорогие участники! Сегодня мы отправимся на викторину! (Музыкально – ритмическая композиция «Если с другом вышел в путь»…
Поделиться:
Разбор проекта редизайна дорожных знаков.
Часть Вторая — Дизайн на vc.ru
Привет от Редизайнера! Это вторая часть разбора проекта Бирмана по редизайну дорожных знаков и мы с проектировщиком Лешей Боевым радуемся, критикуем и предлагаем. Первая часть тут (и там тоже радовались, критиковали и предлагали).
243
просмотров
Начнем сразу с интересного:
Пожалуй согласимся, что многие не понимают (или просто не помнят) разницу между кирпичом и красным кольцом. Но это скорее косяк автошколы, или ученика автошколы. Со знаками все ок. А со знаком Стоп проблем чуть больше. Его и правда не воспринимают всерьез, но только потому, что он не сообщает нам всего того, что должен.
Даже если мы посмотрим просто в Википедию, то увидим такую трактовку: “Движение без остановки запрещено (СТОП, STOP) — дорожный знак приоритета, предписывающий водителям совершить обязательную кратковременную остановку перед стоп-линией, а если её нет — перед краем пересекаемой проезжей части. Водитель должен уступить дорогу транспортным средствам, движущимся по пересекаемой, а при наличии таблички 8. 13, по главной дороге.”
Остановиться и уступить дорогу – вот три главных ключевых слова для этого знака. Поэтому вариант Бирмана с “паузой” не решает задачу. Паузу, скорее всего, тоже не станут воспринимать всерьез:
Да и крест вместо “кирпича” – сомнительное решение. Как минимум, он очень похож на знак “Пересечение равнозначных дорог” и путаницы тут не избежать. А “кирпич”, в свою очередь, вполне хорош и понятен.
Но мы же не просто критикуем, а еще и предлагаем! Поэтому для знака “Стоп” решение такое:
Т.е. если просто вписать “Стоп” в текущий “Уступи дорогу”, то у знака образуется более явный посыл: Остановись и уступи дорогу. Problem solved 😎
Для справки: В 1968 году Венская конвенция о дорожных знаках и сигналах рекомендовала два типа знака STOP, один из них в четырёх вариациях. Первый тип — красный восьмиугольник с надписью STOP белого цвета по центру. Второй тип — красный круг, внутри которого расположен красный правильный треугольник вершиной вниз, внутри надпись STOP. Для второго типа допустимы вариации: фон — белый или жёлтый, надпись STOP — чёрная или тёмно-синяя.
Оба предложенных варианта выбиваются из схемы, но, мы считаем, что это тот случай, когда пора уже что-то менять.
Это лайк! 👍 Особенно за новые симпатичные иконки. Вот бы еще такой же запрещающий знак, но с электросамокатом и развесить их примерно везде 💔
И за то, что с привычными запретами обгона не стали мудрить, тоже лайк👍 Просто освежили иконки стало приятнее.
Тоже полезное изменение, нравится! Минус только в том, что без знания языка теперь не разобраться, можно ли парковаться на этой стороне. Но с другой стороны этот знак не очень критичный. Смартфоны есть примерно у всех, и иностранец сможет с легкостью найти перевод надписи. А для нас, аборигенов, – полезное нововведение. Мы бы предложили только формулировку еще больше очеловечить:
Тут можно только согласиться и листать дальше.
А тут уже интереснее. На первый взгляд кажется, что проблем с такими знаками будет очень много – знаки не видно, под таким запрещающим парковку знаком тут же припаркуется какой-нибудь не шибко внимательный автолюбитель. Но не спешите с выводами.
Основная мысль состоит в том, что перекрашивать в монохром ради эстетики предлагают только часть знаков. И, в целом, с этим можно согласиться, но с оговоркой – какую именно часть можно монохромить, а какую не стоит. Например, знак “Парковка запрещена” легко можно перекрасить в монохром ради эстетики. Даже если водитель не внимателен, ничего критичного не случится. А вот если водитель не заметит знак “Уступи дорогу” – это уже проблема, из-за которой кто-то может погибнуть, поэтому его из монохромной группы следовало бы исключить. Но полного списка того, что именно предлагается перекрашивать, в проекте нет, поэтому перейдем к следующей группе знаков.
За визуальное разделение встречного и попутного направления – лайк 👍А вот убирать разметку точно не стоило. Хотя бы просто потому, что разметка на дороге у нас это удовольствие сезонное. Вряд ли кому-то, кто ездит за рулем, нужен пруф😏, но он у нас есть:
Поэтому предлагаем сохранить 2 типа стрелок и вернуть разметку, пусть хоть на знаке читается:
Самое красивое в проекте оставили напоследок:
Новые иконки и правда офигенные🤩 (особенно бык — прим. ред.)
Про единообразие знаков: необходимо отметить, что препятствием к смене знаков на симпатичные может стать тренд на развитие беспилотников. Тесла с 2020 года читает некоторые знаки. Умное такси от Яндекса, или Alphabet, также читает знаки. А значит, чем больше будет унификации по миру, тем проще будет внедрять новую технологию и меньше проблем со стороны разработки. Все это нужно для того, чтобы не повторилась история с розетками. В мире 14 стандартов бытовых вилок и розеток, так как договориться не смогли. Хотя для электромобилей это уже проблема — у всех разные разъемы для зарядки)
Надеемся, что это будет решаться загрузкой локальной прошивки, или внедрением единой кодировки знаков для беспилотников. В общем, проблемы тут пока нет, но скоро будет.
На этом разбор редизайна знаков от Бирмана и компании мы, пожалуй, завершим. При желании можно копать и дальше, и глубже, но мы согласимся с коллегами – нужно дать благим начинаниям сильный толчок. Чем больше людей узнает об этой инициативе – тем быстрее новые дорожные знаки сократят количество ДТП, пробок и прочих проблем дорожного движения. Надеемся, что этой статьей помогли ускорить появление новых знаков на наших дорогах. Комментируйте на здоровье!
Скажем отдельное спасибо Петру Бабанову за советы и редактуру нашей писанины.
🎈Еще больше всяких редизайнов можно посмотреть тут.
Определение дорожных знаков с помощью машинного обучения
Научные проекты
13 отзывов
Аннотация
Беспилотные автомобили используют машинное обучение, тип искусственного интеллекта, для распознавания дорожных знаков и других вещей, с которыми они сталкиваются на дороге, таких как пешеходы и другие транспортные средства. В этом проекте вы будете фотографировать различные типы дорожных знаков и использовать машинное обучение для определения знаков с помощью бесплатного онлайн-инструмента (программирование не требуется). Затем вы попытаетесь улучшить свою модель машинного обучения, чтобы она могла идентифицировать знаки в различных средах.
Сводка
Информатика
Искусственный интеллект
Самоуправляемые автомобили
Краткосрочная (2-5 дней)
Нет
Доступно
02 Будьте осторожны при съемке дорожные знаки. Не стой на дороге.
Ben Finio, PhD, Science Buddies
Задача
Обучить модель машинного обучения для классификации изображений различных типов дорожных знаков.
Введение
Люди очень хорошо различают объекты визуально. Например, вы можете посмотреть на рисунок 1 и сразу сказать, что один знак — это знак «Поворот вперед», а другой — знак «Стоп». Это очень важный навык при вождении, так как водителям постоянно необходимо узнавать и соблюдать дорожные знаки.
Хотя людям очень легко выполнить эту задачу, очень сложно написать компьютерную программу, которая может это сделать. Традиционные программы следуют строгим предопределенным правилам, написанным человеком. Если бы вы написали подобную программу, вы могли бы написать описание каждого знака, а затем написать правила, предписывающие компьютеру искать определенные характеристики. Например, знак кривой имеет желтую форму, ромбовидную форму и изогнутую черную стрелку посередине. Знак «Стоп» имеет восьмиугольную форму красного цвета и имеет белое слово «стоп» посередине. Вы можете написать компьютерное зрение программа — компьютерная программа, которая анализирует изображения или видео для извлечения информации — для поиска этих характеристик в изображении.
Однако этот подход хорошо работает только в том случае, если у вас есть почти идеальные изображения знаков. Что делать, если вывеска забрызгана грязью, частично покрыта снегом или помечена граффити? Что, если это ночь, поэтому освещение на картинке другое, и знак кажется немного другим цветом?
Или что, если фотография знака сделана под странным или экстремальным углом, как знак на рис. 2? Как человек, вы все еще можете легко определить знак кривой, но компьютерная программа, написанная для поиска более широкой ромбовидной формы, как та, что на рис. 1, может иметь проблемы.
Все эти факторы делают идентификацию дорожных знаков и других объектов сложной задачей для беспилотных автомобилей (также называемых автономными или беспилотными транспортными средствами). Для безопасной работы они должны уметь распознавать знаки и объекты в самых разных условиях и под разными углами.
В конечном счете, невозможно написать набор правил для описания каждого возможного вида знака, с которым может столкнуться водитель. Учитывая это ограничение, беспилотный автомобиль, запрограммированный на следование строгому набору предопределенных правил, может не правильно идентифицировать знак в новой или неожиданной ситуации, что может привести к аварии. Вот где 9Входит 0040 машинное обучение . Машинное обучение — это тип искусственного интеллекта .
При машинном обучении вместо написания программы с заранее определенными правилами программисты используют тип программы, называемый нейронной сетью , которая больше похожа на человеческий мозг. Программе предоставляется огромное количество обучающих данных (см. рис. 3), обычно состоящих из тысяч или даже миллионов изображений — изображений больше, чем люди могут когда-либо сесть за написание правил или описаний. Используя продвинутую математику, нейронная сеть ищет закономерности и разрабатывает собственные правила. Другими словами, он «научится» идентифицировать изображения.
Существует множество различных типов машинного обучения. Обучение с учителем , тип, который вы будете использовать в этом проекте, использует обучающие данные, предварительно классифицированные человеком («руководителем»). Этот тип обучения хорошо работает, когда вы хотите научить машинное обучение модели (программу) классифицировать различные наборы объектов, например дорожные знаки. В этом видео представлен обзор обучения с учителем:
Одна из проблем с моделями машинного обучения заключается в том, что они могут подвергаться смещение из их тренировочных данных. Например, обратите внимание на то, что на всех изображениях на рис. 3 на заднем плане видно чистое голубое небо, немного снега на земле и деревья без листьев. Все эти фотографии были сделаны рядом друг с другом в один и тот же день. Модель машинного обучения, обученная с помощью только этих данных, может научиться ассоциировать эти функции со знаками остановки и иметь проблемы с идентификацией изображений знаков остановки на другом фоне (например, облачный день, городская среда со зданиями или летний день с фоном). зеленые растения). В этом видео представлен краткий обзор предвзятости в моделях машинного обучения:
Вы можете помочь предотвратить возникновение систематической ошибки в модели, предоставив разнообразный набор обучающих данных. В данном случае это будут изображения дорожных знаков в самых разных условиях: в разных местах, в разное время суток и в разных погодных условиях.
В этом проекте вы будете использовать бесплатный онлайн-инструмент Teachable Machine от Google® для обучения модели машинного обучения. Инструмент позволяет загружать наборы обучающих изображений в разные классы (категории), обучать модель, а затем оценивать модель, предоставляя ей новые изображения, чтобы увидеть, правильно ли она их классифицирует. Вы попытаетесь улучшить свою модель, предоставив ей дополнительные обучающие данные, чтобы увидеть, насколько точной вы сможете ее сделать. Вы можете сделать все это, не занимаясь программированием самостоятельно. Те, у кого есть знания в области программирования, могут экспортировать модель, чтобы изучить ее более подробно (дополнительную информацию см. на веб-сайте Teachable Machine).
Термины и понятия
- Компьютерное зрение
- Беспилотный автомобиль
- Автономный
- Самостоятельное вождение
- Машинное обучение
- Искусственный интеллект
- Нейронная сеть
- Данные тренировки
- Обучение под наблюдением
- Модель
- Смещение
- Точность
- Матрица путаницы
Вопросы
- Почему компьютерной программе трудно идентифицировать объекты на изображениях?
- В чем разница между машинным обучением и традиционной компьютерной программой?
- Каковы некоторые преимущества использования программы машинного обучения по сравнению с традиционной программой? А недостатки?
- Что такое смещение в модели машинного обучения и чем оно вызвано?
- Почему важно предоставить широкий выбор обучающих изображений для контролируемой модели машинного обучения?
Библиография
- Google. (н.д.). Часто задаваемые вопросы по обучаемой машине. Проверено 8 марта 2022 г.
- PBS LearningMedia. (2019). Обучение под наблюдением #2 Ускоренный курс: искусственный интеллект [видео]. Проверено 8 марта 2022 г.
- Гугл. (2017, 25 августа). Машинное обучение и человеческие предубеждения [видео]. YouTube. Проверено 8 марта 2022 г.
- Шрофф, Р. (2019, 25 сентября). Объяснение искусственного интеллекта простыми словами. Середина. Проверено 8 марта 2022 г.
.
.
.
Материалы и оборудование
- Смартфон или цифровая камера
- Компьютер с доступом в Интернет
- Лабораторный блокнот
Экспериментальная процедура
- Выберите два разных типа дорожных знаков, которые вы будете использовать для своей модели машинного обучения. Вы должны выбрать знаки, где у вас будет безопасный и легкий доступ к знакам того же типа в разных местах, чтобы делать снимки. Возможно, вам придется исследовать свой район со взрослыми, чтобы найти знаки или использовать онлайн-инструмент, такой как просмотр улиц в Google Maps®.
- Сделайте не менее 10 снимков каждого типа знака. Например, если в пешей доступности есть два знака остановки, вы можете сделать пять снимков каждого знака. Обратите внимание, что Teachable Machine обрезает каждое изображение до квадратного соотношения сторон, поэтому убедитесь, что знак не слишком близко к краям изображения, иначе он будет обрезан.
- Загрузите изображения на свой компьютер, чтобы они были готовы к загрузке в Teachable Machine.
Примечание. С марта 2022 г. вы должны использовать Teachable Machine на компьютере; он не будет работать непосредственно на вашем телефоне.
Примечание. Веб-сайты могут часто меняться. Если следующие инструкции не совсем соответствуют тому, что вы видите, просто следуйте инструкциям на экране, чтобы использовать Teachable Machine.
- Перейдите в Teachable Machine и нажмите Начать .
- Нажмите Проект изображения .
- Нажмите Стандартная модель образа .
- Измените имена двух классов в модели. Например, вы можете назвать их «Знак остановки» и «Знак кривой».
- В разделе Добавить образцы изображений для первого занятия нажмите Загрузить . Выберите и загрузите изображения этого типа знака со своего компьютера. Загрузка может занять некоторое время, если у вас много изображений.
- Повторите шаг 9, чтобы добавить изображения для другого класса.
- Щелкните Модель поезда . Подождите, пока модель закончит обучение. Пока вы ждете, модель «учится» идентифицировать ваши два класса изображений.
- Щелкните стрелку раскрывающегося списка рядом с цифрой 9.0076 Дополнительно и нажмите Под капотом .
- Прочитайте информацию, которая появляется на вашем экране.
Подводя итог, модель использует только 85% ваших изображений для обучения. Это экономит остальные 15% для использования в качестве «тестовых» изображений. Таким образом, модель может проверить себя на изображениях, которые она никогда раньше не видела. Он использует результаты тестовых изображений для определения модели точности , процентной доли изображений, которые были правильно классифицированы для каждого класса (выражается числом от 0 до 1). Он также производит 9Матрица путаницы 0040 , которая определяет, сколько изображений было правильно и неправильно классифицировано для каждого класса. Наведите указатель мыши на «?» значок рядом с каждым элементом, чтобы узнать о нем больше.
Примечание. При каждом повторном обучении модели в качестве «тестов» будут выбираться разные изображения, поэтому результирующая матрица точности и путаницы может отличаться.
- Теперь попробуйте проверить свою модель с дополнительными изображениями. Попробуйте найти изображения, которые отличаются от тех, которые вы использовали для обучения. Вы можете отправиться исследовать свой район, чтобы сфотографировать новые знаки, поискать изображения знаков в Интернете, сделать снимки экрана с помощью такого инструмента, как Google Maps, или даже использовать программу редактирования изображений, чтобы редактировать уже имеющиеся у вас изображения (например, вырезать и вставлять знаки на разные фоны).
- В разделе Предварительный просмотр измените выбор в раскрывающемся меню с Веб-камера на Файл .
- В разделе Preview загрузите одно из ваших новых изображений. Под Output модель назначит вероятность того, что изображение показывает один из двух ваших классов знаков (рисунки 4 и 5).
- Проверьте результат своей модели, используя различные изображения знаков в как можно большем количестве различных сред (разные места, разное время суток, разная погода, разные объекты на переднем или заднем плане изображения и т. д.). Насколько точно модель классифицирует каждое изображение? Есть ли какие-либо изображения, с которыми модель ошибается или с которыми возникают проблемы (например, присваивает вероятности примерно 50/50), даже если они очевидны для вас? Можете ли вы определить особенности изображений, которые, по вашему мнению, вызывают проблемы?
Например, тестовое изображение на рис. 5 имеет прямоугольный знак «стоять и останавливаться нельзя» под знаком выпуклости на переднем плане, но ни на одном из обучающих изображений в этой модели не было дополнительных знаков. На заднем плане также есть более темное дерево, на котором видно очень мало голубого неба по сравнению с тренировочными изображениями.
- Вернитесь и просмотрите свои тренировочные изображения. Основываясь на проблемах, которые вы заметили с вашими тестовыми изображениями, можете ли вы определить какие-либо потенциальные источники систематической ошибки в ваших обучающих изображениях? Например, возможно, вы сделали все свои фотографии вывески одного типа на фоне голубого неба и все фотографии вывески другого типа со зданием на заднем плане. Можете ли вы понять, как вы могли бы добавить больше обучающих изображений, чтобы устранить эту предвзятость?
- Сохраните свою модель, щелкнув меню Teachable Machine в левом верхнем углу, затем нажмите Сохранить на Google Диске .
- На основе результатов анализа, выполненного в шагах 15 и 16, соберите дополнительные тренировочные изображения. Возможно, вам придется исследовать дальше, чтобы найти больше знаков, или попросить взрослого отвезти вас или доехать на общественном транспорте до новых мест, чтобы вы могли найти больше знаков. Вы также можете делать снимки в разное время суток при разном освещении или дождаться изменения погоды и сделать снимки в другой день. Вы также можете использовать программное обеспечение для редактирования изображений, чтобы вырезать и вставлять знаки на разные фоны.
- Создайте новую модель с помощью параметра New Project в верхнем левом меню. Обучите его всем тренировочным изображениям, а не только новым.
Примечание. Хотя вы можете загрузить дополнительные изображения и повторно обучить существующую модель, модель будет перезаписана. Создание нового проекта для каждой итерации вашей модели позволит вам вернуться и сравнить их, а не постоянно перезаписывать одну и ту же модель каждый раз, когда вы ее обучаете.
- Протестируйте новую модель с теми же тестовыми изображениями, которые вы использовали для своей первой модели. (Убедитесь, что вы не включили тестовые изображения в данные обучения). Ваша новая модель лучше справляется с идентификацией изображений, с которыми у первой модели были проблемы? Каков результат для каждого отдельного тестового изображения? Как соотносится матрица точности и путаницы с матрицами вашей предыдущей модели?
- Теперь вы можете повторить процесс тестирования вашей модели, сделав больше обучающих изображений, обучив новую модель и протестировав ее снова. Попробуйте раздвинуть границы своей модели и протестировать ее на более сложных изображениях.
Подумайте обо всех сценариях, с которыми может столкнуться беспилотный автомобиль, когда человеку будет легко идентифицировать знак, но, возможно, это будет сложно для модели машинного обучения — например, знак остановки частично скрыт веткой дерева. Если ваши обучающие данные не включали изображения частично скрытых знаков, может ли он все же идентифицировать их на тестовых изображениях? Как насчет поврежденных или изогнутых знаков?
- Продолжайте улучшать свою модель. Это открытый проект без определенной «конечной точки». Вы можете всегда дать вашей модели больше обучающих данных и продолжать пытаться улучшить ее. Однако на самом деле в какой-то момент вам придется решить, когда ваша модель «достаточно хороша». Сможете ли вы довести свою модель до такой степени, что, по вашему мнению, ее будет безопасно использовать в беспилотном автомобиле?
Если вам нужны дополнительные испытания и способы расширения вашей модели, см. раздел «Вариации».
Задать вопрос эксперту
У вас есть конкретные вопросы о вашем научном проекте? Наша команда ученых-добровольцев может помочь. Наши эксперты не сделают всю работу за вас, но они сделают предложения, дадут рекомендации и помогут устранить неполадки.
Опубликовать вопрос
Варианты
- Вы можете добавить дополнительные классы в свою модель Teachable Machine, нажав Добавить класс . Попробуйте обучить модель, которая может распознавать несколько типов знаков.
- Сделайте снимки с без знаков и включите их в модель как класс. Ваша модель когда-нибудь ошибочно идентифицирует знак на изображении, даже если его нет?
- Попробуйте обучить модель, которая может распознавать другие объекты, которые автономный автомобиль может видеть во время движения, например пешеходов, велосипедистов и другие автомобили, а также красные, желтые или зеленые огни. Не забывайте соблюдать осторожность и соблюдать все правила безопасности дорожного движения и пешеходов (например, не стоять посреди дороги, чтобы фотографировать). Возможно, вам придется проверить, разрешено ли фотографировать других людей на публике в вашем регионе.
- Щелкните раскрывающийся список Advanced под кнопкой Train model , чтобы получить доступ к нескольким различным параметрам, которые влияют на то, как ваша модель обучается. Наведите указатель мыши на «?» значок рядом с каждым параметром, чтобы узнать о нем больше. Попробуйте настроить эти параметры, чтобы увидеть, как они влияют на вашу модель.
Вакансии
Если вам нравится этот проект, вы можете изучить следующие родственные профессии:
- Руководство по проекту научной ярмарки
- Другие подобные идеи
- Идеи проекта по информатике
- Идеи проекта искусственного интеллекта
- Идеи проекта беспилотных автомобилей
- Мои любимые
Лента новостей по этой теме
,
,
Процитировать эту страницу
Общая информация о цитировании представлена здесь. Обязательно проверьте форматирование, включая заглавные буквы, для используемого метода и при необходимости обновите цитату.
MLA Style
Финио, Бен.
«Определяйте дорожные знаки с помощью машинного обучения». Научные друзья ,
13 апр. 2022 г.,
https://www.sciencebuddies.org/science-fair-projects/project-ideas/CompSci_p069/computer-science/machine-learning-road-signs.
По состоянию на 23 апреля 2023 г.
APA Style
Финио, Б.
(2022, 13 апреля).
Определение дорожных знаков с помощью машинного обучения.
Извлекаются из
https://www.sciencebuddies.org/science-fair-projects/project-ideas/CompSci_p069/computer-science/machine-learning-road-signs
Дата последнего редактирования: 13.04.2022
Ознакомьтесь с нашими научными видеороликами
Создание мобильной скульптуры – задание STEM
Создание теневых кукол – задание STEM
Можете ли вы Пить из очень длинной соломинки?
Распознавание дорожных знаков с использованием CNN и Keras в Python
Эта статья была опубликована в рамках блога Data Science Blogathon
Введение
В эпоху искусственного интеллекта люди становятся все более зависимыми от технологий. Благодаря усовершенствованным технологиям транснациональные компании, такие как Google, Tesla, Uber, Ford, Audi, Toyota, Mercedes-Benz и многие другие, работают над автоматизацией транспортных средств. Они пытаются сделать более точные автономные или беспилотные транспортные средства. Вы все, возможно, знаете о беспилотных автомобилях, где само транспортное средство ведет себя как водитель и не нуждается в человеческом руководстве для движения по дороге. Нет ничего плохого в том, чтобы думать об аспектах безопасности — вероятность серьезных аварий из-за машин. Но нет более точных машин, чем люди. Исследователи используют множество алгоритмов для обеспечения 100% безопасности и точности дорожного движения. Одним из таких алгоритмов является распознавание дорожных знаков, о котором мы говорим в этом блоге.
Когда вы едете по дороге, вы видите различные дорожные знаки, такие как светофоры, поворот налево или направо, ограничение скорости, запрет на проезд тяжелых транспортных средств, запрет на въезд, переход детей и т. д., которым необходимо следовать для безопасного вождения. Точно так же автономные транспортные средства также должны интерпретировать эти знаки и принимать решения для достижения точности. Методология распознавания, к какому классу относится дорожный знак, называется классификацией дорожных знаков.
В этом проекте глубокого обучения мы создадим модель для классификации дорожных знаков, доступных на изображении, по многим категориям с использованием сверточной нейронной сети (CNN) и библиотеки Keras.
Изображение 1
Набор данных
Набор данных изображений состоит из более чем 50 000 изображений различных дорожных знаков (ограничения скорости, перекрестков, светофоров и т. д.). В наборе данных для классификации изображений присутствует около 43 различных классов. Классы наборов данных различаются по размеру, например, в одном классе очень мало изображений, а в другом — огромное количество изображений. Загрузка набора данных не занимает много времени и места, так как размер файла составляет около 314,36 МБ. Он содержит две отдельные папки, train и test, где папка train состоит из классов, а каждая категория содержит различные изображения.
Изображение 2
Вы можете скачать набор данных Kaggle для этого проекта по ссылке ниже.
Набор данных дорожных знаков
Предпосылки
Чтобы понять этот проект, вы должны иметь некоторые предварительные знания о библиотеках глубокого обучения, языке Python и CNN. Если вы не знакомы с этими методами, вы можете нажать здесь:
Глубокое обучение — https://www.analyticsvidhya.com/blog/2021/05/a-comprehensive-tutorial-on-deep-learning-part-1/
Python- https://www.analyticsvidhya.com/blog/2016/01/complete-tutorial-learn-data-science-python-scratch-2/
CNN- https://www.analyticsvidhya.com/blog/2018/12/guide-convolutional-neural-network-cnn/
Установите все эти пакеты, чтобы начать проект:
pip установить тензорный поток pip установить tensorflow keras pip установить tensorflow sklearn pip установить tensorflow matplotlib pip установить тензорный поток панд pip установить tensorflow pil
Рабочий процесс
Нам нужно выполнить следующие 4 шага, чтобы построить нашу модель классификации дорожных знаков:
Изучение набора данных
Около 43 подпапок (от 0 до 42) доступны в нашей папке «поезд», и каждая подпапка представляет отдельный класс. У нас есть модуль ОС, который помогает в итерации всех изображений с соответствующими классами и метками. Чтобы открыть содержимое идей в массив, мы используем библиотеку PIL.
импортировать numpy как np
импортировать панд как pd импортировать matplotlib.pyplot как plt импортировать тензорный поток как tf из изображения импорта PIL импорт ОС из sklearn.model_selection импорт train_test_split из keras.utils импортировать в_categorical из keras.models импорт последовательный из keras.layers импортировать Conv2D, MaxPool2D, Dense, Flatten, Dropout данные = [] метки = [] классы = 43 cur_path = os.getcwd() для я в диапазоне (классы): путь = ос. path.join (cur_path, 'поезд', ул (я)) изображения = os.listdir (путь) для изображений: пытаться: изображение = Image.open (путь + '\' + а) изображение = изображение.изменить размер((30,30)) изображение = np.массив (изображение) data.append(изображение) labels.append(i) кроме: print("Ошибка загрузки изображения") данные = np. массив (данные) метки = np.array (метки)
В конце концов, мы должны сохранить каждое изображение с соответствующими метками в виде списков. Массив NumPy необходим для подачи данных в модель, поэтому мы преобразуем этот список в массив. Теперь форма наших данных (39209, 30, 30, 3), где 39209 представляет количество изображений, 30 * 30 представляет размеры изображения в пикселях, а последние 3 представляют значение RGB (доступность цветных данных) .
печать (данные.форма, этикетки.форма) # Разделение набора данных для обучения и тестирования X_t1, X_t2, y_t1, y_t2 = train_test_split (данные, метки, test_size = 0,2, random_state = 42) print(X_t1.shape, X_t2.shape, y_t1.shape, y_t2.shape)
# Преобразование меток в одну горячую кодировку y_t1 = to_categorical(y_t1, 43) y_t2 = to_categorical(y_t2, 43)
Выход
Здание модели CNN
Мы строим модель CNN для классификации изображений по соответствующим категориям.
Архитектура нашей модели:
2 Слой Conv2D (filter=32, kernel_size=(5,5), активация=”relu”)
Слой MaxPool2D ( pool_size=(2,2))
Выпадающий слой (коэффициент = 0,25)
2 Слой Conv2D (фильтр = 64, размер ядра = (3,3), активация = «relu»)
Слой MaxPool2D ( pool_size=(2,2))
Выпадающий слой (коэффициент = 0,25)
Плотный полносвязный слой (256 узлов, активация = «relu»)
Слой отсева (коэффициент = 0,5)
Плотный слой (43 узла, активация = «softmax»)
#Построение модели модель = Последовательный() model.add(Conv2D(фильтры=32, размер_ядра=(5,5), активация='relu', input_shape=X_train.shape[1:])) model. add(Conv2D(фильтры=32, kernel_size=(5,5), активация='relu')) model.add(MaxPool2D(pool_size=(2, 2))) model.add (Отсев (скорость = 0,25)) model.add(Conv2D(фильтры=64, kernel_size=(3, 3), активация='relu')) model.add(Conv2D(фильтры=64, kernel_size=(3, 3), активация='relu')) model.add(MaxPool2D(pool_size=(2, 2))) model.add (Отсев (скорость = 0,25)) model.add(Свести()) model.add (плотный (256, активация = 'relu')) model.add (Отсев (скорость = 0,5)) model.add (плотный (43, активация = 'softmax')) #Сборка модели model.compile(потеря='categorical_crossentropy', оптимизатор='адам', метрики=['точность'])
Обучение и проверка моделей
Для обучения нашей модели мы будем использовать метод model.fit(), который хорошо работает после успешного построения архитектуры модели. С помощью 64 размеров пакетов мы получили точность 95% на обучающих наборах и обрели стабильность после 15 эпох.
eps = 15 anc = model.fit (X_t1, y_t1, batch_size = 32, эпохи = eps, validation_data = (X_t2, y_t2))
Выход
#построение графиков для точности плт. фигур(0) plt.plot(anc.anc['точность'], label='точность обучения') plt.plot(anc.anc['val_accuracy'], label='val точность') plt.title('Точность') plt.xlabel('эпохи') plt.ylabel('точность') plt.legend() plt.show() плт.рисунок(1) plt.plot(history.history['потеря'], label='потеря обучения') plt.plot(history.history['val_loss'], label='val loss') plt.title('Убыток') plt.xlabel('эпохи') plt.ylabel('потеря') plt.legend() plt.show()
Выход
Модельные испытания
В нашем наборе данных доступна папка с именем «test»; внутри этого мы получили основной рабочий файл с разделителями-запятыми под названием «test.csv». Он состоит из двух вещей: путей к изображениям и соответствующих им меток классов. Мы можем использовать библиотеку Python для панд, чтобы извлечь путь к изображению с соответствующими метками. Затем нам нужно изменить размер наших изображений до 30 × 30 пикселей, чтобы предсказать модель и создать пустой массив, заполненный данными изображения. Чтобы понять, как модель предсказывает фактические метки, нам нужно импортировать точность_оценки из sklearn.metrics. Наконец, мы вызываем метод Keras model.save(), чтобы сохранить нашу обученную модель.
# проверка точности на тестовом наборе данных из sklearn.metrics импорта precision_score y_test = pd.read_csv('Test.csv') метки = y_test["ClassId"].значения imgs = y_test["Путь"].значения данные = [] для изображений для изображений: изображение = Image.open(img) изображение = изображение.изменить размер((30,30)) data.append(np.array(изображение)) X_test=np.массив(данные) пред = модель.predict_classes(X_test)
#Точность с тестовыми данными из sklearn.metrics импорта precision_score печать (accuracy_score (метки, предварительно))
Выход
0,9532066508313539
model.save(‘traffic_classifier.h5’)#для сохранения
Полный исходный код
импортировать numpy как np импортировать панд как pd импортировать matplotlib. pyplot как plt # для точности построения импорт cv2 импортировать тензорный поток как tf из изображения импорта PIL импорт ОС from sklearn.model_selection import train_test_split # для разделения данных обучения и тестирования from keras.utils import to_categorical# для преобразования меток, присутствующих в y_train и t_test, в однократное кодирование импорт из keras.models Sequential, load_model из keras.layers импортируйте Conv2D, MaxPool2D, Dense, Flatten, Dropout # для создания CNN данные = [] метки = [] классы = 43 cur_path = os.getcwd() #Извлечение изображений и их меток для i в диапазоне (классы): путь = os.path.join (cur_path, 'поезд', ул (я)) изображения = os.listdir (путь) для и в изображениях: попробуй : изображение = Image.open (путь + '\' + а) изображение = изображение.изменить размер((30,30)) изображение = np.массив (изображение) #sim = Изображение.из массива(изображение) data. append(изображение) labels.append(i) кроме : print("Ошибка загрузки изображения") #Преобразование списков в массивы numpy данные = np.массив (данные) метки = np.array (метки) печать (данные.форма, этикетки.форма) # Разделение набора данных для обучения и тестирования X_t1, X_t2, y_t1, y_t2 = train_test_split (данные, метки, test_size = 0,2, random_state = 42) печать (X_t1.shape, X_t2.shape, y_t1.shape, y_t2.shape) #Конвертация меток в одну горячую кодировку y_t1 = to_categorical(y_t1, 43) y_t2 = to_categorical(y_t2, 43) #Построение модели модель = Последовательный() model.add(Conv2D(фильтры=32, размер_ядра=(5,5), активация='relu', input_shape=X_train.shape[1:])) model.add(Conv2D(фильтры=32, kernel_size=(5,5), активация='relu')) model.add(MaxPool2D(pool_size=(2, 2))) model.add (Отсев (скорость = 0,25)) model.add(Conv2D(фильтры=64, kernel_size=(3, 3), активация='relu')) model.add(Conv2D(фильтры=64, kernel_size=(3, 3), активация='relu')) model. add(MaxPool2D(pool_size=(2, 2))) model.add (Отсев (скорость = 0,25)) model.add(Свести()) model.add (плотный (256, активация = 'relu')) model.add (Отсев (скорость = 0,5)) model.add (плотный (43, активация = 'softmax')) #Сборка модели model.compile (потеря = 'categorical_crossentropy', оптимизатор = 'адам', метрики = ['точность']) EPS = 15 anc = model.fit (X_t1, y_t1, batch_size = 32, эпохи = eps, validation_data = (X_t2, y_t2)) модель.сохранить("моя_модель.h5") #построение графиков для точности плт.фигур(0) plt.plot(anc.anc['точность'], label='точность обучения') plt.plot(anc.anc['val_accuracy'], label='val точность') plt.title('Точность') plt.xlabel('эпохи') plt.ylabel('точность') plt.legend() plt.show() плт.рисунок(1) plt.plot(history.history['потеря'], label='потеря обучения') plt.plot(history.history['val_loss'], label='val loss') plt.title('Убыток') plt.xlabel('эпохи') plt.ylabel('потеря') plt.legend() plt.show() #тестирование точности на тестовом наборе данных из sklearn. metrics импорта precision_score y_test = pd.read_csv('Test.csv') метки = y_test["ClassId"].значения imgs = y_test["Путь"].значения данные = [] для изображений для изображений: изображение = Image.open(img) изображение = изображение.изменить размер((30,30)) data.append(np.array(изображение)) X_test=np.массив(данные) пред = модель.predict_classes(X_test) #Точность с тестовыми данными из sklearn.metrics импорта precision_score печать (accuracy_score (метки, предварительно)) model.save('traffic_classifier.h5')
Графический интерфейс пользователя для классификатора дорожных знаков
Мы будем использовать стандартную библиотеку Python под названием Tkinter для создания графического пользовательского интерфейса (GUI) для нашего распознавателя дорожных знаков. Для этой цели нам нужно создать отдельный файл Python с именем «gui.py». Во-первых, нам нужно загрузить нашу обученную модель «traffic_classifier.h5» с помощью библиотеки Keras с помощью метода глубокого обучения. После этого мы создаем графический интерфейс для загрузки изображений и кнопку классификатора, чтобы определить, к какому классу принадлежит наше изображение. Для этого мы создаем функцию classify(); когда мы нажимаем на кнопку GUI, эта функция вызывается неявно. Чтобы предсказать дорожный знак, нам нужно обеспечить те же разрешения формы, которые мы использовали во время обучения модели. Итак, в методе classify() мы преобразуем изображение в размер формы (1 * 30 * 30 * 3). Функция model.predict_classes(image) используется для предсказания изображения, она возвращает номер класса (0-42) для каждого изображения. Затем мы можем извлечь информацию из словаря, используя этот номер класса.
импортировать tkinter как tk из диалогового окна импорта файла tkinter из импорта tkinter * из PIL импортировать ImageTk, Image импортировать numpy #загружаем обученную модель для классификации знака из keras.models импортировать load_model модель = load_model('traffic_classifier.h5') #словарь для маркировки всех классов дорожных знаков. классы = { 1:'Ограничение скорости (20 км/ч)', 2: «Ограничение скорости (30 км/ч)», 3: «Ограничение скорости (50 км/ч)», 4: «Ограничение скорости (60 км/ч)», 5: «Ограничение скорости (70 км/ч)», 6: «Ограничение скорости (80 км/ч)», 7: «Конец ограничения скорости (80 км/ч)», 8: «Ограничение скорости (100 км/ч)», 9:'Ограничение скорости (120 км/ч)', 10: «Нет прохода», 11: «Запрещено прохождение транспортных средств более 3,5 тонн», 12: «Право проезда на перекрестке», 13: «Главная дорога», 14: «Урожайность», 15: «Стоп», 16: «Нет транспортных средств», 17: «Транспортные средства > 3,5 тонны запрещены», 18: «Въезд запрещен», 19: «Общие предостережения», 20: «Опасный поворот слева», 21: «Опасный поворот направо», 22: «Двойная кривая», 23:'Ухабистая дорога', 24: «Скользкая дорога», 25: "Дорога справа сужается", 26:'Дорожные работы', 27:'Светофоры', 28: «Пешеходы», 29:'Детский переход', 30: «Велосипедный переход», 31: «Остерегайтесь льда/снега», 32: «Пересечение диких животных», 33: «Конечная скорость + пределы прохождения», 34: «Поверните направо», 35: «Впереди поверните налево», 36: «Только вперед», 37: «Иди прямо или направо», 38: «Иди прямо или налево», 39: "Держись правой стороны", 40: «Держитесь левой стороны», 41: «Обязательная кольцевая развязка», 42: «Конец непроходимости», 43: «Запретить проезжающим автомобилям массой более 3,5 тонн» } #инициализировать графический интерфейс топ=tk. Tk() верхняя.геометрия('800x600') top.title('Классификация дорожных знаков') top.configure(фон='#CDCDCD') label=Label(top,background='#CDCDCD', font=('arial',15,'bold')) sign_image = Метка (сверху) по определению классифицировать (путь_к_файлу): глобальный label_packed изображение = изображение.открыть (путь_к_файлу) изображение = изображение.изменить размер((30,30)) изображение = numpy.expand_dims (изображение, ось = 0) изображение = numpy.массив (изображение) pred = model.predict_classes([изображение])[0] знак = классы[пред+1] печать (знак) label.configure (передний план = '# 011638', текст = знак) по умолчанию show_classify_button (file_path): classify_b = Кнопка (верхняя часть, текст = "Классифицировать изображение", команда = лямбда: классифицировать (путь к файлу), padx = 10, pady = 5) classify_b.configure(background='#364156', foreground='white',font=('arial',10,'bold')) classify_b.place (релкс = 0,79, доверять = 0,46) по умолчанию upload_image(): попробуй : file_path=filedialog. askopenfilename() загружено = изображение. открыть (путь_к_файлу) uploaded.thumbnail(((top.winfo_width()/2.25),(top.winfo_height()/2.25))) im=ImageTk.PhotoImage(загружено) sign_image.configure(изображение=im) sign_image.image=им label.configure (текст = '') show_classify_button (путь_к_файлу) кроме : проходить upload=Button(top,text="Загрузить изображение",command=upload_image,padx=10,pady=5) upload.configure(background='#364156', foreground='white',font=('arial',10,'bold')) upload.pack(сторона=НИЗ,пади=50) sign_image.pack (сторона = НИЖНЯЯ, развернуть = Правда ) label.pack (сторона = НИЖНЯЯ, развернуть = True ) заголовок = Метка (верхняя часть, текст = "проверить дорожный знак", pady = 20, шрифт = ('arial', 20, 'жирный')) heading.configure(background='#CDCDCD',foreground='#364156') заголовок.pack() топ.mainloop()
Выход
Заключение
В этой статье мы создали модель CNN для идентификации дорожных знаков и их классификации с точностью 95%.