Проекты на PascalABC.NET


#21

Тут, конечно, дело самого разработчика. Кому-как. Я, например, переписал бы всё на Паскаль и работал бы с полным исходником, но это ИМХО.

А Вы посмотрите на GitHub. Она так и называется, ConvNetCS. Там много примеров, в том числе одной из передовых сетей классификации изображений(VGG16). Код закомментирован и весьма понятен. Я разобрался во всех его тонкостях(и смог переписать его на Паскаль и запустить) примерно за месяц. Вы ведь знаете PascalABC.NET, значит сможете без особых усилий понять и C#. Вполне может быть, что Вам удастся разобраться с ним быстрее, чем мне.


#22

Ещё одна моя разработка - приложение для восстановления выцветших фотографий, ColorRestorer.

045_21 => 23 ColorRestorer.zip (169,0 КБ)

Код также доступен на GitHub по следующей ссылке: https://github.com/PABCSoft/ColorRestorer.


#23

Также по теме обработки изображений: автоматическое окрашивание методом тов. Welch. Его работу можно найти по следующей ссылке: http://www.cse.iitd.ernet.in/~pkalra/col783/colorize.pdf. По сути программа перекладывает цвет с одного изображения на другое по специальному статистическому алгоритму. Также должен предупредить, что алгоритм имеет некоторые элементы случайности, поэтому результаты с одними и теми-же входными данными могут быть разными, следовательно, можно несколько раз произвести операцию окрашивания, не меняя входные данные, чтобы добиться наилучшего результата.

+ => Код доступен на странице PABCSoft в GitHub: https://github.com/PABCSoft/ColorShifter. Данная программа уже демонстрировалась на нескольких конференциях и была отмечена жюри.


#24

По обработке изображений у меня есть ещё одна Open Source программа - ImageEngraver. Эта программа использует один из фильтров первого свёрточного слоя нейросети VGG16 для наложения на изображение эффекта гравюры.

=> Разработка доступна в GitHub: https://github.com/PABCSoft/ImageEngraver.


#25

Так в TF есть полный исходник. Но там 1500 контрибуторов и 30000+ коммитов - как собираетесь переписывать такое на Паскаль? Я осознал масштаб проекта, когда он два часа собирался на восьми- ядерном процессоре почти при полной загрузке этих самых ядер и сгенерировал в процессе несколько гигабайт всякого вспомогательного хлама. Тут вопрос, какая часть всего этого нужна. Я посмотрел, вроде ваша программа процентов на 90 состоит из интерфейса и там самого кода сетей всё-таки обозримое количество (неплохо бы кстати разделить всё это на модули).

Так я смотрел. Кстати сравните, один контрибутор - 15 коммитов. Вроде больше информации можно найти в её предшественнике на js. Вроде там достаточно внятно, но похоже, из того что мне надо, чего-то нет. Правда получается, что СonvNetCS это некий способ решить проблемы некой библиотеки на js - то есть опять какая-то деятельность со своей историей, которая в основном адресована тем, кто в ней участвовал, а не более общей аудитории.


#26

Я имел ввиду не переписывать ВСЁ на Паскаль, а только то, что нужно в конкретном проекте. Например, в релизной версии MnistNet нужен слой двумерной свёртки (и только прямой проход через него, как, собственно, и для всех других слоёв), слой линейной ректификации, слой подвыборки(пулинга) и полносвязный слой(с SoftMax). В TF много чего ориентировано на GPU, а это на порядок сложнее, чем CPU(и не всегда удобно в использовании). Кроме того, TF использует кучу сторонних библиотек, пусть и от тех-же разработчиков, следовательно все образовавшиеся зависимости дают такой чудовищный размер файла и время компиляции. P.S. PABCSystem.pas по сравнению с этим монстром-просто игрушка. :slight_smile:

А ведь кто-то(не обязательно именно Вы) говорил мне, что использовать библиотеки лучше, чем писать своими руками с нуля. :smile: А по поводу кода, да, в моих программах, как правило, само тело меньше, чем его графическая оболочка.


#27

На GitHub был залит MnistNet: https://github.com/PABCSoft/MnistNet.


#28

Есть ещё одно приложение: PABCPlayer. Это простой медиаплеер, написанный для демонстрационных целей.

Код доступен на GitHub: https://github.com/PABCSoft/PABCPlayer.


#29

Это ещё одна проблема с попытками писать всё самому. Вот разбирал пример с распознаванием фотографий в Caffe - у них там написано с GPU 70ms, без - 1.42s, и это уже много для не очень большой базы фотографий, а у меня, вообще, получилось 20s, может из-за запуска в VirtualBox, но там всё-таки не настолько же тормозит…

А что, в PascalABC.NET нельзя все эти элементы GUI как-нибудь в отдельный модуль вынести? Или вот ещё GraphWPF теперь есть, там же вроде можно конструктор интерфейса использовать. Хотя в последних версиях его нет в виде отдельной программы и он только вместе с самой студией. Знаете, времена когда просто выбора не было и приходилось интерфейс руками писать вызывают не особо приятные воспоминания, чтобы и сейчас этим “развлекаться”, если есть альтернативы.


#30

ОК. Тут полностью с Вами согласен. Мне и самому после MnistNet нехорошо, особенно после объединения интерфейс+тело в один файл. В след. раз буду разделять на интерфейс и тело.


#31

VirtualBox может очень сильно тормозить, поверьте. А применение GPU возможно только в том случае, если ГП поддерживается библиотекой(да и самим компьютером), а такие карты стОят ох как дорого (свыше 20 килорублей). У меня, например, ноут. И мне не очень хотелось бы для запуска нейросети подключать внешнюю видеокарту и разворачивать виртуалку с Linux(которого я вообще не знаю). Я хотел-бы просто жмакнуть на exe-шку, нажать пару кнопочек в красивом окошке с надписями на русском и получить результат(даже если он займёт 20 сек в таком исполнении вместо 1.75 сек с извращениями). Кроме того, на Паскале можно использовать GPU, библиотек для этого завались. И нативные, и с .NET-оболочкой. Так что… У каждого свои интересы и цели. Если Вы собираетесь исследовать архитектуры сетей и обучать их, то да, писать всё на Паскале будет тяжело, а если использовать уже готовые модели, делать их удобными в использовании для простых пользователей, то почему бы и нет. Думаю, спорить по поводу лучшего подхода в реализации сетей никакого смысла, всё равно в этом вопросе не договоримся, так как цели у нас несколько разные.


Программа сама дописывающая свой код.
#32

Так и у меня нет, а встроенный в Intel Video не особо и ускоряет и опять-таки как-то ещё по другому его надо программировать, OpenCL.Так что, из-за этого лишить других людей возможности использовать мою программу c GPU? Так судя по тем цифрам, без GPU серьёзные задачи только отлаживать можно.


#33

А кто об этом спорит? Я вроде как просто пытался обсудить возможность подключения библиотек, так как опыта с PascalABC. NET у меня с этим нет никакого. А Вы говорите надо самому всё писать. Так естественно, если самому всё писать не надо подключать ничего. Но Вы же что-то подключаете. Я даже не пойму что там происходит. Вот эта модель PABCModel она откуда вообще? Тут опять получается, что такой OpenSource на самом деле хорошо замаскированный Closed :slight_smile: То есть где-то наверное как-то обучали, но расчитана программа на то, чтобы ей просто пользовались не залезая особо внутрь.


#34

Вот полный список того, что подключается в релизных версиях:

  • System.dll
  • System.Drawing.dll
  • System.Windows.Forms.dll
  • System.Threading.dll
  • System.IO.dll
  • System.IO.Compression.dll

В PABCPlayer помимо этого подключается:

  • WindowsFormsIntegration.dll
  • PresentationFramework.dll
  • PresentationCore.dll

По поводу этого списка библиотек можете не волноваться, если у Вас работает PascalABC.NET, то все эти библиотеки у Вас уже есть и нормально работают. :smile:

Происходит где? Если у меня - я объясню, если в библиотеках выше - Microsoft объяснит(нет). :smile:

PABCModel - это простой бинарный файл, содержащий последовательность Single и сжатый посредством System.IO.Compression.GZipStream. Этот формат был разработан мной и не существует отдельно от конкретного приложения. Расширение просто говорит, что в файле хранятся данные нейронной сети, а какой-зависит от того, в какой папке этот файл живёт.

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


#35

Да, спасибо, я там кое что уже сам нашёл по Вашим предыдущим постам. Но мне тут как-бы вроде намекают, мол пора и честь знать, я пошёл.


#36

Вам никто ни о чём не намекает. По поводу подробного описания разработки я говорил совершенно серьёзно. Подобных описаний нет (во всяком случае на русском языке и на паскале). Просто это должно быть кому-то нужно… Если Вам это нужно-сделаю.


#37

Да я не о Вас, тут в параллельном потоке ситуация уже на уровне потенциального бана :slight_smile:


#38

В связи со всякими там образцами как-то вдруг образовался релиз TRAC4 4.27.1 Лежит на GitHub всё там-же. TRAC4 (он же MACAR) в основном и отличался от TRACТ T64 образцами и списками. Кстати, этот вариант был лет 30 назад написан. Новый релиз пришлось делать, так как оказалось что из-за мелкого бага в программе, PascalABC.NET версия выдавала … range check error который таки был отключён всюду кроме ABC, где его и поймали.

Там добавлено три примера: match.trac (вводится match на основе примитива te), def_pets.trac - пример определения образцов с таким match (сама идея примера из Википедии где подобное описано для OCaml). Ну и тест таких образцов в test_pets.trac. То есть, если эти три файла лежат в директории с exe, то после запуска достаточно набрать #(lf,test_pets.trac)’


#39

Реализовал приложение для стилизации изображений под работы известных художников. Это аналог популярных приложений Artisto и Prisma, имеющий одно преимущество: он полностью автономен (работает без подключения к Сети) и работает на операционных системах семейства Windows(xp и выше) независимо от их разрядности. Все исходные коды доступны на GitHub: https://github.com/PABCSoft/ImageStyler.

Оригинал:

Стилизованное изображение:

На данный момент доступно 6 стилей.


#40

Интересно, в среде PABC. NET пока не хватает примеров, что можно сделать, поэтому список готовых проектов был бы весьма кстати, не говоря уже о более человеческом описании хода работы - что? почему? как? и т.д.

Например, как появилась идея? Почему именно PABC ,NET? Почему без поддержки графической карты, ведь даже встроенные модели неплохо поддерживают шейдеры? Что получилось, что нет, что изменилось, а что планируется? и прочее. Хотя для этого больше подходит если не read.me, то блоги.

Удачи)