Перейти к публикации
[ {"link":"https://topdeck.ru/apps/toptrade/member/32/promo/1", "image":"https://topdeck.ru/apps/toptrade/member/32/promo/1/image"}, {"link":"https://topdeck.ru/apps/toptrade/member/32/promo/2", "image":"https://topdeck.ru/apps/toptrade/member/32/promo/2/image"} ]

Распознаем карты магии (Бесплатно) (Но долго) (А еще иногда неточно)


StrangerOne
 Поделиться

Рекомендованные сообщения

Хорошая работа, прочитал с удовольствием

Ссылка на комментарий
Поделиться на других сайтах

58 минут назад, StrangerOne сказал:

Пока всё скачивалось и трансформировалось занялся механизмом детекции карт на изображении. На самом деле, тут у меня всё не так радужно, как и в других местах моего плана... Распознавание объектов без помощи нейросетей это не сильно сложно, но муторно. Классические алгоритмы требуют, зачастую, тонкой настройки гиперпараметров алгоритма, чтобы работать устойчиво. То на каком фоне объект находится, насколько он засвечен, на какую камеру и в каком разрешении ведется съемка - ОЧЕНЬ сильно влияет на качество распознавания, а, значит, и на качество работы всего решения. Признаться, тут я немного (много) считерил и адаптировал решения под условия, которые есть у меня. На первое время пример, что карты будут находиться на светлом фоне (а значит можно эксплуатировать контраст фона и карты) и сниматься на мой телефон (то есть я имею +- устойчивое качество, под которое я могу заточить гиперпараметры). Про то что делать дальше и как улучшить то что есть, опять же, в конце поста. Алгоритм оптимизации достаточно прост если не вникать в математику. Делаем картинку серой, блюрим, делаем адаптивный трешхолд (если говорить очень грубо и неправильно, как раз этот шаг и позволяет найти эти контрастные объекты) + дилляцию (утолщения контуров). После запускаем по этому делу поиск замкнутых контуров (снова магия какая-то), ищем большие и прямоугольные - скорее всего это будет карта.  Процесс такого преобразования по шагам изобразил на фото. 

Очень крутой прототип, с интересом почитал про детали. Я делал чем-то похожий проект для курса по cv пару лет назад (но сильно проще, без аккуратного пайплайна 🙂 ) и задачу именно выделения карты решал через файнтюн yolo на маленьком датасете размеченных фоток с размеченными картами. Изначально казалось, что проблем с разметкой + тюном будет больше чем "ну, просто подобрать параметры в алгоритме из классического сиви", но по итогу получилось довольно просто и более надёжно. Так что, если будет желание улучшать именно эту часть - рекомендую попробовать такой подход. 

Ссылка на комментарий
Поделиться на других сайтах

Только что, wernon сказал:

Очень крутой прототип, с интересом почитал про детали. Я делал чем-то похожий проект для курса по cv пару лет назад (но сильно проще, без аккуратного пайплайна 🙂 ) и задачу именно выделения карты решал через файнтюн yolo на маленьком датасете размеченных фоток с размеченными картами. Изначально казалось, что проблем с разметкой + тюном будет больше чем "ну, просто подобрать параметры в алгоритме из классического сиви", но по итогу получилось довольно просто и более надёжно. Так что, если будет желание улучшать именно эту часть - рекомендую попробовать такой подход. 

Спасибо) Да, йолка тут первый кандидат на улучшение. В целом и размеченные датасеты на робофлоу уже какие-то есть, но не сильно "богатые"

Ссылка на комментарий
Поделиться на других сайтах

Лень - двигатель прогресса! Делать txt-шную форму продажи карт лень, зато кодить софт(на девелопмент которого уйдёт гораздо больше времени) не лень!
Молодец, продолжай, не теряй мотивации! 👍

Ссылка на комментарий
Поделиться на других сайтах

44 минуты назад, Pollacco сказал:

Лень - двигатель прогресса! Делать txt-шную форму продажи карт лень, зато кодить софт(на девелопмент которого уйдёт гораздо больше времени) не лень!
Молодец, продолжай, не теряй мотивации!

Пффффф!
Always has been

ЗЫ пока искал картинку с мемом, нашел актуальненькое

Скрытый текст

u7bayyendeb51.jpg?auto=webp&s=be01fc36fc

 

  • Нет слов 3
  • Нипанятнаа 1
  • Хаха 2
  • Плюс 2
Ссылка на комментарий
Поделиться на других сайтах

Очень интересная статья. Прочел с большим удовольствием Спасибо.

Можете подробнее рассказать, как данный алгоритм работает с фойловыми картами?

Если есть проблема с языками, может быть, ее удастся решить, если дополнительно смотреть не на всю карту, а только на ее арт, без текста? Правда, выделить внутренний контур (где он есть) сложнее, чем внешний.

И что если на карте отдельно, для верификации результата, смотреть на ее название и манакост? Насколько это технически трудно? Я для распознавания использую Delver Lens. И он примерно в 5% случаев определяет что-то совсем далекое от карты. Возможно, такой контроль мог бы повысить качество определения?

Ссылка на комментарий
Поделиться на других сайтах

Начитался, всплакнул, вспомнив универ, когда я занимался программированием, всплакнул ещще раз, когда вспомнил, что я админ инфобеза и программированием занимаюсь разве что для написания костылей...

Одобряю))

Ссылка на комментарий
Поделиться на других сайтах

9 минут назад, Altimit сказал:

Очень интересная статья. Прочел с большим удовольствием Спасибо.

Можете подробнее рассказать, как данный алгоритм работает с фойловыми картами?

Если есть проблема с языками, может быть, ее удастся решить, если дополнительно смотреть не на всю карту, а только на ее арт, без текста? Правда, выделить внутренний контур (где он есть) сложнее, чем внешний.

И что если на карте отдельно, для верификации результата, смотреть на ее название и манакост? Насколько это технически трудно? Я для распознавания использую Delver Lens. И он примерно в 5% случаев определяет что-то совсем далекое от карты. Возможно, такой контроль мог бы повысить качество определения?

По поводу фойлы - никак) И идей особо нет. Тут на фото в ауках иногда не понять фойла это или нет, пока не посмотришь в угол... Для себя скорее всего буду добавлять "галочку" в интерфейс и метить вручную. Может, если переходить на YOLO-based там можно будет под фойлу выдать доп класс какой-нибудь. 

Ну вот по поводу смотреть на арт без текста, я упоминал об этом, кажется. Боюсь тут подход будет ломаться на всяких промках и лейер картах. Но в целом решение может быть рабочим. Как вариант - не искать внутренний контур, а пытаться конкретный прямоугольник (или прямоугольники - зоны интереса) после детекции вырезать. И на основании этого фрагмента что-то делать. Для текста пробовать взять какой-то OCR алгоритм. Например EasyOCR. Буду тестить) 

 

Ну вот у меня тоже галлюцинаций хватает. Сегодня с утра какую-то пайлорарку из мх2 на русском определял чем угодно, но не тем, чем надо, хотя кроп очень качественный выходил. По-хорошему надо перепроверить эмбеддинги...

Ссылка на комментарий
Поделиться на других сайтах

20 минут назад, Gallexy сказал:

1000 карт сколько будет распознавать? 

Зависит от ситуации. Если каким-то образом 1000 картинок распознать прям разом и подать на обработку вот таким куском (что  в принципе можно сделать в "оффлайне", если написать функцию которая по папке с картинками будет бегать), то у меня получилось  сейчас полторы минуты. С учетом открывания картинки каждый раз по новой, ну, минут 10 на GPU у меня получилось на диванном тесте, прогнав 1000 раз одну и ту же картинку с одной картой на ней. Если целенаправленно писать для такого, то можно быстрее. Потом от 0 до бесконечности сидеть косяки исправлять)  


Но если мы говорим о том, чтобы сидеть перед компом и руками это делать, то тут зависит от расторопности рук х) 

Ну и если нужна скорость в оффлайне можно в теории перегнать всё на С++. 

Ссылка на комментарий
Поделиться на других сайтах

Для того, чтобы увереннее распознавать взякие необычные версии карт типа фойл, бордерлесс и олдбордер версии новых карт, можно добавить OCR подходы ради чтения текста. Уже отмеченную EasyOCR можно использовать как есть, а можно дополнительно обучить ее RNN часть чтобы лучше читались всякие необычные шрифты, волнистые шрифты и проч. Еще как альтернатива можно использовать бесплатную (до определенного предела) Google OCR. Коробочные решения - это же прекрасно. 
 

Что касается векторного подхода с эмбеддингами - топикстартер большой молодец, проделал хорошую работу. Для таких задач этот подход уже является промышленным стандартом. 

Ссылка на комментарий
Поделиться на других сайтах

2 минуты назад, Matvey Dolganov сказал:

Для того, чтобы увереннее распознавать взякие необычные версии карт типа фойл, бордерлесс и олдбордер версии новых карт, можно добавить OCR подходы ради чтения текста. Уже отмеченную EasyOCR можно использовать как есть, а можно дополнительно обучить ее RNN часть чтобы лучше читались всякие необычные шрифты, волнистые шрифты и проч. Еще как альтернатива можно использовать бесплатную (до определенного предела) Google OCR. Коробочные решения - это же прекрасно. 

Да, есть вариант попробовать на досуге. Не думал о том, что можно попробовать OCR модель файтюнить, спасибо) 

Ссылка на комментарий
Поделиться на других сайтах

Мой опыт пробной работы "с этим вашим распознаванием" показал, что возможно быстрее будет распознавать названия карт чем картинки.

Ссылка на комментарий
Поделиться на других сайтах

6 минут назад, ak8 сказал:

Мой опыт пробной работы "с этим вашим распознаванием" показал, что возможно быстрее будет распознавать названия карт чем картинки.

С названия не вытащить версию картв, коих сейчас наплодилось как грязи, но в целом да, согласен, можно и так) 

 

Ссылка на комментарий
Поделиться на других сайтах

Можно полуавтоматический режим предусмотреть. Сет ставить вручную или по подсказке. Вижу я это так - делаются фото альбомных страниц, чтобы карты лежали по определенной сетке. Дальше в режиме полуавтомата а-ля "Finereader" заполняется список карт, на основе множества фотографий карт в альбоме. С количеством надо подумать что делать в этом случае каждой карты в кармашке может быть несколько штук.

Ссылка на комментарий
Поделиться на других сайтах

7 минут назад, StrangerOne сказал:

С названия не вытащить версию картв, коих сейчас наплодилось как грязи, но в целом да, согласен, можно и так) 

 

вот тоже хотел предложить не морочиться с артами, а сразу название и текстбокс читать

 

дополнительный профит -- читать код карты из нижнего блока (потому что они есть даже у совсем наркоманских лееров), чтобы потом вставять в аукционы хД

Ссылка на комментарий
Поделиться на других сайтах

7 минут назад, Seadhna сказал:

вот тоже хотел предложить не морочиться с артами, а сразу название и текстбокс читать

 

дополнительный профит -- читать код карты из нижнего блока (потому что они есть даже у совсем наркоманских лееров), чтобы потом вставять в аукционы хД

Надо будет попробовать. В качество и разрешение картинки всё упрется, такое ощущение. Надо айфон будет для такого покупать, там камера лучше) 

Ссылка на комментарий
Поделиться на других сайтах

А ещё нужен будет OCR для фирексийского) 

Ссылка на комментарий
Поделиться на других сайтах

26.10.2024 в 21:32, StrangerOne сказал:

А ещё нужен будет OCR для фирексийского) 

Опять же будет чем заняться ))

Ссылка на комментарий
Поделиться на других сайтах

Привет, спасибо за статью. Я сам пользуюсь Delver Lens, но ваша работа тоже заинтересовала. Можно мне, пожалуйста, как человеку, который во всей этой it теме не разбирается, объяснить, что нужно сделать, чтобы этим всем воспользоваться? На гитхаб зашел, приложение на телефон скачал, трансляцию запустил, ip понял откуда взять, а вот что еще запустить, куда что вводить и что вообще делать - нет. Заранее спасибо.

PS. Последний абзац увидел после сообщения, подожду, когда разжуют в таком случае)

Изменено пользователем Runemage
Ссылка на комментарий
Поделиться на других сайтах

Щас бы изобретать то, что уже есть и отлично работает. Типичные программисты.

  • Минус 4
  • Рукалицо 3
  • На лечение! 6
  • Плюс 1
Ссылка на комментарий
Поделиться на других сайтах

15 часов назад, Runemage сказал:

Привет, спасибо за статью. Я сам пользуюсь Delver Lens, но ваша работа тоже заинтересовала. Можно мне, пожалуйста, как человеку, который во всей этой it теме не разбирается, объяснить, что нужно сделать, чтобы этим всем воспользоваться? На гитхаб зашел, приложение на телефон скачал, трансляцию запустил, ip понял откуда взять, а вот что еще запустить, куда что вводить и что вообще делать - нет. Заранее спасибо.

PS. Последний абзац увидел после сообщения, подожду, когда разжуют в таком случае)

Спасибо) 

Постараюсь на неделе поправить пару косяков о которых узнал и попробовать написать более подробную инструкцию как это запустить... Но там, скорее всего, так или иначе, придется интерпретатор питона устанавливать на компьютер, то есть "подзахламить" систему себе ради единственного запуска не самого готового "продукта"

Ссылка на комментарий
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...