Telegram Group & Telegram Channel
​​Finally, differentiable programming!

Здесь бы картинку прикрепить, где чувак пробирку держит, но к сожалению я уже прикрепил другую снизу... Недавно наткнулся на еще один классный пример компьютерной графики, использующий дифференцируемое программирование.

Дифференцируемое программирование, это такая парадигма, в рамках которой любая программа может быть продифференцирована. И здесь мой дружок пирожок, тебе безусловно потребуется знание calculus. Хотя, конечно в рамках этой парадигмы язык обычно содержит т.н. автоматическое дифференцирование (это когда достаточно бахнуть gradient(of: ...)). Но всегда приятно примерно представлять о чем вообще речь то идет.

А речь пойдет о такой прекрасной численной схеме, позволяющей симулировать упругие тела... ммм... Сама по себе идея Material Point Method не нова, например вот тут есть прекрасная реализация данного метода в 2D на c++. Подобный метод, к слову, использовала студия Дисней в создании своих мультиков. Да и в принципе в компьютерной графике это всё очень часто используется.

Заметили ведь что примеры в ссылке выше слегка всратые? Отметим этот немаловажный пункт, чтобы вернуться к нему немного позже.

Так вот, данный метод позволяет оперировать частицами с некоторыми заданными положениями и скоростями, и отслеживать их эволюцию во времени. Из этих частиц можно создавать различные "материалы", например песок или воду, задав некоторые констреинты (например коэффициенты жесткости или связи между двумя соседними частицами).

Но китайцы в своей статье пошли еще дальше и запилили Moving Least Squares Material Point Method, принцип работы которого вы и можете наблюдать на гифке ниже. Кроме того, они еще и умудрились уместить данную симуляцию в 88 строк кода (спрятав под ковер еще 10к строк в хедере в инклудах).

Здесь внимательный читатель спросит, собсна, а причем тут дифференциальное че то там? Теперь вспомним пример выше. Изначальный метод содержал некоторые неприятные особенности, например тела в таких симуляциях нельзя было разрезать, да и сам метод плохо работал, если поле скоростей частиц содержало разрывы.

А дифференцируемость моделей позволила задействовать процедуры оптимизации вроде градиентного спуска, так что все начало сходиться к нормальному результату уже спустя всего лишь десяток итераций. Китайцы к слову бахнули свой собственный "язык" DiffTaichi (на самом деле считай "бэкенд" на с++ а "фронтэнд" на вашем любимом языке 🐍). А в Swift for TensorFlow, который я использую для работы, так и вообще автодифференцирование встроено по умолчанию.

Данный пример (ниже на гифке) кстати не требует установки всего языка, достаточно скачать их пример и собрать его с помощью g++.

by @hw_code



tg-me.com/hw_code/544
Create:
Last Update:

​​Finally, differentiable programming!

Здесь бы картинку прикрепить, где чувак пробирку держит, но к сожалению я уже прикрепил другую снизу... Недавно наткнулся на еще один классный пример компьютерной графики, использующий дифференцируемое программирование.

Дифференцируемое программирование, это такая парадигма, в рамках которой любая программа может быть продифференцирована. И здесь мой дружок пирожок, тебе безусловно потребуется знание calculus. Хотя, конечно в рамках этой парадигмы язык обычно содержит т.н. автоматическое дифференцирование (это когда достаточно бахнуть gradient(of: ...)). Но всегда приятно примерно представлять о чем вообще речь то идет.

А речь пойдет о такой прекрасной численной схеме, позволяющей симулировать упругие тела... ммм... Сама по себе идея Material Point Method не нова, например вот тут есть прекрасная реализация данного метода в 2D на c++. Подобный метод, к слову, использовала студия Дисней в создании своих мультиков. Да и в принципе в компьютерной графике это всё очень часто используется.

Заметили ведь что примеры в ссылке выше слегка всратые? Отметим этот немаловажный пункт, чтобы вернуться к нему немного позже.

Так вот, данный метод позволяет оперировать частицами с некоторыми заданными положениями и скоростями, и отслеживать их эволюцию во времени. Из этих частиц можно создавать различные "материалы", например песок или воду, задав некоторые констреинты (например коэффициенты жесткости или связи между двумя соседними частицами).

Но китайцы в своей статье пошли еще дальше и запилили Moving Least Squares Material Point Method, принцип работы которого вы и можете наблюдать на гифке ниже. Кроме того, они еще и умудрились уместить данную симуляцию в 88 строк кода (спрятав под ковер еще 10к строк в хедере в инклудах).

Здесь внимательный читатель спросит, собсна, а причем тут дифференциальное че то там? Теперь вспомним пример выше. Изначальный метод содержал некоторые неприятные особенности, например тела в таких симуляциях нельзя было разрезать, да и сам метод плохо работал, если поле скоростей частиц содержало разрывы.

А дифференцируемость моделей позволила задействовать процедуры оптимизации вроде градиентного спуска, так что все начало сходиться к нормальному результату уже спустя всего лишь десяток итераций. Китайцы к слову бахнули свой собственный "язык" DiffTaichi (на самом деле считай "бэкенд" на с++ а "фронтэнд" на вашем любимом языке 🐍). А в Swift for TensorFlow, который я использую для работы, так и вообще автодифференцирование встроено по умолчанию.

Данный пример (ниже на гифке) кстати не требует установки всего языка, достаточно скачать их пример и собрать его с помощью g++.

by @hw_code

BY Hello World


Warning: Undefined variable $i in /var/www/tg-me/post.php on line 283

Share with your friend now:
tg-me.com/hw_code/544

View MORE
Open in Telegram


Hello World Telegram | DID YOU KNOW?

Date: |

How To Find Channels On Telegram?

There are multiple ways you can search for Telegram channels. One of the methods is really logical and you should all know it by now. We’re talking about using Telegram’s native search option. Make sure to download Telegram from the official website or update it to the latest version, using this link. Once you’ve installed Telegram, you can simply open the app and use the search bar. Tap on the magnifier icon and search for a channel that might interest you (e.g. Marvel comics). Even though this is the easiest method for searching Telegram channels, it isn’t the best one. This method is limited because it shows you only a couple of results per search.

To pay the bills, Mr. Durov is issuing investors $1 billion to $1.5 billion of company debt, with the promise of discounted equity if the company eventually goes public, the people briefed on the plans said. He has also announced plans to start selling ads in public Telegram channels as soon as later this year, as well as offering other premium services for businesses and users.

Hello World from us


Telegram Hello World
FROM USA