Отвечу с технической стороны как один из разработчиков этой системы: я согласен с вами, что использовать в качестве разметки чисто синтетические данные и ожидать хорошего качества на настоящих данных было бы странно. На практике так и есть, нужно соблюдать некоторую пропорцию между настоящими данными и искусственными.
Из наших опытов (где мы проверяли качество всегда только на настоящих данных, которых не видела модель) качество модели увеличивается, если в датасет добавить от 30 до 70% искусственных данных (созданных через 3D-моделирование, другие нейронки как Stable Diffusion или за счет операций над изображениями из классического Computer Vision). В данной статье говориться, что благодаря таким подходам мы смогли натренировать сеть хорошего качества, уменьшив количество реальных данных, необходимых для разметки (условно с 100-1000 изображений уменьшить количество реальных данных в лучших случаях до 30-300)
Т.е. движущиеся частицы вы контролировать камерами можете - а состояние сита нет... ???
Находить дефекты на ЧИСТОМ сите без камней не слишком сложная задача, сопоставимая с определением размера частиц, но на работающем сите в процессе работы это практически нереально - количество пыли на грохоте на порядок или два больше, чем в цехе, где происходит анализ ленты, контроллировать состояния сита в этих условиях нереально
Сколько решений вы предложили и рассмотрели, прежде чем остановиться на камерах?
Разумеется мы проводили работы по анализу рынка, способы детекции. Уже не на первом производстве реализовываем анализ грансостава, актуализируем наше понимание способов решения. Часто у заказчиков изначальный запрос на внедрение системы грансостава без вмешательства в работу конвейерных линий. В этом случае остается существенно меньше вариантов решения, которые разделяются на два типа - визуальный контроль и пробоотборники (одна из вариаций, которую вы и описали). И тут важное уточнение - пробоотборники не дают информацию о грансоставе на непрерывной основе, потому что: 1) они работают не постоянно, раз в какое-то время, раз в 5-10-20-60 минут 2) они отбирают материал не со всего конвейера, а с какой-то части
Под словом "непрерывной" я имел ввиду анализ руды посекундно и по всей ширине конвейера.
По визуальному осмотру опять же есть варианты, помимо камер: лазерные сканеры, лидары. Они имеют разную точность, стоимость аппаратной части, стоимость разработки ПО для обработки данных с них. А сейчас еще и доступность для закупки (становится особенно важно).
У обоих подходов (пробоотборника и визуального) есть свои плюсы и минусы, стоимость внедрения, разработки и поддержки. Вы подсвечиваете, что решение с камерами и серверами возможно не очень удачное для пыльного, вибрирующего и опасного для электроники места - это правда, часть проблем, которые мы решали на этих проектах связаны были именно с этими условиями. Но хочу подчернуть, что решение этих проблем не заняло существенную часть проекта, для них мы нашли решения (о части из них мы писали в других статьях)
Грохот с ситом - уже простое решение, которое уже применяется в большинстве мест. Сложность с ним, что контролировать уже нужно не руду, а состояние решетки. И это делается, проводятся осмотры. Проблема в том, чтобы осмотреть грохот нужно остановить линию. Да, тут можно предусмотреть несколько решений в виде переключаемых линий, ремонт/обслуживание одних, пока руда идет по другим и так и делают. Но сам грохот, доп. линии тоже не бесплатны. Особенно когда линия уже есть и дорабатывать ее физически не получится.
Когда удастся решить решение только с помощью набора грохотов - я с вами соглашусь, лучше использовать их. Но что делать в случаях где этого нельзя?
И обсуждение негабарита - это только часть решения, которое мы сделали. Также мы предоставляем информацию о грансоставе, которую на непрерывной основе нельзя узнавать никаким другим образом, кроме визуального мониторинга. А это была одна из задач, поставленных вначале проекта
В большинстве мест так делается, ставится грохот с решеткой для отсеивания негабаритов. Но одна из самых распространенных причин, почему идет негабарит - это что порвалась решетка. Подобные программы как-раз и нужны для раннего детектирования подобных ситуаций
Для сравнения обоих систем нужно было бы установить обе системы на одном конвейере, причем желательно близко друг от друга. Этого мы не делали (и, кажется, имеет мало смысла, так как каждая система решает одну и ту же задачу, для конечного заказчика это умножило бы стоимость установки без явного преимущества). Я согласен, что было бы полезно сравнить работу похожих систем, как минимум, чтобы взаимно откалибровать их. Особенно, учитывая то, что система от Outotec использует принципиально другой датчик
Модель показывает каждый камень как набор пикселей. Соответственно мы знаем размеры камней в пикселях. Также мы откалибровали камеру и выяснили размер пикселей в миллиметрах. После этого мы присваиваем каждому камню его класс крупности (в терминах физического размера)
Мы используем камеры basler, а у них есть возможность работы с внешним сигналом синхронизатора, возможно, покопав в эту сторону удастся реализовать предложенный вами сценарий работы со светом
Вы правы, камни получатся более контрастными. Однако, здесь есть следующие нюасны:
1) как вы можете видеть, на конвейере едут камни и песок, причем камни могут быть на поверхности, а могут быть слегка или полностью утоплены в песке. Подсвечивание сборку сделает камни на поверхности более явными (которые и так хорошо видны алгоритмом), а утопленные камни могут совсем потеряться
2) порода на конвейере лежит небольшой горкой, если подсвечивать её только с одной из сторон. то вторая сторона останется без освещения. В текущем виде порода подсвечивается с разных сторон, для равномерного освещения
3) камни едут очень быстро, выдержка съемки небольшая, в текущем виде потребовалось добавить много осветительных приборов (4 штуки). Я думаю, что при освещении сбоку также потребуется минимум 2-3 источника света (если рассматривать промышленные осветительные приборы в разумном ценовом диапазоне). В этом случае требование к точечному освещению с боку невозможно, будет условно равномерный свет сборку, тени будут меньше
При проектировании мы как-раз рассматривали подобный трюк улучшения качества изображения, но отвергли его по пунктам 1 и 2, но спасибо за вопрос!
1) по этому моменту думали, но решили начать именно с разметки руками реальных данных, так как большинство камней в разной степени присыпаны песком, что требует создавать синтетический датасет определенным образом, стремясь чтобы он был похож на реальные кадры. Скорее всего при доработке опять вернемся к этой идее, спасибо!
2) я согласен как с вами, так и с dvserg, что доработка конвейера таким образом поможет более точно решать описанную задачу. Однако на описанном этапе было жесткое ограничение — никаких изменений текущего технического процесса поставки руды по конвейерам. Соответственно мы могли только снаружи «обвешать» какие-то датчики. Самым простым для монтажа и использования оказались камеры
Google Play — далеко не единственный способ распространения приложений. Я бы вам посоветовал посмотреть в сторону Amazon Appstore, Samsung Galaxy Apps и Yandex.Store (также есть множество альтернатив, если поискать по запросу Google Play alternatives).
Также, учитывая, что Google Play нет на территории Китая, посмотрите в сторону китайских сторов.
На мой взгляд, название не совсем точно отражает суть статьи. Б`ольшая её часть относится не к разработке приложения, а к его прототипированию и советы на самом деле позволяют оптимизировать этот процесс.
Но про разработку сказано лишь то, где брать иконки и где можно поискать готовые компоненты.
Если вы на самом деле хотели рассказать про то, как оптимизировать время на разработку в стиле Google Material Design, то стоило бы осветить плюсы и минусы как раз тех готовых компонент, ссылку на которые Вы дали (и поднять вопрос что лучше использовать — одну библиотеку с несколькими компонентами или отдельные библиотеки для разных компонент, с демонстрацией примеров).
Согласитесь, что приведенный выше код добавляет просто именованные константы, просто объявленные экзотическим способом. Намного лучше читается код, где эти константы объявлены в привычном виде:
fun f() {
val str = "string"
val num = 123
println(str.hashCode() + num.hashCode())
}
Также использование данного именования явно указывает на проблему в коде (тот самый момент, когда говорят, что код «пахнет»).
Спасибо за то, что напомнили, что можно ещё и так использовать with =)
Не совсем согласен, что it бесполезен и является проблемой. Для простых лямбда-функций она позволяет компактно записать ваше намерение. На официальном форуме приведен очень показательный пример, с которым я полностью согласен:
// Намного лучше читается так, почти как английский текст
(1..100).filter{ it > 50 }.map{ it * 2 }
// Хуже читается, появляются доп. символы
(1..100).filter{ x -> x > 50 }.map{ x -> x * 2 }
По поводу описанных в статье проблем — с согласен с Вами, что их можно отнести к проблемам средней (или даже минимальной) важности. И всё-таки я считаю, что инструмент, которым ты пользуешься, должен содержать как можно меньше подобных проблем. К сожалению, в приведенных мной ссылках так или иначе написано, что в языке ничего не будет изменено для соблюдения обратной совместимости, поэтому единственное, что остается — осветить эти проблемы для программистов, чтобы они по возможности старались избегать их.
По поводу вложенности — полностью с Вами согласен.
Если вам так понравился PercentRelativeLayout, то попробуйте новый ConstraintLayout. Чтобы его использовать нужно установить Android Studio 2.2 Preview и сделать импорт библиотеки 'com.android.support.constraint:constraint-layout:1.0.0-alpha5'.
Данный ConstraintLayout позволяет более гибко работать с процентным положением, а также содержит множество дополнительных возможностей (относительная привязка к другим элементам, автопривязка и т.д.). Почитать по этому поводу можно здесь и здесь и посмотреть официальное видео с конференции Google IO 2016
Отвечу с технической стороны как один из разработчиков этой системы: я согласен с вами, что использовать в качестве разметки чисто синтетические данные и ожидать хорошего качества на настоящих данных было бы странно. На практике так и есть, нужно соблюдать некоторую пропорцию между настоящими данными и искусственными.
Из наших опытов (где мы проверяли качество всегда только на настоящих данных, которых не видела модель) качество модели увеличивается, если в датасет добавить от 30 до 70% искусственных данных (созданных через 3D-моделирование, другие нейронки как Stable Diffusion или за счет операций над изображениями из классического Computer Vision). В данной статье говориться, что благодаря таким подходам мы смогли натренировать сеть хорошего качества, уменьшив количество реальных данных, необходимых для разметки (условно с 100-1000 изображений уменьшить количество реальных данных в лучших случаях до 30-300)
Т.е. движущиеся частицы вы контролировать камерами можете - а состояние сита нет... ???
Находить дефекты на ЧИСТОМ сите без камней не слишком сложная задача, сопоставимая с определением размера частиц, но на работающем сите в процессе работы это практически нереально - количество пыли на грохоте на порядок или два больше, чем в цехе, где происходит анализ ленты, контроллировать состояния сита в этих условиях нереально
Сколько решений вы предложили и рассмотрели, прежде чем остановиться на камерах?
Разумеется мы проводили работы по анализу рынка, способы детекции. Уже не на первом производстве реализовываем анализ грансостава, актуализируем наше понимание способов решения. Часто у заказчиков изначальный запрос на внедрение системы грансостава без вмешательства в работу конвейерных линий. В этом случае остается существенно меньше вариантов решения, которые разделяются на два типа - визуальный контроль и пробоотборники (одна из вариаций, которую вы и описали). И тут важное уточнение - пробоотборники не дают информацию о грансоставе на непрерывной основе, потому что:
1) они работают не постоянно, раз в какое-то время, раз в 5-10-20-60 минут
2) они отбирают материал не со всего конвейера, а с какой-то части
Под словом "непрерывной" я имел ввиду анализ руды посекундно и по всей ширине конвейера.
По визуальному осмотру опять же есть варианты, помимо камер: лазерные сканеры, лидары. Они имеют разную точность, стоимость аппаратной части, стоимость разработки ПО для обработки данных с них. А сейчас еще и доступность для закупки (становится особенно важно).
У обоих подходов (пробоотборника и визуального) есть свои плюсы и минусы, стоимость внедрения, разработки и поддержки. Вы подсвечиваете, что решение с камерами и серверами возможно не очень удачное для пыльного, вибрирующего и опасного для электроники места - это правда, часть проблем, которые мы решали на этих проектах связаны были именно с этими условиями. Но хочу подчернуть, что решение этих проблем не заняло существенную часть проекта, для них мы нашли решения (о части из них мы писали в других статьях)
Грохот с ситом - уже простое решение, которое уже применяется в большинстве мест. Сложность с ним, что контролировать уже нужно не руду, а состояние решетки. И это делается, проводятся осмотры. Проблема в том, чтобы осмотреть грохот нужно остановить линию. Да, тут можно предусмотреть несколько решений в виде переключаемых линий, ремонт/обслуживание одних, пока руда идет по другим и так и делают. Но сам грохот, доп. линии тоже не бесплатны. Особенно когда линия уже есть и дорабатывать ее физически не получится.
Когда удастся решить решение только с помощью набора грохотов - я с вами соглашусь, лучше использовать их. Но что делать в случаях где этого нельзя?
И обсуждение негабарита - это только часть решения, которое мы сделали. Также мы предоставляем информацию о грансоставе, которую на непрерывной основе нельзя узнавать никаким другим образом, кроме визуального мониторинга. А это была одна из задач, поставленных вначале проекта
В большинстве мест так делается, ставится грохот с решеткой для отсеивания негабаритов. Но одна из самых распространенных причин, почему идет негабарит - это что порвалась решетка. Подобные программы как-раз и нужны для раннего детектирования подобных ситуаций
Для сравнения обоих систем нужно было бы установить обе системы на одном конвейере, причем желательно близко друг от друга. Этого мы не делали (и, кажется, имеет мало смысла, так как каждая система решает одну и ту же задачу, для конечного заказчика это умножило бы стоимость установки без явного преимущества). Я согласен, что было бы полезно сравнить работу похожих систем, как минимум, чтобы взаимно откалибровать их. Особенно, учитывая то, что система от Outotec использует принципиально другой датчик
Модель показывает каждый камень как набор пикселей. Соответственно мы знаем размеры камней в пикселях. Также мы откалибровали камеру и выяснили размер пикселей в миллиметрах. После этого мы присваиваем каждому камню его класс крупности (в терминах физического размера)
Спасибо за совет, рассмотрим его)
Мы используем камеры basler, а у них есть возможность работы с внешним сигналом синхронизатора, возможно, покопав в эту сторону удастся реализовать предложенный вами сценарий работы со светом
1) как вы можете видеть, на конвейере едут камни и песок, причем камни могут быть на поверхности, а могут быть слегка или полностью утоплены в песке. Подсвечивание сборку сделает камни на поверхности более явными (которые и так хорошо видны алгоритмом), а утопленные камни могут совсем потеряться
2) порода на конвейере лежит небольшой горкой, если подсвечивать её только с одной из сторон. то вторая сторона останется без освещения. В текущем виде порода подсвечивается с разных сторон, для равномерного освещения
3) камни едут очень быстро, выдержка съемки небольшая, в текущем виде потребовалось добавить много осветительных приборов (4 штуки). Я думаю, что при освещении сбоку также потребуется минимум 2-3 источника света (если рассматривать промышленные осветительные приборы в разумном ценовом диапазоне). В этом случае требование к точечному освещению с боку невозможно, будет условно равномерный свет сборку, тени будут меньше
При проектировании мы как-раз рассматривали подобный трюк улучшения качества изображения, но отвергли его по пунктам 1 и 2, но спасибо за вопрос!
2) я согласен как с вами, так и с dvserg, что доработка конвейера таким образом поможет более точно решать описанную задачу. Однако на описанном этапе было жесткое ограничение — никаких изменений текущего технического процесса поставки руды по конвейерам. Соответственно мы могли только снаружи «обвешать» какие-то датчики. Самым простым для монтажа и использования оказались камеры
2) всё равно потребуется видеоаналитика возврата
Также, учитывая, что Google Play нет на территории Китая, посмотрите в сторону китайских сторов.
Но про разработку сказано лишь то, где брать иконки и где можно поискать готовые компоненты.
Если вы на самом деле хотели рассказать про то, как оптимизировать время на разработку в стиле Google Material Design, то стоило бы осветить плюсы и минусы как раз тех готовых компонент, ссылку на которые Вы дали (и поднять вопрос что лучше использовать — одну библиотеку с несколькими компонентами или отдельные библиотеки для разных компонент, с демонстрацией примеров).
Также использование данного именования явно указывает на проблему в коде (тот самый момент, когда говорят, что код «пахнет»).
Спасибо за то, что напомнили, что можно ещё и так использовать with =)
По поводу вложенности — полностью с Вами согласен.
Данный ConstraintLayout позволяет более гибко работать с процентным положением, а также содержит множество дополнительных возможностей (относительная привязка к другим элементам, автопривязка и т.д.). Почитать по этому поводу можно здесь и здесь и посмотреть официальное видео с конференции Google IO 2016