Files
ovt-projekt/Porocilo-OVT.ipynb

358 lines
20 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
{
"cells": [
{
"cell_type": "markdown",
"id": "eb66e60b",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"id": "64cb5888",
"metadata": {},
"source": [
"<img style=\"float: center; width: 100%\" src=\"https://raw.githubusercontent.com/andrejkk/TalksImgs/master/FrontSlideUpperBan.png\">\n",
"<p style=\"margin-bottom:2cm;\"></p>\n",
"\n",
"\n",
"# Anonimizirano zaznavanje z UI ustvarjenih slik\n",
"\n",
"\n",
"Ime Priimek: Kristjan Komloši\n",
"\n",
"Predmet: Optimizacija v telekomunikacijah\n",
"\n",
"Datum: 10. maj 2025\n",
"\n",
"\n",
"<p style=\"margin-bottom:2cm;\"></p>\n",
"<img src=\"https://raw.githubusercontent.com/andrejkk/ORvTK_SlidesImgs/master/footer_full.jpg\">"
]
},
{
"cell_type": "markdown",
"id": "1e57ed74",
"metadata": {},
"source": [
"## Kazalo\n",
"\n",
"\n",
"[Povzetek](#povzetek)\n",
"\n",
"1. [Uvod](#uvod)\n",
" 1. [Opredelitev področja](#opredelitev-podrocja)\n",
" 2. [Predstavitev problema](#predstavitev-problema) \n",
"2. [Teoretično ozadje in trenutno stajne](#teoreticno-ozadje)\n",
" 1. [Teoretični vidiki problema](#teoretični-vidiki-problema)\n",
" 2. [Algoritmi](#algoritmi)\n",
" 3. [Merjenje uspešnosti](#merjenje-uspesnosti-resitve)\n",
"3. [Eksperimentalni del](#eksperimentalni-del)\n",
" 1. [Podatki](#podatki)\n",
" 2. [Eksperimentalni rezultati 1](#eksperimentalni-rezultati-1)\n",
" 3. [Eksperimentalni rezultati 2](#eksperimentalni-rezultati-2)\n",
"4. [Zaključek in razprava](#zakljucek-in-razprava)\n",
"5. [Doseženi učni izidi](#dosezeni-ucni-izidi)\n",
"6. [Literatura in viri](#literatura-in-viri)\n",
"\n",
"\n",
"\n",
"<p style=\"margin-bottom:2cm;\"></p>\n",
"<img src=\"https://raw.githubusercontent.com/andrejkk/ORvTK_SlidesImgs/master/footer_full.jpg\">"
]
},
{
"cell_type": "markdown",
"id": "4b01f137",
"metadata": {},
"source": [
"## Povzetek <a class=\"anchor\" id=\"povzetek\"></a>\n",
"\n",
"Z učenjem nevronske mreže lahko ustvarimo orodje za zaznavanje slik, ki bi bile lahko ustvarjene s pomočjo generativne umetne inteligence.\n",
"\n",
"V povzetku povzamemo bistvo projekta v smislu izhodišč in rezultatov. \n",
"</br>\n",
"\n",
"1. Izhodišča: </br>\n",
" 1. Generativna umetna inteligenca: Velika količina neželenih slik na socialnih omrežjih terja preproste, zasebne in zanesljive metode za njihovo zaznavo in/ali izločanje.\n",
" 2. Učinkovitost in zasebnost: Ali z anonimizacijo vhodnih podatkov še vedno lahko dosežemo sprejemljivo natančnost našega orodja?\n",
" 3. Vrednotenje orodja: Katero metriko uporabimo za vrednotenje orodja?\n",
"2. Rezultati:</br>\n",
" 1. Pomožni nabor podatkov (dataset) CIEDGE: Preslikava obstoječega nabora CIFAKE z Laplaceovim detektorjem robov.\n",
" 2. Učena modela ResNet18: Na naborih podatkov naučen par nevronskih modelov ResNet18\n",
" 3. Uspešnost: Model, učen na naboru CIEDGE dosega 98% AUC\n",
"3. Prihodnje raziskovalne smeri: Študija nakazuje, da bi napredne raziskave lahko raziskale dolgoročne učinke kroničnega časovnega pritiska in njegov vpliv na duševno in fizično zdravje.\n",
"\n",
"<p style=\"margin-bottom:2cm;\"></p>\n",
"<img src=\"https://raw.githubusercontent.com/andrejkk/ORvTK_SlidesImgs/master/footer_full.jpg\">"
]
},
{
"cell_type": "markdown",
"id": "fa8a5676",
"metadata": {},
"source": [
"## 1. Uvod <a class=\"anchor\" id=\"uvod\"></a>\n",
"\n",
"Z napredkom v svetu generativne umetne inteligence postaja ključnega pomena prepoznavnost slik, ustvarjenih s to tehnologijo. Z različnimi metodami strojnega učenja lahko dosežemo dobro zaznavanje takih slik. Večina naborov za učenje je sestavljenih iz slik, ki niso spremenjene na noben način, zato tudi nastali modeli najbolje delujejo z originalnimi oz. nepreslikanimi slikami. Pri uporabi v medsebojni komunikaciji to lahko zbuja dvome v zasebnost uporabljenega orodja ali storitve in zahteva uporabnikovo privolitev za obdelavo podatkov.\n",
"\n",
"Raziskava se osredotoča na zaznavanje z umetno inteligenco ustvarjenih slik na način, ki je zasebnosti prijaznejši. To dosega s pomočjo nabora podatkov, ki je preslikan z detektorjem robov. Ta nabor podatkov je nato uporabljen kot učna množica za model strojnega učenja, ki ga nato lahko uporabljamo za zaznavanje slik, ki so preslikane na isti način. To slik ne naredi popolnoma anonimnih in neprepoznavnih, predstavlja pa izboljšavo nad izhodiščnim orodjem z vidika zasebnosti.\n",
"\n",
"<p style=\"margin-bottom:2cm;\"></p>\n",
"<img src=\"https://raw.githubusercontent.com/andrejkk/ORvTK_SlidesImgs/master/footer_full.jpg\">"
]
},
{
"cell_type": "markdown",
"id": "4a26cc86",
"metadata": {},
"source": [
"### 1.1. Opredelitev področja <a class=\"anchor\" id=\"opredelitev-podrocja\"></a>\n",
"\n",
"Detekcija z UI ustvarjenih slik je pomembna predvsem v komunikaciji in socialnih omrežjih, ker lahko take slike predstavljajo dezinformacijo. Skupine, ki na prisotnost takih tehnologij niso navajene, so še posebej ranljive, ker lahko nasedejo raznim trgovskim prevaram, lažnim novicam, t. i. farmam vsebin, ali phishingu.\n",
"\n",
"S tehničnega vidika je prisotnost takih slik na storitvah moteča, saj predstavljajo porabljene vire procesne moči, hrambe podatkov in omrežnih kapacitet, ki bi bile lahko porabljene za kakovostnejše vsebine.\n",
"\n",
"Pri obeh vidikih se pojavi problem zaupanja v orodje za zaznavanje, saj je tako za uporabnika kot za upravljalca orodja (če gre za spletno storitev) zaželeno, da je količina prenesene osebne informacije minimalna. Z uporabo metod za preslikavo lahko slike naredimo nekoliko manj prepoznavne, hkrati pa še vedno ohranimo dovolj informacije za učinkovito delovanje orodja za zaznavanje.\n",
"\n",
"<p style=\"margin-bottom:2cm;\"></p>\n",
"<img src=\"https://raw.githubusercontent.com/andrejkk/ORvTK_SlidesImgs/master/footer_full.jpg\">"
]
},
{
"cell_type": "markdown",
"id": "112e5e31",
"metadata": {},
"source": [
"### 1.2. Predstavitev problema <a class=\"anchor\" id=\"predstavitev-problema\"></a>\n",
"\n",
"Problem sestavlja:\n",
" 1. Ustvaranje podatkovnega nabora, preslikanega na isti način kot pričakovani vhodni podatki.\n",
" 2. Učenje nevronske mreže - klasifikatorja - na ustvarjenem naboru\n",
" 3. Vrednostenje ustvarjene mreže\n",
"\n",
"<p style=\"margin-bottom:2cm;\"></p>\n",
"<img src=\"https://raw.githubusercontent.com/andrejkk/ORvTK_SlidesImgs/master/footer_full.jpg\">"
]
},
{
"cell_type": "markdown",
"id": "1c0384e4",
"metadata": {},
"source": [
"## 2. Teoretično ozadje in trenutno stanje <a class=\"anchor\" id=\"teoreticno-ozadje-in-trenutno-stanje\"></a>\n",
"\n",
"\n",
"\n",
"\n",
"<p style=\"margin-bottom:2cm;\"></p>\n",
"<img src=\"https://raw.githubusercontent.com/andrejkk/ORvTK_SlidesImgs/master/footer_full.jpg\">"
]
},
{
"cell_type": "markdown",
"id": "478e9ccf",
"metadata": {},
"source": [
"### 2.1. Teoretični vidiki problema <a class=\"anchor\" id=\"teoretični-vidiki-problema\"></a>\n",
"\n",
"Zaznavanje slik, ustvarjenih z umetno inteligenco (UI), predstavlja problem slikovne klasifikacije, pri katerem na podlagi učne množice poskušamo vhodne podatke uvrstiti v vnaprej določene kategorije. V okviru te raziskave gre za razvrščanje slik v dve kategoriji: resnične slike in slike, ustvarjene z UI.\n",
"\n",
"Anonimizacija podatkov je proces odstranjevanja ali prikrivanja občutljivih informacij iz podatkovnih nizov, z namenom povečanja zasebnosti končnih uporabnikov ter zmanjšanja pravne odgovornosti upravljavcev podatkov. Posebej pomembna je v kontekstu evropske zakonodaje (GDPR), ki zahteva ustrezno zaščito osebnih podatkov državljanov EU, tudi pri obdelavi slikovnega gradiva.\n",
"\n",
"V tej raziskavi je bila za anonimizacijo slik uporabljena slikovna tehnika prostorskega filtriranja. Gre za matematični postopek, pri katerem s konvolucijo vhodne slike in izbranega jedra izluščimo določene informacije. Uporabljeno je bilo Laplaceovo jedro velikosti 5×5, ki na sliki izvede prostorski odvod. To pomeni, da se iz slike poudarijo predvsem robovi in podrobnosti, medtem ko se druge informacije izgubijo, kar prispeva k stopnji anonimizacije.\n",
"\n",
"<p style=\"margin-bottom:2cm;\"></p>\n",
"<img src=\"https://raw.githubusercontent.com/andrejkk/ORvTK_SlidesImgs/master/footer_full.jpg\">"
]
},
{
"cell_type": "markdown",
"id": "b2c6794a",
"metadata": {},
"source": [
"### 2.2. Algoritmi <a class=\"anchor\" id=\"algoritmi\"></a>\n",
"\n",
"\n",
"Preslikava oz. anonimizacija slik temelji na preprosti slikovni tehniki, ki vhod pretvori v sivinsko sliko, ki jo nato filtrira z Laplaceovim jedrom 5x5. Dobljeno sliko nato uporabimo kot vhod za klasifikator ali kot učni podatek. Za preslikavo se uporablja knjižnica [OpenCV](https://opencv.org/) v jeziku Python.\n",
"\n",
"Zaznavanje slik temelji na residualnem nevronskem omrežju [ResNet18 (2015)](https://arxiv.org/pdf/1512.03385). Model je namenjen klasifikaciji slik in je uporaben predvsem zaradi svoje procesne nezahtevnosti, kar je omogočalo raziskovanje na opremi potrošniške zmogljivosti. Model odlikuje tehnika residualnega učenja, ki vhodne podatke slojev prenaša oz. prišteje na njihov izhod, kar prinaša prednosti pri učenju omrežja.\n",
"\n",
"Trenutno obstajajo boljši modeli npr. [EfficientNet (2019)](https://arxiv.org/abs/1905.11946), ki zaradi svojih zahtev po zmogljivosti niso bili uporabljeni.\n",
"\n",
"Učenje modela poteka v jeziku Python s knjižnicami [pytorch](https://pytorch.org/) in [torchvision](https://docs.pytorch.org/vision/stable/index.html).\n",
"\n",
"\n",
"\n",
"<p style=\"margin-bottom:2cm;\"></p>\n",
"<img src=\"https://raw.githubusercontent.com/andrejkk/ORvTK_SlidesImgs/master/footer_full.jpg\">"
]
},
{
"cell_type": "markdown",
"id": "8822f3a3",
"metadata": {},
"source": [
"### 2.3. Merjenje uspešnosti rešitve <a class=\"anchor\" id=\"merjenje-uspesnosti-resitve\"></a>\n",
"\n",
"Merjenje uspešnosti rešitve temelji na natančnosti (angl. accuracy), ki predstavlja razmerje med pravilno razvrščenimi in vsemi vhodnimi slikami. Ta metrika ponuja osnovno informacijo o tem, kako uspešno model ločuje med resničnimi in z umetno inteligenco ustvarjenimi slikami. Vendar sama natančnost ni vedno zanesljiv pokazatelj učinkovitosti, zlasti v primeru neuravnoteženih podatkovnih množic.\n",
"\n",
"Zato je kot dopolnilna metrika uporabljena tudi ploščina pod ROC krivuljo (angl. Area Under the Receiver Operating Characteristic Curve AUC). ROC krivulja prikazuje razmerje med stopnjo pravilno pozitivnih in stopnjo lažno pozitivnih rezultatov pri različnih pragih odločanja. AUC tako ponuja bolj celovito oceno diskriminacijske sposobnosti modela vrednost bližje 1 pomeni visoko sposobnost ločevanja med obema razredoma, medtem ko vrednost okoli 0.5 nakazuje naključno odločanje.\n",
"\n",
"Z vključevanjem obeh metrik je mogoče natančneje oceniti kakovost modela, še posebej v kontekstu nalog, kjer je pomembna visoka občutljivost na napačno klasifikacijo umetno ustvarjenih slik kot resničnih (ali obratno), na primer v varnostnih in etičnih aplikacijah.\n",
"\n",
"</br>\n",
"<p style=\"margin-bottom:2cm;\"></p>\n",
"<img src=\"https://raw.githubusercontent.com/andrejkk/ORvTK_SlidesImgs/master/footer_full.jpg\">"
]
},
{
"cell_type": "markdown",
"id": "bbca58cb",
"metadata": {},
"source": [
"## 3. Eksperimentalni del <a class=\"anchor\" id=\"eksperimentalni-del\"></a>\n",
"\n",
"Eksperimentalni del sestavlja preslikava učne množice in priprava podatkov, učenje modela ter vrednotenje modela.\n",
"\n",
"\n",
"<p style=\"margin-bottom:2cm;\"></p>\n",
"<img src=\"https://raw.githubusercontent.com/andrejkk/ORvTK_SlidesImgs/master/footer_full.jpg\">"
]
},
{
"cell_type": "markdown",
"id": "0d84bb96",
"metadata": {},
"source": [
"### 3.1. Podatki <a class=\"anchor\" id=\"podatki\"></a>\n",
"Vhodni podatki izvirajo iz nabora [CIFAKE](https://www.kaggle.com/datasets/birdy654/cifake-real-and-ai-generated-synthetic-images), ki vsebuje slike iz učne množice [CIFAR-10](https://www.cs.toronto.edu/~kriz/cifar.html) ter njihove ponaredke. Nabor vključuje poenotene primere resničnih in sintetičnih slik, kar omogoča učenje modela za razločevanje med obema razredoma. Primeri so ločeni na učne in vrednotenjske podatke, nato pa na prave in ponarejene slike. Slike so za hitro učenje majhne, dimenzij 32x32 px.\n",
"\n",
"Za potrebe raziskave so bile vse slike predhodno obdelane s pomočjo Laplaceovega operatorja, pri čemer smo uporabili konvolucijski filter za izračun prostorskega odvoda. Ta postopek je bil izveden s pomočjo Python skripte, razvite posebej za to nalogo. Rezultat te obdelave je nov slikovni nabor poimenovan CIEDGE, ki vsebuje robne in teksturne značilnosti izvornih slik.\n",
"\n",
"<img height=128px src=\"./CIFAKE/test/FAKE/0.jpg\">\n",
"<img height=128px src=\"./CIEDGE/test/FAKE/0.jpg\">\n",
"\n",
"\n",
"<p style=\"margin-bottom:2cm;\"></p>\n",
"<img src=\"https://raw.githubusercontent.com/andrejkk/ORvTK_SlidesImgs/master/footer_full.jpg\">"
]
},
{
"cell_type": "markdown",
"id": "ae34a386",
"metadata": {},
"source": [
"### 3.2. Učenje modela <a class=\"anchor\" id=\"podatki\"></a>\n",
"Za model je bil uporabljen ResNet-18. Kot izhodišče je bil uporabljen vnaprej naučen model (angl. pre-trained), dostopen prek knjižnice torchvision. Model je bil nadalje umerjen (angl. fine-tuned) na naboru [CIFAKE](https://www.kaggle.com/datasets/birdy654/cifake-real-and-ai-generated-synthetic-images).\n",
"Trening je bil izveden na osebnem računalniku avtorja z grafično kartico AMD Vega 56 v okolju PyTorch z ROCM pospeševanjem. Po uspešnem učenju je bil model shranjen za nadaljnjo uporabo kot referenca.\n",
"\n",
"V drugem koraku se vnaprej naučen model dodatno umeri na novo ustvarjenem naboru CIEDGE, ki vsebuje Laplaceovo filtrirane slike. Ta korak je omogočil prilagoditev modela na drugačno predstavitev vhodnih podatkov takšno, ki ohranja samo robove in podrobnosti. Tudi ta model je bil shranjen za nadaljnjo uporabo.\n",
"\n",
"<p style=\"margin-bottom:2cm;\"></p>\n",
"<img src=\"https://raw.githubusercontent.com/andrejkk/ORvTK_SlidesImgs/master/footer_full.jpg\">"
]
},
{
"cell_type": "markdown",
"id": "e120716c",
"metadata": {},
"source": [
"### 3.2. Eksperimentalni rezultati <a class=\"anchor\" id=\"eksperimentalni-rezultati-1\"></a>\n",
"#### Natančnost (Accuracy)\n",
"\n",
"CIFAKE model s CIFAKE podatki: 97.55% \n",
"CIFAKE model s CIEDGE podatki: 62.73% \n",
"CIEDGE model s CIFAKE podatki: 50.09% \n",
"CIEDGE model s CIEDGE podatki: 93.19% \n",
"\n",
"\n",
"<p style=\"margin-bottom:2cm;\"></p>\n",
"<img src=\"https://raw.githubusercontent.com/andrejkk/ORvTK_SlidesImgs/master/footer_full.jpg\">"
]
},
{
"cell_type": "markdown",
"id": "fb263d01",
"metadata": {},
"source": [
"### 3.3. Eksperimentalni rezultati 2 <a class=\"anchor\" id=\"eksperimentalni-rezultati-2\"></a>\n",
"#### ROC Krivulje\n",
"\n",
"\n",
"<img src=\"./cfmcfd.png\">\n",
"<img src=\"./cfmced.png\">\n",
"<img src=\"./cemcfd.png\">\n",
"<img src=\"./cemced.png\">\n",
"\n",
"\n",
"<p style=\"margin-bottom:2cm;\"></p>\n",
"<img src=\"https://raw.githubusercontent.com/andrejkk/ORvTK_SlidesImgs/master/footer_full.jpg\">"
]
},
{
"cell_type": "markdown",
"id": "c74cc2ad",
"metadata": {},
"source": [
"## 4. Zaključek in razprava <a class=\"anchor\" id=\"zakljucek-in-razprava\"></a>\n",
"\n",
"Model, dodatno umerjen na naboru CIEDGE, dosega 98 % AUC pri klasifikaciji slik na anonimiziranem naboru podatkov, kar pomeni 25 odstotnih točk boljši rezultat v primerjavi z modelom, umerjenim zgolj na naboru CIFAKE, ki dosega AUC vrednost 73 %.\n",
"\n",
"Iz teh rezultatov lahko sklepamo, da je dodatno umerjanje modelov strojnega učenja na anonimiziranih podatkih učinkovita strategija za zaznavanje z umetno inteligenco generiranih slik tudi kadar vhodni podatki ne vsebujejo vseh originalnih vizualnih informacij.\n",
"\n",
"V prihodnje bi bilo smiselno ovrednotiti uporabo novejših modelov globokega učenja, širših in bolj raznolikih podatkovnih množic ter alternativnih metod anonimizacije, da bi še izboljšali robustnost in prenosljivost rešitve.\n",
"\n",
"\n",
"<p style=\"margin-bottom:2cm;\"></p>\n",
"<img src=\"https://raw.githubusercontent.com/andrejkk/ORvTK_SlidesImgs/master/footer_full.jpg\">"
]
},
{
"cell_type": "markdown",
"id": "cc63b80c",
"metadata": {},
"source": [
"## 5. Doseženi učni izidi <a class=\"anchor\" id=\"dosezeni-ucni-izidi\"></a>\n",
"\n",
"Ob izdelavi raziskovalne naloge sem pridobil pomembno znanje o osnovah strojnega učenja. Naučil sem se umerjanja in vrednotenja modelov strojnega učenja ter praktično uporabil predhodno pridobljeno znanje obdelave slik.\n",
"\n",
"\n",
"<p style=\"margin-bottom:2cm;\"></p>\n",
"<img src=\"https://raw.githubusercontent.com/andrejkk/ORvTK_SlidesImgs/master/footer_full.jpg\">"
]
},
{
"cell_type": "markdown",
"id": "2b95fe2f",
"metadata": {},
"source": [
"## 6. Literatura in viri <a class=\"anchor\" id=\"literatura-in-viri\"></a>\n",
"Pomembni članki uporabljenih naborov in modelov:\n",
"+ K. He, X. Zhang, S. Ren, in J. Sun, „Deep Residual Learning for Image Recognition“. arXiv, 10. december 2015. doi: 10.48550/arXiv.1512.03385. Dostopno na: http://arxiv.org/abs/1512.03385. [Pridobljeno: 10. maj 2025]\n",
"+ M. Tan in Q. V. Le, „EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks“. arXiv, 11. september 2020. doi: 10.48550/arXiv.1905.11946. Dostopno na: http://arxiv.org/abs/1905.11946. [Pridobljeno: 10. maj 2025]\n",
"+ L. Wang, Q. Hu, W. Lu, in X. Luo, „Diffusion-based Adversarial Identity Manipulation for Facial Privacy Protection“. arXiv, 30. april 2025. doi: 10.48550/arXiv.2504.21646. Dostopno na: http://arxiv.org/abs/2504.21646. [Pridobljeno: 10. maj 2025]\n",
"+J. J. Bird in A. Lotfi, „CIFAKE: Image Classification and Explainable Identification of AI-Generated Synthetic Images“, IEEE Access, let. 12, str. 1564215650, 2024, doi: 10.1109/ACCESS.2024.3356122\n",
"+A. Krizhevsky, „Learning Multiple Layers of Features from Tiny Images“, University of Toronto, maj 2012.\n",
"\n",
"Dokumentacija uporabljenih programskih knjižnic:\n",
"+ [PyTorch](https://docs.pytorch.org/docs/stable/index.html)\n",
"+ [TorchVision](https://docs.pytorch.org/vision/stable/index.html)\n",
"+ [TQDM](https://tqdm.github.io/)\n",
"+ [OpenCV](https://opencv.org/)\n",
"\n",
"Programska koda projekta je prosto dostopna na avtorjevem GIT repozitoriju https://git.piskot.si/kristjank/ovt-projekt\n",
"\n",
"<p style=\"margin-bottom:2cm;\"></p>\n",
"<img src=\"https://raw.githubusercontent.com/andrejkk/ORvTK_SlidesImgs/master/footer_full.jpg\">"
]
}
],
"metadata": {
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 5
}