Ostatnimi czasami wbijałem się w temat generowania grafik przy pomocy AI, rezultatem tego procesu jest strona, która wykorzystuje Stable Diffusion Network do generowania grafik.

Stable Diffusion Network to open sourcowa sieć 2023-04-12 20:28:42 Wednesdayneuronowa wytrenowana w ten sposób aby mogła służyć do generowania grafik, jej modele można znaleść na stronie huggingface. W tym artykule omówię program, który wykorzystuje tę technologię, aby poznać jak działa SDN, przedstawię jego architekturę i funkcje.

Architektura:

Architektura aplikacji internetowej jest typowo rozproszona i składa się z:

Frontend w React i AntD

Frontend został stworzony w oparciu o popularną bibliotekę dla TypeScript oraz React, która pozwala na tworzenie efektywnych i responsywnych interfejsów użytkownika. W celu ułatwienia pracy z elementami UI, program korzysta także z AntD, czyli zestawu narzędzi projektowych dla React.

Middleware w PHP

Middleware to warstwa pośrednia, która odpowiada za komunikację między frontendem a backendem. W tym przypadku została napisana w języku PHP, który jest powszechnie stosowany w aplikacjach internetowych. Język ten został wybrany z tego powodu, że na hostingach współdzielonych nie ma problemu z użyciem tego języka.

Backend w Pythonie z wykorzystaniem bibliotek dla sieci neuronowych – TensorFlow i PyTorch

Kluczową częścią programu jest backend, który jest odpowiedzialny za przetwarzanie danych i generowanie grafik. W tym celu wykorzystuje język Python oraz popularne biblioteki do uczenia maszynowego, takie jak TensorFlow i PyTorch.

Generowanie grafik z użyciem Stable Diffusion Network:

Program posiada 18 zintegrowanych modeli, które są wykorzystywane w procesie generowania grafik. Umożliwia to użytkownikom wybór nie tylko przy pomocy promptu, ale również wybór modelu, które są różnorodnie wytrenowane. Dane modeli zajmują około 150GB na dysku.
Ciekawostka – modele oparte na TensorFlow są około 2,5-3 razy wolniejsze od modeli opartych na PyTorch.

Tworzenie grafik odbywa się przy pomocy tzw. promptów, czyli krótkich opisów lub słów kluczowych, które są podawane przez użytkownika i opisują one scenę która ma się pojawić na wygenerowanej grafice. Dodatkowo, można również użyć negatywnych słów, które mają na celu wyeliminowanie niepożądanych elementów z generowanego obrazu.

Program pozwala na regenerowanie grafik na podstawie tych samych parametrów, co umożliwia porównanie różnych wersji obrazów, gdzie następuje zmiana jednego parametru, a także łatwiejsze wprowadzenie ewentualnych zmian i poprawek.

Przemyślenia:

Trochę zabawy z kodowaniem i wykorzystaniem AI i mam pewne przemyślenia dotyczące sztucznych sieci neurnowych generujących grafiki oraz oprogramowanie wykorzystujący tę technologię. To co powstaje dzisiaj będą mieć szerokie zastosowanie w różnych dziedzinach, takich jak projektowanie graficzne, marketing, animacja czy produkcja filmów. Praktycznie dowolna osoba dysponująca dostępem do odpowiednich narzędzi będzie w stanie wykonać pracę, co przed wprowadzeniem AI wymagało nakładu pracy całeg zespołu ludzi.