Skip to content

ivankrylatskoe/RoadSignsDetector

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

26 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

English version below

Road Signs Detector

МобильноС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Android. Распознаёт ΠΈ Π½Π°Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄ΠΎΡ€ΠΎΠΆΠ½Ρ‹Π΅ Π·Π½Π°ΠΊΠΈ.

Π”Π°Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ являСтся дСмонстрационным. Π•Π³ΠΎ Π·Π°Π΄Π°Ρ‡Π° - ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ распознавания Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎΠ³ΠΎ класса Π΄ΠΎΡ€ΠΎΠΆΠ½Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠ² с высокой Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ смартфона.

ДСмонстрация Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния

НаТмитС Π½Π° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π½ΠΈΠΆΠ΅ для просмотра Π²ΠΈΠ΄Π΅ΠΎ.

ДСмонстрация Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния

ЛицСнзия

Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» прСдставляСтся Π½Π° условиях "ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Π°Ρ лицСнзия Creative Commons Π‘ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ авторства-НСкоммСрчСская вСрсии 4.0 ΠœΠ΅ΠΆΠ΄ΡƒΠ½Π°Ρ€ΠΎΠ΄Π½Π°Ρ".

Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ

Π‘ΠΊΠ°Ρ‡Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» RoadSignsDetector.apk ΠΈ установитС Π΅Π³ΠΎ Π½Π° мобильном устройствС.

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹

РаспознаваниС осущСствляСтся Π² нСсколько этапов:

  1. На Π²Ρ…ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ осущСствляСтся поиск Π·Π½Π°ΠΊΠΎΠ². На Π΄Π°Π½Π½ΠΎΠΌ этапС Π·Π½Π°ΠΊΠΈ Π½Π΅ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΡŽΡ‚ΡΡ.
  2. ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡΡ классификация Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠ².
  3. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… Π·Π½Π°ΠΊΠ°Ρ… Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ обрабатываСтся. НапримСр, для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π·Π½Π°ΠΊ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½, Π½ΡƒΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π° послСдниС нСсколько ΠΊΠ°Π΄Ρ€ΠΎΠ² Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ Π΄ΠΎΠ»ΠΈ ΠΊΠ°Π΄Ρ€ΠΎΠ² содСрТало Π΄Π°Π½Π½Ρ‹ΠΉ Π·Π½Π°ΠΊ. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΊΠ°Π΄Ρ€ΠΎΠ², ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹Ρ… Π² расчёт, зависит ΠΎΡ‚ скорости ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠ°Π΄Ρ€ΠΎΠ². ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ значСния настроСчных ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΡƒΠΊΠ°Π·Π°Π½Ρ‹ Π² Ρ„Π°ΠΉΠ»Π΅ Config.java.
  4. ПослС ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ подтвСрТдСния присутствия Π·Π½Π°ΠΊΠ° ΠΎΠ½ добавляСтся Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° произнСсСниС. Если Π² Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ произносится Π΄Ρ€ΡƒΠ³ΠΎΠΉ Π·Π½Π°ΠΊ, Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ Π·Π½Π°ΠΊ Π±ΡƒΠ΄Π΅Ρ‚ произнСсён послС окончания произнСсСния ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π·Π½Π°ΠΊΠΎΠ².

РаспознаваСмыС Π·Π½Π°ΠΊΠΈ

Detected signs

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ:

  • Π—Π½Π°ΠΊΠΈ, ΠΎΠ±Π²Π΅Π΄Ρ‘Π½Π½Ρ‹Π΅ Π² ΠΊΠ°ΠΆΠ΄ΡƒΡŽ Ρ€Π°ΠΌΠΊΡƒ, Ρ€Π°ΡΠΏΠΎΠ·Π½Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ класс.
  • ΠΠ΅ΠΉΡ€ΠΎΡΠ΅Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ распознаёт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс Β«ΠΏΡ€ΠΎΡ‡Π΅Π΅Β», ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰ΠΈΠΉ отсутствиС ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ ΠΈΠ· Π΄Π°Π½Π½Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠ².
  • ВсСго Π½Π΅ΠΉΡ€ΠΎΡΠ΅Ρ‚ΡŒ распознаёт 29 классов.
  • Π—Π½Π°ΠΊ ограничСния скорости 90 ΠΊΠΌ/Ρ‡ Π½Π° Ρ‡Ρ‘Ρ€Π½ΠΎΠΌ Ρ„ΠΎΠ½Π΅ - это Π·Π½Π°ΠΊ ограничСния скорости, ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΡ‹ΠΉ Π½Π° элСктронном Ρ‚Π°Π±Π»ΠΎ. Он Π±Ρ‹Π» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ для экспСримСнта. Π­Ρ‚ΠΎΡ‚ Π·Π½Π°ΠΊ распознаётся ΠΊΠ°ΠΊ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ класс. Но Π½Π° этапС постобработки отобраТаСтся Π² класс ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠ³ΠΎ Π·Π½Π°ΠΊΠ° ограничСния скорости 90 ΠΊΠΌ/Ρ‡. Π‘ΠΌ. Config.java#L36.

ΠŸΠΎΠ΄Π±ΠΎΡ€ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²

НастроСчныС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° содСрТатся Π² Ρ„Π°ΠΉΠ»Π΅ Config.java.

ΠŸΠΎΠ΄Π±ΠΎΡ€ этих ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² осущСствлялся ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ эмулирования Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния с Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ значСниями ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ΠΎ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π”Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π΅ΠΎ составила 1:31:56. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½ΠΎΠ΅ Π²ΠΈΠ΄Π΅ΠΎ содСрТит запись Π΅Π·Π΄Ρ‹ ΠΏΠΎ Π³ΠΎΡ€ΠΎΠ΄Ρƒ Π»Π΅Ρ‚ΠΎΠΌ. ВрСмя суток - прСимущСствСнно свСтлоС, Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ Π·Π° 20-25 ΠΌΠΈΠ½ΡƒΡ‚ Π΄ΠΎ окончания Π²ΠΈΠ΄Π΅ΠΎ Π½Π°Π±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ Π·Π°ΠΊΠ°Ρ‚, послС Ρ‡Π΅Π³ΠΎ Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ‚Π΅ΠΌΠ½Π΅Ρ‚ΡŒ. ΠŸΠΎΠ³ΠΎΠ΄Π½Ρ‹Π΅ условия Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ΠΎ - Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ части Π²ΠΈΠ΄Π΅ΠΎ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠ΅. Π—Π° 20 ΠΌΠΈΠ½ΡƒΡ‚ Π΄ΠΎ окончания начинаСтся нСбольшой доТдь.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½ΠΎΠ΅ Π²ΠΈΠ΄Π΅ΠΎ Π±Ρ‹Π»ΠΎ Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ‡Π΅Π½ΠΎ – Π±Ρ‹Π»ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ присутствия ΠΈ отсутствия опрСдСляСмых Π·Π½Π°ΠΊΠΎΠ². НСкоторыС ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π»Ρ‹ Ρ€Π°Π·ΠΌΠ΅Ρ‡Π°Π»ΠΈΡΡŒ ΠΊΠ°ΠΊ Β«Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹Π΅Β». ΠŸΡ€ΠΈ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠΈ Π·Π½Π°ΠΊΠ° Π² этот ΠΈΠ½Ρ‚Π΅Ρ€Π²Π°Π» это Π½Π΅ ΡΡ‡ΠΈΡ‚Π°Π»ΠΎΡΡŒ Π½ΠΈ ошибкой, Π½ΠΈ отсутствиСм ошибки. НапримСр, ΠΊΠΎΠ³Π΄Π° Π·Π½Π°ΠΊ Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ Π²ΠΈΠ΄Π΅Π½, Π½ΠΎ Π΅Ρ‰Ρ‘ слишком Π΄Π°Π»Π΅ΠΊΠΎ. Или ΠΊΠΎΠ³Π΄Π° Π²ΠΈΠ΄Π½Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π°ΡΡ‚ΡŒ Π·Π½Π°ΠΊΠ°.

ВсСго Π±Ρ‹Π»ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‡Π΅Π½ΠΎ 1149 Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΎΠ±Ρ‰Π΅ΠΉ Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒΡŽ 5 Ρ‡ 30 ΠΌΠΈΠ½. Из Π½ΠΈΡ… ΠΎΠΊΠΎΠ»ΠΎ 12 ΠΌΠΈΠ½ - присутствиС, 4 Ρ‡ 51 ΠΌΠΈΠ½ - отсутствиС, 26 ΠΌΠΈΠ½ - Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΡΡ‚ΡŒ.

Π’ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ распознавания

ΠŸΡ€ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Ρ€Π°Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°Ρ… Π½Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ΠΎ Π±Ρ‹Π»ΠΎ зафиксировано 51 ошибок (Π² срСднСм 0,57 ошибок Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ). Из Π½ΠΈΡ… 42 ошибки (Π² срСднСм 0,47 ошибок Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ) – Π½Π΅ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π·Π½Π°ΠΊΠ° (ошибка Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π°) ΠΈ 9 ошибок (Π² срСднСм 0,10 ошибок Π² ΠΌΠΈΠ½ΡƒΡ‚Ρƒ) – ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Π·Π½Π°ΠΊΠ° (ошибка ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π°).

Π’Ρ‹Π±ΠΎΡ€ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ нСйросСтСй

Для нСйросСти, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰Π΅ΠΉ поиск ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π±Ρ‹Π»Π° Π²Ρ‹Π±Ρ€Π°Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° yolov5 ΠΊΠ°ΠΊ ΠΎΠ΄Π½Π° ΠΈΠ· Π»ΡƒΡ‡ΡˆΠΈΡ… Π½Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚ обучСния ΠΏΠΎ ΡΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ качСство/ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ.

Π‘Ρ€Π΅Π΄ΠΈ ΠΏΠΎΠ΄Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ yolov5s, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½ ΠΏΠΎΠΊΠ°Π·Π°Π» Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΡƒΡŽ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΡƒΡŽ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Для нСйросСти, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰ΠΈΠ΅ΠΉ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π·Π½Π°ΠΊΠΎΠ², Π±Ρ‹Π»Π° ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ Π½Π° Π±Π°Π·Π΅ свёрточных сСтСй. ПослС обучСния Π±Ρ‹Π»Π° Π²Ρ‹Π±Ρ€Π°Π½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Π΄Π°ΡŽΡ‰ΠΈΠΉ ΠΏΠΎΡ‡Ρ‚ΠΈ Ρ€Π΅ΠΊΠΎΡ€Π΄Π½ΡƒΡŽ Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ высокой скорости.

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΡŽ нСйросСтСй

Для обучСния нСйросСтСй Π±Ρ‹Π»ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ Π·Π½Π°ΠΊΠΈ Π½Π° 1576 ΠΊΠ°Π΄Ρ€Π°Ρ… (Π½Π΅ ΠΈΠ· ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π΅ΠΎ).

ΠΠ΅ΠΉΡ€ΠΎΡΠ΅Ρ‚ΡŒ, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰Π°Ρ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π±Ρ‹Π»Π° ΠΎΠ±ΡƒΡ‡Π΅Π½Π° Π½Π° этих Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈΡ‡Ρ‘ΠΌ Π² ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰Π΅ΠΌ датасСтС всС Π·Π½Π°ΠΊΠΈ Π±Ρ‹Π»ΠΈ ΡƒΠΊΠ°Π·Π°Π½Ρ‹ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ класс. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, данная Π½Π΅ΠΉΡ€ΠΎΡΠ΅Ρ‚ΡŒ просто ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΠ²Π°Π΅Ρ‚ Π΄ΠΎΡ€ΠΎΠΆΠ½Ρ‹Π΅ Π·Π½Π°ΠΊΠΈ, Π½Π΅ классифицируя ΠΈΡ….

Для обучСния нСйросСти, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ, исходныС Π΄Π°Π½Π½Ρ‹Π΅ Ρ€Π°Π·Π±ΠΈΠ²Π°Π»ΠΈΡΡŒ Π½Π° ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰ΡƒΡŽ ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½ΡƒΡŽ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ. Π—Π°Ρ‚Π΅ΠΌ для выравнивания Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² классов ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Π°ΡƒΠ³ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ класса Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΈΡΡŒ ΠΏΠΎ 10000 ΠΎΠ±ΡƒΡ‡Π°ΡŽΡ‰ΠΈΡ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈ 1000 ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½Ρ‹Ρ…. ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ искусствСнно создавался класс Β«ΠΏΡ€ΠΎΡ‡Π΅Π΅Β», Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ€Π°Π»ΠΈΡΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹, Π½Π΅ ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ с Ρ€Π°Π·ΠΌΠ΅Ρ‡Π΅Π½Π½Ρ‹ΠΌΠΈ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ Π·Π½Π°ΠΊΠΎΠ². ПослС этого Π±Ρ‹Π»ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅.

ΠšΠ²Π°Π½Ρ‚ΠΎΠ²Π°Π½ΠΈΠ΅

Для ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ скорости инфСрСнса Π½Π° ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройствах нСйросСти Π±Ρ‹Π»ΠΈ ΠΊΠ²Π°Π½Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹.

Для нСйросСти, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ, Π±Ρ‹Π»ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ Π΄ΠΎΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ Quantization Aware Training.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ обучСния нСйросСтСй

Object detection

  • Precision: 0.968
  • Recall: 0.983
  • mAP@.5: 0.993
  • mAP@.5:.95: 0.904

Π‘ΠΌ. Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

Classification

  • Accuracy Π΄ΠΎ ΠΊΠ²Π°Π½Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ: 0.99831
  • Accuracy послС ΠΊΠ²Π°Π½Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ: 0.99893

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅Π΅ Ρ€Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

Для увСличСния количСства ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Ρ… Π·Π½Π°ΠΊΠΎΠ² Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΡƒ Π½ΠΎΠ²Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠ±ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΉΡ€ΠΎΠ½Π½Ρ‹Π΅ сСти.

Для увСличСния точности распознавания Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ большС Π΄ΠΎΡ€ΠΎΠΆΠ½Ρ‹Ρ… Π·Π½Π°ΠΊΠΎΠ² ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠ±ΡƒΡ‡ΠΈΡ‚ΡŒ Π½Π΅ΠΉΡ€ΠΎΠ½Π½Ρ‹Π΅ сСти. Π’Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΉ эффСкт даст ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ нСйросСти Π½Π° большСм количСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ², Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… тСкущая вСрсия Π΄Π΅Π»Π°Π΅Ρ‚ ошибки.

ВСсты

На Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° Redmi Note 9 (MIUI Global 12.0.7).

Как ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ

  1. Π‘ΠΊΠ°Ρ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚
  2. ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π² Android Studio
  3. Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ настройки Π² Ρ„Π°ΠΉΠ»Π°Ρ… gradle.properties, local.properties
  4. Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ

Для ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½ΠΎΡΡ‚ΠΈ компиляции Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ содСрТит Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΡŽ с исходными ΠΊΠΎΠ΄Π°ΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ openCV.

ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ Π°Π²Ρ‚ΠΎΡ€Π°

По всСм вопросам ΠΈ прСдлоТСниям ΠΎΠ±Ρ€Π°Ρ‰Π°ΠΉΡ‚Π΅ΡΡŒ Π½Π° email:

ivankrylatskoe@gmail.com


Road Signs Detector (English version)

Road Signs Detector is a mobile application for Android. It recognizes and names road signs.

This application is demonstrational. Its purpose is to demonstrate the possibility of real-time recognition of a wide class of road signs with high accuracy using a conventional smartphone.

Demonstration of the application

Click on the image below to view the video.

ДСмонстрация Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния

License

This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.

How to launch

Download the file RoadSignsDetector.apk and install it on your mobile device.

Principle of work

Recognition is carried out in several stages:

  1. Road signs are searched for in the input image. At this stage, the signs are not classified.
  2. The found road signs are classified.
  3. Information about the found signs is additionally processed. For example, in order to finally assume that a sign has been detected, it is necessary that over the last few frames at least a certain proportion of frames contain this sign. The number of frames taken into account depends on the frame processing speed. The specific values of the configuration parameters are specified in the file Config.java.
  4. After the final confirmation of presence of a sign, it is added to the queue for pronouncing. If another sign is being pronounced at the moment, then this sign will be pronounced after the end of pronouncing of the previous signs added to the queue.

Recognizable signs

Detected signs

Comments:

  • The signs placed in each frame are recognized as one class.
  • The neural network also recognizes a separate class "other", which means the absence of any of these signs.
  • In total, the neural network recognizes 29 classes.
  • A 90 km/h speed limit sign on a black background is a speed limit sign displayed on an electronic board. It was added for an experiment. This sign is recognized as a separate class. But at the post-processing stage, it is mapped to the class of a usual 90 km/h speed limit sign. See Config.java#L36.

Configuration parameters optimization

The configuration parameters of the algorithm are contained in the file Config.java.

The selection of these parameters was carried out by emulating the operation of the application with different configuration parameters values on the validation video and analyzing the results of its operation.

The duration of the validation video is 1:31:56. The validation video contains a recording of driving around the city in summer. The time of day is mostly light, but about 20-25 minutes before the end of the video, sunset is observed, after which it begins to darken a little. The weather conditions on the validation video are good in the first part of the video. A little rain starts 20 minutes before the end.

The validation video was manually marked up: the intervals of presence and absence of the recognized signs were determined. Some intervals were marked as "undefined". When a sign was detected in this interval, it was not considered either an error or the absence of an error. For example, when a sign seems to be visible, but is still too far away. Or when only a part of a sign is visible.

In total, 1,149 video fragments with a total duration of 5 hours and 30 minutes were marked up. Of them, about 12 minutes - presence, 4 hours 51 minutes - absence, 26 minutes - undefined.

Recognition accuracy

The application made 51 errors (on average 0.57 errors per minute) on the validation video with the optimized configuration parameters. Of them, 42 errors (on average 0.47 errors per minute) – non-detection of a present sign (type II error, false negative) and 9 errors (on average 0.10 errors per minute) – detection of a non-existent sign (type I error, false positive).

Choosing the architecture of neural networks

For object detection neural network, yolov5 architecture has been chosen as one of the best at the time of training in terms of quality/speed ratio.

The yolov5s variant has been chosen among the sub-variants, because it showed the best accuracy and at the same time the best speed of inference.

Several different architectures based on convolutional networks have been tested for the classification neural network. After the training, a variant that gives almost the best accuracy at high speed has been chosen.

Approach to training neural networks

To train neural networks, road signs were marked on 1,576 frames (not from the validation video).

The object detection neural network was trained on this data. In the training dataset, all signs were mapped to one class. Thus, this neural network only detects road signs without classifying them.

To train a neural network that performs classification, the initial data was divided into training and verification subsets. Then, using augmentation 10,000 training images and 1000 validation images were generated for each class to align the class sizes. Separately, the "other" class was created by taking various image fragments that did not intersect with the marked fragments of signs. After that, the training was carried out.

Quantization

To optimize the speed of inference on the mobile devices, neural networks were quantized.

For the classification neural network, additional training has been also performed using the Quantization Aware Training technique.

Neural network training results

Object detection

  • Precision: 0.968
  • Recall: 0.983
  • mAP@.5: 0.993
  • mAP@.5:.95: 0.904

See also appendix.

Classification

  • Accuracy before quantization: 0.99831
  • Accuracy after quantization: 0.99893

Further development of the project

To increase the number of recognized road signs, it is necessary to mark new road signs and retrain the neural networks.

To increase the recognition accuracy, it is necessary to mark more already recognized road signs and retrain the neural networks. Also, training neural networks on a larger number of examples on which the current version makes errors will have a good effect.

Tests

At the moment, the application has been tested only on Redmi Note 9 (MIUI Global 12.0.7).

How to compile

  1. Download the project
  2. Open a project in Android Studio
  3. Change settings in gradle.properties, local.properties files
  4. Compile

For compilation stability, this repository contains a directory with OpenCV library source codes.

Contacts

For all questions and suggestions, please contact us by email:

ivankrylatskoe@gmail.com


Appendix / ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Π₯арактСристики нСйросСти, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Object detection neural network characteristics.

F1 curve

P curve

P curve

P curve