Можно ли программировать при помощи нейросетей?

Мне, как мейнтейнеру значимых OpenSource-проектов, Microsoft предоставил бесплатный доступ к Copilot. Пользуюсь им теперь регулярно, как и ChatGPT, но в зависимость, как многие, не впадаю. Могу сказать вот что. В среднем нейронки хорошо справляются с чем-то типовым — например, запросами вроде «напиши функцию-хелпер на JS, которая принимает на вход массив и делает то-то и то-то». То есть, алгоритмами, которые я бы и сам написал, но иногда тупо лень это делать. Ситуация становится резко сложнее с программами, которые должны работать с определенными интерфейсами, библиотеками, API. Чем экзотичнее библиотека, тем хуже результат. Зачастую ИИ просто не знает, как выглядит та или иная функция API, и пытается угадать. Попадает пальцем в небо очень часто, хотя концептуально его решения могут быть правильными. Бывает, что код достаточно легко подчистить от ляпов, а бывает, что он в принципе не может работать.

Абсолютно ничего не выходит, если в проекте много матана и всяких строгих теорем. В узкоспециализированных научных областях ChatGPT почти не разбирается. Также он плохо помогает в задачах оптимизации, отладки сложных систем, в вопросах архитектуры. Copilot, который вроде бы имеет доступ к полноценному контексту, тоже больше угадывает, чем реально что-то анализирует. А это и есть самое сложное в программировании — выбрать для проекта подходящую архитектуру, грамотно спроектировать модели данных, обезопаситься от побочных эффектов. Не все люди-то это умеют.

Нейронки хорошо справляются с рутинными задачами. Переписать код с одного языка на другой, переименовать множество функций по заданному шаблону, сгенерировать какие-то однотипные конструкции — все, что не требует интеллекта вообще. Но для такого они не особо нужны, это решается несложной автоматикой: текстовыми фильтрами, регулярными выражениями и т.д. Чем меньше в проекте рутины и чем больше инженерного творчества, тем сложнее заменить живого автора. Утверждение, что якобы с нейронками даже непрограммисты могут создавать полноценные продукты — это миф. Как в рассказе Роберта Шекли «Верный вопрос»: Абсолютный Ответчик помогает только тем, кто правильно формулирует вопросы — а для этого, как резюмирует писатель, нужно знать большую часть ответа.

PBR-текстуры при помощи нейросети

Обнаружил интересную ESRGAN-модель Material Map Generator, которая генерирует карты нормалей и шероховатости из фототекстур. Работает довольно быстро и показывает весьма качественные результаты — у меня, например, из картинки с ракушками получилось вот такое:

Канал G пришлось инвертировать для совместимости с Blender, а диффузную текстуру я сделал с помощью утилиты Agisoft De-Lighter — тоже, кстати, очень полезный инструмент.

Для запуска нужен Python с установленными numpy, opencv-python и torch.