Hvad er kunst?
Det er et meget individuelt spørgsmål og noget, som kan skabe stor debat. Er det fx kunst, hvis en computer skaber et billede “kun” ud fra nogle stikord, en tekst eller en prompt, som du fodrer den med? (Billedet ovenfor er skabt ud fra samme prompt som de tre billeder nedenfor). I dette undervisningsforløb skal vi se på, hvordan vi kan skabe billedkunst og grafik med computeren. Men først skal vi forstå, hvad digitale billeder er for noget, og hvordan man ellers kan skabe billeder og grafik.
Hvordan kan man skabe digital billedkunst?
I dette forløb skal vi arbejde med 3 forskellige måder at skabe og manipulere digitale billeder:
- Digital billedredigering (ligesom med Photoshop) med online-programmet Pixlr.
- Billedmanipulation og grafikgenerering ved programmering med p5.js og Processing.
- Dataskabte billeder ud fra en beskrivende tekst kaldet et “prompt”, og evt. et billede, ved hjælp af kunstig intelligens med programmerne DALL·E eller Craiyon
Det øverste billede og de tre billeder nedenfor – og ja, faktisk de fleste andre billeder i dette undervisningsmateriale – er skabt med kunstig intelligens (mere om det senere):
DALL·E prompt: what is artificially generated digital art? |
Modul 1: Hvad er et digitalt billede?
Fotografiet blev opfundet i Frankrig omkring 1820, for ca. 200 år siden. Ved at belyse et stykke specielt lysfølsomt foto-papir i få sekunder og efterfølgende behandle det med kemiske væsker kunne man “fremkalde” et sort/hvid billede. Fotografiet kunne vise verden, som den var – i første omgang dog kun i sort/hvid.
DALL·E: verdens første fotografi – en variation ud fra “Joseph-Nicéphore Niépce” (1826) | Brett Jordan (Pexels) |
De første primitive 3-farvefotografier kom i 1860’erne og først i starten af 1980 kom de første digitale kameraer, som kunne tage digitale billeder og gemme dem på en harddisk og/eller printe dem.
Et digitalt billede er opbygget af mange små billedelementer (kaldet pixels), som hver har en farve og som tilsammen skaber billedet. Typisk kan et digitalt billede bestå af 4.000 pixels i bredden og 3.000 pixels i højden. I alt består dette billede derfor af 4.000 x 3.000 = 12 millioner pixels (px).
Pixels er placeret på samme måde som i et koordinatsystem med x-aksen, der ligger vandret (voksende mod højre), mens y-aksen står lodret (voksende nedad).
Analog øvelse 1.1: Lav et logo
- Hvor mange pixels består Pikachu-billedet af (til venstre)?
- Brug 6 farvetusser og et stykke ternet papir og tegn dit eget logo på fx 20 px x 12 px (vælg selv et tema).
Øvelse 1.2: Lav et digitalt logo
Klik på linket til online-programmet Pixilart og lav også her et logo/ikon på 20 x 12 px.
Eksempel på et logo |
DALL·E prompt: human transportation in a metropole in impressionistic style |
Størrelsen af et digitalt billede kan forstås på 3 måder:
- Den fysiske størrelse fx 15cm x 10cm – enten på print eller på skærm
- Dimensionerne målt i pixels fx 1200px x 800px
- Størrelsen af billedfilen fx 4.3 megabyte = 4.3Mb
Sammenhængen mellem de 2 første størrelser, den fysiske størrelse og dimensionerne målt i pixels, er afgørende for, om billedet ser skarpt ud, således at man ikke fornemmer de enkelte pixels, dvs. at billedet er uden pixelering. Pikachu-billedet ovenfor er fx meget pixeleret, og billedet ligner derfor ikke et almindeligt fotografi. Denne sammenhæng kaldes “billedets opløsning” og måles i ppi
(antal p
ixels p
r. i
nch, dvs antal pixels per tomme = 2.54cm)
Grænserne for hvornår øjet kan opfatte de individuelle pixels i et billede er:
- Hvis ppi < 100 har billedet en lav opløsning, hvor man fornemmer de enkelte pixels i billedet.
- Hvis ppi > 200 har billedet en høj opløsning, hvor man ikke fornemmer de enkelte pixels i billedet.
Det er efterhånden sjældent, at vi ser på billeder, der er udprintet – næsten al visning foregår på vores skærme. Opløsningen af et billede afhænger derfor af, hvor mange centimeter det fylder i bredden og i højden i forhold til antal pixels. Ved at zoome ind på et billede bliver opløsningen samtidig lavere, og billedet risikerer at komme til at se pixeleret ud.
Øvelse 1.3 (Pararbejde)
Nedenfor ser du det samme billede 3 gange – der er blot zoomet mere og mere ind i billedet
- Beskriv, hvad du lægger mærke til (brug de faglige begreber som er forklaret ovenfor: pixelering og opløsning)?
DALL·E prompt: sunset in bright colours |
Når vi taler om farver, bruger vi navne som rød, grøn, blå, mørkeblå, navy blue, postkasserød osv.
Men der findes ufatteligt mange forskellige varianter og kombinationer af farver, som derfor ikke alle kan have et navn, og derfor skal vi gå meget systematisk til værks.
For at kunne arbejde med farveværdier er det derfor en god idé først at lære om to nye talsystemer:
- Binære tal (2-talssystem)
- Hexadecimaltal (16-talssystem)
Om binære tal
En computer fungerer overordnet ved at elektriske impulser bevæger sig igennem computerens hardware fx. ledninger, mikrochips og processorer. På et tidspunkt kan der enten være en positiv spænding i en datacelle – eller ikke. Det bliver repræsenteret med tallet 0 (ingen spænding) eller tallet 1 (positiv spænding). Den informationsmængde kaldes 1 bit, altså enten værdien 0 eller 1. Ved at samle 8-bit information, kaldet 1 byte, kan man gemme 256 forskellige værdier fx: fordi der er 2 muligheder på hver af de 8 pladser:
Vi er vant til almindelige tal (10-talssystem) som fx. 2023 og ved, at det betyder:
2 · 1000 + 0 · 100 + 2 · 10 + 3 · 1 eller mere systematisk: \(2023 = 2 ·10^3 + 0 ·10^2 + 2 ·10^1 + 3 ·10^0\)
Dette positionssystem betyder, at i dette eksempel betyder de to 2-taller noget forskelligt: dét til venstre betyder 2000, og dét mod højre betyder 20.
På samme måde kan det binære tal (2-talssystem), som står ovenfor, omregnes til almindeligt
10-talssystem på følgende måde:
\(01010110 =\)
\(0 · 2^7 + 1 · 2^6 + 0 · 2^5 + 1 · 2^4 + 0 · 2^3 + 1 · 2^2 + 1 · 2^1 + 0 · 2^0 =\)
\(0·128 + 1· 64 +0· 32 + 1· 16 + 0· 8 +1· 4 + 1· 2 + 0 · 1 = 86\)
Pexels: thirdman-6732554
Øvelse 1.4: binær til 10-talssystem
Omregn de følgende binære tal til 10-talssystem:
Binær (2-talssystem) | 10-talssystem |
0011 | |
0111 | |
1101 | |
00010110 | |
10010101 | |
111111111 |
Det er tydeligt, at de binære tal har flere cifre (er længere) end de almindelige tal. Derfor – og fordi vi bare ikke er vant til at regne med binære tal – er de ikke så nemme at regne med for os mennesker, men de passer perfekt til computerens fysiske opbygning.
Om hexadecimaltal
Disse tal er meget specielle. Hexa-decimal betyder 6 og 10, dvs. 16-talsystem. Derfor skal der være 16 symboler til at beskrive disse tal. Symbolerne 0 til 9 suppleres derfor med yderligere seks symboler:
A (betyder 10), B (betyder 11), C (betyder 12), D (betyder 13) E (betyder 14) og F (betyder 15)
Omregning forgår på tilsvarende måde fra 16-talssytem (F9) til 10-talssystem (249) som i dette eksempel:
Hexadecimal-tallet, F9 betyder derfor:
\(F · 16^1 + 9 · 16^0 = 15 · 16 + 9 · 1 = 240 + 9 = 249\)
Øvelse 1.5
Omregn fra hexadecimaltal til decimaltal:
Om pixlers farvekoder
Billeder består som tidligere omtalt af pixels, og farven af hver enkelt pixel dannes ud fra rgb-systemet, hvor rød, grøn og blå indgår med forskellige værdier mellem 0 og 255.
Øvelse 1.6
Hvor mange forskellige farveværdier kan én enkelt pixel have, hvis rød, grøn og blå hver kan have 256 forskellige værdier?
Den valgte karrygule pixel (se billedet nedenfor) er sammensat af rød (værdi = 218), grøn (værdi = 201) og blå værdi = 4). Da den maksimale farveværdi er 255, betyder det, at den karrygule pixel således er sammensat af mest rød og grøn og ganske lidt blå.
Man skriver også rgb(218,201,4)
En anden måde at skrive farvekoden på er #RRGGBB
Øvelse 1.7: omregn pixlens farvekode
Kontrollér, at pixlens farvekode er #DAC904. Du skal omregne til rgb-værdier –
brug evt. dette link: https://www.rapidtables.com/web/color/RGB_Color.html
Øvelse 1.8: find rgb-værdi
Find rgb-værdierne for følgende hexadecimal-farvekoder:
Øvelse 1.9: omregn hexadecimaltal til decimaltal
Omregn de 3 værdier for rød, grøn og blå fra hexadecimaltal til decimaltal (almindelige 10-tals):
Rød: CA → ?, Grøn: FE → ? og Blå: 78 → ?
Åbn derefter linket: https://www.rapidtables.com/web/color/RGB_Color.html
Skriv hexadecimalkoden i feltet og se farven.
Kontrollér også, at du har omregnet korrekt fra HEX til DEC, og at alle DEC-værdier er mellem 0 og 255.
Størrelsen af billedfilen (målt i fx Mb) afhænger af 3 ting:
- Antal pixels
- Farvedybde
- Filformat
BMP er den “rå” filtype, som gemmer farveværdierne fra samtlige pixels hver for sig.
Hvis et billede har dimensionerne 3000 px x 2000 px, består billedet derfor af i alt 6 millioner pixels, og hver af disse pixels fylder typisk 3 bytes (= 24bit), hvilet betyder, at billedet fylder 18 millioner bytes, ca. 18Mb. Man siger, at farvedybden er 24bit.
Der findes en lang række andre billedfiltyper, som typisk fylder færre megabytes end BMP-typen.
De kendteste andre filtyper er JPG (eller JPEG), PNG og GIF, hvis billedfilen i mange tilfælde fylder ned til 10% af BMP-filen, dvs. en reduktion på 90%. Alle disse filtyper udnytter, at man ofte kan komprimere data uden at det visuelle udtryk forringes.
Øvelse 1.9:
- Hvor mange Mb (Megabytes) fylder et 2.000 x 1.000 pixels BMP-billede?
- Hvor mange Mb (Megabytes) fylder et 4.000 x 3.000 pixels BMP billede?
- Hvor mange Mb (Megabytes) fylder et 2.500 x 2.000 pixels BMP-billede?
- Hvor mange Mb (Megabytes) fylder et 2.500 x 2.000 pixels JPG-billede (med en reduktion til 10%)?
Modul 2: Pixlr E - digital billedmanipulation (online)
Pixlr er et online billedredigeringsprogram, som findes her: https://pixlr.dk/e
Bemærk, at dette link åbner Pixlr med (delvist) danske menu-tekster, som ikke altid er lige godt oversat. De skærmdumps, som du møder her, er alle fra denne dansksprogede udgave. Alternativt kan man vælge at åbne den engelsksprogede udgave: https://pixlr.com/e/
Faktisk findes det i flere udgaver bl.a:
- Pixlr X (til hurtig redigering med få værktøjer)
- Pixlr E (til mere avanceret redigering med flere værktøjer)
Vi skal lave nogle øvelser i Pixlr E, fordi der er flere værktøjer at vælge imellem. Bemærk, at man kun kan gemme 3 billeder dagligt fra Pixlr uden at oprette en bruger. Man kan gemme et billede enten i et af de almindelige billedformater: PNG, JPG, PDF mv. eller som et Pixlr-billedeprojekt, som du senere kan åbne og arbejde videre med: PXZ. Alternativt kan du lave screen dumps med et klippeværktøj.
Øvelse 2.1: Farvemanipulation (PopArt)
DALL·E-prompt: andy warhol pop art |
|
|
|
1. Åbn Pixlr E og et billede efter eget valg (fx et portrætbillede) fra din computer eller med en url (webadresse) direkte fra internettet (alle sædvanlige filformater kan bruges: jpg, png, gif og bmp).
2. Fra menubjælken skal du vælge: Justering | Farvebalance
3. Forskyd først rød helt til højre (100%) og dernæst grøn og blå helt til venstre (-100%).
4. Gem denne røde kopi.
5. Lav tilsvarende den grønne farveversion og den blå farveversion og gem disse.
Originalbilledet er øverst til venstre og nederst er farverne ændret.
Øverst til højre er der ændret lidt i virkeligheden – det kommer vi tilbage til.
Men hvad er det præcist, der foregår?
Som tidligere forklaret så indeholder alle pixels typisk en vis mængde af alle tre grundfarver (rød, grøn og blå). Man kan øge en farveværdi (skyder mod højre) eller sænke en farveværdi (skyder mod venstre) og derved opnå en effekt.
Dette kan også kombineres med andre værktøjer, fx øge billedets kontrast, farvernes temperatur (varme farver vs. kolde farver) og meget andet (i menubjælken vælg Justering og se i menuen).
Vælg evt. Filter – her er der også mange relevante værktøjer:
Effektbibliotek, Opbrydning (Pixelering) eller Find kanter.
Selvfølgelig kan man også “bare” lave små justeringer for at skabe et realistisk billede, som ser bedre ud end det oprindelige.
Diskussion A (i par eller grupper):
Brug billedfiltre og retouchering af billeder for at skabe en “falsk” eller “forskønnet” virkelighed.
Diskutér fordele og ulemper ved at anvende disse filtre eller anden digital manipulation.
Se følgende 2 videoer med Anna Monnier fra VIMEO (længde: 3:23 og 1:48):
Der er nærmest ingen øvre grænse for, hvordan digitale billeder kan manipuleres. Kloningsværktøjet giver dig mulighed for at erstatte pixlerne fra et område af et billede med pixlerne fra et andet område, og derved slette de oprindelige pixler.
DALL·E prompt: show the new building “The Tulip” on the London skyline.
Øvelse 2.2
Nedenfor til venstre ses et billede af en vindmølle. Det klonede billede er til højre.
Se nu videoen (længde: 9:30, der viser, hvordan man kloner i Pixlr.
Brug derefter selv kloningsværktøjet i Pixlr E til at lave en passende kloning på et billede (dit eget eller fra internettet).
Opgave 2.3 (gruppeøvelse):
Erik Johansson er en svensk kunstner, der arbejder med digital billedmanipulation på professionelt niveau. Han kalder sig selv sin kunstart for surreal photography.
I grupper af 2-3 elever: Gå på opdagelse på hans meget flotte og omfattende hjemmeside https://www.erikjo.com/
Under menupunktet Behind the Scenes skal I hver især vælge én af videoerne, som I skal præsentere for hinanden i gruppen. Hvilke manipulationsværktøjer benytter han?
I Modul 1 så vi, at digitale billeder “bare” er en samling pixels, som “snyder” vores øjne, når opløsningen er så høj, at vi ikke kan se de enkelte pixels. I Pixlr E kan vi manipulere med billeder på en anden måde end at zoome ind for at se pixlerne (I Modul 4 skal vi i øvrigt se en programkode, som ændrer i et billedes pixels).
Øvelse 2.4
Åbn et billede i Pixlr E (enten et af dine egne billeder eller ét du har fundet på nettet).
I menuen Filter afprøv hver af de 2 menupunkter Opbrydning og mosaik.
Gem billederne og forklar, hvad effekterne er på billederne.
Storbyerne og butikkerne er plastret til med kameraer, som kan overvåge vores færden. Nogle kameraer optager almindelig video, som kan bruges efterfølgende, hvis der er begået en forbrydelse eller er sket en ulykke, men flere og flere kameraer er udstyret med et billedeanalyseprogram, som bygger på kunstig intelligens. Derved kan man søge efter personer og andre objekter på billedet.
En metode til at finde fx ansigtstræk (øjne, mund, næse, hage …) i et billede (som også bruges til “at tagge” – kendt fra mange sociale medier) er at finde kanter i et billede. En kant er et sted i billedet, hvor farveværdierne i en pixel ændrer sig meget i forhold til en eller flere nabopixler. Denne feature findes automatisk i fx Pixlr.
Øvelse 2.5 (som hænger sammen med en øvelse i Modul 4: Processing – Øvelse 4.2)
Se videoen (længde: 3:01):
Vælg selv et velegnet portrætbillede og åbn det i Pixlr. Find kanterne i billedet. Gem billedet. Kommenter på resultatet.
Pexels: Breston Kenya | Tilsvarende billede manipuleret i Pixlr E |
Modul 3: Manipulér med billeder online (p5.js).
Intro
Der findes et utal af forskellige programmeringssprog, fx C++, Python, Javascript, HTML, Processing mv.
I dette modul skal vi arbejde med 2 beslægtede programmeringssprog, som er specielt gode til at skabe og håndtere grafik og billeder.
2 velegnede programmer
I dette og næste modul skal vi arbejde med 2 programmer, som kan bruges til at skabe grafik og/eller manipulere med billeder: p5.js (med en online editor) og Processing (som skal installeres på ens egen computer).
Vi starter med at afprøve p5.js – gå videre til 3.2.
Øvelse 3.1
Bogen “Skabt af en kunstig intelligens?” af Andreas Refsgaard og Mads Korsgaard har en hjemmeside i tilknytning til bogen, https://www.skabtafenkunstigintelligens.dk/, hvor der ligger en række små programmer, som du kan afprøve og ændre i et editorvindue. Scroll lidt ned på hjemmesiden for at finde det første program: At tænke algoritmisk.
Programkoden står i editorvinduet til venstre og grafikken (outputtet) kommer i vinduet til højre. Programmer i p5.js består altid af to dele (kaldet funktioner): setup og draw. Kommandoerne i setup køres én gang, men kommandoerne i draw køres i et loop, det vil sige igen og igen.
I setup defineres først størrelsen af programmets canvas (det vindue som programmet foregår i). Her er der 600 pixels vandret og 450 pixels lodret – som et slags koordinatsystem.
I draw er der en kommando, der hedder “if..else” i linje 7-10. Det betyder, at hvis du holder venstre museknap nede (if mouseIsPressed) tegner programmet cirkler dér, hvor musemarkøren befinder sig, og ellers tegner den rektangler eller kvadrater (rect).
Programmet består af kode (kommandoer), som er et specielt sprog med ord og syntaks, som ser meget fremmedartet ud i forhold til almindeligt sprog.
- Prøv alligevel at finde ud af, hvad de enkelte kommandoer betyder/gør.
- Ændr de røde talværdier (til fx 20 eller 200 ) i linje 8 og 10 og se, hvilken effekt det har, når du trykker på
- Tilføj kommandoen fill i linje 8 så koden i linje 8 til 11 bliver som nedenfor og tryk
- Notér, hvilken effekt de enkelte kommandoer har.
Øvelse 3.2
Kør programmet nedenfor og prøv at forstå, hvad koden gør. Kommandoen i linje 4 er en “for-løkke”, hvilket betyder at kommandoerne i linje 5-8 – i dette tilfælde – udføres 10000 gange.
Lav ændringer i koden og tryk på :
- Linje 4: Skriv 100 i stedet for 10000
- Linje 7: Skriv 4 i stedet for 10
- Noter, hvilken effekt de enkelte kommandoer har.
Øvelse 3.3
Afprøv flere af de andre øvelser som findes længere nede på hjemmesiden – følg instruktionerne.
Lav evt. ændringer i nogle talværdier eller i nogle kommandoer. Prøv at forstå kommandoerne og logikken i syntaksen
Som du måske lige har prøvet med de forrige p5.js-øvelser fra bogen “Skabt af en kunstig intelligens”, kan man nemt skabe grafik ved at anvende et programmeringssprog, der ligger online. En af fordelene er, at man ikke først skal downloade og installere et program. Man kan skrive eller rette i kode med det samme i editor-vinduet til venstre og se resultatet i vinduet til højre.
Men hvis man vil manipulere med sine egne billeder (billedfiler), skal disse dog først uploades til den server, som editoren ligger på – og man skal først oprette en bruger.
Øvelse 3.4
Find hjemmesiden med editoren til p5.js via. følgende link: https://editor.p5js.org/
Lidt længere nede (efter videoen) findes en forklaring af, hvordan man kommer i gang med at arbejde med billeder og lyd – eller du kan se denne video (længde 5:43) først:
Som det første skal du oprette en bruger (“Sign up”) øverst til højre. Dernæst skal du logge ind (“Log in”) også øverst til højre. Når du er logget ind, kan du skrive programkode og uploade fx billeder til serveren.
Når du vil gemme dit program/projekt, kan du vælge “Save” og anvende det autogenererede navn på programmet/projektet (på grafikken lige herover: “Cooked neighbor”) eller – nok lidt smartere – du kan vælge “Save As” og selv vælge et mere passende/sigende navn.
Et projekt rummer i udgangspunktet 3 filer (index.html, sketch.js og style.css), men du kan selv knytte flere filer til projektet (fx kan du uploade billedefiler, videofiler, lydfiler og andre filer), som p5.js kan anvende.
Når du skal uploade en billedfil (eller andre filer), skal det gøres ved at klikke på “til-højrepilen”.
Nu har du fået gennemgået, hvordan du kan programmere med brug af egne billeder.
Klik videre til 3.4 – nu skal du selv prøve at lave en screen saver med egne billeder.
Øvelse 3.5
Her er et link til en primitiv screensaver, som du kan arbejde videre med i p5.js-editoren (Husk, at du skal være logget på som bruger for at kunne uploade billeder til dette projekt):
https://editor.p5js.org/Michael_Lund/sketches/8YQBy6c1V
De ændringer du skal foretage:
- Vælg en anden farve
- Vælg to billeder fra din computer (de skal være i liggende/landscape format med størrelse 400px x 300px. I Pixlr kan du ændre størrelse af et billede eller beskære et billede til 400px x 300px).
De ændringer du måske kan foretage:
- Kan du ændre på den hastighed, som billederne bevæger sig med (i linje 16) ved fx rette til “i = i +2”?
- Kan du ændre til vilkårlige farver ved fx at bruge random(255) 3 gange i background-kommandoen i linje 12?
- Kan du ændre til at anvende billeder i stående/portræt format?
Øvelse 3.6
Lav ændringer i programmet i forhold til Øvelse 3.1.
Husk, at uploade filen Appelsin.png til mappen ude til venstre (se billedet nedenfor).
Hvordan påvirker de ændrede linjer kodeprogrammet fra Øvelse 3.1?
Lav evt. andre ændringer i programmet.
Øvelse 3.7 (Frivillig)
Her er et link til det ping-pong spil, som indgik i videoen i Modul 3.3.
https://editor.p5js.org/Michael_Lund/sketches/8M6HAldGz
Nu kan du arbejde videre med spillet i p5.js-editoren: Gå tilbage til Modul 3.3 og prøv at følge arbejdsgangene som gennemgået på videoen for at ændre baggrundsbillede og lyd.
Modul 4: Manipulér med billeder (Processing 4)
Processing (Version 4.2)
Programmet Processing, som findes både til PC og Mac, version 4.2 (maj 2023), skal downloades og installeres via hjemmesiden: https://processing.org/download
Øvelse 4.1: Prøv først de 4 programmer i velkomstvinduet
Første gang, du starter Processing, vises nedenstående vindue, indtil du fjerner
fluebenet ved “Show this message on startup”.
Klik på programmerne for at få en lille fornemmelse af, hvad Processing kan.
På mange måder minder programmeringssproget heldigvis meget om p5.js
Øvelse 4.2: Find ‘kanter’ i et fotografi (passer sammen med Modul 2: Pixlr E – Øvelse 2.4).
Afprøv et program, som kan fremhæve kanter i et fotografi (ved en kant forstår man en stor ændring i pixlernes farveværdier mellem nabo-pixler)
Lav en ny mappe på din computer og download de 2 nedenstående filer til mappen:
Klik nu på program-filen (Kanter.pde) og start programmet ved at trykke på .
Når billedet åbner i sit eget vindue, klik så på det med musen og tast “PIL OP”.
Nu kan du finde kanterne i billedet ved at bevæge musen fra side til side hen over billedet.
Vælg selv et billede og gem det i den samme mappe. Du skal også rette filnavnet i linje 15. Husk, at der er forskel på store og små bogstaver i filnavne.
Videre arbejde
Hvis du vil vide mere om Processing-programmering, er der en kæmpe skattekiste af tutorials på hjemmesiden: https://processing.org.
Daniel Shiffman, som er medstifter af Processing, er især en guru/ekspert, som laver meget underholdende og lærerige videoer om programmering (på engelsk).
Øvelse 4.3: Lav cirkulær pixelering med variabel radius.
Dette lille program vælger tilfældige pixels i et fotografi og tegner cirkler med denne farve. Cirklernes radius afhænger af musens placering. Til venstre = lille radius og til højre = stor radius.
Lav en ny mappe på din computer og download de 2 nedenstående filer til mappen:
Klik nu på program-filen (Cirkler.pde) og start programmet ved at trykke på .
Nu kan du få cirklerne til at blive større (max radius= 70 px) ved at trække musen hen over billedet mod højre – og mindre ved at trække musen hen over billedet mod venstre.
Vælg selv egne billeder, gem dem i den mappe, du lavede til denne øvelse og ret i filnavnet i linje 14 (husk, at der er forskel på store og små bogstaver i filnavnet).
Øvelse 4.4: Se pixeleringen forsvinde fra et billede
Lav en ny mappe på din computer og download de 2 nedenstående filer til mappen:
Klik nu på program-filen (Pixelering.pde) og start programmet ved at trykke på . Programmet kører automatisk.
Vælg nu et (eller flere) af dine egne billeder. Programmet virker kun, hvis billedets dimensioner er på 1024 px x 768 px. Da dine billeder nok er større end det, kan du hente dem ind i Pixlr og reducere størrelsen til 1024 x 768 px og gemme dem i den mappe, du lavede til denne øvelse. Husk også at rette filnavnet i linje 17.
Alternativt kan du måske ændre i selve programmet, så andre billedstørrelser kan bruges.
Modul 5: Googles Teachable Machine
Googles Teachable Machine kan optage, analysere og klassificere indholdet af en række billeder. Først optager man en række billeder, fx 100 billeder af en person og knytter dem til en kategori. Denne proces gentager man med andre personer. Til sidst “træner” programmet en model, som efterfølgende kan se, hvilken person der bliver filmet.
Denne træning bygger på algoritmer, der baserer sig på kunstig intelligens. Overordnet set analyserer programmet billederne i hver kategori (klasse) og beregner fællestræk i form af en lang liste af talværdier i intervallet [0,1]. Vi kommer nærmere ind på, hvad der præcis foregår i de følgende 3 moduler.
Øvelse 5.1
Se videoen nedenunder, som viser, hvordan hjemmesiden virker.
Her er der et meget enkelt “sandkasse-eksempel” med kun 3 klasser: Et tomt billede, Person 1 og Person 2.
Efter endt træning (som sagt ved hjælp af kunstig intelligens) kan programmet med stor sandsynlighed afgøre, hvem der er foran kameraet (blandt de personer som er klassificeret).
Perspektiverne i dette er mange – mere om det i næste afsnit.
DALL·E prompt: Googles teachable machine
‘Teachable Machine’ er et program som man kan træne med data (i tilfældet “Image Project” en række billeder). Det er en kunstig intelligens, som ligger online og som kan klassificere billeder inden for definerede kategorier (classes). Bagefter kan den afgøre, hvilken kategori nye billeder tilhører med en vis sandsynlighed.
Anvendelser:
Klassifikation af ansigter (overvågning af mennesker)
Optælling af objekter (antal personer i en kø)
Sortering af objekter (blandet affald på et samlebånd)
Øvelse 5.2 (Gruppearbejde): Træn og Test – “Overvågning” af elever.
Gå til hjemmesiden ’Googles Teachable Machine’: https://teachablemachine.withgoogle.com/
Her skal I starte et projekt, som kan klassificere forskellige elever:
Vælg ‘Get Started’
Vælg ’Image Project’
Vælg ’Standard Image Model’
Nu skal I oprette fx 5 kategorier – en ”tom” kategori og 4 elever (dette kan selvfølgelig udvides til flere end 4 elever).
VIGTIGT: Vælg det sted webkameraet skal stå fast i en passende højde og med en neutral baggrund.
Nu skal de 5 kategorier trænes:
Class 1 – kald den ‘Tomt billede’ og gem ca. 100 baggrundsbilleder uden personer på
Class 2 – kald den fx ‘Frederik’ og gem ca. 100 billeder af Frederik
Class 3 – kald den fx ‘Mathilde’ og gem ca. 100 billeder af Mathilde
osv.
Når alle jeres klasser har ca. 100 billeder hver, så skal modellen trænes – klik på ’Train Model’ – det kan godt tage lidt tid (dog under 1 minut).
Baggrund:
Præcis hvordan denne klassificering foregår er vanskelig at forklare kort. Alle billederne i træningssættene får beregnet en lang række talværdier, som er karakteristisk for dem, og alle billeder fra samme kategori har relativt ens værdier. Efterfølgende analyserer koden nye billeder og beregner, hvilken kategori deres talværdier stemmer bedst overens med. Den procentværdi, som står under billedet, viser hvor godt et match, billedet er med de definerede kategorier.
I kan derefter teste om modellen er god, altså om den er i stand til at skelne personerne fra hinanden.
Vælg ‘Eksport Model’ – vælg ’Upload (shareable link)’ og kopier URL’en.
Åbn zip-filen ’TM.zip’ et passende sted på jeres computer.
Den indeholder 5 filer.
Åben nu filen ’sketch.js’ i en basal teksteditor fx. SublimeText, Notepad eller lignende.
Ret i linje 15, så jeres URL passer – og gem.
Nu skal I højreklikke på ’index.html’ og åbne den i en browser (fx Google) og tillade brug af jeres webkamera. Se, at det virker efter hensigten.
DALL·E prompt: photo realistic pictures with edge-detection and facial recognition |
Diskussion 5.3: Overvågning – Er det en god ide at opstille et kamera ved indgangen til skolen, som kan filme og genkende eleverne automatisk? Så kan klokken, fremmøde eller fravær registreres automatisk.
Øvelse 5.4 (ekstra øvelse hvis der er tid):
Ret/tilføj kode i linje 70 i filen og frem så alle personer har sin emoji hver – og gem.
(I kan finde forskellige emojis her: http://emojipedia.com).
Modul 6: Neurale Netværk og deep learning - hvad er det?
I dette modul skal vi prøve at få forståelse for, hvad et neuralt netværk er for en størrelse, og hvordan det er bygget op og hvordan det fungerer.
Neurale netværk
Kunstig intelligens bygger på Deep Learning (en læreproces som foregår igennem flere trin), som skal forestille at simulere, hvordan den menneskelige hjerne fungerer. Alle de beslutninger, som vi mennesker træffer på baggrund af viden, lyst og interesse, kan modelleres i neurale netværk, som består af en række forbundne valgprocesser baseret på input – med tilhørende output – hvor processerne her tænkes at foregå fra venstre mod højre. De neurale netværk er bygget op af en række såkaldte perceptroner (også kaldet neuroner eller noder) – her farvet røde, blå eller grønne:
Hver enkelt perceptron laver en beregning ud fra en formel og baseret på de input-værdier, som den får fra “tidligere” perceptroner. Illustrationen herover har små pile, som viser, at blå perceptroner modtager input fra røde, og grønne perceptroner modtager input fra blå. Beregningen i hver enkelt perceptron medvirker derfor i den samlede beslutningsproces, som til sidst giver et svar (output).
Her er to eksempler, som viser, hvad neurale netværk kan beregne (finde svar på). Som de to eksempler viser, er mange beslutningsprocesser ikke helt lige til at beskrive, og samtidig kan alt jo ikke sættes på en så simpel formel.
Eksempel 1: Hvor skal vi rejse hen til sommer?
De fleste mennesker har nok lyst til at rejse, men rejseform, rejsebudget, rejseperiode og rejsemål kan variere meget. Hvis man vil gå meget systematisk til værks, kræver det, at man tager stilling til en lang række spørgsmål om rejsen. Det kan hurtigt blive til et langt og kompliceret “rutediagram”, og alle spørgsmål er ikke lige vigtige.
DALL·E prompt:
dreaming of your favourite holiday experience where you relax and explore at the same time
Eksempel 2: Hvad skal vi spise i aften?
Også her er der en lang række forhold, som kan påvirke beslutningen – hvis vi ellers overhovedet skal spise aftensmad i aften. Skal det være take-out, hjemmelavet (eller et mix), dyr eller billig mad, sund eller mindre sund mad, hvad er der i køleskabet i forvejen, hvem spiser med, hvem laver maden (cooking skills), skal det være vegansk eller med kød/fisk/æg – fortsæt selv.
Ideen med de neurale netværk er at beslutte eller beregne delsvar igennem en række delspørgsmål, som til sammen giver et endeligt svar.
I næste afsnit ser vi nærmere på, hvordan input og output kan se ud i en enkelt perceptron.
DALL·E prompt: neural network |
|
|
Opbygningen af den enkelte perceptron er som skitseret ovenfor.
Der skal knyttes vægte (w1, w2, w3 er talværdier i intervallet [0,1]) til de forskellige input-værdier (x1, x2, x3) og beregne en output-værdi (y) på baggrund at dette.
CASE
Eksempel på et meget lille netværk som består af én perceptron, og som skal besvare spørgsmålet: Hvordan skal jeg komme igennem byen fra A til B?
Forestil dig, at du skal rejse fra et sted til et andet, og du skal beslutte, hvordan turen skal foregå. Som det fremgik af de to eksempler fra før (ferie, aftensmad), er der mange overvejelser, som du foretager mere eller mindre ubevidst, men din hjerne kommer alligevel frem til en beslutning. Hvis svaret er “at jeg gør som jeg plejer” betyder det, at overvejelserne er processeret tidligere – og at konklusionerne stadigvæk gælder.
Her er en illustration af en simpel valgproces, som kan bidrage til at vælge transportform, hvor mulighederne kunne være at gå, at (el-)cykle, at tage offentlig transport, at køre i bil eller gøre noget andet:
Det gør måske en forskel om vejret er godt eller dårligt: regn og vind kan tvinge dig væk fra cyklen, hvis du har travlt kan det “tvinge” dig over i (dele-)bil eller taxi, hvis den offentlige transport var billigere (eller ikke steg så meget i pris), ville du måske oftere tage bussen osv.
Ideen er derfor at tage udgangspunkt i:
- dagens vejr (x1 – vurderet på en skala fra 0 til 1 (dårligt til godt))
- afstanden mellem A og B (x2 – vurderet på en skala fra 0 til 1 (langt til kort))
- bagage (x3 – vurderet på en skala fra 0 til 1 (tung til let))
på en eller anden måde spiller ind, når du skal vælge transportform.
I et neuralt netværk vægter man betydningen af de enkelte inputs:
y = x1*v1 + x2*v2 + x3*v3
Lad os sætte vægtene til følgende (realistiske) værdier:
- v1 = 0.5, så dagens vejr påvirker beslutningen med 50%
- v2 = 0.3, så rejsens længde påvirker beslutningen med 30%
- v3 = 0.2, så mængden af baggage påvirker beslutningen med 20%
y = x1*0.5 + x2*0.3 + x3*0.2
Lad os se på to forskellige ture:
Tur 1:
Solen skinner og du skal rejse 3 km med en almindelig let rygsæk:
x1 = 0.9
x2 = 0.7
x3 = 0.8
Beregning af y:
y = 0.9*0.5 + 0.7*0.3 + 0.8*0.2 = 0.82
Tur 2:
Det regner, blæser og er koldt og du skal rejse 6 km med en IKEA-pose på 5 kg:
x1 = 0.2
x2 = 0.3
x3 = 0.5
Beregning af y:
y = 0.2*0.5 + 0.3*0.3 + 0.5*0.2 = 0.29
Hvis y < 0.5 er valget nok bil eller offentlig transport, hvorimod hvis 0.5 < y er valget nok at gå eller at cykle.
Til Tur 1 (y = 0.82) vil dit valg sikkert være at gå eller at cykle.
Til Tur 2 (y = 0.29) vil du nok vælge at tage bus/metro/tog/bil.
Mange andre aspekter spiller selvfølgelig også ind – men dem ser vi så bort fra her:
- har du en (meget) skarp bagkant?
- er rejsen en del af oplevelsen?
- hvad er prisen?
- skal du følges med nogen?
- hvornår på dagen skal du rejse
Fortsæt selv.
DALL·E prompt: a neural network showing commute
options in a metropolis
Case (fortsat fra før): Valg af transportform i en storby.
Emma bor i København. Hun skal rejse fra A til B. Hvilket transportmiddel skal hun benytte sig af? Det valg afhænger bl.a. af
- afstanden
- transportmulighederne
- transporttiden
- prisen
- vejret (fx regnvejr, blæst, kulde)
- mængden af baggage
Fordi Emma bor i byen, kan hun typisk vælge mellem
- at gå
- at cykle
- at køre i egen bil (hvis hun har én)
- at tage det offentlige (bus, metro og/eller tog)
- at bruge delebil, løbehjul og/eller lignende
- at tage taxa
Hvorfor er det overhovedet relevant at tænke denne individuelle beslutningsproces ind i et større neuralt netværk? Det er det fordi, at virksomheder som fx DSB skal forholde sig til, hvordan deres kunder træffer valg om transportform. Det er fx velkendt at transportbehovet i hverdagene er størst i myldretiden om morgenen og tilsvarende om eftermiddagen. Derfor skal køreplaner og togkapacitet skaleres i forhold til behovet. Andre forhold såsom vejret kan også spille ind. Desuden ved vi, at prisen også påvirker vores valg af transportform.
Kan DSB og andre aktører sætte priserne ned eller gøre det mere attraktivt at bruge det offentlige?
Øvelse 6.1:
Emma elsker at gå eller køre med tog. I sidste uge var hun på 5 ture.
Beregn y for hver af de 5 dage ud fra gule formel og prøv at give et bud på, hvilke transportformer hun valgte:
- Mandag: godt vejr, 2km, en halvtung kuffert
- Tirsdag: regnfuldt og koldt, 6km, let baggage
- Onsdag: blæsende, 9km, ingen baggage
- Torsdag: solrigt, 12km, en lille let kuffert
- Fredag: snevejr, 2km, en halvfyldt IKEA-pose.
Eksempel
Hvordan bygger man sin egen perceptron til at modellere valgprocessen omkring en uges ferie?
Du skal overveje, hvilke forhold der kan påvirke dit valg af rejsemål (mindst 3 forhold)
- Hvad må ferien koste målt på en skala fra “budget” (2.000kr) til “luksus” (15.000kr)?
- Hvor skal du rejse hen?
- Vil du gerne på aktiv ferie eller daseferie?
Øvelse 6.2:
Prøv at rangordne/prioritere, hvor vigtige de hver er. Det vil sige, du skal vælge nogle personligt realistiske vægte (w-værdier mellem 0 og 1) på de enkelte inputs.
y = x1*v1 + x2*v2 + x3*v3
For hver af de følgende 4 ferierejser – hvad er x1, x2 og x3 for dig?
- Rejse 1 går til Rom på et dyrt og lækkert hotel med aktive dage.
- Rejse 2 går til Møn på vandreferie med rygsæk og shelter.
- Rejse 3 går til Mallorca på camping og daseferie.
- Rejse 4 går til Roskildefestival med armbånd, alkohol og tema-pavillion.
Beregn nu y-værdier for følgende 4 ferierejser – hvad vælger du og hvorfor?
Modul 7: Datamining - Orange og Kaggle
I de senere år har kunstig intelligens udviklet sig eksplosivt. Som navnet antyder, er kunstig intelligens processer eller programmer, som simulerer vores almindelige menneskelige intelligens (og tanke- og handlekraft).
Den kunstige intelligens opbygges eller trænes på store datamængder, hvor modellen finpudses. Efterfølgende kan modellen anvendes på nye data til fx at kategorisere disse.
“Datamining” er processen med at analysere disse data og udtrække væsentlige oplysninger (fx 2000 værdier, som til sammen kan kategorisere hver af disse data) om dem, som med stor sandsynlighed gør det muligt at afgøre, hvilken klasse et objekt (billede) tilhører.
Ordet “datamining” henviser til, at det minder om, hvordan man i minedrift skal udtrække guld, kul eller andet fra undergrunden blandt jord, klippe og andet ligegyldigt materiale – altså at finde de vigtigste oplysninger. Når først modellen er klar, kan den således bruges til at sortere eller kategorisere tilsvarende data.
Programmet Orange kan anvendes til at visualisere denne kategoriseringsproces:
- Hente data (tal, tekst eller billeder)
- Træne modellen ud fra data (Embedding)
- Teste nye data ud fra modellen (Test and Score)
- Se, hvor godt modellen passer (Confusion Matrix)
Vi har tidligere – i Modul 5 – undersøgt præcis den samme proces, dog uden at få en grundig forklaring på, hvordan modellen konkret bliver opbygget. Med programmet Orange bliver strukturen i modellen forhåbentlig tydeligere.
Billedeindlejring (engelsk: embedding, hvilket betyder, at Orange beregner en talrække på 2048 værdier, som beskriver billedets indhold. Denne talrække kaldes en indlejringsvektor)
Øvelse 7.1
Først skal du installere selve programmet Orange. Se videoen og følg instruktionerne.
Øvelse 7.2
For at kunne komme i gang med at anvende programmet Orange, skal du se nogle instruktionsvideoer fra Orange på engelsk – de hedder ‘Orange Tutorials’ og findes via linket: https://www.youtube.com/channel/UClKKWBe2SCAEyv7ZNGhIe4g
Her kan du høre en meget kyndig hollænder, Ajda, forklare, hvordan programmet kan anvendes. Der er 5 små videoer på 2 – 4 minutter, som er vigtige: “Getting Started with Orange” 01, 02, 03, 14 og 15.
Øvelse 7.3
Du skal også installere et lille tillægsprogram (Add-on) for at kunne arbejde med billeder som data – se video og følg instruktionerne
Kontroller, at det gule “Image Analytics” bliver føjet til menu’en til venstre.
For at træne en model og efterfølgende teste modellen for at se, om den virker, skal man have store datamængder – i vores tilfælde mange billeder af forskellige objekter. Ligesom i Googles Teachable Machine kan man i princippet selv tage ca. 100 billeder af forskellige objekter og derefter indlæse dem i Orange for at træne en model. Men hvis der bare er fx 5 klasser, kræver det ca. 500 billeder, hvilket er meget tidskrævende og lidt kedeligt. Derfor er Googles Teachable Maching også genial, fordi indsamlingen af billeder (træningsdata til modellen) og den efterfølgende træning er så nem og hurtig.
En smartere metode, som vi nu skal afprøve, er at arbejde med datasæt, som allerede findes på internettet. Der findes en lang række hjemmesider, som har datasæt liggende klar til brug. Det smarte er, at der både er mapper med træningsdata og mapper med testdata – så alt er klar til brug i Orange. Desuden kan man selv desuden gemme egen billeder i test-mapperne.
Eksempel 7.4
Hjemmesiden Kaggle.com indeholder over flere tusind datasæt af billeder, som kan bruges til at træne – og efterfølgende teste – kategorisering af data (en proces som kaldes datamining).
Vi vil træne en model i Orange til at afgøre om en sko er fra mærket Nike, Adidas eller Converse. Efterfølgende vil vi teste, hvor god modellen er.
Fra Kaggle-databasen: Shoes |
Øvelse 7.5
Se videoen nedenfor (længde: 9:33), som viser, hvordan man træner modellen på et bibliotek af billeder. Det er selvfølgelig vigtigt at fordre modellen med billeder, hvor det samtidig oplyses, hvilken kategori de enkelte billeder tilhører: Nike, Converse eller Adidas.
Øvelse 7.6
Se videoen nedenfor (længde: 7:05), som viser, hvordan man tester modellen med nye billeder (data). Du kommer til at se, at modellen ikke er perfekt, fordi den klassificerer en lille del af datasættet forkert. Det kan ses i “confusion matrix”, som viser data, som har “forvirret” modellen.
Øvelse 7.7
Der findes et utal af arkitektoniske stilarter, men her vil vi kun fokusere på 3 stilarter: Barok, Bauhaus og Colonial style. Undersøg først hvad der er kendetegnende for hver af de tre stilarter.
Arkitektur – Train and Test (zip)
Hent zip-filen ned og udpak den på din computer. De 2 mapper indeholder indeholder trænings- og testbilleder i 3 undermapper – på samme måde som i de to netop viste videoer.
Øvelse 7.8:
Vilde katte (Cats in the Wild) – hvilken kat er på billedet?
https://www.kaggle.com/datasets/gpiosenka/cats-in-the-wild-image-classification?resource=download
Opsamling
Det kan være, at du stadig synes, at modellen er svær at forstå og har spørgsmål, såsom hvordan beregnes embedding-listen og hvordan ser modellen konkret ud. Fordi alle billeder inden for samme kategori må have fællestræk, som kan gemmes som talværdier, betyder det, at man efterfølgende kan sammenligne billeder og med stor sandsynlighed få dem korrekt kategoriseret.
Modul 8: Kunstig Intelligens - Prompting
Kunstig intelligens: OpenAI
De nye teknologier, som skaber billeder ud fra prompting, fungerer ved, at de “scraper” (kopierer dele af billeder) matchede billedelementer blandt millionvis af billeder og derved komponerer et eller flere billede(r). Processen er vanskelig at forstå i detaljen, men overordnet fungerer den som et neuralt netværk, hvor billeddata er input på samme måde. Ligesom vi så det i Modul 7, hvor programmet Orange genererede metadata om hvert billede for at kunne klassificere dem.
I dette undervisningsforløb er fokus på de teknologier, som for eksempel DALL·E, der kan generere billeder ud fra tekst- og/eller billedprompting, men derudover findes der en lang række andre kunstige intelligenser som fx chatbots (OpenAI’s ChatGPT), der kan:
- svare på spørgsmål
- løse opgaver
- skrive kreativt videre på en indledende tekst
- omsætte lyd til tekst
Alle de nye teknologier, som anvender kunstig intelligens, breder sig med stor hast. Lige til at begynde med bliver de måske mest anvendt lidt for sjov, men i den nære fremtid vil de blive indlejret i en lang række af de applikationer, som vi bruger i hverdagen, hvor kommunikation og kreative processer er i fokus med bidrag i forbindelse med:
- digitale publikationer
- mundtlig og skriftlig kommunikation
- kunstproduktion
Eksempler kunne være
- nye funktioner i fx Word: (1) at indsætte promptede billeder, (2) at videreskrive på tekst og (3) at forbedre indtaling af tekst.
- forbedring af søgefelter så det ikke “kun” foretager almindelige Google-søgninger.
Øvelse 8.1
Undersøg, hvilken malerstil den hollandske maler Piet Mondrian er kendt for og diskutér derefter med din makker, hvorfor mon DALL·E “laver” disse billeder:
DALL·E prompt: artificial intelligence painted by mondrian |
Øvelse 8.2
Læs denne artikel om DALL·E fra hjemmesiden Komputer.dk (22.11.2022):
Diskutér ud fra artiklen perspektiverne i denne nye teknologi (kunstig intelligens).
Flere eksempler på prompts:
DALL·E prompt: artificial intelligence painted by Salvador Dali |
DALL·E prompt: artificial intelligence painted by Pablo Picasso |
DALL·E prompt: artificial intelligence painted by Per Arnoldi |
Øvelse 8.3
Nu er det din tur til selv at prompte billeder med DALL·E eller Craiyon:
På hjemmesiderne https://openai.com/product/dall-e-2 og https://www.craiyon.com/ kan du nemt få ideer til, hvordan du skal skrive en tekst. Husk, at når du første gang opretter en gratis bruger på DALL·E, har du 50 prompts, men der går en måned, før du får 15 nye (hvis du altså har brugt dem, du havde).
Du skal prøve at beskrive, hvad du ønsker bedst muligt – alligevel bliver resultaterne ikke altid som forventet. Husk, at du skal prompte på engelsk, og at du med fordel kan lave prompts, som beskriver hvad du ønsker så detaljeret som muligt, og hvilken stil billedet skal have. På internettet ligger der mange forslag til gode prompts.
Du få lige 3 yderligere eksempler til inspiration:
1. forsøg:
2. forsøg:
3. forsøg:
Og her på hjemmesiden Craiyon.com:
8.4 Diskussion
Forberedelse:
Læs artiklen (Om prompting til debat om den nye teknologi (DR, 7. august 2022):
Gruppearbejde (Grupper af 4-personer):
Overvej 3 mulige anvendelser af kunstig intelligens i eller uden for undervisningssituationen.
Hvilke brancher ville med fordel kunne anvende disse teknologier og hvordan? Diskutér også, hvilke faldgrupper der evt. måtte være i den forbindelse.
Præsentationer:
Hver gruppe laver en kort præsentation, hvor hovedkonklusionerne er fremhævet – også med illustrationer.
Opsamling:
Fremlæg jeres hovedkonklusioner for hinanden og diskutér jeres samlede konklusioner omkring anvendeligehed og faldgrupper ved billedgenerering med brug af kunstlig intelligens.