Başlangıç

Linux – Komut satırından klavye dili değiştirme

Yorum bırakın


İngilizce Klavye:
setxkbmap us

Türkçe Klavye:
setxkbmap tr
Reklamlar

XSS ile yapabileceğiniz 21 şey

Yorum bırakın


  • Ad-Jacking – Bir web sitesinde XSS varsa, reklamlarınızı yayınlayarak para kazanılabilir.
  • Click-Jacking – Sayfada tıklandığında çalışacak kötü niyetli arayüzler oluşturabilirsiniz..
  • Session Hijacking – Çerezlerde HTTP ONLY bayrağı bulunmuyorsa, HTTP çerezlerine JavaScript tarafından erişilebilir.
  • Content Spoofing – JavaScript, bir web uygulamasının müşteri tarafı koduna tam erişime sahiptir ve bu nedenle, istediğiniz içeriği göstermek / değiştirmek için kullanabilirsiniz.
  • Credential Harvesting – Kimlik bilgilerini almak için bir pencere kullanabilirsiniz. WiFi ürün yazılımı güncellendi, kimlik doğrulaması için kimlik bilgilerinizi tekrar girin.
  • Forced Downloads – Kötü niyetli indirme yapmasını sağlayabiliriniz.
  • Crypto Mining – Kurbanın CPU’sunu sizin için biraz bitcoin madeni yapmak için kullanabilirsiniz!
  • Bypassing CSRF protection – POST isteklerini JavaScript ile yapılabilir, JavaScript ile bir CSRF belirteci toplayabilir ve gönderebilirsiniz.
  • Keylogging – Kurban bilgisayarındaki tüm girişleri toplayabilirsiniz..
  • Ses Kaydetme – Kullanıcıdan yetki alınması gerekir, ancak kurbanın mikrofonuna erişirsiniz. HTML5 ve JavaScript sayesinde.
  • Fotoğraf çekme – Kullanıcıdan yetki alınması gerekir, ancak mağdurun web kamerasına erişirsiniz. HTML5 ve JavaScript sayesinde.
  • Coğrafi konum – Kullanıcıdan yetki gerektirir, ancak mağdurun Coğrafi konumuna erişirsiniz. HTML5 ve JavaScript sayesinde. GPS’li cihazlarla daha iyi çalışır.
  • HTML5 web depolama verilerini çalmak – HTML5 yeni bir özellik olan web depolama özelliğini tanıttı. Artık bir web sitesi daha sonra kullanmak üzere tarayıcıda veri depolayabilir ve tabii ki, JavaScript bu depolamaya window.localStorage () ve window.webStorage () aracılığıyla erişebilir.
  • Tarayıcı ve Sistem Parmak İzi – JavaScript, tarayıcınızın adını, sürümünü, yüklü eklentilerini ve sürümlerini, işletim sisteminizi, mimariyi, sistem zamanını, dili ve ekran çözünürlüğünü bulmanızı sağlar.
  • Ağ Taraması – Kurbanın tarayıcısı JavaScript’i kullanarak portları ve hostları taramak için kötüye kullanılabilir.
  • Tarayıcıların Çökmesi -stuff ile tıkayarak çökertebilirsiniz.
  • Bilgi Çalmak – Web sayfasından bilgi alın ve sunucunuza gönderin.
  • Yönlendirme – Kullanıcıları seçtiğiniz bir web sayfasına yönlendirmek için javascript kullanabilirsiniz.
  • Tab-napping – Yeniden yönlendirmenin yalnızca süslü bir sürümü. Örneğin, bir dakikadan uzun süre klavye ya da fare olayı alınmadıysa, kullanıcının afk olduğu ve geçerli web sayfasını gizli bir sahtekarlıkla değiştirebileceğiniz anlamına gelebilir.
  • Ekran Yakalama – Yine HTML5 sayesinde bir web sayfasının ekran görüntüsünü alabilirsiniz.
  • Eylemleri Gerçekleştirin – Tarayıcıyı kontrol ediyorsunuz, gücü hissedemiyor musunuz? 

https://somdev.me/21-things-xss/

Twifo :Twitter Kullanıcısının Kullanıcı Bilgilerini Alma

Yorum bırakın


npm kurulumu için otomatik sh dosayası için tıklayın.

sh dosyası kurulumu:

chmod +x nodejs_kali_install.sh

./nodejs_kali_install.sh

npm install –global twifo-cli

twifo irtengunica

2019-01-26_19-31-56.png

YAPAY SİNİR AĞLARI KULLANILARAK KİMLİK AVI YAPAN WEB SİTELERİNİN TESPİTİ

Yorum bırakın


2018 yılının İnternet, sosyal medya ve mobil kullanıcı istatistiklerine göre (https://wearesocial.com/uk/), dünya nüfusunun %53’ü internet, dünya nüfusunun %68’i mobil kullanıcısı olduğu büyük bir pazardır. Doğal olarak kötü niyetli fikir ve uygulamalarda bu pazarla beraber büyümektedir.

2017 verilerine göre Kimlik Avı ve E-posta Dolandırıcılık İstatistikleri;

  • Spam e-postaların miktarı 2016’da 4 kat arttı (IBM)
  • Kimlik avı, veri ihlallerinin% 90’ını oluşturur
  • 2016 yılında 1/131 e-postada kötü amaçlı yazılım bulundu (Symantec)
  • Başarılı bir şekilde avlanan insanların %15’i, yıl içinde en az bir kez daha hedeflenecektir
  • BEC dolandırıcılığı Ekim 2013-Aralık 2016 (FBI) ‘dan 5 milyar $’ lık zarardan sorumludur.
  • 870 kuruluş, 2017’nin ilk 4 ayında W-2 kimlik avı e-postaları aldı (IRS)
  • Kimlik avı girişimleri geçen yıl% 65 arttı
  • Her ay yaklaşık 1,5 milyon yeni kimlik avı sitesi oluşturuluyor (Webroot)
  • Kuruluşların% 70’i 2017’de kimlik avına mağdur olduklarını bildirdi
  • İşletmelerin% 76’sı, geçen yıl bir kimlik avı saldırısının kurbanı olduğunu bildirdi
  • Kimlik avı iletilerinin% 30’u hedeflenen kullanıcılar tarafından açılır (Verizon)

(https://retruster.com/blog/2018-phishing-and-email-fraud-statistics)

Yukarıda bahsi geçen sorunlar bu çalışmanın hayati bir önemi olduğunu göstermektedir.

Bu çalışmada Kimlik Avı Web Sitelerine İlişkin Özelliklerinin veri setini kullanarak kimlik avı yapan web sitelerinin tahminini yapan rastgele ağırlıklı yapay sinir ağı oluşturup eğittik.  Eğitim sonrası yapılan tahminlerde %81.5864 doğruluk elde edilmiştir.

Anahtar sözcükler: YSA, Yapay Sinir Ağı, phishing, oltalama, kimlik avı, web, email, spam.

1.    GİRİŞ

Günlük hayatımızda vazgeçilmez bir yere sahip olan bilgisayarın, artık insanlar gibi karar verme ve öğrenme gerçekleştirme yeteneklerini kazanması ile kullanım alanları oldukça genişlemiştir. Matematiksel olarak ifade edilemeyen ve insanlar tarafından çözülmesi zor olan problemlerin çözümünde yapay zekâ yöntemleri kullanılmaktadır. Yapay zekâ yöntemlerinin en temel özelliği, olaylara ve problemlere çözümler üretirken örneklerden, tecrübeden, benzetmelerden öğrenme gerçekleştirme ve karar verebilme yeteneklerinin olmasıdır.

Makine öğrenimi için en popüler yaklaşımlardan biri yapay sinir ağlarıdır. Yapay sinir ağları, geleneksel hesaplama yöntemleri ile çözülemeyen problemlerin çözümünde yaygın olarak kullanılmaktadır.

Öğrenme, genelleme, doğrusal olmama, hata toleransı, uyum, paralellik gibi üstünlüklere sahip olan yapay sinir ağları; görüntü ve sinyal işleme, hastalık tahmini, gibi tıbbi uygulamalarda; mühendislik, üretim, finans, optimizasyon, sınıflandırma gibi çok farklı uygulama alanlarında kullanılmaktadır.

Çok katmanlı algılayıcı modeli geri yayılım algoritması kullanılarak tasarlanmıştır. Yazılımın çok katmanlı algılayıcı bölümünde, ağın yapısı, katman ve katmanlardaki nöron sayısı, verilerin normalizasyon yöntemi, katmanlarda kullanılan aktivasyon fonksiyonu, öğrenme oranı, momentum katsayısı, iterasyon sayısı, eğitimi sonlandırma koşulu, başlangıç ağırlıklarının şeçimi kullanıcı tarafından belirlenmektedir.

Test işleminden sonra ağın performansı ölçülebilmektedir. Ağın yapısı, kullanılan parametreler, eğitim ve test verisi, eğitilen ağın bağlantı ağırlıkları, eşik değerleri ve test işleminden sonra ağın çıktıları, eğitim ve test işleminin hata ve süre değerleri bir klasör içerisinde ki dosyalar ile dizine kaydedilmektedir.

Bu çalışmanın amacı günümüzde en yaygın siber saldırı türlerinden olan kimlik avı web sitelerinin belirlenen bazı öznitelikleri sınıflandırarak kimlik avı yapan web sitelerini tespit etmektir. Tek bir internet kullanıcısından dünyadaki en büyük şirketlere kadar ağ içindeki herkesi tehdit eden, finansal olarak da büyük zararların ortaya çıktığı bu saldırıların önlemesi, önceden sezilmesi ortaya çıkan zaman ve finansal katma değer açısından hayati derecede önemlidir.

Literatürde kimlik avı web sitelerini tahmin etmeye yönelik birçok makale yayınlanmış olsa da güvenli bir eğitim seti bulmak zordur. Çünkü kimlik avı web sayfalarını belirleyen kesin öznitelikler konusunda literatürde bir anlaşma yoktur. Yine de kullanmış olduğumuz veri setinde ki öznitelikler ile oluşturduğumuz yapay sinir ağının bu çalışmalara katkı yapacağı düşünülmüştür. İlerleyen bölümlerde gerekli açıklamalar ayrıntısıyla anlatılacaktır.

1.    MATERYAL VE YÖNTEM

1.1. Kullanılan Veritabanı

Yapılan çalışmada UCI Machine Learning Repository’den alınan Website Phishing Data Set veritabanı kullanılmıştır. Bu veri seti, Auckland Institute of Studies Enstitüsünden Neda Abdelhamid tarafından oluşturulmuştur. Veritabanında farklı kaynaklardan 1353 farklı web sitesi ve bu örneklere ait 9 farklı özellik bulunmaktadır. Sınıflandırma 3 sınıf üzerinden yapılmıştır. Veri setinde bulunan şüpheli web siteleri kullanıcıların gönderebileceği, doğrulayabildiği, izleyebileceği ücretsiz bir topluluk sitesi olan Phishtank veri arşivinden (www.phishtank.com), şüpheli olmayan Yahoo dizinlerinden toplanmıştır. Toplam 1353 web sitesinden 548 süpheli olmayan web URL’si, 702 kimlik avı URL’si ve 103 de şüpheli URL veri setinde bulunmaktadır. Kullanılan örneklerin özellikleri aşağıda belirtilmiştir.

Örnek Değişken Adı Ölçü Birimi
1.               SFH (Server From Handler) Sunucu Formu İşleyicisi {1,-1,0}
2.                popUpWidnow(Açılır Penceler) {-1,0,1}
3.               SSLfinal_State (SSL Durumu) {1,-1,0}
4.               Request_URL (URL isteme) {-1,0,1}
5.               URL_of_Anchor (URL Çapa Durumu) {-1,0,1}
6.               web_traffic (Web Trafiği) {1,0,-1}
7.               URL_Length (URL karakter uzunluğu) {1,-1,0}
8.               age_of_domain (Alan adı yaşı) {1,-1}
9.               having_IP_Address (IP adresi durumu) {0,1}
10.            Result {Yasal,Şüpheli,Kimlik avı(Phissing)} {00,10,01}

Yukarıda bulunan Örnek özelliklerden 1-9 arasındaki özellikler giriş bilgileridir ve tahminde kullanılır. 10.özellik ise sınıf bilgisini verir.

  1. SFH (Server From Handler) Sunucu Formu İşleyicisi {1,-1,0}:Kullanıcı bilgilerini gönderdikten sonra; Web sayfası bilgileri bir sunucuya aktarır, böylece işleyebilir. Bilgi, web sayfasının yüklendiği aynı alandan işlenir. Phishers, sunucu formu işleyicisini boş hale getirir ya da bilgiler yasal alandan farklı bir yere aktarılır.

Kural:

  • SFH ‘about : blank’ veya boş ise Phishy(Kimlik avı) (-1)
  • SFH farklı alana yönlendiriyorsa Şüpheli(0)
  • Değilse Yasal (1)
  1. popUpWidnow(Açılır Penceler) {-1,0,1} Genellikle doğrulanmış siteler, kullanıcılardan kimlik bilgilerini bir açılır pencereden göndermelerini istemez

Kural:

  • rightClick disabled (sağ tuş kapalı) Phishy(Kimlik avı) (-1)
  • rightClick (sağ tuş) Uyarı varsa Şüpheli(0)
  • Değilse Yasal (1)
  1. SSL final_State (SSL Durumu) {1,-1,0}:HTTPS protokolü bilgilerin aktarılmasında kullanılan güvenli bir protokoldür. Bununla birlikte, avcılar sahte bir HTTPS protokolü kullanabilir, böylece kullanıcılar aldatılabilir olabilir. HTTPS protokolünün GeoTrust, GoDaddy, VeriSign, vb. Gibi güvenilir bir yayıncı tarafından sunulduğunun kontrol edilmesi gerekir.

Kural :

  • https kullanımı & güvenilir yayıncı & yaş>=2 yıl ise Yasal (1)
  • https kullanımı & güvenli olmayan yayıncı ise Şüpheli(0)
  • Değilse Phishy(Kimlik avı) (-1)
  1. Request_URL (URL isteme) {-1,0,1}:Bir web sayfası genellikle metin ve resim ve videolar gibi bazı nesnelerden oluşur. Genellikle, bu nesneler, web sayfasının aynı sunucusundan web sayfasına yüklenir. Nesneler URL adres çubuğuna yazılandan başka bir alandan yüklendiyse, web sayfası potansiyel olarak şüphelidir.

Kural:

  • request URL < 22% ise Yasal (1)
  • request URL P 22% and < 61% arasındaysa Şüpheli(0)
  • Değilse Phishy(Kimlik avı) (-1)
  1. URL_of_Anchor (URL Çapa Durumu) {-1,0,1}: URL özelliğine benzer, ancak burada web sayfasındaki bağlantılar URL adres çubuğuna yazılan alan adından farklı bir alanı işaret edebilir.

Kural :

  • URL anchor < %31 ise Yasal (1)
  • URL anchor %32 and % 67 ise Şüpheli(0)
  • Değilse Phishy(Kimlik avı) (-1)
  1. web_traffic (Web Trafiği) {1,0,-1}: Yasal web siteleri, düzenli olarak ziyaret edilmeleri nedeniyle genellikle yoğun trafiğe sahiptir. Kimlik avı web siteleri normalde nispeten kısa bir ömre sahip olduğu için; Web trafiği yok veya düşük sıralamaya sahipler. Yasal bir web sayfasının, Alexa database’de 150.000’e eşit veya daha düşük bir sıraya sahip olması önerilmiştir (Alexa, Web Information Company, 2011).

Kural:

  • webTraffic < 150; 000 ise Yasal (1)
  • webTraffic > 150; 000 ise Şüpheli(0)
  • Değilse Phishy(Kimlik avı) (-1)
  1. URL_Length (URL karakter uzunluğu) {1,-1,0}: Kullanıcıların gönderdiği bilgileri yeniden yönlendirmek veya yüklenen sayfayı şüpheli bir alana yönlendirmek için URL’nin şüpheli kısmını gizler. Bilimsel olarak, kimlik avı URL’leri ile yasal olanları birbirinden ayıran standart güvenilir uzunluk yoktur. (Mohammad ve ark., 2012) URL uzunluğu 54 karakterden büyük olduğunda, URL phishy olarak kabul edilebilir.

Kural :

  • URL length < 54 ise Yasal (1)
  • URL length 54 ve 75 arasında ise Şüpheli(0)
  • Değilse Phishy(Kimlik avı) (-1)
  1. age_of_domain (Alan adı yaşı) {1,-1}: 1 yıldan kısa bir süredir çevrimiçi varlığa sahip web siteleri riskli kabul edilebilir.

Kural:

  • age_of_domain > 1 ise Yasal (1)
  • Değilse Phishy(Kimlik avı) (-1)
  1. having_IP_Address (IP adresi durumu) {0,1} : URL’nin alan adında bir IP adresi kullanmak, birinin kişisel bilgilere erişmeye çalıştığının göstergesidir. Bu hile, çoğu şirketin daha fazla kullanmadığı bir IP adresiyle başlayabilecek bağlantılar içerir. Verilerin% 20’si ‘‘ IP ’adresini içerir ve bunların hepsi phishy web siteleriyle ilişkilendirilir IP adresi http://91.121.10.211/~chems/webscr/verify gibidir, IP adresi http://0x58.0xCC.0xCA.0x62. onaltılık olarak dönüştürülür.

Kural :

  • URL’de IP adresi varsa Phishy(Kimlik avı) (-1)
  • Değilse Yasal (1)

10.Result (sonuç) {Yasal,Şüpheli,Kimlik avı(Phissing)} {00,10,01} : 1 yıldan kısa bir süredir çevrimiçi varlığa sahip web siteleri riskli kabul edilebilir.

Çıkışlar:

  • 00è Yasal
  • 10è Şüpheli(0)
  • 01è Phishy(Kimlik avı)

 

1.2. YAPAY SİNİR AĞLARI

Yapay Sinir Ağları, beynin fizyolojisinden yararlanılarak oluşturulan bilgi işleme modelleridir. Literatürde 100’den fazla YSA modeli vardır. Bazı bilim adamları, beynimizin güçlü düşünme, hatırlama ve problem çözme yeteneklerini bilgisayara aktarmaya çalışmışlardır. Bazı araştırmacılar ise, beynin fonksiyonlarını kısmen yerine getiren birçok modeli oluşturmaya çalışmışlardır.

Yapay sinir ağlarının hesaplama ve bilgi işleme gücünü, paralel dağılmış yapısından, öğrenebilme ve genelleme yeteneğinden aldığı söylenebilir. Genelleme, eğitim ya da öğrenme sürecinde karşılaşılmayan girişler için YSA’ların uygun tepkileri üretmesi olarak tanımlanır. Bu üstün özellikleri, YSA’ların karmaşık problemleri çözebilme yeteneğini gösterir.

Yapay sinir hücreleri, YSA’nın çalışmasına esas teşkil eden en küçük bilgi işleme birimidir. Geliştirilen hücre modellerinde bazı farklılıklar olmasıyla birlikte genel özellikleri ile çok girişli bir nöron modeli Şekil-2.3.’de gösterilmiştir. Bu hücre modelinde girişler, ağırlıklar, toplam fonksiyonu, aktivasyon fonksiyonu ve çıkış görülmektedir. Girişler (x) diğer hücrelerden ya da dış ortamlardan hücreye giren bilgilerdir. Bilgiler, bağlantılar üzerindeki ağırlıklar (w) üzerinden hücreye girer ve ağırlıklar ilgili girişin hücre üzerindeki etkisini belirler. Toplam fonksiyonu (Σ), bir hücreye gelen net girdiyi hesaplayan bir fonksiyondur ve genellikle net girdi, girişlerin ilgili ağırlıkla çarpımlarının toplamıdır.

Hücre modellerinde net girdiyi artıran +1 değerli ya da azaltan -1 değerli eşik girişi (b) bulunabilir. Aktivasyon fonksiyonu (f) ise toplama fonksiyonundan elde edilen net girdiyi bir işlemden geçirerek hücre çıktısını (t) belirleyen bir fonksiyondur. Nöron çıkışı seçilen özel aktivasyon fonksiyonuna bağlıdır. Böylece nöron giriş/çıkış ilişkilerinin bazı özel amaçlarda kullanılabilmesi için w ve b parametreleri öğrenme kuralları tarafından ayarlanabilir. Genel olarak hücre modelleri Şekil 2.1.  ve Şekil 2.2. ’deki gibi olmakla birlikte gerçekleştirdiği işleve göre hücreler statik ya da dinamik bir davranış gösterebilirler. Aşağıdaki şekilde ağırlıkların sabit olduğu ve hücrede geri besleme ya da geciktirilmiş sinyaller kullanılmadığı dikkate alınırsa bu hücre statik bir işlevi gerçekleştireceğinden bu model, statik bir hücre modeli olarak ifade edilebilir.

2019-01-24_12-43-05.png

2019-01-24_12-44-01.png

Şekil 2.3. ‘ye göre;

OèHesaplanan Çıkış Katmanı Çıkışları

Tèİstenen Çıkış Katmanı Değerleri

δèHesaplanan Çıkış Katmanı Hata Faktörleri

O’èHesaplanan Gizli Katman Çıkışları

δ’èHesaplanan Gizli Katman Hata Faktörleri

WèKatman Ağırlıkları

bèBias Değerleri

xèGiriş Değerleri

NèN adet Giriş Katmanı Nöronları

KèK adet Ara(Gizli) Katman Nöronları

Mè M adet Çıkış Katmanı Nöronları

1.1. BACKPROPAGATION (GERİYE YAYILIM) ALGORİTMASI

Karmaşık verilerin sınıflandırılmasında kullanılan YSA modellerinden birisi; ilk olarak Werbos tarafından düzenlenen daha sonra Parker , Rummelhart ve McClelland tarafından geliştirilen geri yayılım ağıdır (Backpropagation Network). Geri beslemeli YSA’da en az bir hücrenin çıkışı kendisine ya da diğer hücrelere giriş olarak verilir ve genellikle geri besleme bir geciktirme elemanı üzerinden yapılır. Geri besleme, bir katmandaki hücreler arasında olduğu gibi katmanlar arasındaki hücreler arasında da olabilir. Bu yapısı ile geri beslemeli yapay sinir ağı, doğrusal olmayan dinamik bir davranış gösterir. Dolayısıyla, geri beslemenin yapılış şekline göre farklı yapıda ve davranışta geri beslemeli YSA yapıları elde edilebilir. Yayılma (Propagate) ve uyum gösterme (Adapt) olmak üzere iki aşamada işlemleri gerçekleştiren Standart Backpropagation Algoritması (SBP), katmanlar arasında tam bir bağlantının bulunduğu çok katmanlı, ileri beslemeli ve öğreticili olarak eğitilen bir YSA modelidir.

Standart Backpropagation Algoritması; hataları geriye doğru çıkıştan girişe azaltmaya çalışmasından dolayı bu ismi almıştır. Geri yayılmalı öğrenme kuralı ağ çıkışındaki mevcut hata düzeyine göre her bir katmandaki ağırlıkları yeniden hesaplamak için kullanılmaktadır. Bir geri yayılımlı ağ modelinde giriş, gizli ve çıkış olmak üzere 3 katman bulunmakla birlikte, problemin özelliklerine göre gizli katman sayısını artırabilmek mümkündür.

Giriş katmanı; giriş veri gruplarının ağa sunulduğu terminallerdir. Bu katmanda nöron sayısı, giriş veri sayısı kadardır ve her bir giriş nöronu bir veri alır. Burada veri, işlenmeden bir sonraki katman olan gizli katmana geçer.

Gizli katman; ağın temel işlevini gören katmandır. Bazı uygulamalarda ağda birden fazla gizli katman bulunabilir. Gizli katman sayısı ve katmandaki nöron sayısı, probleme göre değişir. Bu katman; giriş katmanından aldığı ağırlıklandırılmış veriyi probleme uygun bir fonksiyonla işleyerek bir sonraki katmana iletir. Bu katmanda gereğinden az nöron kullanılması giriş verilerine göre daha az hassas çıkış elde edilmesine sebep olur. Aynı şekilde gerektiğinden daha çok sayıda nöron kullanılması durumunda da aynı ağda yeni tip veri gruplarının işlenmesinde zorluklar ortaya çıkar.

Çıkış katmanı; YSA’nın en uç katmanıdır. Gizli katmandan aldığı veriyi ağın kullandığı fonksiyonla işleyerek çıktısını verir. Çıkış katmanındaki nöron sayısı, ağa sunulan her verinin çıkış sayısı kadardır. Bu katmandan elde edilen değerler YSA’nın söz konusu problem için çıkış değerleridir. Bir geri yayılımlı ağ modelinde; bir katmandan bir başka katmana, aradaki katmanı atlayarak geçebilmek mümkün değildir.

Bir giriş verisi ağın ilk katmanında yer alan düğümlere uygulandığında en üst katman olan çıkış katmanına erişinceye kadar, bu veri üzerinde çeşitli işlemler gerçekleştirilir. Bu işlemlerin sonucunda elde edilen çıktı, olması gereken hedeflenen çıktı ile karşılaştırılır. YSA çıkışı ve hedeflenen çıkış değerleri arasındaki fark, her çıktı düğümü için bir hata sinyali olarak hesaplanır. Hesaplanan hata sinyalleri, her çıktı düğümüne karşı gelen ara katmandaki düğümlere aktarılır. Böylece ara katmandaki düğümlerin her biri toplam hatanın sadece hesaplanan bir kısmını içerir. Bu süreç her katmandaki düğümler toplam hatanın belirli bir kısmını içerecek şekilde giriş katmanına kadar tekrarlanır. Elde edilen hata sinyalleri temel alınarak, bağlantı ağırlıkları her düğümde yeniden düzenlenir. Bu düzenleme tüm verilerin kodlanabileceği bir duruma ağın yakınsamasını sağlar.

İleri besleme safhasında, giriş katmanındaki nöronlar veri değerlerini doğrudan gizli katmana iletir. Gizli katmandaki her bir nöron, kendi giriş değerlerini ağırlıklandırarak toplam değeri hesap eder ve bunları bir aktivasyon fonksiyonu ile işleyerek bir sonraki katmana veya doğrudan çıkış katmanına iletir. Katmanlar arasındaki ağırlıklar başlangıçta rastgele küçük rakamlardan seçilir.

Çıkış katmanındaki, her bir nöron ağırlıklandırılmış değeri hesaplandıktan sonra, bu değer yine aktivasyon fonksiyonu ile karşılaştırılarak mevcut hata minimize edilmeye çalışılır. Hata değeri belli bir mertebeye ininceye kadar iterasyon işlemine devam edilir ve böylece ağın eğitim aşaması tamamlanmış olur. Katmanlar arasındaki bağlantılardaki ağırlık değerleri eğitimi tamamlamış ağdan alınarak deneme safhasında kullanılmak üzere saklanır .

Backpropagation Algoritması, YSA araştırmaları için önemli bir buluştur. Ama birçok pratik uygulama için çok geri kalmaktadır. SBP Algoritmasının en büyük problemi, çok uzun eğitim süresine sahip olmasıdır. Pratik problemlerde temel SBP Algoritmasının kullanılması, YSA eğitiminin günlerce hatta  haftalarca sürebileceğinden dolayı mümkün değildir. Bu sebeple algoritmada yakınsamayı hızlandırmak için bazı metotlar geliştirilmiştir.

SBP Algoritmasının performansını iyileştirecek teknikler iki kategoride incelenir. Birinci kategori;

Sezgisel Yaklaşım (Heuristik) tekniklerin gelişimlerini içerir ki bu teknikler SBP Algoritmasının özel performans çalışmalarından ileri gelir. Bu sezgisel yaklaşım teknikleri momentum kullanılarak yapılır. Momentum katsayısı(g), YSA’nın daha hızlı toparlanmasına yardım eden bir faktördür. Öğrenme esnasında ağın salınımını önler. Momentum katsayısı 0 < g < 1 aralığında seçilir. YSA her adımda daha az hata değerine sahip bir noktaya gelmek isteyecektir. Birden çok iterasyon sonucunda sistem minimum hatalı olan noktaya erişecektir. Eğitim sırasında, YSA hatanın azaldığı yerde durmayı sürdürmek ister. YSA için local minima tuzağına düşmek doğaldır ve bu durum global minimuma ulaşmasına engel olabilir. Momentum öğrenme algoritmasını local minimumdan kaçacak şekilde önceki yönde tutmaya çalışır.

Diğer araştırma kategorisi ise, standart sayısal optimizasyon tekniklerini bir noktada toplar. İleri beslemeli yapay sinir ağları eğitiminde hataların karelerinin minimizasyonu basit bir sayısal optimizasyon problemidir.

Diğer Terimler;

Epoch: tüm giriş verilerinin işlenmesindeki tek bir iterasyon. Her epoch’da YSA öğrenir. Aynı girişleri çok kereler uygulamanın sonucu olarak, sistem kendini az bir hata ile eğitebilir hale gelir. Çok sayıda epoch ile sistem tam olarak eğitilmiş kabul edilir. Epoch’lar sistemin kendini eğitim verisine göre eğitebilmesi için gereklidir.

Öğrenme Oranı(η): Büyük öğrenme oranı: sistem veriyi çok hızlı öğrenir,toplam hata artar. Düşük öğrenme oranı: sistem çok yavaş öğrenir, eğitim zamanı artar ancak hata azalır.

Durdurma kriteri: Zaman eşik değerine ulaştığında bitebilir. Önceden tanımlı epoch değeri vardır. Algoritma bu epocha ulaştığında bitebilir. Önceden tanımlı hata değerine eriştiğinde bitebilir. İki epoch arasındaki hata değeri azaldığında eğitim bitebilir. Eğitim devam etse bile performansta çok fazla değişiklik olmayacağı hesap edilir.

1.2. YAPAY SİNİR AĞLARI KULLANILARAK KİMLİK AVI YAPAN WEB SİTELERİNİN TESPİTİ

Bu çalışmada örnek veri seti ile 9 farklı öznitelik kullanılarak Yapay Sinir Ağları Kullanılarak Kimlik Avı Yapan Web Sitelerinin Tespiti tahmin edilmektedir. Bu nedenle oluşturulan sinir ağının giriş katmanında 9 nöron bulunmaktadır. Çıkış katmanında ise Yasal(00), Şüpheli(10), Kimlik avı(Phissing)(01) şeklinde 3 farklı çıkış bilgisi elde edileceğinden 2 nöron kullanılmaktadır. Ara katmanda 10 nöron bulunmaktadır. Başlangıç aşamasında ağırlık ve bias için 0-1 arasında rastgele değerler alınmıştır. Alınan değerler eğitim aşamasında güncellenerek son değere ulaşılmıştır. Çıkış nöronlarından alınan hata bilgileri geri yayılım aşamasında kullanılarak hata oranı en aza indirilmiştir.

2019-01-24_12-45-38.png

Yapay sinir ağı Uygulamasında;

Giriş katmanında ki giriş sayısı (Xp1…Xp9) 9;

Gizli katmanda ki nöron sayısı 10;

Çıkış katmanındaki nöron sayısı 2;

Gizli katman çıkışları (O’p1… O’p10);

Gizli katman hata faktörleri (δ’P1… δ’P10);

Çıkış katman çıkışları (Op1, Op2);

Çıkış katman istenen çıkışları (Tp1, Tp2);

Çıkış katman hata faktörleri (δP1… δP2);

Öğrenme katsayısı(η) 0,6;

Momentum katsayısı(g) 0,4;

Hata faktörü 0,01;

Çürüme faktörü 0,01;(öğrenme ve momentum katsayısı değerleri her epoch sonunda belli oranda azaltılmasının eğitime katkısı gözlenmiştir.)

Tüm ağırlık ve bias değerleri random alınarak eğitime başlanmıştır. Tüm başlangıç ağırlık ve bias değişiklikleri ilk başta sıfır olarak alınmıştır.

Aktivasyon fonksiyonu olarak sigmoid fonksiyonu kullanılmıştır.

Yukarıda  ara katman çıkışlarını,  giriş katmanı bilgilerini,  ara katman ağırlıklarını,  ara katman biaslarını ifade eder.

çıkış katmanı çıkışlarını,  çıkış katmanı ağırlıklarını,  çıkış katmanı biaslarını ifade eder.

Güncellemeler sondan başa doğru yapılır.

2019-01-24_13-00-36.png

Yukarıda  ara katman çıkışlarını,  giriş katmanı bilgilerini,  ara katman ağırlıklarını,  ara katman biaslarını ifade eder.

2019-01-24_13-00-47.png

çıkış katmanı çıkışlarını,  çıkış katmanı ağırlıklarını,  çıkış katmanı biaslarını ifade eder.

Güncellemeler sondan başa doğru yapılır.2019-01-24_13-00-57.png

2019-01-24_13-01-11.png

2019-01-24_13-01-25.png

Kodlama işlemleri Matlab programı ile yapılmıştır. Matlab üzerinde herhangi bir hazır araç veya fonksiyon kullanılmamıştır. Matlab üzerinde yapılan kodlama aşağıdadır.

Xp1 Xp2 Xp3 Xp4 Xp5 Xp6 Xp7 Xp8 Xp9 T1 T2
1 -1 1 -1 -1 1 1 1 0 0 0
-1 -1 -1 -1 -1 0 1 1 1 1 0
1 -1 0 0 -1 0 -1 1 0 1 0
1 0 1 -1 -1 0 1 1 0 0 0
-1 -1 1 -1 0 0 -1 1 0 1 0
-1 -1 1 -1 -1 1 0 -1 0 1 0
1 -1 0 1 -1 0 0 1 0 0 1
1 0 1 1 0 0 0 1 1 0 1
-1 -1 0 -1 -1 -1 -1 1 0 0 0
-1 0 -1 -1 1 1 0 -1 0 1 0
-1 -1 0 -1 -1 1 -1 -1 0 1 0
1 0 1 1 1 -1 1 1 0 0 1
1 -1 0 -1 1 0 1 1 0 1 0
1 0 1 0 -1 1 0 -1 0 0 1
-1 -1 -1 1 -1 0 -1 1 0 1 0
0 0 -1 0 0 1 1 -1 1 1 0
-1 0 0 0 -1 1 -1 -1 0 1 0

Yukarıda bulunan Örnek özelliklerden 1-9 arasındaki özellikler giriş bilgileridir ve tahminde kullanılır. 10.özellik ise sınıf bilgisini verir.

 

 

1.    SONUÇLAR VE TARTIŞMA

Bu çalışmada örnek veri seti ile 9 farklı öznitelik kullanılarak Yapay Sinir Ağları Kullanılarak Kimlik Avı Yapan Web Sitelerinin Tespiti tahmin edilmektedir. Çalışma sonucu parametrelerle oynayarak Ağın başarı oranı %81.586402 olarak hesaplanmıştır. Aşağıda başka bir uygulamada Standart Backpropagation Algoritması ile Geliştirilmiş Backpropagation Algoritması arasındaki farkı açıkça göstermektedir.

Şekil 3 ve Şekil 4, standart BP algoritmasını ve geliştirilmiş BP algoritması tahminlerini, gerçek verileri ve tahmin hatasını göstermektedir. Aynı koşullar altında, standart BP algoritmasının tahmin verileri ve ve gerçek verileri arasında nispeten büyük bir fark olduğunu görmek kolaydır. 400’e kadar yineleme süreleri, aşağı doğru eğilimin ortalama kare hatası yavaşlar ve yineleme süreleri 2000’e ulaştığında, hata nispeten büyüktür; Geliştirilmiş BP algoritmasının tahmin verileri, standart BP algoritmasına göre gerçek verilere daha yakındır. İterasyon zamanlarının artmasıyla ortalama kare azalır. Yineleme sayısı 2,000’e yaklaştığında, ortalama kare hatası izin verilen hatayı karşılar. Standart BP algoritması ile karşılaştırıldığında, geliştirilmiş BP algoritması ağın doğruluğunu artırır ve eğitim hızını artırır.

Geliştirilmiş BP algoritması kullanımındaki paremetreler;

Momentum katsayısı(g), YSA’nın daha hızlı toparlanmasına yardım eden bir faktördür. Öğrenme esnasında ağın salınımını önler. Momentum katsayısı 0 < g < 1 aralığında seçilir. YSA her adımda daha az hata değerine sahip bir noktaya gelmek isteyecektir. Birden çok iterasyon sonucunda sistem minimum hatalı olan noktaya erişecektir. Momentum öğrenme algoritmasını local minimumdan kaçacak şekilde önceki yönde tutmaya çalışır.

Öğrenme Oranı(η), Büyük öğrenme oranı: sistem veriyi çok hızlı öğrenir,toplam hata artar. Düşük öğrenme oranı: sistem çok yavaş öğrenir, eğitim zamanı artar ancak hata azalır.

Durdurma kriteri: Zaman eşik değerine ulaştığında bitebilir. Önceden tanımlı epoch değeri vardır. Algoritma bu epocha ulaştığında bitebilir. Önceden tanımlı hata değerine eriştiğinde bitebilir. İki epoch arasındaki hata değeri azaldığında eğitim bitebilir. Eğitim devam etse bile performansta çok fazla değişiklik olmayacağı hesap edilir.

Çürüme faktörü (s),  momentum ve öğrenme oranlarını formüldeki oranda her epoch sonunda düşürerek eğitime artırması hedeflenmiştir. Literatür içinde yukarıda ki gibi kullanıldığı gibi  şeklinde de kullanılmaktadır.

Ayrıca Literatürde Ağırlık ve bias değişimlerinin güncellenmiş ağırlık ve biaslara katkısı için aşağıda ki gibi kullanılması önerilmektedir.

Esnek Geriye Doğrulamada gelişmiş ağ ağırlıklarının seçimi:

Esnek Geriye Doğrulamada gelişmiş bias seçimi:

Sonuç olarak;

  • Standart BP algoritması, bir dizi setin girdi / çıktı problemini doğrusal olmayan bir optimizasyon problemine dönüştüren bir tür öğrenme kuralıdır.
  • Gradyan iniş öğrenme kuralına göre yinelemeli hesaplamayı kullanarak ağ ağırlıklarını ayarlar.
  • Pratik uygulamalarda, standart BP algoritmasının çeşitli problemleri vardır, örneğin, yakınsama oranının düşük olması, yerel asgari düzeye düşmekten sorumludur.
  • Ağırlık ve eşik değerleri esnek güncelleme değeri ile değiştiren Esnek Geri Yayılım Algoritması (RPROP) kullanılarak yerel agari düzeye düşmekten kurtulur.
  • Ağ eğitim sürecinde öğrenme oranının neden olduğu salınım ve kararsız ağırlıkları Değişken Öğrenme Hızı Algoritması(Variable Learning Rate Learning Algorithm) ile çözülebilir.
  • Gizli Katmanda az nöron kullanılması giriş verilerine göre daha az hassas çıkış elde edilmesine sebep olur. Aynı şekilde gerektiğinden daha çok sayıda nöron kullanılması durumunda da aynı ağda yeni tip veri gruplarının işlenmesinde zorluklar ortaya çıkar. Gizli katmanda 10 nöron kullanılmıştır. Daha az nöron hata oranını artırmış, daha fazla nöron öğrenme süresini uzatmıştır.

Uygulamadaki Sonuçlar tabloda gösterilmiştir.

Rasgele Ağırlık ve Bias Değerleriyle
Öğrenme Oranı

η (0< η <1)

s=0,01

Moment.

g(0<g<1)

s=0,01

Hata(<) Ağırlık Değ. Bias Değişimi Akt.

Fonk.

Başarı Oranı (%)
0,6 Değ. 0,4 Değ 0,01 0 0 Sigm. 75.9206
0,6 Değ. 0,4 Değ 0,01 +Değ +Deg Sigm. 76.2039
0,6 Değ. 0,4 Değ 0,01 -Değ -Deg Sigm. 72.8045
-0,6 Değ. -0,4 Değ 0,01 -Değ -Deg Sigm. 68.5552
-0,6 Sab. -0,4 Sab. 0,01 -Değ -Deg Sigm. 69.1218
0,6 Sab. 0,4 Sab. 0,01 -Değ -Deg Sigm. 74.5042
0,6 Sab. 0,4 Sab. 0,01 0 0 Sigm. 71.9546
Önceden ayarlanmış Ağırlık ve Bias ile
0,6 Sab. 0,4 Sab. 0,01 0 0 Sigm. 77.9036
0,6 Sab. 0,4 Sab. 0,01 +Değ +Deg Sigm. 75.3541
0,6 Sab. 0,4 Sab. 0,01 -Değ -Deg Sigm. 71.9546
-0,6 Sab. -0,4 Sab. 0,01 -Değ -Deg Sigm. 78.4702
-0,6 Sab. -0,4 Sab. 0,01 +Değ +Deg Sigm. 75.3541
0,6 Değ. 0,4 Değ. 0,01 +Değ +Deg Sigm. 71.9546
0,6 Değ. 0,4 Değ. 0,01 -Değ -Deg Sigm. 73.6543
0,6 Değ. 0,4 Değ. 0,01 0 0 Sigm. 77.9036
0,6 Değ. 0,4 Değ. 0,01 0 0 Sigm. 81.5864

Hesaplanan Çıkış katman çıkışları (Op1, Op2) değerleri tabloda 0,8’den büyükse 1 değilse 0 olarak kabul edilmiştir. Sadece tablonun son satırında 0,5’ den büyükse 1 değilse 0 kabul edilmiştir.

matlab kodu:

clc;

x=egitim’;%girisler

noronsayisi=10;

girissayisi=9;

cikissayisi=2;

w=rand(noronsayisi,girissayisi);%ara katman ağırlıkları

%w=wbass;

dw=rand(noronsayisi,girissayisi);%ara katman ağırlıkları değişimi

b=rand(noronsayisi,1);% arakatman biasları

%b=bbass;

db=zeros(noronsayisi,1);%ara katman bias değişiklikleri

o=zeros(noronsayisi,1); %ara katman çıkışları

rpp=zeros(noronsayisi,1);%ara katman hata faktörler

wp=rand(cikissayisi,noronsayisi);%çıkış katman ağırlıkları

%wp=wpbass;

dwp=rand(cikissayisi,noronsayisi);%çıkış katmanı ağırlıklarındaki değişim

bp=rand(cikissayisi,1);%çikış katmanı biasları

%bp=bpbass;

dbp=zeros(cikissayisi,1);%çıkış katmanı biaslarındaki değişim

rp=zeros(cikissayisi,1);%çıkış katmanı hata faktörleri

y=zeros(cikissayisi,1);%üretilen çıkışlar

t=etarget’;%hedeflenen çikışlar

alpha=0.4;%momentum

n=0.1;%öğrenme oranı

s=0.01;%çürüme oranı (s)

hata=1;

for k=1:length(x)

hata=1;

while(hata>0.01)

%ara katman çıkışlarının bulunması

%O’1=f(x1.w’11+x2.w’12+…+xn.w’1n+b’1

for i=1:noronsayisi

top=0;

for n=1:girissayisi

top=top+x(n,k)*w(i,n);

end

o(i)=sigmoid(top+b(i));

end

%çikış katmalarının bulunması

%y1=f(O’1.w11+O’2.w12+…..+O’n.w1n+b1)

%y2=f(O’1.w21+O’2.w22+…..+O’n.w2n+b2

for n=1:cikissayisi

top=0;

for i=1:noronsayisi

top=top+o(i)*wp(n,i);

end

y(n)=sigmoid(top+bp(n));

end

%%çıkış katmanı güncellemesi

%çıkış hata faktörlerinin hesaplanması

%rp1=(tp1-y1).y1.(1-y1)

for i=1:cikissayisi

rp(i)=(t(i,k)-y(i))*y(i)*(1-y(i));

end

%çıkış ağırlıklarının güncellenmesi

%dw11=n.rp1.o’1+alpha.dw11

for i=1:cikissayisi

for j=1:noronsayisi

dwp(i,j)=n*rp(i)*o(j)+alpha*dwp(i,j);

end

end

wp=wp+dwp;

%çıkış katmanı biaslarının güncellenmesi

%db1=n*rp1+alpha*db1

for j=1:cikissayisi

dbp(j)=n*rp(j)+alpha*dbp(j);

end

bp=bp+dbp;

%%ara katman güncellemesi

 

%ara katman hata faktörlerinin hesaplanması

%rpp1=o’1.(1-o’1).(rp1.w11+rp2.w21)

for i=1:noronsayisi

rpp(i)=o(i)*(1-o(i))*(rp(1)*w(1)+rp(2)*w(2));

end

%ara katman ağırlıklarının güncellenmesi

for i=1:noronsayisi

for j=1:girissayisi

dw(i,j)=n*rpp(i)*x(j,k)+alpha*dw(i,j);

end

end

w=w+dw;

%ara katman biaslarının güncellemesi

for i=1:noronsayisi

%db(i)=n*o(i)*(1-o(i))*wp(1,i)*rp(1);

db(i)=n*rpp(i)+alpha*db(i);

end

b=b+db;

hata=(1/2)*((t(1,k)-y(1))^2+((t(2,k)-y(2))^2));

disp(hata)

alpha=alpha/(1+s*k);

n=n/(1+s*k);

end

y

hata

end

%%%TEST Aşaması

dogru=0;

test1=test’;

ttarget1=ttarget’;

 

for k=1:length(test1)

%ara katman çıkışlarının bulunması

for i=1:noronsayisi

top=0;

for n=1:girissayisi

top=top+test1(n,k)*w(i,n);

end

o(i)=sigmoid(top+b(i));

end

%çıkış katmanı çıkışlarının bulunması(testtttt)

for n=1:cikissayisi

top=0;

for i=1:noronsayisi

top=top+o(i)*wp(n,i);

end

y(n)=sigmoid(top+bp(n));

end

for i=1:cikissayisi

if y(i)>0.8

y(i)=1;

else

y(i)=0;

end

end

if (ttarget1(1,k)==y(1))&&(ttarget1(2,k)==y(2))

dogru=dogru+1;

end

end

yeee =sprintf(‘Verilen test verilerine göre ağın başarı oranı %f dir’,100*dogru/length(test))

dogrusay=sprintf(‘Doğru tahmin sayısı:%d’,dogru)

 

 Virtualenv üzerindeyken picamera modullerinin Python ‘a yüklenmesi

Yorum bırakın


Bir virtualenv içine picamera yüklemek isterseniz;

$ sudo apt-get install python-setuptools python-virtualenv
$ virtualenv cv
$ source cv/bin/activate
(cv) $ easy_install picamera

denemek için:

$ source cv/bin/activate
(cv) $ python
>>> import picamera

 

 

Python ile openCV Kütüphanesinde ki Olayları Listeleme

Yorum bırakın


Kütüphane içindeki aranan bir etkinliği listeleme;

>>> import cv2
>>> olaylar = [i for i in dir(cv2) if 'EVENT' in i]
>>> print (olaylar)

Raspberry Pi 3 B+ Üzerine OpenCV 4.0 Kurulumu

2 Yorum


Not: Mevcut işletim sistemi sürümü Raspbian Stretch adresinden kurulum aşamaları takip edilerek kurulabilir. Depolama alanı sıkıntısı olmaması için 32GB sd kart kullanılması faydalıdır. Raspberry Pi 3 B+ üzerine OpenCV kurulumu tüm işlemler ile birlikte 4 saat ve üzeri bir zaman gerektirdiği için cihaz ısınmadan kaynaklı kapanabilir. Kurulum süresince bir fan yardımı ile soğutma yapmak gerekli olabilir. Kurulum süresince filtresiz bir internet bağlantısı (Mebin sağladığı internet altyapısında sitelere erişim kısıtlı) olması gereklidir.

/etc/apt/sources.list ve /etc/apt/sources.list.d/raspi.list dosyalarını (sudo olarak) açarak kaynak dosyaları değiştirilebilir.

  • Adım 1: Mevcut Sürümün Güncellemesini denetleyin.
sudo apt-get update
sudo apt-get -y dist-upgrade

Not1: Tüm Diski Kullanma(Expand filesystem)

sudo raspi-config

2018-10-04_11-11-22.png

df -h

Çıktıyı inceleyerek tüm diski kullandığınızdan emin olun.

2018-10-04_11-06-43.png

sudo reboot

Not 2: SSH aktif hale getirme. (uzaktan Erişim)

Kablolu veya Kablosuz ağ bağlantısını yapın.

Masaüstündeki çilek ikonuna tıklayarak:

  1. Tercihlerden Raspberry Pi Configuration tıkla.
  2. Sekmeli menüdenInterfaces seçin.
  3. SSH seçeneğini Enabled yapın.

Diğer alternatif olarak terminalden:

  1. sudo raspi-config komutu yazarak ayarlar penceresini açın.
  2. Interfacing Optionsseçeneğini seçin.
  3.  SSHseçeneğini seçin.
  4. Uyarı mesajına YesSeçin
  5.  Ok seçin ve Finish

systemctl servisini durdurup tekrar başlatın.

sudo systemctl enable ssh
sudo systemctl start ssh

Not 3: screen (terminal oturumunuz düştüğünde işlemlerin devam etmesini sağlamak) ve htop (performans izleme) yardımcı programları kullanılabilir.

sudo apt-get install screen
sudo apt-get install htop

Not 4:  Wolfram ve Libreoffice’i kaldırarak 1GB yer kazanabilirsiniz.

sudo apt-get purge wolfram-engine
sudo apt-get purge libreoffice*
sudo apt-get clean
sudo apt-get autoremove

Adım 2: Bağımlılıkların Yüklenmesi

OpenCV oluşturma işlemini yapılandırmamıza yardımcı olan CMake dahil bazı geliştirici araçları,

sudo apt-get install build-essential cmake pkg-config

Diskten çeşitli video ve resim dosyası formatlarını yüklememize izin veren bazı görüntü I / O paketleri,

sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng12-dev
sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev 
sudo apt-get install libxvidcore-dev libx264-dev

Highgui modülünü derlemek için GTK geliştirme kütüphanesi,

sudo apt-get install libgtk2.0-dev libgtk-3-dev
sudo apt-get install libcanberra-gtk*

OpenCV içindeki birçok işlem (matris işlemleri) birkaç ek bağımlılık,

sudo apt-get install libatlas-base-dev gfortran

Python 2.7 ve Python 3,

sudo apt-get install python2.7-dev 
sudo apt-get install python3-dev

Görüntü I / O paketlerine ihtiyaç duyduğumuz gibi, video I / O paketlerine de ihtiyacımız var. Bu kütüphaneler, çeşitli video dosyası formatlarını diskten okumamızı ve doğrudan video akışlarıyla çalışmamızı sağlar.

Bu paketlerin bazıları zaten kurulu olabilir ama sıkıntı yok varsa da kontrol amaçlı yazalım.

Adım 3: Open CV Kaynak kodlarını indirme ve açma. Farklı sürüm için sürüm numaralarını değiştirmek yeterli.

cd ~
wget -O opencv.zip https://github.com/opencv/opencv/archive/4.0.0-alpha.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.0.0-alpha.zip
unzip opencv.zip
unzip opencv_contrib.zip
mv opencv-4.0.0-alpha opencv
mv opencv_contrib-4.0.0-alpha opencv_contrib

Not: Ayarlar kısmında klasör isimlerine dikkat etmek gerekiyor. Dizinleri yeniden adlandırmayı atlarsanız, CMake yollarını güncellemeyi unutmayın.

Adım 3: pip ve virtualenv’yi kurulumu. Python paketlerini yönetmek için gerekli araçlar.

Python Paket Yöneticisi Kurulumu:

wget -O get-pip.py https://bootstrap.pypa.io/get-pip.py 
sudo python get-pip.py
sudo python3 get-pip.py

Kaynak: https://pip.pypa.io/en/stable/installing/

virtualenv sanal ortamların kurulumu. Bu paketleri yüklemek bir zorunlu değildir.  OpenCV bunlar olmadan da çalışır.  Ama sanal ortamın, her biri için ayrı , bağımsız Python ortamları oluşturarak , farklı projelerin gerektirdiği bağımlılıkları ayrı yerlerde tutmak için kullanılan özel bir araçtır. Örneğin python2 için ayrı bir sanal ortam, python3 için ayrı bir sanal ortam oluşturup, bağımlılıkları birbirinden bağımsız çalışabilir.

Daha geniş Bilgi için Tıklayın.

sudo pip install virtualenv virtualenvwrapper
sudo rm -rf ~/get-pip.py ~/.cache/pip

bu işlemden sonra

sudo nano ~/.profile 

dosyasına aşağıdaki koyu renk satırları dosya sonuna ekleyiniz.

# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

# virtualenv and virtualenvwrapper settings
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh

ve değişiklikleri aktif hale getirin.

2. yol olarak şu sekildede eklenebilir:

echo e “\n# virtualenv and virtualenvwrapper” >> ~/.profile
echo “export WORKON_HOME=$HOME/.virtualenvs” >> ~/.profile
echo “export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3” >> ~/.profile
echo “source /usr/local/bin/virtualenvwrapper.sh” >> ~/.profile
source ~/.profile

Python için Sanal Ortamın Oluşturulması.

mkvirtualenv cv - p python3

Python2 kullanmak isterseniz

mkvirtualenv cv2 - p python2

virtualenvwoker ile çalışmak için temel komutlar:

mkvirtualenv cv # create virtualenv
workon cv # activate/switch to a virtualenv
deactivate cv # deactivate virtualenv

Artık “cv” adlı bir virtualenv’i etkinleştirebiliriz: (Python3 sanal ortamında kurulum yaptım.)

pi@raspberrypi:~ $ workon cv
(cv) pi@raspberrypi:~ $ 

şeklinde görünmelidir.

Adım 4: Sayısal işlem için kullanılan Python paketi numpy ve scipy Yükleme

sudo pip install numpy scipy
veya
sudo pip install numpy

 

Bu Biraz zaman alabilir bekleyin.

Adım 4: Sonunda OpenCV Kurulumu ve Derleme. Burası 2 saat sürüyor. Lütfen sabırlı olun. Cihaz ısınıp kapanabilir. Bir fan yardımı ile soğutabilirsiniz.

cv sanal ortamda olduğunuzu bir kez daha kontrol edin (sizden önceki cv ) metnini görmelisiniz )  eğer değilseniz,

workon cv
cd ~/opencv/
mkdir build
cd build

xcmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules \
    -D ENABLE_NEON=ON \
    -D ENABLE_VFPV3=ON \
    -D BUILD_TESTS=OFF \
    -D INSTALL_PYTHON_EXAMPLES=OFF \
    -D BUILD_EXAMPLES=OFF ..

OpenCV 3’ü Python 2.7 veya Python 3.0 için derliyorsanız , Python 2 bölümünüzün, cmake sırasında akan textlerde,  Tercüman ,  Kütüphane , numpy ve paket yolunun geçerli yolları içerdiğinden emin olun :

py27_cv-768x473.png

.....
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/opencv/opencv/build

şeklinde bitti ise ve yollarda bir sıkıntı yoksa muhtemelen bu aşama sorunsuz tamamlanmıştır.

Artık derleme(make)zamanı. Ama önce swap(takas) alanını 100 MB olan değeri 1024 MB yapalım. Derleme işleminde sıkıntı çıkmasın. İşlem sonunda tekrar 100 yapın diye öneriyorlar.  Flash belleğin sınırlı sayıda yazıcısı  olduğundan SD karta zarar verir.

nano /etc/dphys-swapfile

açılan dosyada  CONF_SWAPSIZE satırını bulun ve aşağıdaki gibi değiştirin.

# set size to absolute value, leaving empty (default) then uses computed value
#   you most likely don't want this, unless you have an special disk situation
# CONF_SWAPSIZE=100
CONF_SWAPSIZE=1024

ctrl+x ile kaydedin ve çıkın. Sonra takas servisini tekrar çalıştıralım.

sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start
veya
sudo /etc/init.d/dphys-swapfile restart
OpenCV’yi derleme:
make -j4
//make clean
//make

Derlemede işlemci sayısını azaltarak süreyi uzatır. Raspberry işlemcilerinin yorulmasını önleyebilirsiniz.(make -j3, make -j2, make -j1)

Derleme işlemi tamamlandığında %100 olmalı. Eğer sorun çıkarsa sadece make komutunu kullanın ve işinize bakın çünkü çok çok uzun sürüyor.

sudo make install
sudo ldconfig
sudo apt-get update

komutlarını çalıştırıp sistemi yeniden başlatalım.

swap alanını tekrar eski haline getirelim.

nano /etc/dphys-swapfile

açılan dosyada  CONF_SWAPSIZE satırını bulun ve aşağıdaki gibi değiştirin.

# set size to absolute value, leaving empty (default) then uses computed value
#   you most likely don't want this, unless you have an special disk situation
CONF_SWAPSIZE=100
# CONF_SWAPSIZE=1024

ctrl+x ile kaydedin ve çıkın. Sonra takas servisini tekrar çalıştıralım.

 

 

sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start
veya
sudo /etc/init.d/dphys-swapfile restart

Adım 5:OpenCV 4’ü Python 3 sanal ortamınıza bağlayın. 

OpenCV sembolik bir bağlantı oluşturalım

cd ~/.virtualenvs/cv/lib/python3.5/site-packages/
ln -s /usr/local/lib/python3.5/site-packages/cv2.cpython-35m-x86_64-linux-gnu.so cv2.so
cd ~

Adım 5: Test

source ~/.profile
workon cv
python
>>> import cv2
>>> cv2.__version__
'4.0.0'
>>> exit()

2018-10-04_11-38-33.png

Güle Güle Kullanın.

sudo reboot

en derli toplu anlatım kaynağı: https://www.pyimagesearch.com/2018/09/26/install-opencv-4-on-your-raspberry-pi/

 

 

 

 

 

 

 

 

 

 

 

 

 


			

Older Entries

PCI Guru

A common sense approach to achieving PCI compliance and retaining your sanity

Penetration Testing Lab

Articles from the Pentesting Field

Bana Silverlight Anlat

meslek lisesi ders notları