Yüz Tanıma Sistemi

Rewan

'Türk ün yaveri
26 Kas 2020
2,032
1,494
Konum
Geçmişten günümüze güvenlik sistemleri ve kimlik doğrulama çok önemli bir alan olmuştur. Bu alanlarda kullanılan bir yöntemde biyometrik verilerimizdir bu verilerin değiştirilmesi pek mümkün olmadığı için kimlik doğrulama ve tespitinde günümüzde çok fazla kullanılmaktadır gerek iyi gerek asyadaki insan fişleme sistemlerinde olduğu gibi.

Yüz tanıma sistemleri temel olarak insan yüzünün matematiksel farklılıklarını kullanır ve buna göre çalışır. Yüzün belirli noktaları referans alınır ve Trigonometri kullanılarak bunların uzaklıkları hesaplanır bu okulda bize öğretilen formül ezberleme durumu gibi değildir tabiki. Hesaplama sonucunda yüze özel bir oran çıkar bu oran sayesinde işlemler yapılır.

Günümüzde kullanılan bazı yüz tanıma ve tespit modelleri.

  • FaceNet (Google)​
  • ArchFace​
  • VGGFace​
  • DeepFace​
  • LightCNN (Microsoft)​

Biz osint serisinin bu dersinde exadel-inc in açık kaynak olarak sunduğu CompreFace yazılımının kurulum ve kullanımı görecez. Neden bu yazılım noktasına gelirsek diğer sistemlere göre webUI ile kullanımı ve yönetimi daha basit ve ek ayalarmalara gerek duymadan oldukça iyi sonuçlar veriyor.

CompreFace kurulum ve kullanımı:

CompreFace resmi GitHub sayfası

Biz ön tanımlı model yerine daha yavaş ama daha doğru sonuçlar veren ArchFace modeli ile kurulum yapacaz o yüzden release kısmı yerie direk repodan bize gereken kısmı çekelim.

Kod:
# Çalışma klasörümüzü açalım
mkdir CompreFace

# Çalışma klasörüne girelim
cd CompreFace

# Docker Compose için ana dosya
wget https://raw.githubusercontent.com/exadel-inc/CompreFace/master/custom-builds/SubCenter-ArcFace-r100/docker-compose.yml

# Değişken bilgilerini içeren dosya
wget https://raw.githubusercontent.com/exadel-inc/CompreFace/master/custom-builds/SubCenter-ArcFace-r100/.env

Reponun boyutu bir tık büyük olduğu için (yaklaşık 300mb) direk tüm repoyu çekmeye gerek yok.

l12984o.png


Görüldüğü gibi gerekli dosyalarımız gelmiş şimdi bunu çalıştırmak için gerekli olan docker ve docker-compose paketlerimizi kuralım.

Kod:
# DockerCompose ile docker otomatik kurulacaktır
sudo apt install docker-compose -y

docker-compose nin çalışması için docker'in servis olarak arkaplanda çalışması gerekiyor bu nedenle başlatma veya kurulum öncesi buna dikkat ediyoruz.

Kod:
# servis açıksada kapaıp açar değilse sadece açılmasını sağlar
sudo systemctl restart docker

Şimdi CompreFace çalışma klasörümüzde aşşağıdaki komutu vererek kurulumu başlatabiliriz.


Kod:
sudo docker-compose up -d

bd6suyf.png


Yukarıdaki resimde görüldüğü gibi gerekli indirmeleri yapmaya başladı bu işlem internet hızınıza bağlı olarak süresi değişecektir ama fikir vermek açısından indirme sonrası boyutlar altdaki resimdeki gibi olacaktır.

crwrd3a.png


Bende ek olarak GPU modeli kurulu o nedenle ek olarak görünüyor ama uyumluluk için bu yazıda CPU üzerinden çalışan modeli kurmaktayız yani o kadar alan yemicektir sizde.​

İndirmeler bittikten sonra başlatma kullanım ve durdurma.


Evet indirmelerimiz ve kurulumlarımız bitti şimdi başlatma ve kullanıma sonrasındada kaynak yememesi için durdurma kısımlarına bakalım.
İndirme işlemi sonrasında otomatik başlayacaktır sistem ama başlatma komutumuz zaten aynı.

Kod:
# Çalışma dizini içerisinde çalıştırılması gerek
sudo docker-compose up -d

gomncvr.png


Başlatmalar esnasında fan hızı artlabilir doğal olarak hafif bir program değil çünkü. Şimdi web arayüzüne girmek için tarayıcıdan `http://localhost:8000` adresine gidelim.

dpdp5u6.png


Burada ilk girişinizde admin hesabı oluşturmanızı isticektir aktif bir mail ile oluşturmanızı öneririm çünkü şifreyi unutursanız pek tatlı olmaz sonu uğraşırsınız. Bende direk login ekranı geldi çünkü aktif olarak hesabım var kendi sistemimde.

i98e2o5.PNG


Giriş yaptığınız zaman ilk olarak bir uygulama oluşturmanızı ister oluşturmasanızda daha sonra oluşturulabilir. Sizi karşılicak ekran aşşağı yukarı üstdeki resimdeki gibidir, sağ üstteki uygulama oluştur simgesine tıklayıp kendimize bir uygulama açalım.

NOT: Ayrıca test yapmanız için hazır bir demo uygulamada gelmektedir içinde.

iziey6q.PNG


Şimdi oluşturduğumuz uygulamanın içine girince boş olacaktır çünkü bu uygulama için servis tanımlamadık gene sağ üstteki oluştur butonu ile kendimize amacımıza uygun bir servis açalım. Açabileceğimiz 3 tip servis vardır bunlar RECOGNITION (Çok sayıda yüz eklediğimiz bir veritabanından yüz arama), DETECTION (sadece tespit etme), VERIFICATION (bize en cok lazım olan yüz doğrulama) servisleridir biz verification seçiyoruz ve oluşturalım.

sv7zlkx.PNG


Oluşturduktan sonra otomatik olarak listeye gelecektir bu listeden tıklayıp girelim altdaki gibi bir ekran bizi karşılicaktır.


v6687lx.PNG


Yukarıdaki resmimize bakalım ve temel olarak gördüklerimizi inceliyelim şimdi. Burada bize servisin adı, tipi, oluşturulma tarihi, sdk'ler için api keyimizi vermis alt kısımda no data diyen kısımlar kullanım istatistikleri kısmıdır zamanla oluşmaya başlar. Sağ taraftaki menüden Test kısmına girersek artık doğrulama için kullanacağımız ekrana gelmiş oluruz, tıklayıp girelim.

ars48a9.PNG


Üstteki ekran'da göründüğü gibi 2 adet resim seçmemiz isteniyor. Burada dikkat edilmesi gereken nokta soldaki resim bizim hedef resmimiz olmalıdır yani bildiğimiz veya aradığımız kişi olmalı oraya konacak resim ve sol kısıma sadece içinde 1 adet yüz bulunan bir resim konulması gerekiyor yoksa hataverecektir sağdaki kısma çok fazla yüz içeren resimler konulabilir o resimdeki yüzlerin çoğunu algılar ve test eder şimdi denemeye geçelim.

tu63z89.PNG


İlk karşılaştırmalarımızı rahmetli Kemal Sunal üzerinden yapalım yukarıda göründüğü gibi. Cinsiyet tahmini pek tutarlı olmasada yaş tahmini iyi denecek seviyededir yüz benzerliği konusunda OSINT için yeterli düzeyde bir veri modeli var dnebilir. Benzerlik oranı sol resimdeki mavi kutuda similarity olarak geçer bu oran 0.x olarak yazar 1.0 = %100 şeklindedir doğru bir tespit ama bir sistem sadece aynı resimlerle denenmez birde farklı resimler ile deneyelim.

Not: Altdaki response yazan kısımlara tıklarsanız api ile olan iletişimi gösterir analiz esanasındaki.


1cd648c.PNG


ve maalesef Messi Cengiz Ünder Değilmiş :(

Doğruluğu etkileyen faktörler nelerdir?


Bu işlemin doğruluğunu pek çok faktör belirler.​
  • Resim çözünürklüğü​
  • Kişinin duruş pozisyonu​
  • Işıklandırma​
  • Sonradan oluşan yaralar ve estetik operasyonlar​
  • Genetik benzerlikler​
  • Yetersiz veri modeli​
Çok düşük çözünürklük yüz hatlarının yanlış tanınmasına, yandan çekilmiş bir resim yeteri kadar yüz hattının algılanmamasına sebep olabilir. Aynı şekilde mesela bülent ersoy gibi aşırı estetik geçiren birisinin öneki hali yüz tanıma ile tespit edilemez bunun yanı sıra dünya üzerinde yüz hatları bize %90 civarı benzeyen ortlama 7 kişi vardır bunlarda algoritmayı kandırabilir ve özellikle yetersiz veri modelide yanlış tanımlamaya neden olabilir CompreFace başlangıç için yeterli denebilecek bir veri modeliyle gelir ama.


Yukarıdaki pek çok durumu kendim test ederek bunu doğruladım.

Programı kapatma.


İşimiz bittikten sonra böyle güçlü bir sistemi aktif tutmaya gerek yoktur kapatabiliriz herhangi bir veri kaybımız vs olmaz tekrar başlatınca geri gelir. Kapatmak için komutumuz şudur.

Kod:
sudo docker-compose down


Umarım işinize yaramıştır bir beğeniyi çok görmeyelim :)
 

katherine7

Yeni üye
24 Eki 2023
38
13
.
Geçmişten günümüze güvenlik sistemleri ve kimlik doğrulama çok önemli bir alan olmuştur. Bu alanlarda kullanılan bir yöntemde biyometrik verilerimizdir bu verilerin değiştirilmesi pek mümkün olmadığı için kimlik doğrulama ve tespitinde günümüzde çok fazla kullanılmaktadır gerek iyi gerek asyadaki insan fişleme sistemlerinde olduğu gibi.

Yüz tanıma sistemleri temel olarak insan yüzünün matematiksel farklılıklarını kullanır ve buna göre çalışır. Yüzün belirli noktaları referans alınır ve Trigonometri kullanılarak bunların uzaklıkları hesaplanır bu okulda bize öğretilen formül ezberleme durumu gibi değildir tabiki. Hesaplama sonucunda yüze özel bir oran çıkar bu oran sayesinde işlemler yapılır.

Günümüzde kullanılan bazı yüz tanıma ve tespit modelleri.

  • FaceNet (Google)​
  • ArchFace​
  • VGGFace​
  • DeepFace​
  • LightCNN (Microsoft)​

Biz osint serisinin bu dersinde exadel-inc in açık kaynak olarak sunduğu CompreFace yazılımının kurulum ve kullanımı görecez. Neden bu yazılım noktasına gelirsek diğer sistemlere göre webUI ile kullanımı ve yönetimi daha basit ve ek ayalarmalara gerek duymadan oldukça iyi sonuçlar veriyor.

CompreFace kurulum ve kullanımı:

CompreFace resmi GitHub sayfası

Biz ön tanımlı model yerine daha yavaş ama daha doğru sonuçlar veren ArchFace modeli ile kurulum yapacaz o yüzden release kısmı yerie direk repodan bize gereken kısmı çekelim.

Kod:
# Çalışma klasörümüzü açalım
mkdir CompreFace

# Çalışma klasörüne girelim
cd CompreFace

# Docker Compose için ana dosya
wget https://raw.githubusercontent.com/exadel-inc/CompreFace/master/custom-builds/SubCenter-ArcFace-r100/docker-compose.yml

# Değişken bilgilerini içeren dosya
wget https://raw.githubusercontent.com/exadel-inc/CompreFace/master/custom-builds/SubCenter-ArcFace-r100/.env

Reponun boyutu bir tık büyük olduğu için (yaklaşık 300mb) direk tüm repoyu çekmeye gerek yok.

l12984o.png


Görüldüğü gibi gerekli dosyalarımız gelmiş şimdi bunu çalıştırmak için gerekli olan docker ve docker-compose paketlerimizi kuralım.

Kod:
# DockerCompose ile docker otomatik kurulacaktır
sudo apt install docker-compose -y

docker-compose nin çalışması için docker'in servis olarak arkaplanda çalışması gerekiyor bu nedenle başlatma veya kurulum öncesi buna dikkat ediyoruz.

Kod:
# servis açıksada kapaıp açar değilse sadece açılmasını sağlar
sudo systemctl restart docker

Şimdi CompreFace çalışma klasörümüzde aşşağıdaki komutu vererek kurulumu başlatabiliriz.


Kod:
sudo docker-compose up -d

bd6suyf.png


Yukarıdaki resimde görüldüğü gibi gerekli indirmeleri yapmaya başladı bu işlem internet hızınıza bağlı olarak süresi değişecektir ama fikir vermek açısından indirme sonrası boyutlar altdaki resimdeki gibi olacaktır.

crwrd3a.png


Bende ek olarak GPU modeli kurulu o nedenle ek olarak görünüyor ama uyumluluk için bu yazıda CPU üzerinden çalışan modeli kurmaktayız yani o kadar alan yemicektir sizde.​

İndirmeler bittikten sonra başlatma kullanım ve durdurma.


Evet indirmelerimiz ve kurulumlarımız bitti şimdi başlatma ve kullanıma sonrasındada kaynak yememesi için durdurma kısımlarına bakalım.
İndirme işlemi sonrasında otomatik başlayacaktır sistem ama başlatma komutumuz zaten aynı.

Kod:
# Çalışma dizini içerisinde çalıştırılması gerek
sudo docker-compose up -d

gomncvr.png


Başlatmalar esnasında fan hızı artlabilir doğal olarak hafif bir program değil çünkü. Şimdi web arayüzüne girmek için tarayıcıdan `http://localhost:8000` adresine gidelim.

dpdp5u6.png


Burada ilk girişinizde admin hesabı oluşturmanızı isticektir aktif bir mail ile oluşturmanızı öneririm çünkü şifreyi unutursanız pek tatlı olmaz sonu uğraşırsınız. Bende direk login ekranı geldi çünkü aktif olarak hesabım var kendi sistemimde.

i98e2o5.PNG


Giriş yaptığınız zaman ilk olarak bir uygulama oluşturmanızı ister oluşturmasanızda daha sonra oluşturulabilir. Sizi karşılicak ekran aşşağı yukarı üstdeki resimdeki gibidir, sağ üstteki uygulama oluştur simgesine tıklayıp kendimize bir uygulama açalım.

NOT: Ayrıca test yapmanız için hazır bir demo uygulamada gelmektedir içinde.

iziey6q.PNG


Şimdi oluşturduğumuz uygulamanın içine girince boş olacaktır çünkü bu uygulama için servis tanımlamadık gene sağ üstteki oluştur butonu ile kendimize amacımıza uygun bir servis açalım. Açabileceğimiz 3 tip servis vardır bunlar RECOGNITION (Çok sayıda yüz eklediğimiz bir veritabanından yüz arama), DETECTION (sadece tespit etme), VERIFICATION (bize en cok lazım olan yüz doğrulama) servisleridir biz verification seçiyoruz ve oluşturalım.

sv7zlkx.PNG


Oluşturduktan sonra otomatik olarak listeye gelecektir bu listeden tıklayıp girelim altdaki gibi bir ekran bizi karşılicaktır.


v6687lx.PNG


Yukarıdaki resmimize bakalım ve temel olarak gördüklerimizi inceliyelim şimdi. Burada bize servisin adı, tipi, oluşturulma tarihi, sdk'ler için api keyimizi vermis alt kısımda no data diyen kısımlar kullanım istatistikleri kısmıdır zamanla oluşmaya başlar. Sağ taraftaki menüden Test kısmına girersek artık doğrulama için kullanacağımız ekrana gelmiş oluruz, tıklayıp girelim.

ars48a9.PNG


Üstteki ekran'da göründüğü gibi 2 adet resim seçmemiz isteniyor. Burada dikkat edilmesi gereken nokta soldaki resim bizim hedef resmimiz olmalıdır yani bildiğimiz veya aradığımız kişi olmalı oraya konacak resim ve sol kısıma sadece içinde 1 adet yüz bulunan bir resim konulması gerekiyor yoksa hataverecektir sağdaki kısma çok fazla yüz içeren resimler konulabilir o resimdeki yüzlerin çoğunu algılar ve test eder şimdi denemeye geçelim.

tu63z89.PNG


İlk karşılaştırmalarımızı rahmetli Kemal Sunal üzerinden yapalım yukarıda göründüğü gibi. Cinsiyet tahmini pek tutarlı olmasada yaş tahmini iyi denecek seviyededir yüz benzerliği konusunda OSINT için yeterli düzeyde bir veri modeli var dnebilir. Benzerlik oranı sol resimdeki mavi kutuda similarity olarak geçer bu oran 0.x olarak yazar 1.0 = %100 şeklindedir doğru bir tespit ama bir sistem sadece aynı resimlerle denenmez birde farklı resimler ile deneyelim.

Not: Altdaki response yazan kısımlara tıklarsanız api ile olan iletişimi gösterir analiz esanasındaki.


1cd648c.PNG


ve maalesef Messi Cengiz Ünder Değilmiş :(

Doğruluğu etkileyen faktörler nelerdir?


Bu işlemin doğruluğunu pek çok faktör belirler.​
  • Resim çözünürklüğü​
  • Kişinin duruş pozisyonu​
  • Işıklandırma​
  • Sonradan oluşan yaralar ve estetik operasyonlar​
  • Genetik benzerlikler​
  • Yetersiz veri modeli​
Çok düşük çözünürklük yüz hatlarının yanlış tanınmasına, yandan çekilmiş bir resim yeteri kadar yüz hattının algılanmamasına sebep olabilir. Aynı şekilde mesela bülent ersoy gibi aşırı estetik geçiren birisinin öneki hali yüz tanıma ile tespit edilemez bunun yanı sıra dünya üzerinde yüz hatları bize %90 civarı benzeyen ortlama 7 kişi vardır bunlarda algoritmayı kandırabilir ve özellikle yetersiz veri modelide yanlış tanımlamaya neden olabilir CompreFace başlangıç için yeterli denebilecek bir veri modeliyle gelir ama.


Yukarıdaki pek çok durumu kendim test ederek bunu doğruladım.

Programı kapatma.


İşimiz bittikten sonra böyle güçlü bir sistemi aktif tutmaya gerek yoktur kapatabiliriz herhangi bir veri kaybımız vs olmaz tekrar başlatınca geri gelir. Kapatmak için komutumuz şudur.

Kod:
sudo docker-compose down


Umarım işinize yaramıştır bir beğeniyi çok görmeyelim :)
eline sağlık :d
 

drjacob

Uzman üye
21 Ocak 2012
1,803
421
localhost
Geçmişten günümüze güvenlik sistemleri ve kimlik doğrulama çok önemli bir alan olmuştur. Bu alanlarda kullanılan bir yöntemde biyometrik verilerimizdir bu verilerin değiştirilmesi pek mümkün olmadığı için kimlik doğrulama ve tespitinde günümüzde çok fazla kullanılmaktadır gerek iyi gerek asyadaki insan fişleme sistemlerinde olduğu gibi.

Yüz tanıma sistemleri temel olarak insan yüzünün matematiksel farklılıklarını kullanır ve buna göre çalışır. Yüzün belirli noktaları referans alınır ve Trigonometri kullanılarak bunların uzaklıkları hesaplanır bu okulda bize öğretilen formül ezberleme durumu gibi değildir tabiki. Hesaplama sonucunda yüze özel bir oran çıkar bu oran sayesinde işlemler yapılır.

Günümüzde kullanılan bazı yüz tanıma ve tespit modelleri.

  • FaceNet (Google)​
  • ArchFace​
  • VGGFace​
  • DeepFace​
  • LightCNN (Microsoft)​

Biz osint serisinin bu dersinde exadel-inc in açık kaynak olarak sunduğu CompreFace yazılımının kurulum ve kullanımı görecez. Neden bu yazılım noktasına gelirsek diğer sistemlere göre webUI ile kullanımı ve yönetimi daha basit ve ek ayalarmalara gerek duymadan oldukça iyi sonuçlar veriyor.

CompreFace kurulum ve kullanımı:

CompreFace resmi GitHub sayfası

Biz ön tanımlı model yerine daha yavaş ama daha doğru sonuçlar veren ArchFace modeli ile kurulum yapacaz o yüzden release kısmı yerie direk repodan bize gereken kısmı çekelim.

Kod:
# Çalışma klasörümüzü açalım
mkdir CompreFace

# Çalışma klasörüne girelim
cd CompreFace

# Docker Compose için ana dosya
wget https://raw.githubusercontent.com/exadel-inc/CompreFace/master/custom-builds/SubCenter-ArcFace-r100/docker-compose.yml

# Değişken bilgilerini içeren dosya
wget https://raw.githubusercontent.com/exadel-inc/CompreFace/master/custom-builds/SubCenter-ArcFace-r100/.env

Reponun boyutu bir tık büyük olduğu için (yaklaşık 300mb) direk tüm repoyu çekmeye gerek yok.

l12984o.png


Görüldüğü gibi gerekli dosyalarımız gelmiş şimdi bunu çalıştırmak için gerekli olan docker ve docker-compose paketlerimizi kuralım.

Kod:
# DockerCompose ile docker otomatik kurulacaktır
sudo apt install docker-compose -y

docker-compose nin çalışması için docker'in servis olarak arkaplanda çalışması gerekiyor bu nedenle başlatma veya kurulum öncesi buna dikkat ediyoruz.

Kod:
# servis açıksada kapaıp açar değilse sadece açılmasını sağlar
sudo systemctl restart docker

Şimdi CompreFace çalışma klasörümüzde aşşağıdaki komutu vererek kurulumu başlatabiliriz.


Kod:
sudo docker-compose up -d

bd6suyf.png


Yukarıdaki resimde görüldüğü gibi gerekli indirmeleri yapmaya başladı bu işlem internet hızınıza bağlı olarak süresi değişecektir ama fikir vermek açısından indirme sonrası boyutlar altdaki resimdeki gibi olacaktır.

crwrd3a.png


Bende ek olarak GPU modeli kurulu o nedenle ek olarak görünüyor ama uyumluluk için bu yazıda CPU üzerinden çalışan modeli kurmaktayız yani o kadar alan yemicektir sizde.​

İndirmeler bittikten sonra başlatma kullanım ve durdurma.


Evet indirmelerimiz ve kurulumlarımız bitti şimdi başlatma ve kullanıma sonrasındada kaynak yememesi için durdurma kısımlarına bakalım.
İndirme işlemi sonrasında otomatik başlayacaktır sistem ama başlatma komutumuz zaten aynı.

Kod:
# Çalışma dizini içerisinde çalıştırılması gerek
sudo docker-compose up -d

gomncvr.png


Başlatmalar esnasında fan hızı artlabilir doğal olarak hafif bir program değil çünkü. Şimdi web arayüzüne girmek için tarayıcıdan `http://localhost:8000` adresine gidelim.

dpdp5u6.png


Burada ilk girişinizde admin hesabı oluşturmanızı isticektir aktif bir mail ile oluşturmanızı öneririm çünkü şifreyi unutursanız pek tatlı olmaz sonu uğraşırsınız. Bende direk login ekranı geldi çünkü aktif olarak hesabım var kendi sistemimde.

i98e2o5.PNG


Giriş yaptığınız zaman ilk olarak bir uygulama oluşturmanızı ister oluşturmasanızda daha sonra oluşturulabilir. Sizi karşılicak ekran aşşağı yukarı üstdeki resimdeki gibidir, sağ üstteki uygulama oluştur simgesine tıklayıp kendimize bir uygulama açalım.

NOT: Ayrıca test yapmanız için hazır bir demo uygulamada gelmektedir içinde.

iziey6q.PNG


Şimdi oluşturduğumuz uygulamanın içine girince boş olacaktır çünkü bu uygulama için servis tanımlamadık gene sağ üstteki oluştur butonu ile kendimize amacımıza uygun bir servis açalım. Açabileceğimiz 3 tip servis vardır bunlar RECOGNITION (Çok sayıda yüz eklediğimiz bir veritabanından yüz arama), DETECTION (sadece tespit etme), VERIFICATION (bize en cok lazım olan yüz doğrulama) servisleridir biz verification seçiyoruz ve oluşturalım.

sv7zlkx.PNG


Oluşturduktan sonra otomatik olarak listeye gelecektir bu listeden tıklayıp girelim altdaki gibi bir ekran bizi karşılicaktır.


v6687lx.PNG


Yukarıdaki resmimize bakalım ve temel olarak gördüklerimizi inceliyelim şimdi. Burada bize servisin adı, tipi, oluşturulma tarihi, sdk'ler için api keyimizi vermis alt kısımda no data diyen kısımlar kullanım istatistikleri kısmıdır zamanla oluşmaya başlar. Sağ taraftaki menüden Test kısmına girersek artık doğrulama için kullanacağımız ekrana gelmiş oluruz, tıklayıp girelim.

ars48a9.PNG


Üstteki ekran'da göründüğü gibi 2 adet resim seçmemiz isteniyor. Burada dikkat edilmesi gereken nokta soldaki resim bizim hedef resmimiz olmalıdır yani bildiğimiz veya aradığımız kişi olmalı oraya konacak resim ve sol kısıma sadece içinde 1 adet yüz bulunan bir resim konulması gerekiyor yoksa hataverecektir sağdaki kısma çok fazla yüz içeren resimler konulabilir o resimdeki yüzlerin çoğunu algılar ve test eder şimdi denemeye geçelim.

tu63z89.PNG


İlk karşılaştırmalarımızı rahmetli Kemal Sunal üzerinden yapalım yukarıda göründüğü gibi. Cinsiyet tahmini pek tutarlı olmasada yaş tahmini iyi denecek seviyededir yüz benzerliği konusunda OSINT için yeterli düzeyde bir veri modeli var dnebilir. Benzerlik oranı sol resimdeki mavi kutuda similarity olarak geçer bu oran 0.x olarak yazar 1.0 = %100 şeklindedir doğru bir tespit ama bir sistem sadece aynı resimlerle denenmez birde farklı resimler ile deneyelim.

Not: Altdaki response yazan kısımlara tıklarsanız api ile olan iletişimi gösterir analiz esanasındaki.


1cd648c.PNG


ve maalesef Messi Cengiz Ünder Değilmiş :(

Doğruluğu etkileyen faktörler nelerdir?


Bu işlemin doğruluğunu pek çok faktör belirler.​
  • Resim çözünürklüğü​
  • Kişinin duruş pozisyonu​
  • Işıklandırma​
  • Sonradan oluşan yaralar ve estetik operasyonlar​
  • Genetik benzerlikler​
  • Yetersiz veri modeli​
Çok düşük çözünürklük yüz hatlarının yanlış tanınmasına, yandan çekilmiş bir resim yeteri kadar yüz hattının algılanmamasına sebep olabilir. Aynı şekilde mesela bülent ersoy gibi aşırı estetik geçiren birisinin öneki hali yüz tanıma ile tespit edilemez bunun yanı sıra dünya üzerinde yüz hatları bize %90 civarı benzeyen ortlama 7 kişi vardır bunlarda algoritmayı kandırabilir ve özellikle yetersiz veri modelide yanlış tanımlamaya neden olabilir CompreFace başlangıç için yeterli denebilecek bir veri modeliyle gelir ama.


Yukarıdaki pek çok durumu kendim test ederek bunu doğruladım.

Programı kapatma.


İşimiz bittikten sonra böyle güçlü bir sistemi aktif tutmaya gerek yoktur kapatabiliriz herhangi bir veri kaybımız vs olmaz tekrar başlatınca geri gelir. Kapatmak için komutumuz şudur.

Kod:
sudo docker-compose down


Umarım işinize yaramıştır bir beğeniyi çok görmeyelim :)
eline sağlık
 

kazoka

Üye
22 Ocak 2019
138
39
Geçmişten günümüze güvenlik sistemleri ve kimlik doğrulama çok önemli bir alan olmuştur. Bu alanlarda kullanılan bir yöntemde biyometrik verilerimizdir bu verilerin değiştirilmesi pek mümkün olmadığı için kimlik doğrulama ve tespitinde günümüzde çok fazla kullanılmaktadır gerek iyi gerek asyadaki insan fişleme sistemlerinde olduğu gibi.

Yüz tanıma sistemleri temel olarak insan yüzünün matematiksel farklılıklarını kullanır ve buna göre çalışır. Yüzün belirli noktaları referans alınır ve Trigonometri kullanılarak bunların uzaklıkları hesaplanır bu okulda bize öğretilen formül ezberleme durumu gibi değildir tabiki. Hesaplama sonucunda yüze özel bir oran çıkar bu oran sayesinde işlemler yapılır.

Günümüzde kullanılan bazı yüz tanıma ve tespit modelleri.

  • FaceNet (Google)​
  • ArchFace​
  • VGGFace​
  • DeepFace​
  • LightCNN (Microsoft)​

Biz osint serisinin bu dersinde exadel-inc in açık kaynak olarak sunduğu CompreFace yazılımının kurulum ve kullanımı görecez. Neden bu yazılım noktasına gelirsek diğer sistemlere göre webUI ile kullanımı ve yönetimi daha basit ve ek ayalarmalara gerek duymadan oldukça iyi sonuçlar veriyor.

CompreFace kurulum ve kullanımı:

CompreFace resmi GitHub sayfası

Biz ön tanımlı model yerine daha yavaş ama daha doğru sonuçlar veren ArchFace modeli ile kurulum yapacaz o yüzden release kısmı yerie direk repodan bize gereken kısmı çekelim.

Kod:
# Çalışma klasörümüzü açalım
mkdir CompreFace

# Çalışma klasörüne girelim
cd CompreFace

# Docker Compose için ana dosya
wget https://raw.githubusercontent.com/exadel-inc/CompreFace/master/custom-builds/SubCenter-ArcFace-r100/docker-compose.yml

# Değişken bilgilerini içeren dosya
wget https://raw.githubusercontent.com/exadel-inc/CompreFace/master/custom-builds/SubCenter-ArcFace-r100/.env

Reponun boyutu bir tık büyük olduğu için (yaklaşık 300mb) direk tüm repoyu çekmeye gerek yok.

l12984o.png


Görüldüğü gibi gerekli dosyalarımız gelmiş şimdi bunu çalıştırmak için gerekli olan docker ve docker-compose paketlerimizi kuralım.

Kod:
# DockerCompose ile docker otomatik kurulacaktır
sudo apt install docker-compose -y

docker-compose nin çalışması için docker'in servis olarak arkaplanda çalışması gerekiyor bu nedenle başlatma veya kurulum öncesi buna dikkat ediyoruz.

Kod:
# servis açıksada kapaıp açar değilse sadece açılmasını sağlar
sudo systemctl restart docker

Şimdi CompreFace çalışma klasörümüzde aşşağıdaki komutu vererek kurulumu başlatabiliriz.


Kod:
sudo docker-compose up -d

bd6suyf.png


Yukarıdaki resimde görüldüğü gibi gerekli indirmeleri yapmaya başladı bu işlem internet hızınıza bağlı olarak süresi değişecektir ama fikir vermek açısından indirme sonrası boyutlar altdaki resimdeki gibi olacaktır.

crwrd3a.png


Bende ek olarak GPU modeli kurulu o nedenle ek olarak görünüyor ama uyumluluk için bu yazıda CPU üzerinden çalışan modeli kurmaktayız yani o kadar alan yemicektir sizde.​

İndirmeler bittikten sonra başlatma kullanım ve durdurma.


Evet indirmelerimiz ve kurulumlarımız bitti şimdi başlatma ve kullanıma sonrasındada kaynak yememesi için durdurma kısımlarına bakalım.
İndirme işlemi sonrasında otomatik başlayacaktır sistem ama başlatma komutumuz zaten aynı.

Kod:
# Çalışma dizini içerisinde çalıştırılması gerek
sudo docker-compose up -d

gomncvr.png


Başlatmalar esnasında fan hızı artlabilir doğal olarak hafif bir program değil çünkü. Şimdi web arayüzüne girmek için tarayıcıdan `http://localhost:8000` adresine gidelim.

dpdp5u6.png


Burada ilk girişinizde admin hesabı oluşturmanızı isticektir aktif bir mail ile oluşturmanızı öneririm çünkü şifreyi unutursanız pek tatlı olmaz sonu uğraşırsınız. Bende direk login ekranı geldi çünkü aktif olarak hesabım var kendi sistemimde.

i98e2o5.PNG


Giriş yaptığınız zaman ilk olarak bir uygulama oluşturmanızı ister oluşturmasanızda daha sonra oluşturulabilir. Sizi karşılicak ekran aşşağı yukarı üstdeki resimdeki gibidir, sağ üstteki uygulama oluştur simgesine tıklayıp kendimize bir uygulama açalım.

NOT: Ayrıca test yapmanız için hazır bir demo uygulamada gelmektedir içinde.

iziey6q.PNG


Şimdi oluşturduğumuz uygulamanın içine girince boş olacaktır çünkü bu uygulama için servis tanımlamadık gene sağ üstteki oluştur butonu ile kendimize amacımıza uygun bir servis açalım. Açabileceğimiz 3 tip servis vardır bunlar RECOGNITION (Çok sayıda yüz eklediğimiz bir veritabanından yüz arama), DETECTION (sadece tespit etme), VERIFICATION (bize en cok lazım olan yüz doğrulama) servisleridir biz verification seçiyoruz ve oluşturalım.

sv7zlkx.PNG


Oluşturduktan sonra otomatik olarak listeye gelecektir bu listeden tıklayıp girelim altdaki gibi bir ekran bizi karşılicaktır.


v6687lx.PNG


Yukarıdaki resmimize bakalım ve temel olarak gördüklerimizi inceliyelim şimdi. Burada bize servisin adı, tipi, oluşturulma tarihi, sdk'ler için api keyimizi vermis alt kısımda no data diyen kısımlar kullanım istatistikleri kısmıdır zamanla oluşmaya başlar. Sağ taraftaki menüden Test kısmına girersek artık doğrulama için kullanacağımız ekrana gelmiş oluruz, tıklayıp girelim.

ars48a9.PNG


Üstteki ekran'da göründüğü gibi 2 adet resim seçmemiz isteniyor. Burada dikkat edilmesi gereken nokta soldaki resim bizim hedef resmimiz olmalıdır yani bildiğimiz veya aradığımız kişi olmalı oraya konacak resim ve sol kısıma sadece içinde 1 adet yüz bulunan bir resim konulması gerekiyor yoksa hataverecektir sağdaki kısma çok fazla yüz içeren resimler konulabilir o resimdeki yüzlerin çoğunu algılar ve test eder şimdi denemeye geçelim.

tu63z89.PNG


İlk karşılaştırmalarımızı rahmetli Kemal Sunal üzerinden yapalım yukarıda göründüğü gibi. Cinsiyet tahmini pek tutarlı olmasada yaş tahmini iyi denecek seviyededir yüz benzerliği konusunda OSINT için yeterli düzeyde bir veri modeli var dnebilir. Benzerlik oranı sol resimdeki mavi kutuda similarity olarak geçer bu oran 0.x olarak yazar 1.0 = %100 şeklindedir doğru bir tespit ama bir sistem sadece aynı resimlerle denenmez birde farklı resimler ile deneyelim.

Not: Altdaki response yazan kısımlara tıklarsanız api ile olan iletişimi gösterir analiz esanasındaki.


1cd648c.PNG


ve maalesef Messi Cengiz Ünder Değilmiş :(

Doğruluğu etkileyen faktörler nelerdir?


Bu işlemin doğruluğunu pek çok faktör belirler.​
  • Resim çözünürklüğü​
  • Kişinin duruş pozisyonu​
  • Işıklandırma​
  • Sonradan oluşan yaralar ve estetik operasyonlar​
  • Genetik benzerlikler​
  • Yetersiz veri modeli​
Çok düşük çözünürklük yüz hatlarının yanlış tanınmasına, yandan çekilmiş bir resim yeteri kadar yüz hattının algılanmamasına sebep olabilir. Aynı şekilde mesela bülent ersoy gibi aşırı estetik geçiren birisinin öneki hali yüz tanıma ile tespit edilemez bunun yanı sıra dünya üzerinde yüz hatları bize %90 civarı benzeyen ortlama 7 kişi vardır bunlarda algoritmayı kandırabilir ve özellikle yetersiz veri modelide yanlış tanımlamaya neden olabilir CompreFace başlangıç için yeterli denebilecek bir veri modeliyle gelir ama.


Yukarıdaki pek çok durumu kendim test ederek bunu doğruladım.

Programı kapatma.


İşimiz bittikten sonra böyle güçlü bir sistemi aktif tutmaya gerek yoktur kapatabiliriz herhangi bir veri kaybımız vs olmaz tekrar başlatınca geri gelir. Kapatmak için komutumuz şudur.

Kod:
sudo docker-compose down


Umarım işinize yaramıştır bir beğeniyi çok görmeyelim :)
eline sağlık
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.