Перейти к содержанию
    

Распознавание музыкальных инструментов

неделя фпгашного кодера == полста тысяч

На самом деле 1 день.(в MatLab это делается это нажатием 1 кнопки) Остальные 5 на тестбенч и верификацию

с чего вы взяли

У вас распределенные вычисления

матричному вычислителю всё равно что и как считать, как программу напишете, так и будет и не надо ничего наращивать в железе, если производительности хватает

если же не хватает, то и вам придётся

Ключевой момент. В ФПГА не придется. Это для него не задача вообще.

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

Это не военная система, чтобы привлекать плавающую точку..

Кстати, она есть в палитре дизайнера... Только зачем?

Мне и целочисленной математики хватит с головой. Там на выходе вообще можно опуститься до 6 разрядов...

потому что всё заказчики, что бьют себя тапком в грудь, крича, что они такие крутые и богатые, в конце всегда плачут, почему так дорого

и только нормальные ценят старания по оптимизации, понимая, что ещё чуть дешевле и будет уже намного хуже

Есть у меня такой оппонент. Ничего нового... Когда это действительно оправдано разумно прислушаться. Но в этой задаче с многими неизвестными это опасно.

Да и вообще - цель-то быстро пройти вариантов 8 и "босыми ножками" пройти всю математику, чтобы нащупать самый простой путь.

 

Поделиться сообщением


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

У вас распределенные вычисления

не так, они конвейерные, синхронизация там получается автоматически - данные получил - данные обработал - данные отправил

 

 

Это для него не задача вообще.

а может, это задача не для него вообще

 

Это не военная система, чтобы привлекать плавающую точку..

целочисленная тригонометрия ? синусы-косинусы, достигающие значения пи даже не в военное время ?

 

Поделиться сообщением


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

не так, они конвейерные, синхронизация там получается автоматически - данные получил - данные обработал - данные отправил

Заблуждение... Квитанции во времени разные...

 

а может, это задача не для него вообще

Классически для FPGA Умножение с накоплением+ табличные преобразования

 

целочисленная тригонометрия ? синусы-косинусы, достигающие значения пи даже не в военное время ?

Не паясничайте... Тут гиперболический синус и сигмоидная функция как экзотика(таблично решается). Остальное линейно

...Вы хоть бы вникли в природу NN

Поделиться сообщением


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

Заблуждение... Квитанции во времени разные...

с общим клоком на spi ? с чего бы ?

 

Классически для FPGA Умножение с накоплением+ табличные преобразования

не поверите, и на мк легко

 

Не паясничайте... Тут гиперболический синус и сигмоидная функция как экзотика(таблично решается). Остальное линейно

...Вы хоть бы вникли в природу NN

а фильтры вам совсем не надо ?

 

Поделиться сообщением


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

с общим клоком на spi ? с чего бы ?

Разве что подогнать по самому медленному вычислению...

 

не поверите, и на мк легко

Знаю

 

а фильтры вам совсем не надо ?

Уже есть

Поделиться сообщением


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

Разве что подогнать по самому медленному вычислению...

там не будет медленных вычислителей, оне все одинаковые

 

Уже есть

целочисленные ?

 

Поделиться сообщением


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

Заинтересовала тема, но интересно, сколько будет продолжаться это деление шкуры неубитого медведя путем сравнения МК с ПЛИС, если еще нифига не известно как должен работать алгоритм?

Я бы начал с решения задачи в Матлабе - засунуть туда музыку, попытаться выделить инструменты, записать в отдельный файл и посмотреть, что получилось. Можно проверить все, вплоть до нейронных сетей. А когда получится, там практически пофиг для чего генерировать код - хоть для МК, хоть для ПЛИС.

Поделиться сообщением


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

Заинтересовала тема, но интересно, сколько будет продолжаться это деление шкуры неубитого медведя путем сравнения МК с ПЛИС, если еще нифига не известно как должен работать алгоритм?

священная война не закончится никогда :)

 

Я бы начал с решения задачи в Матлабе - засунуть туда музыку, попытаться выделить инструменты, записать в отдельный файл и посмотреть, что получилось. Можно проверить все, вплоть до нейронных сетей. А когда получится, там практически пофиг для чего генерировать код - хоть для МК, хоть для ПЛИС.

Мне кажется, тут нужен совсем иной подход (как и предлагает один из участников спора МК-ПЛИС), нежели просто выделение (фильтрация) чего-либо. Как вот в этой типовой песне отделить вокал от баса или лид-гитары? Да никак. Правильно выше кто-то сказал: нельзя 3D разложить на 2D.

Поделиться сообщением


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

там не будет медленных вычислителей, оне все одинаковые

Время вычисления различных функций соответственно различно. Критичное время вашего конвейера на "рассыпухе из МК" будет определять самая медленная...

целочисленные ?

Естественно..

 

 

Заинтересовала тема, но интересно, сколько будет продолжаться это деление шкуры неубитого медведя путем сравнения МК с ПЛИС, если еще нифига не известно как должен работать алгоритм?

Я бы начал с решения задачи в Матлабе - засунуть туда музыку, попытаться выделить инструменты, записать в отдельный файл и посмотреть, что получилось. Можно проверить все, вплоть до нейронных сетей. А когда получится, там практически пофиг для чего генерировать код - хоть для МК, хоть для ПЛИС.

Абсолютно солидарен. Предельна гибкость(и дешевизна при клонировании) при развитии дает тендем МК-FPGA

 

священная война не закончится никогда :)

Нет никакой войны. Есть различные стили в подходах...

Мне кажется, тут нужен совсем иной подход (как и предлагает один из участников спора МК-ПЛИС), нежели просто выделение (фильтрация) чего-либо. Как вот в этой типовой песне отделить вокал от баса или лид-гитары? Да никак. Правильно выше кто-то сказал: нельзя 3D разложить на 2D.

Тут не требуется абсолютного разделения из смеси... Тут пример порождения различных базисов разложения.

Поделиться сообщением


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

Время вычисления различных функций соответственно различно. Критичное время вашего конвейера на "рассыпухе из МК" будет определять самая медленная...

я предлагаю простой матричный конвейерный двухмерный вычислитель размером 16x16 камней на одной плате с производительностью где-то 25 000 мипсов по цене одного фпга

и военный - трехмерный, из 16 таких плат этажеркой, с производительностью 400 000 мипсов

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

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

различны, например, весовые коэффициенты нейросети

либо модели (сэмплы) инструментов, по которым проводится сравнение

 

Поделиться сообщением


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

я предлагаю простой матричный конвейерный двухмерный вычислитель размером 16x16 камней на одной плате с производительностью где-то 25 000 мипсов по цене одного фпга

и военный - трехмерный, из 16 таких плат этажеркой, с производительностью 400 000 мипсов

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

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

различны, например, весовые коэффициенты нейросети

либо модели (сэмплы) инструментов, по которым проводится сравнение

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

Поделиться сообщением


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

Заманчивый пример

http://www.nallatech.com/?s=Caffe+Integration

https://github.com/BVLC/caffe/

 

Удобно взять сверточную нейронную сеть (CNN) с архитектурой Caffe Integration на http://caffe.berkeleyvision.org/ Ее разработали в лаборатории Berkeley Vision and Learning Center с многими энтузиастами.

При этом нужно отредактировать имеющийся XML-файл настроек, который описывает различные комбинации блоков в слоях нейронной сети. А это 4 слоя:

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

- объединяющий слой, в котором группируются в подрегионы максимумы реакций сверточного слоя.

- слой детекторов,

- объединяющий слой в котором изображение интерпретируется как множество векторов.

Затем XML-файл компилируется с выдачей модели CNN под конкретную ПЛИС.

Другой возможностью быстро освоить CNN в ПЛИС является использование системы ImageNet, которая есть в свободном доступе вместе с тренировочными последовательностями и испытательными стендами.

В ней 5 сверточных слоя и 3 полносвязных слоя, на которые приходится более 99% времени работы сети.

В сверточных слоях стоят те же фильтры признаков размером 11×11, 5×5 или 3×3. Причем базовым фильтром является фильтр (3×3), а большие фильтры получаются повторением вычислений с этим фильтром.

Для реализации CNN в ПЛИС используются блоки DSP с умножителем с аккумулятором 18×18 bits. Новые ПЛИС Altera Arria 10 позволяют сконфигурировать в одном таком блоке 1 умножение с плавающей запятой или 2 умножения 18×19 с фиксированной запятой. А если коэффициенты уменьшить до 10 бит и менее, то такую операцию можно делать на сумматорах. Поэтому есть смысл соптимизировать алгоритм на фиксированную запятую, умножив этим самым производительность в 2-3 раза.

В системе ImageNet предлагается библиотека с интерфейсом OpenCL, в которой собраны модели свертывателей с разрядностью коэффициентов, начиная с 10 bit 3×3.

Так что в ПЛИС Arria10 GX 1150 помещается до ~512 сверточных блока из этой библиотеки.

В примере программирования CNN используется ускоритель на ПЛИС Nallatech 510T, который втыкается в РС или сервер как карта GPU. На ней стоят 2 FPGA Altera Arria 10 GX 1150 и внешня память, обмены с которой происходят со скоростью ~60 GBytes/sec. Типичное энергопотребление - 150W, т.е. более чем вдвое экономнее, чем у хорошего GPGPU.

В данном акселераторе обрабатываются параллельно 16 кадров, над каждым из которых трудятся 64 параллельных свертывателя. Так что выделются одновремено 8 особенностей изображения в 8 точках. Таким образом всего вычисляются 1024 свертки 3×3 параллельно.

В результате, на обработку каждого кадра тратится 9 миллисекунд, а с учетом распараллеливания кадров - в среднем, 748 микросекунд.Т.е. это более чем в 3 раза быстрее,чем на крутом GPU К40.

Поделиться сообщением


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

Заманчивый пример

 

 

Хм, такими темпами вы вечно будете делать свой инструмент. :biggrin:

Чем учить то будете свою сеть?

 

Я вот за это время редактор по созданию обучающих последовательностей для 8-и канального генератора эффектов уже сделал.

 

post-2050-1467377177_thumb.png

Поделиться сообщением


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

...

Я вот за это время редактор по созданию обучающих последовательностей для 8-и канального генератора эффектов уже сделал.

 

Ух ты... Интересно, можно поподробнее о вашей чудо машинке?

Поделиться сообщением


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

On 7/17/2016 at 5:26 PM, Make_Pic said:

 

Ух ты... Интересно, можно поподробнее о вашей чудо машинке?

Подниму тему!

Присоединяюсь! AlexandrY расскажите о вашем генераторе эффектов pls!!!

Поделиться сообщением


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

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