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

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

Оригинал:

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

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

8 лайков

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

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

Удачи)

2 лайка

Идея появилась тогда, когда у меня на планшете закончился интернет, и я не смог воспользоваться аналогичными приложениями, перечисленными мной ранее. :smile: Ну а если серьёзно, то более-менее понятной и простой реализации подобного приложения я не нашёл. К тому же для Паскаля высоконагруженные системы - большая редкость. К сожалению.

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

У меня были мысли реализовать использование видеокарты, но после более подробного изучения вопроса выяснилось, что нужна не обычная видеокарта, которая есть у любого компьютера, а специальная, очень мощная и дорогая. От NVIDIA. Помимо того, мне хотелось сделать приложение максимально простым. Ведь именно собственноручная запись всех алгоритмов приложения позволяет понять принцип его работы, и читающим его исходный код программистам тоже. По поводу встроенных моделей не понял. Можете чуть подробнее?

То, что получилось, Вы вполне можете оценить по репозиторию на GitHub. При разработке я не использовал ничего, кроме PascalABC.NET и стандартных библиотек Платформы, поэтому Вам не составит труда откомпилировать и запустить приложение. В настоящий момент я работаю над добавлением новых стилей, оптимизацией приложения и реализацией алгоритма Гатиса, который позволит стилизовать под абсолютно любое изображение. В ближайшее время я начну работать над статьёй для Хабрахабр, в которой попытаюсь максимально подробно расписать процесс разработки приложения.

Всё описание на англ. и русс. на гитхабе.

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

2 лайка

Сергей, довольно амбициозный, хотя и интересный проект - ещё на ZX Spectrum в Бейсике сам начинал со взвешенных ходов, используя бэктрекинг для отсеивания тупиковых вариантов и замену игрока (бота) для предсказания возможных ходов оппонента (+x для белых = -x для чёрных), пока не упёрся почти в 40КБ долгоиграющей логики, без возможности свопа на диск и не застрял на переработке агрегатора, заменяя одно GOTO/GOSUB на другое.

Хотя как-то попадался неплохой “среднячок” юношеского разряда вроде на BP7, но там была смешанная оценка рисков (расстановки), что злоупотребляла прописанными шаблонами (записи дебютов, миттель- и эндшпилей нескольких гроссмейстеров) с небольшими вариациями, а основной код был в криптованой библиотеке с враппером, а с IDA и BlackIce тогда не разобрался, увы. Особенно печально, что на самом сложном уровне компьютер зря гнался за тяжёлыми фигурами, часто пропуская пешку в ферзя или даже мат, чего не было на среднем…

Когда узнал, что есть 3d шутер “kkrieger” размером 96КБ, даже не так удивлялся как тому, что с 80-х годов есть шахматы (пусть даже с упрощёнными правилами) до килобайта, после чего немного подостыл, а вот в свете нейросетей выглядит познавательно)

1 лайк

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

У меня полностью противоположный подход: минимум заранее прописанных правил, чтоб у ИИ было макс гибкости. Я ещё хочу на NEAT нейросеть перейти, для этого добавил заголовок в каждый файл-сохранение нейронной сети, типо версия в 2 байта.

Если говорить про шахматы на тостерах - я слышал кто то то ли в 200, то ли в 500 байт уместил шахматы и глупенького бота к нему)))

FastNeuralColor - приложение для автоматического окрашивания изображений с помощью нейронной сети. Результат окрашивания фотографии моего города, сделанной в 1960-х годах.

Хотел бы поблагодарить Сергея(Sun_Serega) за помощь в чтении весов данной нейросети из JSON, а также Jeffery Zhao(https://github.com/zeruniverse) за, собственно, сам JSON и разработку нейросети на Torch. Код опубликован на странице PABCSoft в GitHub: https://github.com/PABCSoft/FastNeuralColor

3 лайка

Разработал небольшое обновление к программе, которое позволило заметно повысить качество окрашивания. Теперь вместо того, что было представлено выше, получаем это:

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

2 лайка

PhotoShop - многофункциональный графический редактор, разработанный и распространяемый фирмой Adobe Systems.

splashscreen

Да-да, это не шутка! Недавно музей компьютерной истории опубликовал исходный код одной из первых версий популярной программы, 1.0.1 версию. Код можно найти тут: http://www.computerhistory.org/atchm/adobe-photoshop-source-code/. Основная его часть написана как раз на Паскале(Турбо, скорее всего), и 15% на ассемблере. Думаю, этот проект вполне можно считать историческим.

3 лайка

PABCNETDownloader.pas
PABCNETDownloader.exe

Это установщик для паскаля.
Основные преимущества над основным:

  • У меня он делает всё за 7 сек (скачивание + установка).
  • Не надо ничего тыкать. Он может только попросить закрыть IDE, если оно будет мешать подменить какие то .dll-ки, а так он работает полностью самостоятельно

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

Ну и, чтоб он работал - надо чтоб был установлен на компьютере архиватор 7Z. И если он установлен не в Program Files - указать в исходниках другой путь.

1 лайк

А откуда такое ограничение?

Ну, можно, конечно, скачивать целый репозиторий паскаля и из него все файлы доставать… Но это будет на много дольше. Я скачиваю стандартный установщик паскаля. А он создан с помощью NSIS. То есть по сути, стандартный установщик - это архив к которому приделали несколько скриптов, которые указывают как куда какие файлы пихать. И вот я этот архив распаковываю (а для этого, конечно, нужен архиватор) и ручками все файлы куда надо сую.

Понятно.

Такое себе. К примеру, в “Программах и компонентах” так установленная программа не появится. В итоге она валяется горкой файлов, о которых ОС ничего не знает. Все-таки NSIS осуществляет именно установку, а не разархивирование.

То есть NSIS добавляет какие то сведения в реестр или что? Как то ж должно быть возможно сделать это по-велосипедному.

Конечно. Как вариант - нагнать Sysinternals’ RegMon и ProcMon на NSIS, посмотреть, что он меняет в реестре и файловой системе, сделать так же. Возможно, внутри операционной системой генерируются какие-нибудь ключи (с солью, не связанной с устанавливаемой программой), или прочее. Точного процесса, как программа становится установленной, я не знаю.

Но…

P.S. Полагаю, процесс документирован, и его можно нагуглить. Вряд ли это что-то секретное.

1 лайк

Больше говорите и бойтесь - никуда не уйдёте)))
А вот я уже нашёл:
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\PascalABCNET

Достаточно запустить этот файлик чтоб всё установилось как это делает NSIS: uninstaller.reg

Но, там можно ещё больше значений сделать:
https://docs.microsoft.com/en-us/windows/desktop/Msi/uninstall-registry-key

Ну, а что касается зачем - в основном мне не нравилось что в установщике надо тыкать 50 кнопок чтоб он что то сделал. Ну и, как я и написал - 7 сек макс это очень даже не плохо)))).

Эта проблема решается ключами тихой установки в NSIS, а не так. Ну, канонично, по крайней мере.

Вся принципиальная разница (тормоза при установке) в скорости между NSIS-скриптом и банальной разархивацией в том, что первый прогоняет все основные сборки через утилиту ngen.exe, т.е. выполняет их локальную AOT-прекомпиляцию в native-код. Есть ли реальная польза от этого – вопрос, может и есть.