В моей кампании по ДнД персонаж игрока превратилась в драконида.
Ну, думаю, попрошу ГПТ нарисовать её для визуализации.
Делаю запрос, такая-то такая-то платиновая драконидица.
Рисует отлично, но с грудями явными.
Делаю новый промт, уточняю, что надо без грудей, потому что драконид не млекопитающее.
Мой запрос фейлится, ибо просить отсутствие сексуализации не проходит фильтр запрета сексуализации.
Пришлось хэндвейвить, что это драконидихе достались черты оригинальной расы.
Такой вот вышел гибрид.
Ну, думаю, попрошу ГПТ нарисовать её для визуализации.
Делаю запрос, такая-то такая-то платиновая драконидица.
Рисует отлично, но с грудями явными.
Делаю новый промт, уточняю, что надо без грудей, потому что драконид не млекопитающее.
Мой запрос фейлится, ибо просить отсутствие сексуализации не проходит фильтр запрета сексуализации.
Пришлось хэндвейвить, что это драконидихе достались черты оригинальной расы.
Такой вот вышел гибрид.
🤣15❤2👍2😁1💊1
Минутка программирования в Dev канале.
Я все еще работаю над сжатием картинок и вот к чему я пришел пока что:
Я хочу не только сжимать в блоки с потерей качества. Но и суперсжимать для экономного хранения и передачи.
Но я не хочу разжимать их на хосте, я хочу разжимать их прямо на GPU.
Нашел подходящий метод, который легко декодировать на GPU - Asymmetric Numeric System.
Но надо еще что-то типа RLE для больших кусков одинаковых.
Еще нашел такую интересную вещь как LZP - кодирование с угадайкой. Угадала - 0, не угадала - 1 и не угаданный литерал. Но, кмк, для картинок вероятность угадать невелика. Если она ниже
Буду пробовать комбинации.
Но скорее всего придется научить шакалить в разные комбы и в хидере прописывать их.
А, ну и да, для эффективного декодирования на GPU картинка делится на суперблоки, которые декодируются отдельно.
Я все еще работаю над сжатием картинок и вот к чему я пришел пока что:
Я хочу не только сжимать в блоки с потерей качества. Но и суперсжимать для экономного хранения и передачи.
Но я не хочу разжимать их на хосте, я хочу разжимать их прямо на GPU.
Нашел подходящий метод, который легко декодировать на GPU - Asymmetric Numeric System.
Но надо еще что-то типа RLE для больших кусков одинаковых.
Еще нашел такую интересную вещь как LZP - кодирование с угадайкой. Угадала - 0, не угадала - 1 и не угаданный литерал. Но, кмк, для картинок вероятность угадать невелика. Если она ниже
1/sizeof(literal) то размер только вырастет.Буду пробовать комбинации.
Но скорее всего придется научить шакалить в разные комбы и в хидере прописывать их.
А, ну и да, для эффективного декодирования на GPU картинка делится на суперблоки, которые декодируются отдельно.
👍11❤1
Кто-то отписался, потому что в лично канале программиста пост про программирование.
Может мне для постов в про ДнД отдельный канал завести?
Голосуйте с 👍 и 👎
Может мне для постов в про ДнД отдельный канал завести?
Голосуйте с 👍 и 👎
👎43👍9😁1
Написал граф-ноды что бы посчитать для разных картинок размеры компрессии с разными преобразованиями
Очевидно LZP хорошо жмет (в 9 раз) картинку в которой те же цвета повторяются.
На сложной картинке (с лебедем) не так мощно сжатие идет.
Что интересно, если трансформировать картинку по одному алгоритму из PNG, то LZP сжатие становится чуть хуже на драконе, а на лебеде заметно лучше.
Теперь надо ANS сжатие добавить.
Очевидно LZP хорошо жмет (в 9 раз) картинку в которой те же цвета повторяются.
На сложной картинке (с лебедем) не так мощно сжатие идет.
Что интересно, если трансформировать картинку по одному алгоритму из PNG, то LZP сжатие становится чуть хуже на драконе, а на лебеде заметно лучше.
Теперь надо ANS сжатие добавить.
👍5🔥1
К слову, что вообще за LZP.
Название расшифровывается как Lempel-Ziv Predictive.
И это самый просто LZ-like, который к тому же еще и быстрый и эффективный на определенных типах данных.
Оригинальный LZ77 кодирует символы в последовательность ссылок на подстроки символов уже встреченных ранее (и не вышедших за окно) и литералы.
Это приводит к тому, что при кодировании приходится искать в окне самую длинную подстроку.
LZP не ищет подстроки. Вместо этого окно, обычно совсем небольшое, по сравнению с LZ77, например 4 символа, хэшируется. Этот хэш используется как ключ в кэш символов.
Если следующий символ равен символу в кэше - кодируем один бит 0. Если нет - кодируем бит 1 и литерал. И переписывает символ в кэше на новый.
Несмотря на простоту кодирования, LZP отлично себя показывает на данных, где за последовательностью символов с большой вероятностью идет такой же, как и в прошлый раз за такой последовательностью.
Но предел сжатия -
Название расшифровывается как Lempel-Ziv Predictive.
И это самый просто LZ-like, который к тому же еще и быстрый и эффективный на определенных типах данных.
Оригинальный LZ77 кодирует символы в последовательность ссылок на подстроки символов уже встреченных ранее (и не вышедших за окно) и литералы.
Это приводит к тому, что при кодировании приходится искать в окне самую длинную подстроку.
LZP не ищет подстроки. Вместо этого окно, обычно совсем небольшое, по сравнению с LZ77, например 4 символа, хэшируется. Этот хэш используется как ключ в кэш символов.
Если следующий символ равен символу в кэше - кодируем один бит 0. Если нет - кодируем бит 1 и литерал. И переписывает символ в кэше на новый.
Несмотря на простоту кодирования, LZP отлично себя показывает на данных, где за последовательностью символов с большой вероятностью идет такой же, как и в прошлый раз за такой последовательностью.
Но предел сжатия -
1 / symbol_bits если всегда будет хит в кэш. Тогда как LZ77 может сжимать в тысячи и миллионы раз, если в данных совсем нет энтропии (все символы одинаковые).👍4⚡2✍2🔥1
Mutex превращает Send в Send+SyncА
Arc мог бы превращать Sync в Sync+Send, но требует Send тоже, только потому что можете вытащить T оттуда в другом потоке через get_mut и try_unwrap.Вот вам и недостаток выразительности языка. Нет конструкции что бы сказать
T: Send для этой функции если Self передавали в другой поток.Если прям очень надо, можно сделать свой
Ark, который будет Send+Sync where T: Sync, но без возможности получить T или &mut T из него👍6
Если вы делаете игру и там будет огненный меч - вот вам референс
This media is not supported in your browser
VIEW IN TELEGRAM
❤🔥18🤩1
Если вы еще гадаете, зачем нужны ИИ, так это для того что бы делать работу с нулевой суммой.
Например ИИ чтоб генерировать 10 страниц текста, где только одна строчка нужна тому, кому понадобилось это прочесть.
И потом ИИ для того что бы найти эту строчку на сайте.
ИИ что бы сгенерировать CV под каждую вакансию по профессии на всём LinkedIn
А у HR-а ИИ для поиска нормальных CV из миллиона присланных.
У нас уже есть ИИ, что бы разговаривать с ним вместо живых людей.
Значит ждем ИИ, что бы он разговаривал с живыми людьми вместо нас.
Например ИИ чтоб генерировать 10 страниц текста, где только одна строчка нужна тому, кому понадобилось это прочесть.
И потом ИИ для того что бы найти эту строчку на сайте.
ИИ что бы сгенерировать CV под каждую вакансию по профессии на всём LinkedIn
А у HR-а ИИ для поиска нормальных CV из миллиона присланных.
У нас уже есть ИИ, что бы разговаривать с ним вместо живых людей.
Значит ждем ИИ, что бы он разговаривал с живыми людьми вместо нас.
😁8🥰5💯4🤡3💊2👍1
Абсолютно точное значение длины чего-то в метрах это рациональное или иррациональное число?