Оставайки в познатата територия

Винаги е предизвикателство да излезем извън нашите зони на комфорт. Чувстваме се най-удобно, използвайки софтуера, който използваме от дълго време, когато проектираме. Но какво ще стане, ако искаме да разширим възможностите на съществуващия софтуер? Например, добавяне на докосване на AI към нашата удобна линия от 3D моделиране, проектиране или анализ. Това разширяване на възможностите е възможно чрез използване на различни плъгини в един от най-използваните софтуери за архитектурен дизайн, Rhino. Като приставка за Rhino, Grasshopper (GH) позволява на потребителите да използват други приставки за различни цели.

В този блог ще направим общ преглед на добавки, свързани с AI за GH, а именно LunchboxML и PUG. Използването на тези добавки е привлекателно за дизайнерите, защото им позволява да получат справедлив дял от предимствата на AI, без да е необходимо да напускат друга среда за програмиране. Ползите включват прилагане на задачи за регресия, класификация и дори генериране върху данни.

Задвижвани от AI добавки за Grasshopper

Има редица добавки, разработени за GH, които включват компоненти, предназначени за прилагане на машинно обучение (ML) в тръбопровода за визуално програмиране. Всеки от тези добавки има свои собствени характеристики и ограничения. Обърнете внимание, че понякога тези добавки не са съвместими с определени версии на Rhino, така че първо проверете това. Кратък преглед на пет свързани с AI добавки за GH е представен в таблица 1.

  1. LunchBox е добавка за GH за изследване на математически форми, панели, структури и работен процес, пусната за първи път през 2012 г. По-късно през 2017 г. нови компоненти за общи реализации на ML, като регресионен анализ, клъстериране и NN бяха въведени в него, обхващайки набор от компоненти LunchboxML. Тази добавка е разширение с напълно отворен код за GH и Dynamo (аналог на Grasshopper за Revit).
  2. Плъгинът Сова е библиотека, написана за ML-ориентирана обработка на данни и се използва за тензорни визуализации. Съответно, той може да се използва удобно заедно с компонентите на LunchboxML.
  3. Добавката PUG внедрява ML библиотеката Tensorflow.NET в GH, за да предостави някои полезни функционалности като зареждане на предварително обучени невронни мрежи (NN), активиране на интерфейса за програмиране на приложения Keras (API ) в GH, внедряване на генеративни състезателни мрежи (GAN) и справяне с обучението с дълбоко укрепване.
  4. Плъгинът Octopus първоначално е проектиран за многоцелева еволюционна оптимизация. Той също така предоставя някои функции на ML, като поддържащи векторни машини (SVM) и възможност за дефиниране на NN. Приставката не е актуализирана от времето на пускане.
  5. Плъгинът Dodo се състои от инструменти за машинно обучение, оптимизиране и манипулиране на геометрията. По отношение на AI, той включва NN, (стохастичен) градиентен низход и оптимизация на рояк.

Като се има предвид това, PUG звучи като най-включващия ML плъгин за GH. Този плъгин позволява разработването на ръчно изработени NN, като позволява на потребителите да конструират слой по слой поотделно и дори да използват предварително обучения модел. LunchboxML е най-актуалният инструмент за ML, наличен в GH.

Примери за ML инструменти в GH

Сега, след като чухме малко ML жаргон, нека преминем към приложението на тези инструменти в архитектурата. Два примера за класификационни проблеми са представени накратко в този раздел, единият използва LunchboxML, а другият използва PUG, и разбира се и двата в нашата приятелска зона, GH! Ето ни:

Класификация на Naive-Bayes от LunchboxML

В този пример целта е да се класифицира всяка повърхност на дадена фасада на сграда въз основа на нейната прогнозирана производителност (ниска, средна или висока производителност). Excel файл, взет от ProvingGround, представлява обучителния набор за проблем с класификацията. Файлът съдържа данни за програмата на девет дадени сгради (офисни, търговски или жилищни), ориентацията на всяка фасада (север, юг, изток, запад, североизток, северозапад, югоизток или югозапад ) и размера на тяхната повърхност (малък, среден или голям) за всеки идентификатор на фасадата. Чудите се как точно изглежда този набор от данни? ето първите десет реда:

Набор от компоненти LunchboxML са свързани за обучение на класификатор на Naive-Bayes. Когато се обучи, изходът се използва за прогнозиране на ефективността на фасадата (ниска, средна, висока). Но винаги ли сме сигурни в това, което решаваме? Не, предполагам. Същото за класификатора на Naive-Bayes! Ето защо той извежда вероятността за решението (етикет на класа). Например, на Фигура 1 е показано, че вероятността за първата фасадна повърхност, работеща среда е 15,2%. Шансовете са високи (с 84,7% вероятност) тази повърхност да се представи ниско и е малко вероятно (с ~ 0% вероятност) да се представи добре.

И сега интересната визуална част влиза в действие! Когато минимизираме прозореца на GH и погледнем магията, която вече се е случила в прозореца на Rhino. Като присвоим син цвят на фасадни повърхности с ниска производителност, жълт към среден и оранжев към висок, можем да наблюдаваме резултатите от класификатора (Фигура 2).

Конволюционни невронни мрежи за класификация по PUG

В този пример задачата за класифициране на ръкописни числа е показана с помощта на компоненти на слоя Keras на PUG. Интересното е, че можем да си поиграем с данните за изображения с помощта на този инструмент! Конволюционната невронна мрежа (CNN) може да бъде просто (и имам предвид) изградена чрез добавяне на слоеве от компоненти Conv2D, MaxPooling2D, Flatten и Dense. Вече се чувствате изгубени? проверете дефиницията на тези термини в този урок.

Ние сме свободни да добавяме или намаляваме слоевете, за да направим NN по-дълбоко или по-плитко и да сравняваме резултатите от различни мрежи. Резултатът от класификационния компонент е кривата на точността на обучения модел и визуализиран тензор (с помощта на приставката Owl, помните ли?) на прогнозираната ръкописна цифра. Пример за кривата на точността и нейните стойности са показани на фигура 3.

Заключителни бележки

Разгледахме набързо средата на архитектурата и AI в GH! Безспорно е, че плъгините, свързани с AI, ни дават нови възможности като дизайнери. Въпреки това, те имат своите присъщи ограничения, най-вече поради вида на данните, които поддържат (било то числови данни в лист на Excel или изображение). Например LunchboxML може да поддържа само цифрови данни, докато PUG е съвместим и със зареждане на изображения. Така че, нека сме наясно с броя и вида на данните, които ще обработваме в GH.

Друг момент, който трябва да имате предвид, е, че актуализациите за почти всички задвижвани от AI плъгини не са чести. Може би това се дължи на липсата на интерес сред потребителите или текущите ограничения на добавките. Кой знае? Независимо от това, бихте могли да преодолеете това предизвикателство, като изпълните геометричната част на архитектурен проект, задвижван от AI, в GH и изчислителната част в кодираща среда на Python. Досега изглежда, че този подход с двойна среда е доста често срещан. По-конкретно, когато става въпрос за зареждане и обработка на данни за изображения.

В крайна сметка струва ли си да правите всички изчисления в рамките на GH canvas? Много зависи от задачата! GH има своите ограничения. Обработката на пикселно изображение в GH за значително количество данни все още е невъзможна. (Дори не си представяйте зареждане на набора от данни Imagenet!) Освен това, за да използваме предимствата на предварително обучен модел в PUG, трябва да изградим точно същата мрежова архитектура (като говорим за това, нека свикнем с двоичното значение на думата „архитектура“ от сега нататък). Плюс това, преобразуването на въведените изображения в геометрия в името на 3D визуализацията и по-нататъшното манипулиране в Rhino не е лесно (вижте този урок, ако не сте достатъчно убедени). Следователно трябва да се обърне внимание, преди да се обмисли използването на ML плъгини в GH като помощен инструмент за проектиране.

Можем да се съгласим, че AI инвазията във всяка област, включително архитектурата, е доста очевидна. Въпреки ограниченията на компонента GhPython в GH, някои го използват, за да въведат по-нови приложения на AI в платното! Вече видяхме следи от ChatGPT в платното на GH, използвайки компонента GhPython Script. Можем ли да си представим компонент, който прехвърля текст в чертежи или 3D модели в прозореца на Rhino? Защо не? Какво друго? Споделете вашите иновативни идеи в сладкото място на AI в архитектурата в секцията за коментари по-долу.