{"id":34944,"date":"2025-11-24T00:01:03","date_gmt":"2025-11-23T21:01:03","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/"},"modified":"2025-11-24T00:01:03","modified_gmt":"2025-11-23T21:01:03","slug":"yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/","title":{"rendered":"YOLOv9 + MediaPipe: 140 FPS Y\u00fcz Noktalama Uygulamas\u0131 Rehberi"},"content":{"rendered":"<p>Ger\u00e7ek zamanl\u0131 y\u00fcz noktalama, bilgisayar g\u00f6r\u00fc\u015f\u00fcn\u00fcn en heyecan verici alanlar\u0131ndan biri. Peki, YOLOv9 ve MediaPipe&#8217;\u0131 birle\u015ftirerek saniyede 140 kare h\u0131z\u0131nda (FPS) ultra h\u0131zl\u0131 bir uygulama nas\u0131l geli\u015ftirilir? Bu rehberde, s\u0131f\u0131rdan ba\u015flayarak bu etkileyici performansa ula\u015fman\u0131n t\u00fcm s\u0131rlar\u0131n\u0131 ve p\u00fcf noktalar\u0131n\u0131 ad\u0131m ad\u0131m \u00f6\u011freneceksiniz. Modern yapay zeka tekniklerini kullanarak y\u00fcksek performansl\u0131 uygulamalar geli\u015ftirmek isteyen herkes i\u00e7in bu makale, pratik bilgilerle dolu bir yol haritas\u0131 sunuyor.<\/p>\n<p>Y\u00fcz noktalama teknolojisi, insan-bilgisayar etkile\u015fiminden g\u00fcvenli\u011fe, e\u011flenceden sa\u011fl\u0131\u011fa kadar pek \u00e7ok alanda devrim niteli\u011finde de\u011fi\u015fimler yarat\u0131yor. Temel olarak, bir y\u00fczdeki belirli, ay\u0131rt edici noktalar\u0131 (g\u00f6z k\u00f6\u015feleri, burun ucu, a\u011f\u0131z kenarlar\u0131 vb.) tespit etme s\u00fcrecidir. Bu teknoloji, sadece bir y\u00fcz\u00fcn nerede oldu\u011funu s\u00f6ylemekle kalmaz, ayn\u0131 zamanda o y\u00fcz\u00fcn ifadesi, duru\u015fu ve hatta duygusal durumu hakk\u0131nda derinlemesine bilgiler edinmemizi sa\u011flar. \u00d6rne\u011fin, bir sanal ger\u00e7eklik (VR) uygulamas\u0131nda kullan\u0131c\u0131lar\u0131n avatar\u0131n\u0131n y\u00fcz ifadelerini ger\u00e7ek zamanl\u0131 olarak yans\u0131tmak, y\u00fcz noktalama sayesinde m\u00fcmk\u00fcn olur. G\u00fcvenlik sistemlerinde, \u015f\u00fcpheli ki\u015filerin y\u00fcz hareketlerini analiz ederek potansiyel tehditleri belirleme potansiyeli ta\u015f\u0131r. Ayr\u0131ca, t\u0131p alan\u0131nda, belirli n\u00f6rolojik rahats\u0131zl\u0131klar\u0131 olan hastalar\u0131n y\u00fcz kaslar\u0131ndaki asimetrileri veya hareket k\u0131s\u0131tl\u0131l\u0131klar\u0131n\u0131 izlemek i\u00e7in de kullan\u0131labilir.<\/p>\n<p>G\u00fcn\u00fcm\u00fczde ak\u0131ll\u0131 telefonlar\u0131m\u0131zdaki filtreler, sosyal medya uygulamalar\u0131ndaki e\u011flenceli AR (Art\u0131r\u0131lm\u0131\u015f Ger\u00e7eklik) efektleri ve hatta s\u00fcr\u00fcc\u00fc yorgunluk tespiti gibi sistemler, bu teknolojinin do\u011frudan veya dolayl\u0131 uygulamalar\u0131d\u0131r. Ancak, bu uygulamalar\u0131n ger\u00e7ek potansiyelini ortaya koymak i\u00e7in y\u00fcksek performans, yani \u00e7ok h\u0131zl\u0131 ve do\u011fru bir \u015fekilde \u00e7al\u0131\u015fabilmeleri kritik \u00f6neme sahiptir. D\u00fc\u015f\u00fck FPS (saniyedeki kare say\u0131s\u0131) ile \u00e7al\u0131\u015fan bir y\u00fcz noktalama sistemi, kullan\u0131c\u0131 deneyimini olumsuz etkiler ve \u00e7o\u011fu ger\u00e7ek zamanl\u0131 senaryo i\u00e7in kullan\u0131lamaz hale gelir. \u0130\u015fte bu y\u00fczden, bizim hedefledi\u011fimiz 140 FPS gibi h\u0131zlar, sadece teknik bir ba\u015far\u0131 de\u011fil, ayn\u0131 zamanda bu teknolojinin yeni uygulama alanlar\u0131na kap\u0131 aralamas\u0131n\u0131 sa\u011flayan bir zorunluluktur. Bu y\u00fcksek performans, \u00f6zellikle otonom s\u00fcr\u00fc\u015f sistemleri, robotik ve canl\u0131 yay\u0131n analizi gibi anl\u0131k tepki gerektiren alanlarda vazge\u00e7ilmezdir. Bu makalede ele alaca\u011f\u0131m\u0131z YOLOv9 ve MediaPipe entegrasyonu, bu t\u00fcr y\u00fcksek performans gereksinimlerini kar\u015f\u0131lamak i\u00e7in tasarlanm\u0131\u015f g\u00fc\u00e7l\u00fc bir \u00e7\u00f6z\u00fcmd\u00fcr.<\/p>\n<h2>YOLOv9 ve MediaPipe: Bu \u0130ki Teknoloji Temel Olarak Ne \u0130\u015f Yapar?<\/h2>\n<p>Uygulamam\u0131z\u0131n kalbinde yer alan YOLOv9 ve MediaPipe, her biri kendi alan\u0131nda \u00e7\u0131\u011f\u0131r a\u00e7m\u0131\u015f iki farkl\u0131 ancak birbirini tamamlayan teknolojidir. Bu ikilinin ne oldu\u011funu ve neden bir arada bu kadar g\u00fc\u00e7l\u00fc olduklar\u0131n\u0131 anlamak, projemizin temelini kavramak anlam\u0131na gelir.<\/p>\n<p><strong>YOLOv9 (You Only Look Once v9):<\/strong> YOLO serisi, ger\u00e7ek zamanl\u0131 nesne tespiti konusunda uzun s\u00fcredir lider konumdad\u0131r. &#8220;You Only Look Once&#8221; felsefesiyle adland\u0131r\u0131lan bu modeller, bir g\u00f6r\u00fcnt\u00fcy\u00fc tek bir ge\u00e7i\u015fte analiz ederek, i\u00e7indeki birden fazla nesneyi ayn\u0131 anda hem s\u0131n\u0131fland\u0131r\u0131r hem de konumlar\u0131n\u0131 belirler. Geleneksel nesne tespit y\u00f6ntemleri, \u00f6nce aday b\u00f6lgeleri belirleyip sonra her b\u00f6lgeyi ayr\u0131 ayr\u0131 s\u0131n\u0131fland\u0131r\u0131rken, YOLO bu iki ad\u0131m\u0131 birle\u015ftirerek m\u00fcthi\u015f bir h\u0131z avantaj\u0131 sa\u011flar. YOLOv9, serinin en yeni \u00fcyelerinden biridir ve \u00f6nceki versiyonlara g\u00f6re \u00f6nemli iyile\u015ftirmeler sunar. \u00d6zellikle, <strong>Genel Bilgi A\u011f\u0131 (Generalized ELAN &#8211; GELAN)<\/strong> ve <strong>\u00d6l\u00e7ek Tabanl\u0131 Ters D\u00f6n\u00fc\u015f\u00fcm A\u011f\u0131 (Programmable Gradient Information &#8211; PGI)<\/strong> gibi yenilik\u00e7i mimari tasar\u0131mlar sayesinde, daha az parametre ile daha y\u00fcksek do\u011fruluk ve daha iyi \u00e7\u0131kar\u0131m h\u0131z\u0131 elde eder. Bu, \u00f6zellikle bizim gibi y\u00fcksek FPS hedefleyen uygulamalar i\u00e7in kritik bir avantajd\u0131r. YOLOv9, bir g\u00f6r\u00fcnt\u00fcdeki insan y\u00fczlerini h\u0131zl\u0131 ve do\u011fru bir \u015fekilde tespit etmek i\u00e7in kullan\u0131lacak ilk katman\u0131m\u0131z olacak. Bir y\u00fcz\u00fc bir &#8220;nesne&#8221; olarak g\u00f6r\u00fcp, o y\u00fcz\u00fcn s\u0131n\u0131rlar\u0131n\u0131 (bounding box) bize \u00e7ok h\u0131zl\u0131 bir \u015fekilde verecek.<\/p>\n<p><strong>MediaPipe:<\/strong> Google taraf\u0131ndan geli\u015ftirilen MediaPipe, \u00e7e\u015fitli makine \u00f6\u011frenimi g\u00f6revleri i\u00e7in platformlar aras\u0131, \u00f6zelle\u015ftirilebilir bir \u00e7er\u00e7evedir. El takibi, v\u00fccut poz tahmini, sa\u00e7 segmentasyonu gibi bir\u00e7ok farkl\u0131 g\u00f6revi ger\u00e7ek zamanl\u0131 olarak ger\u00e7ekle\u015ftirebilen haz\u0131r ML \u00e7\u00f6z\u00fcmleri sunar. Bizim uygulamam\u0131zda ise, \u00f6zellikle <strong>MediaPipe Face Landmarker<\/strong> mod\u00fcl\u00fcn\u00fc kullanaca\u011f\u0131z. Bu mod\u00fcl, bir y\u00fcz\u00fcn 468 (veya daha fazla) kritik noktas\u0131n\u0131 (landmark) milisaniyeler i\u00e7inde tespit edebilir. MediaPipe&#8217;\u0131n g\u00fcc\u00fc, karma\u015f\u0131k ML modellerini optimize edilmi\u015f bir \u015fekilde sunmas\u0131 ve CPU\/GPU \u00fczerinde sorunsuz \u00e7al\u0131\u015fabilmesidir. Ayr\u0131ca, \u00e7e\u015fitli programlama dilleri ve platformlar (Python, C++, JavaScript, Android, iOS) i\u00e7in API&#8217;ler sunarak geli\u015ftiricilere b\u00fcy\u00fck esneklik sa\u011flar. YOLOv9&#8217;un tespit etti\u011fi y\u00fcz kutular\u0131n\u0131n i\u00e7ine girerek, bu kutular i\u00e7indeki y\u00fczlerin \u00e7ok daha detayl\u0131 noktalama bilgisini sa\u011flamak MediaPipe&#8217;\u0131n g\u00f6revi olacak. Bu iki teknolojinin birle\u015fimi, bir yandan YOLOv9&#8217;un genel y\u00fcz tespiti h\u0131z\u0131ndan faydalan\u0131rken, di\u011fer yandan MediaPipe&#8217;\u0131n y\u00fczdeki ince detaylar\u0131 hassas bir \u015fekilde yakalama yetene\u011fini kullanmam\u0131z\u0131 sa\u011fl\u0131yor.<\/p>\n<h2>YOLOv9 ile Y\u00fcz Tespiti S\u00fcreci Nas\u0131l \u0130\u015fler ve Neden Bu Kadar Etkilidir?<\/h2>\n<p>YOLOv9&#8217;un y\u00fcz tespiti yetene\u011fi, uygulamam\u0131z\u0131n temelini olu\u015fturan kritik bir ad\u0131md\u0131r. Bir video ak\u0131\u015f\u0131ndan gelen her karede, birden fazla y\u00fcz olsa bile, bu y\u00fczleri h\u0131zla ve do\u011fru bir \u015fekilde konumland\u0131rmak gerekir. YOLOv9 bu g\u00f6revi, &#8220;tek bir bak\u0131\u015fta&#8221; felsefesiyle m\u00fckemmel bir \u015fekilde yerine getirir. Peki, bu s\u00fcre\u00e7 tam olarak nas\u0131l i\u015fler ve YOLOv9&#8217;u bu kadar etkili k\u0131lan nedir?<\/p>\n<p>\u00d6ncelikle, YOLOv9, b\u00fcy\u00fck veri k\u00fcmeleri \u00fczerinde (\u00f6rne\u011fin WIDER FACE gibi y\u00fcz tespiti i\u00e7in \u00f6zel olarak etiketlenmi\u015f veri setleri \u00fczerinde) e\u011fitilmi\u015f bir derin \u00f6\u011frenme modelidir. Bu e\u011fitim s\u00fcrecinde, model, farkl\u0131 a\u00e7\u0131lardan, farkl\u0131 ayd\u0131nlatma ko\u015fullar\u0131nda ve farkl\u0131 y\u00fcz ifadeleriyle \u00e7ekilmi\u015f binlerce y\u00fcz g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fc ve bu y\u00fczlerin s\u0131n\u0131rlay\u0131c\u0131 kutular\u0131n\u0131 (bounding box) \u00f6\u011frenir. Modelin temel mimarisi, giri\u015f g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fc k\u00fc\u00e7\u00fck h\u00fccrelere b\u00f6ler ve her h\u00fccre, o h\u00fccrenin i\u00e7inde bir nesne (bizim durumumuzda bir y\u00fcz) olup olmad\u0131\u011f\u0131n\u0131, varsa hangi s\u0131n\u0131fa ait oldu\u011funu (sadece &#8216;y\u00fcz&#8217; s\u0131n\u0131f\u0131m\u0131z var) ve s\u0131n\u0131rlay\u0131c\u0131 kutusunun koordinatlar\u0131n\u0131 tahmin eder.<\/p>\n<p>YOLOv9&#8217;un \u00f6nceki versiyonlara g\u00f6re \u00f6ne \u00e7\u0131kan baz\u0131 \u00f6zellikleri vard\u0131r. <strong>Programmable Gradient Information (PGI)<\/strong>, modelin derinlik artt\u0131k\u00e7a kaybolan gradient bilgisini daha iyi korumas\u0131n\u0131 sa\u011flar. Bu, modelin daha derin katmanlara ula\u015fmas\u0131na ra\u011fmen detayl\u0131 \u00f6zellik bilgilerini kaybetmemesine yard\u0131mc\u0131 olur ve \u00f6zellikle k\u00fc\u00e7\u00fck nesnelerin (uzaktaki y\u00fczler gibi) tespitinde performans\u0131 art\u0131r\u0131r. Ayr\u0131ca, <strong>Generalized ELAN (GELAN)<\/strong> yap\u0131s\u0131, hesaplama verimlili\u011fini art\u0131r\u0131rken modelin \u00f6\u011frenme kapasitesini korur. Bu mimari yenilikler sayesinde YOLOv9, daha az hesaplama kayna\u011f\u0131 kullanarak daha iyi do\u011fruluk ve daha y\u00fcksek \u00e7\u0131kar\u0131m h\u0131z\u0131 sunar. Yani, ayn\u0131 donan\u0131m \u00fczerinde daha fazla kareyi daha k\u0131sa s\u00fcrede i\u015fleyebiliriz, bu da do\u011frudan hedefledi\u011fimiz 140 FPS performans\u0131na ula\u015fmam\u0131za katk\u0131da bulunur.<\/p>\n<p>Y\u00fcz tespiti s\u0131ras\u0131nda, YOLOv9 bir kareyi analiz eder ve tespit etti\u011fi her y\u00fcz i\u00e7in bir s\u0131n\u0131rlay\u0131c\u0131 kutu (x, y koordinatlar\u0131, geni\u015flik, y\u00fckseklik) ve bir g\u00fcven skoru \u00fcretir. G\u00fcven skoru, modelin o kutunun ger\u00e7ekten bir y\u00fcz i\u00e7erdi\u011fine ne kadar inand\u0131\u011f\u0131n\u0131 g\u00f6sterir. Y\u00fcksek g\u00fcven skoruna sahip kutular filtrelenir ve \u00fcst \u00fcste binen kutular\u0131 elemek i\u00e7in <strong>Non-Maximum Suppression (NMS)<\/strong> algoritmas\u0131 uygulan\u0131r. NMS, ayn\u0131 y\u00fcz\u00fc birden fazla kez tespit eden kutulardan en y\u00fcksek g\u00fcven skoruna sahip olan\u0131 korurken di\u011ferlerini atar. Bu temizleme i\u015fleminden sonra, elimizde her karedeki y\u00fczler i\u00e7in do\u011fru ve tekil s\u0131n\u0131rlay\u0131c\u0131 kutular kal\u0131r. Bu kutular, bir sonraki a\u015famada MediaPipe&#8217;a girdi olarak verilecek ve y\u00fcz noktalama i\u00e7in kullan\u0131lacakt\u0131r. YOLOv9&#8217;un bu h\u0131z ve do\u011fruluk kombinasyonu, uygulamam\u0131z\u0131n ger\u00e7ek zamanl\u0131 ve y\u00fcksek performansl\u0131 \u00e7al\u0131\u015fmas\u0131n\u0131n anahtar\u0131d\u0131r.<\/p>\n<pre><code class=\"language-html\">Uzman \u0130pucu: YOLOv9 modelini kullan\u0131rken, modelin boyutunu (\u00f6rne\u011fin <code>yolov9-c.pt<\/code> veya <code>yolov9-e.pt<\/code>) donan\u0131m\u0131n\u0131z\u0131n kapasitesine g\u00f6re se\u00e7mek performans\u0131 do\u011frudan etkileyecektir. Daha k\u00fc\u00e7\u00fck modeller daha h\u0131zl\u0131 olabilir ancak do\u011fruluktan biraz \u00f6d\u00fcn verebilir.<\/pre>\n<p><\/code><\/p>\n<h2>MediaPipe ile Hassas Y\u00fcz Noktalama Nas\u0131l Yap\u0131l\u0131r ve Hangi Detaylar\u0131 Sa\u011flar\u0131z?<\/h2>\n<p>YOLOv9 ile y\u00fczleri ba\u015far\u0131yla tespit ettikten sonra, s\u0131ra bu y\u00fczlerin \u00fczerine detayl\u0131 noktalama bilgilerini eklemeye geliyor. \u0130\u015fte burada MediaPipe Face Landmarker devreye giriyor. MediaPipe, y\u00fczdeki 468 (veya hatta 522 farkl\u0131 versiyonunda) anatomik noktay\u0131 (landmark) tespit ederek, y\u00fcz ifadesi analizi, 3D y\u00fcz modelleme, art\u0131r\u0131lm\u0131\u015f ger\u00e7eklik filtreleri ve \u00e7ok daha fazlas\u0131 i\u00e7in zengin bir veri seti sa\u011flar. Peki, MediaPipe bu hassas tespiti nas\u0131l ger\u00e7ekle\u015ftiriyor ve bize hangi verileri sunuyor?<\/p>\n<p>MediaPipe Face Landmarker, bir derin \u00f6\u011frenme tabanl\u0131 yakla\u015f\u0131m kullan\u0131r. Genellikle, \u00f6nce bir y\u00fcz alg\u0131lay\u0131c\u0131 (Face Detector) modeli, g\u00f6r\u00fcnt\u00fcdeki y\u00fczlerin genel konumlar\u0131n\u0131 belirler. Ard\u0131ndan, tespit edilen her y\u00fcz kutusu i\u00e7indeki piksel verisi, daha karma\u015f\u0131k bir y\u00fcz noktalama modeline (Face Landmark Model) beslenir. Bu noktalama modeli, y\u00fczdeki her bir anahtar nokta i\u00e7in (g\u00f6zler, ka\u015flar, burun, dudaklar, \u00e7ene hatt\u0131 vb.) X, Y koordinatlar\u0131n\u0131 (ve bazen Z koordinat\u0131n\u0131 da, 3D y\u00fcz noktalama i\u00e7in) tahmin eder. Bu iki a\u015famal\u0131 yakla\u015f\u0131m, hem h\u0131z hem de do\u011fruluk a\u00e7\u0131s\u0131ndan optimize edilmi\u015ftir. MediaPipe'\u0131n bu s\u00fcre\u00e7teki en b\u00fcy\u00fck avantaj\u0131, t\u00fcm bu karma\u015f\u0131k i\u015fleyi\u015fi tek ve kullan\u0131m\u0131 kolay bir API alt\u0131nda sunmas\u0131d\u0131r. Geli\u015ftiricilerin model e\u011fitimi, optimizasyonu veya donan\u0131m h\u0131zland\u0131rma gibi detaylarla u\u011fra\u015fmas\u0131na gerek kalmaz; sadece modelin giri\u015fine bir g\u00f6r\u00fcnt\u00fc verip \u00e7\u0131kt\u0131lar\u0131 al\u0131rlar.<\/p>\n<p>MediaPipe'\u0131n sa\u011flad\u0131\u011f\u0131 her bir landmark, y\u00fcz\u00fcn belirli bir anatomik noktas\u0131na kar\u015f\u0131l\u0131k gelir. \u00d6rne\u011fin, g\u00f6z bebeklerinin merkezi, burun ucunun ve burun kanatlar\u0131n\u0131n noktalar\u0131, dudaklar\u0131n k\u00f6\u015feleri ve ortas\u0131, \u00e7ene hatt\u0131ndaki \u00e7e\u015fitli noktalar bu 468 noktan\u0131n bir k\u0131sm\u0131n\u0131 olu\u015fturur. Bu noktalar\u0131n her birinin benzersiz bir indeksi vard\u0131r, bu sayede belirli bir noktay\u0131 kolayca referans alabiliriz. Noktalar\u0131n koordinatlar\u0131 genellikle g\u00f6r\u00fcnt\u00fc geni\u015fli\u011fi ve y\u00fcksekli\u011fine g\u00f6re normalize edilmi\u015f olarak (0 ile 1 aras\u0131nda) verilir, bu da uygulaman\u0131n farkl\u0131 \u00e7\u00f6z\u00fcn\u00fcrl\u00fckteki g\u00f6r\u00fcnt\u00fclerle \u00e7al\u0131\u015fmas\u0131n\u0131 kolayla\u015ft\u0131r\u0131r.<\/p>\n<pre><code class=\"language-python\"># MediaPipe Face Landmarker kullan\u0131m\u0131 (Basitle\u015ftirilmi\u015f \u00f6rnek)\nimport cv2\nimport mediapipe as mp\n\nmp_face_landmarker = mp.solutions.face_landmarker\nmp_drawing = mp.solutions.drawing_utils\nmp_drawing_styles = mp.solutions.drawing_styles\n\n# Modeli y\u00fckleme\nwith mp_face_landmarker.FaceLandmarker(\n    model_path=&#039;face_landmarker_heavy.task&#039;,  # Veya lite.task\n    running_mode=mp_face_landmarker.RunningMode.IMAGE,\n    num_faces=1) as landmarker:\n\n    # G\u00f6r\u00fcnt\u00fcy\u00fc i\u015fle\n    image = cv2.imread(\"ornek_yuz.jpg\")\n    results = landmarker.detect(mp.Image(image_format=mp.ImageFormat.SRGB, data=image))\n\n    # Sonu\u00e7lar\u0131 \u00e7izme\n    annotated_image = image.copy()\n    if results.face_landmarks:\n        for face_landmarks in results.face_landmarks:\n            mp_drawing.draw_landmarks(\n                image=annotated_image,\n                landmark_list=face_landmarks,\n                connections=mp_face_landmarker.FACE_LANDMARKS_TESSELATION,\n                landmark_drawing_spec=None,\n                connection_drawing_spec=mp_drawing_styles.get_default_face_mesh_tesselation_style())\n    \n    cv2.imshow(\"Annotated Face\", annotated_image)\n    cv2.waitKey(0)\n    cv2.destroyAllWindows()<\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki kod blo\u011fu, MediaPipe Face Landmarker'\u0131n temel kullan\u0131m\u0131n\u0131 g\u00f6stermektedir. G\u00f6r\u00fcnt\u00fcy\u00fc <code>mp.Image<\/code> format\u0131na d\u00f6n\u00fc\u015ft\u00fcr\u00fcp <code>detect<\/code> metoduna vererek, modelden <code>results<\/code> al\u0131r\u0131z. Bu sonu\u00e7lar i\u00e7inde <code>face_landmarks<\/code> listesi, her tespit edilen y\u00fcz i\u00e7in bir dizi nokta i\u00e7erir. Bu noktalar\u0131 <code>mp_drawing.draw_landmarks<\/code> fonksiyonu ile kolayca g\u00f6r\u00fcnt\u00fc \u00fczerine \u00e7izebiliriz. MediaPipe'\u0131n bu kapsaml\u0131 ve optimize edilmi\u015f yap\u0131s\u0131, y\u00fcz noktalama a\u015famas\u0131nda hem do\u011fruluk hem de performans a\u00e7\u0131s\u0131ndan bize b\u00fcy\u00fck avantajlar sa\u011flar. YOLOv9'un h\u0131zl\u0131 y\u00fcz kutusu tespiti ile birle\u015fti\u011finde, her iki teknolojinin de en iyi y\u00f6nlerini kullanarak ultra h\u0131zl\u0131 ve detayl\u0131 bir y\u00fcz noktalama uygulamas\u0131 olu\u015fturman\u0131n kap\u0131lar\u0131n\u0131 aralam\u0131\u015f oluruz.<\/p>\n<h2>Uygulama Mimarisi: YOLOv9 ve MediaPipe Entegrasyonu Nas\u0131l Ger\u00e7ekle\u015ftirilir?<\/h2>\n<p>Y\u00fcksek performansl\u0131 bir ger\u00e7ek zamanl\u0131 y\u00fcz noktalama uygulamas\u0131 geli\u015ftirmek i\u00e7in YOLOv9 ve MediaPipe'\u0131 entegre etmek, ak\u0131ll\u0131 bir mimari tasar\u0131m gerektirir. Bu iki g\u00fc\u00e7l\u00fc arac\u0131 en verimli \u015fekilde birle\u015ftirmek, 140 FPS hedefine ula\u015fmam\u0131z\u0131 sa\u011flayan anahtar unsurdur. \u0130\u015fte bu entegrasyonun temel ad\u0131mlar\u0131 ve mimarinin i\u015fleyi\u015fi:<\/p>\n<p><strong>1. Veri Ak\u0131\u015f\u0131 ve \u00d6n \u0130\u015fleme:<\/strong><br \/>\nUygulamam\u0131z bir kamera veya video dosyas\u0131ndan s\u00fcrekli g\u00f6r\u00fcnt\u00fc ak\u0131\u015f\u0131 alacakt\u0131r. Her kare al\u0131nd\u0131\u011f\u0131nda, bu kare \u00f6nce baz\u0131 temel \u00f6n i\u015fleme ad\u0131mlar\u0131ndan ge\u00e7ebilir (\u00f6rne\u011fin, yeniden boyutland\u0131rma veya renk format\u0131 d\u00f6n\u00fc\u015f\u00fcm\u00fc). Ancak, her iki model de genellikle RGB veya BGR format\u0131nda \u00e7al\u0131\u015fabildi\u011fi i\u00e7in, minimum d\u00fczeyde \u00f6n i\u015fleme gereklidir.<\/p>\n<p><strong>2. YOLOv9 ile Y\u00fcz Tespiti:<\/strong><br \/>\n\u0130lk ve en \u00f6nemli ad\u0131m, gelen g\u00f6r\u00fcnt\u00fc karesi \u00fczerinde YOLOv9 modelini \u00e7al\u0131\u015ft\u0131rarak y\u00fczleri tespit etmektir. YOLOv9, karay\u0131 girdi olarak al\u0131r ve tespit etti\u011fi her y\u00fcz i\u00e7in bir s\u0131n\u0131rlay\u0131c\u0131 kutu (bounding box) ve bir g\u00fcven skoru \u00e7\u0131kt\u0131s\u0131 verir. Bu a\u015fama, t\u00fcm y\u00fczlerin genel konumlar\u0131n\u0131 h\u0131zl\u0131ca belirler.<\/p>\n<pre><code class=\"language-python\"># YOLOv9 ile y\u00fcz tespiti (ps\u00f6do-kod)\nfrom ultralytics import YOLO\nimport cv2\n\n# YOLOv9 modelini y\u00fckle\nyolo_model = YOLO(&#039;yolov9c.pt&#039;) # veya ba\u015fka bir YOLOv9 modeli\nyolo_model.fuse() # Model optimizasyonu i\u00e7in\n\ndef detect_faces_with_yolo(frame):\n    results = yolo_model(frame, classes=[0], conf=0.5, iou=0.7) # classes=[0] varsay\u0131lan olarak &#039;person&#039; s\u0131n\u0131f\u0131d\u0131r, modele g\u00f6re ayarlanmal\u0131.\n    face_boxes = []\n    for r in results:\n        boxes = r.boxes.xyxy.cpu().numpy() # [x1, y1, x2, y2] format\u0131nda kutular\n        confidences = r.boxes.conf.cpu().numpy()\n        for i in range(len(boxes)):\n            x1, y1, x2, y2 = map(int, boxes[i])\n            confidence = confidences[i]\n            # Sadece belirli bir g\u00fcven skorunun \u00fczerindeki tespitleri al\n            if confidence > 0.6: \n                face_boxes.append((x1, y1, x2, y2))\n    return face_boxes<\/pre>\n<p><\/code><\/p>\n<pre><code class=\"language-python\"><strong>3. MediaPipe \u0130\u00e7in Y\u00fcz Kutu K\u0131rpma ve \u00d6n \u0130\u015fleme:<\/strong>\nYOLOv9&#039;dan elde edilen her bir y\u00fcz kutusu, MediaPipe Face Landmarker modeline ayr\u0131 ayr\u0131 g\u00f6nderilmek \u00fczere k\u0131rp\u0131l\u0131r. K\u0131rpma i\u015flemi, MediaPipe&#039;\u0131n sadece ilgili y\u00fcz b\u00f6lgesine odaklanmas\u0131n\u0131 sa\u011flar ve hem hesaplama y\u00fck\u00fcn\u00fc azalt\u0131r hem de do\u011frulu\u011fu art\u0131r\u0131r. Bazen, y\u00fcz kutusunu biraz geni\u015fletmek (padding eklemek), MediaPipe&#039;\u0131n y\u00fcz\u00fc daha iyi alg\u0131lamas\u0131na yard\u0131mc\u0131 olabilir.\n\n<strong>4. MediaPipe ile Y\u00fcz Noktalama:<\/strong>\nK\u0131rp\u0131lan her y\u00fcz g\u00f6r\u00fcnt\u00fcs\u00fc, MediaPipe Face Landmarker modeline beslenir. MediaPipe, bu k\u0131rp\u0131lm\u0131\u015f g\u00f6r\u00fcnt\u00fc \u00fczerinde \u00e7al\u0131\u015f\u0131r ve y\u00fczdeki 468 (veya daha fazla) noktay\u0131 tespit eder. Bu noktalar, k\u0131rp\u0131lm\u0131\u015f g\u00f6r\u00fcnt\u00fcn\u00fcn koordinat sistemine g\u00f6re verilir.<\/pre>\n<p><\/code># MediaPipe ile y\u00fcz noktalama (ps\u00f6do-kod)<br \/>\nimport mediapipe as mp<\/p>\n<p>mp_face_landmarker = mp.solutions.face_landmarker<br \/>\nlandmarker = mp_face_landmarker.FaceLandmarker(<br \/>\n    model_path=&#039;face_landmarker_heavy.task&#039;,<br \/>\n    running_mode=mp_face_landmarker.RunningMode.IMAGE,<br \/>\n    num_faces=1 # Her kutuda tek y\u00fcz beklendi\u011fi i\u00e7in 1<br \/>\n)<\/p>\n<p>def get_landmarks_with_mediapipe(cropped_face_image):<br \/>\n    mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=cropped_face_image)<br \/>\n    landmarker_result = landmarker.detect(mp_image)<br \/>\n    if landmarker_result.face_landmarks:<br \/>\n        # Normalize edilmi\u015f koordinatlar\u0131 piksel koordinatlar\u0131na \u00e7evir<br \/>\n        landmarks = []<br \/>\n        for landmark in landmarker_result.face_landmarks[0]:<br \/>\n            landmarks.append((int(landmark.x * cropped_face_image.shape[1]),<br \/>\n                              int(landmark.y * cropped_face_image.shape[0])))<br \/>\n        return landmarks<br \/>\n    return None<\/code><\/p>\n<p><strong>5. Koordinat D\u00f6n\u00fc\u015f\u00fcm\u00fc ve \u00c7izim:<\/strong><br \/>\nMediaPipe'tan al\u0131nan y\u00fcz noktalama koordinatlar\u0131, k\u0131rp\u0131lm\u0131\u015f y\u00fcz g\u00f6r\u00fcnt\u00fcs\u00fcn\u00fcn koordinat sistemindedir. Bunlar\u0131 orijinal video karesinin koordinat sistemine geri d\u00f6n\u00fc\u015ft\u00fcrmek gereklidir. Bu, basit bir ofset ekleme i\u015flemiyle yap\u0131l\u0131r. D\u00f6n\u00fc\u015ft\u00fcr\u00fclen koordinatlar, daha sonra orijinal kare \u00fczerine \u00e7izilerek kullan\u0131c\u0131ya g\u00f6sterilir.<\/p>\n<p><strong>6. Paralelle\u015ftirme ve Optimizasyon:<\/strong><br \/>\n140 FPS gibi y\u00fcksek bir hedefe ula\u015fmak i\u00e7in, bu ad\u0131mlar\u0131n m\u00fcmk\u00fcn oldu\u011funca verimli ve paralel \u00e7al\u0131\u015fmas\u0131 \u00f6nemlidir. \u00d6rne\u011fin, YOLOv9 GPU \u00fczerinde \u00e7al\u0131\u015f\u0131rken, MediaPipe da ayn\u0131 anda veya s\u0131rayla ba\u015fka bir GPU \u00e7ekirde\u011finde veya CPU'da \u00e7al\u0131\u015fabilir. Her iki modelin de \u00e7\u0131kar\u0131m s\u00fcrelerini minimuma indirmek i\u00e7in model optimizasyonu ( quantization, ONNX d\u0131\u015fa aktarma vb.) ve donan\u0131m h\u0131zland\u0131rmas\u0131ndan (CUDA, TensorRT) faydalanmak kritik olacakt\u0131r. Python'daki <code>concurrent.futures<\/code> veya <code>multiprocessing<\/code> mod\u00fclleri ile baz\u0131 i\u015flemleri paralel hale getirmek de performans art\u0131\u015f\u0131 sa\u011flayabilir. Bu katmanl\u0131 yakla\u015f\u0131m, her bir teknolojinin kendi uzmanl\u0131k alan\u0131nda en iyisini yapmas\u0131n\u0131 sa\u011flayarak, toplamda \u00e7ok daha g\u00fc\u00e7l\u00fc ve h\u0131zl\u0131 bir sistem elde etmemizi sa\u011flar.<\/p>\n<pre><code class=\"language-html\"><div class=\"note\">\n    <strong>\u00d6nemli Not:<\/strong> MediaPipe&#039;\u0131n varsay\u0131lan y\u00fcz alg\u0131lay\u0131c\u0131s\u0131 da olduk\u00e7a h\u0131zl\u0131d\u0131r. Ancak YOLOv9, genel nesne tespiti konusunda daha esnek bir yap\u0131 sunar ve ba\u015fka nesnelerin tespiti gibi ek g\u00f6revler i\u00e7in de \u00f6l\u00e7eklendirilebilir. Bu entegrasyonda YOLOv9&#039;u \u00f6ne \u00e7\u0131karmam\u0131z\u0131n temel sebebi, genelle\u015ftirilebilirli\u011fi ve modern ML yakla\u015f\u0131mlar\u0131n\u0131n g\u00fcc\u00fcn\u00fc sergilemektir. E\u011fer sadece y\u00fcz noktalama yap\u0131yorsan\u0131z, MediaPipe&#039;\u0131n kendi Face Detector&#039;\u0131 da iyi bir ba\u015flang\u0131\u00e7 noktas\u0131 olabilir.\n  <\/div><\/pre>\n<p><\/code><\/p>\n<h2>Ad\u0131m Ad\u0131m Uygulama Geli\u015ftirme: Kodu Ba\u015ftan Sona Yazal\u0131m<\/h2>\n<p>\u015eimdiye kadar teorik altyap\u0131y\u0131 ve mimariyi anlad\u0131k. Art\u0131k bu bilgileri pratik bir uygulamaya d\u00f6n\u00fc\u015ft\u00fcrme zaman\u0131. \u0130\u015fte ad\u0131m ad\u0131m, 140 FPS ger\u00e7ek zamanl\u0131 y\u00fcz noktalama uygulamas\u0131n\u0131 olu\u015fturmak i\u00e7in yazaca\u011f\u0131m\u0131z Python kodu. Bu \u00f6rnek, konsepti basitle\u015ftirmek ve temel ak\u0131\u015f\u0131 g\u00f6stermek amac\u0131yla tasarlanm\u0131\u015ft\u0131r.<\/p>\n<p><strong>1. Gerekli K\u00fct\u00fcphaneleri Kurun:<\/strong><br \/>\nBa\u015flamadan \u00f6nce, gerekli t\u00fcm k\u00fct\u00fcphaneleri y\u00fckledi\u011finizden emin olun:<\/p>\n<pre><code class=\"language-bash\">pip install opencv-python mediapipe ultralytics<\/pre>\n<p><\/code><br \/>\nYOLOv9 modelini indirmek i\u00e7in Ultralytics'in resmi deposunu ziyaret edebilir veya do\u011frudan <code>yolo_model = YOLO(&#039;yolov9c.pt&#039;)<\/code> sat\u0131r\u0131 \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda ilk kullan\u0131mda otomatik indirilmesini bekleyebilirsiniz. MediaPipe i\u00e7in <code>face_landmarker_heavy.task<\/code> dosyas\u0131n\u0131 Google'\u0131n MediaPipe \u00f6rneklerinden indirmeniz gerekecektir.<\/p>\n<p><strong>2. Temel Yap\u0131y\u0131 Olu\u015fturun:<\/strong><br \/>\nBir Python dosyas\u0131 olu\u015fturun (\u00f6rne\u011fin, <code>face_landmarker_app.py<\/code>) ve temel import i\u015flemlerini ekleyin.<\/p>\n<pre><code class=\"language-python\">import cv2\nimport mediapipe as mp\nfrom ultralytics import YOLO\nimport time\n\n# MediaPipe \u00e7izim yard\u0131mc\u0131lar\u0131\nmp_drawing = mp.solutions.drawing_utils\nmp_drawing_styles = mp.solutions.drawing_styles\nmp_face_landmarker = mp.solutions.face_landmarker\n\n# YOLOv9 modelini y\u00fckle\n# Not: &#039;person&#039; s\u0131n\u0131f\u0131 i\u00e7in e\u011fitilmi\u015f bir YOLOv9 modeli kullan\u0131yoruz.\n# E\u011fer sadece y\u00fcz tespiti i\u00e7in \u00f6zel bir modeliniz varsa onu kullan\u0131n.\nyolo_model = YOLO(&#039;yolov9c.pt&#039;) \nyolo_model.fuse() # Optimizasyon i\u00e7in\n\n# MediaPipe Face Landmarker&#039;\u0131 y\u00fckle\n# Modeli indirdi\u011finiz yolu belirtin: &#039;face_landmarker_heavy.task&#039;\n# https:\/\/developers.google.com\/mediapipe\/solutions\/vision\/face_landmarker adresinden indirebilirsiniz.\nlandmarker = mp_face_landmarker.FaceLandmarker(\n    model_path=&#039;face_landmarker_heavy.task&#039;, \n    running_mode=mp_face_landmarker.RunningMode.IMAGE, # Her kareyi ba\u011f\u0131ms\u0131z olarak i\u015fle\n    num_faces=5 # Ayn\u0131 anda en fazla 5 y\u00fcz\u00fc i\u015fleyebilir\n)<\/pre>\n<p><\/code><\/p>\n<pre><code class=\"language-python\"><strong>3. Ana Uygulama D\u00f6ng\u00fcs\u00fc:<\/strong>\nKamera ak\u0131\u015f\u0131n\u0131 i\u015fleyecek ana d\u00f6ng\u00fcy\u00fc yazal\u0131m.<\/pre>\n<p><\/code>def run_face_landmark_app():<br \/>\n    cap = cv2.VideoCapture(0) # 0, varsay\u0131lan webcam&#039;i temsil eder<\/p>\n<p>    if not cap.isOpened():<br \/>\n        print(\"Kamera a\u00e7\u0131lamad\u0131.\")<br \/>\n        return<\/p>\n<p>    prev_frame_time = 0<br \/>\n    new_frame_time = 0<\/p>\n<p>    while True:<br \/>\n        ret, frame = cap.read()<br \/>\n        if not ret:<br \/>\n            break<\/p>\n<p>        # YOLOv9 ile y\u00fcz tespiti<br \/>\n        # YOLOv9 genellikle BGR format\u0131nda g\u00f6r\u00fcnt\u00fc bekler, OpenCV de varsay\u0131lan olarak BGR verir.<br \/>\n        yolo_results = yolo_model(frame, classes=[0], conf=0.5, iou=0.7, verbose=False) # &#039;person&#039; s\u0131n\u0131f\u0131 (s\u0131n\u0131f 0)<br \/>\n        face_boxes = []<br \/>\n        for r in yolo_results:<br \/>\n            boxes = r.boxes.xyxy.cpu().numpy()<br \/>\n            confidences = r.boxes.conf.cpu().numpy()<br \/>\n            for i in range(len(boxes)):<br \/>\n                x1, y1, x2, y2 = map(int, boxes[i])<br \/>\n                confidence = confidences[i]<br \/>\n                if confidence > 0.6 and (y2-y1) > 50 and (x2-x1) > 50: # Minimum boyut kontrol\u00fc<br \/>\n                    face_boxes.append((x1, y1, x2, y2))<\/p>\n<p>        # MediaPipe ile y\u00fcz noktalama<br \/>\n        annotated_frame = frame.copy()<\/p>\n<p>        for (x1, y1, x2, y2) in face_boxes:<br \/>\n            # YOLO kutusunu biraz geni\u015fletelim ki MediaPipe y\u00fcz\u00fc daha iyi alg\u0131las\u0131n<br \/>\n            padding = 0.1 # %10 padding<br \/>\n            w, h = x2 - x1, y2 - y1<br \/>\n            x1_padded = max(0, int(x1 - w * padding))<br \/>\n            y1_padded = max(0, int(y1 - h * padding))<br \/>\n            x2_padded = min(frame.shape[1], int(x2 + w * padding))<br \/>\n            y2_padded = min(frame.shape[0], int(y2 + h * padding))<\/p>\n<p>            cropped_face = frame[y1_padded:y2_padded, x1_padded:x2_padded]<br \/>\n            if cropped_face.shape[0] == 0 or cropped_face.shape[1] == 0:<br \/>\n                continue<\/p>\n<p>            # MediaPipe&#039;a i\u015flemek i\u00e7in g\u00f6r\u00fcnt\u00fcy\u00fc RGB&#039;ye \u00e7evir<br \/>\n            mp_image = mp.Image(image_format=mp.ImageFormat.SRGB, data=cv2.cvtColor(cropped_face, cv2.COLOR_BGR2RGB))<br \/>\n            landmarker_result = landmarker.detect(mp_image)<\/p>\n<p>            if landmarker_result.face_landmarks:<br \/>\n                for face_landmarks in landmarker_result.face_landmarks:<br \/>\n                    # Noktalar\u0131 orijinal \u00e7er\u00e7eve koordinatlar\u0131na d\u00f6n\u00fc\u015ft\u00fcr ve \u00e7iz<br \/>\n                    for landmark in face_landmarks:<br \/>\n                        # Normalize edilmi\u015f koordinatlar\u0131 piksel koordinatlar\u0131na \u00e7evir<br \/>\n                        # ve padding&#039;i de hesaba kat<br \/>\n                        lx = int(landmark.x * cropped_face.shape[1]) + x1_padded<br \/>\n                        ly = int(landmark.y * cropped_face.shape[0]) + y1_padded<br \/>\n                        cv2.circle(annotated_frame, (lx, ly), 1, (0, 255, 0), -1) # Ye\u015fil noktalar<\/p>\n<p>                    # \u0130ste\u011fe ba\u011fl\u0131 olarak MediaPipe&#039;\u0131n kendi \u00e7izimlerini kullanabiliriz<br \/>\n                    # Ancak performans i\u00e7in sadece noktalar\u0131 \u00e7izmek daha h\u0131zl\u0131 olabilir.<br \/>\n                    # mp_drawing.draw_landmarks(<br \/>\n                    #     image=annotated_frame,<br \/>\n                    #     landmark_list=face_landmarks,<br \/>\n                    #     connections=mp_face_landmarker.FACE_LANDMARKS_TESSELATION,<br \/>\n                    #     landmark_drawing_spec=mp_drawing_styles.get_default_face_mesh_tesselation_style(),<br \/>\n                    #     connection_drawing_spec=None)<\/p>\n<p>        # FPS hesaplama ve g\u00f6sterme<br \/>\n        new_frame_time = time.time()<br \/>\n        fps = 1 \/ (new_frame_time - prev_frame_time)<br \/>\n        prev_frame_time = new_frame_time<br \/>\n        fps_text = f\"FPS: {int(fps)}\"<br \/>\n        cv2.putText(annotated_frame, fps_text, (10, 30), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2, cv2.LINE_AA)<\/p>\n<p>        cv2.imshow(&#039;YOLOv9 + MediaPipe Face Landmarks&#039;, annotated_frame)<\/p>\n<p>        if cv2.waitKey(1) & 0xFF == ord(&#039;q&#039;):<br \/>\n            break<\/p>\n<p>    cap.release()<br \/>\n    cv2.destroyAllWindows()<br \/>\n    landmarker.close() # Kaynaklar\u0131 serbest b\u0131rak<\/p>\n<p>if __name__ == &#039;__main__&#039;:<br \/>\n    run_face_landmark_app()<\/code><\/p>\n<p>Bu kod, her video karesini al\u0131r, YOLOv9 ile y\u00fczleri tespit eder, tespit edilen her y\u00fcz\u00fc k\u0131rpar ve MediaPipe ile bu k\u0131rp\u0131lm\u0131\u015f y\u00fcz \u00fczerinde noktalama yapar. Son olarak, noktalar\u0131 orijinal kareye geri \u00e7izer ve FPS'i g\u00f6r\u00fcnt\u00fcler. <code>yolo_model(frame, classes=[0], ...)<\/code> k\u0131sm\u0131nda <code>classes=[0]<\/code> ifadesi, YOLO'nun COCO veri k\u00fcmesinde 'person' (insan) s\u0131n\u0131f\u0131n\u0131 temsil eder. Varsay\u0131lan olarak insanlar\u0131 alg\u0131lamas\u0131n\u0131 sa\u011flar\u0131z, \u00e7\u00fcnk\u00fc y\u00fczler genellikle bir insan bedeninin par\u00e7as\u0131d\u0131r. Ancak daha optimize bir yakla\u015f\u0131m i\u00e7in, sadece y\u00fczler \u00fczerinde e\u011fitilmi\u015f bir YOLO modeli kullanmak daha verimli olacakt\u0131r. 140 FPS hedefine ula\u015fmak i\u00e7in donan\u0131m\u0131n\u0131z\u0131n g\u00fcc\u00fc (\u00f6zellikle GPU) ve kodunuzdaki ince optimizasyonlar kritik rol oynayacakt\u0131r.<\/p>\n<h2>Performans Optimizasyonu ve 140 FPS Hedefine Ula\u015fma Yollar\u0131 Nelerdir?<\/h2>\n<p>140 FPS gibi iddial\u0131 bir hedefe ula\u015fmak, sadece do\u011fru modelleri se\u00e7mekle de\u011fil, ayn\u0131 zamanda sistemin her katman\u0131nda ak\u0131ll\u0131 optimizasyonlar yapmakla m\u00fcmk\u00fcnd\u00fcr. \u0130\u015fte bu y\u00fcksek performans\u0131 elde etmek i\u00e7in uygulayabilece\u011finiz stratejiler:<\/p>\n<p><strong>1. Donan\u0131m H\u0131zland\u0131rma (GPU Kullan\u0131m\u0131):<\/strong><br \/>\nBu performans seviyesine ula\u015fman\u0131n en kritik yolu GPU (Grafik \u0130\u015flem Birimi) kullanmakt\u0131r. Hem YOLOv9 hem de MediaPipe, GPU h\u0131zland\u0131rmas\u0131 i\u00e7in tasarlanm\u0131\u015ft\u0131r.<br \/>\n*   <strong>CUDA ve cuDNN:<\/strong> NVIDIA GPU'lar\u0131 kullan\u0131yorsan\u0131z, CUDA ve cuDNN'in do\u011fru bir \u015fekilde y\u00fcklendi\u011finden emin olun. Bu, derin \u00f6\u011frenme modellerinin GPU \u00fczerinde \u00e7ok daha h\u0131zl\u0131 \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong>TensorRT:<\/strong> NVIDIA'n\u0131n TensorRT k\u00fct\u00fcphanesi, derin \u00f6\u011frenme modellerini \u00e7\u0131kar\u0131m (inference) i\u00e7in optimize eder. YOLOv9 modelinizi TensorRT format\u0131na d\u00f6n\u00fc\u015ft\u00fcrmek, \u00e7\u0131kar\u0131m s\u00fcresini \u00f6nemli \u00f6l\u00e7\u00fcde azaltabilir. MediaPipe da TensorRT ile entegre \u00e7al\u0131\u015fabilir.<br \/>\n*   <strong>Di\u011fer GPU'lar:<\/strong> AMD veya Intel GPU'lar\u0131 i\u00e7in de OpenVINO (Intel) veya ROCm (AMD) gibi kar\u015f\u0131l\u0131k gelen h\u0131zland\u0131rma k\u00fct\u00fcphaneleri mevcuttur.<\/p>\n<p><strong>2. Model Optimizasyonu:<\/strong><br \/>\n*   <strong>Model Se\u00e7imi:<\/strong> YOLOv9'un farkl\u0131 boyutlarda (nano, small, medium, large, huge) \u00f6nceden e\u011fitilmi\u015f modelleri vard\u0131r. Daha k\u00fc\u00e7\u00fck modeller, genellikle daha az do\u011frulukla daha y\u00fcksek h\u0131z sunar. Performans ve do\u011fruluk aras\u0131nda en iyi dengeyi bulmak i\u00e7in farkl\u0131 modelleri deneyin (<code>yolov9c.pt<\/code> yerine <code>yolov9s.pt<\/code> gibi). MediaPipe i\u00e7in de <code>face_landmarker_lite.task<\/code> gibi daha hafif modeller mevcuttur.<br \/>\n*   <strong>Kuantizasyon (Quantization):<\/strong> Derin \u00f6\u011frenme modellerinin a\u011f\u0131rl\u0131klar\u0131n\u0131 ve aktivasyonlar\u0131n\u0131 daha d\u00fc\u015f\u00fck hassasiyetli veri tiplerine (\u00f6rn. 32-bit float yerine 8-bit integer) d\u00f6n\u00fc\u015ft\u00fcrmek, model boyutunu k\u00fc\u00e7\u00fclt\u00fcr ve \u00e7\u0131kar\u0131m s\u00fcresini h\u0131zland\u0131r\u0131r. Bu, \u00f6zellikle kenar cihazlarda (edge devices) \u00f6nemlidir.<br \/>\n*   <strong>Model Budama (Pruning):<\/strong> Modeldeki daha az \u00f6nemli a\u011f\u0131rl\u0131klar\u0131 veya katmanlar\u0131 eleyerek modelin boyutunu ve hesaplama ihtiyac\u0131n\u0131 azaltma y\u00f6ntemidir.<\/p>\n<p><strong>3. \u0130\u015flem Hatt\u0131 Optimizasyonu:<\/strong><br \/>\n*   <strong>Veri Ak\u0131\u015f\u0131 Y\u00f6netimi:<\/strong> Kamera veya video ak\u0131\u015f\u0131ndan gelen karelerin i\u015flenmesi s\u0131ras\u0131nda, arabellek (buffer) y\u00f6netimini iyi yapmak gecikmeyi azalt\u0131r.<br \/>\n*   <strong>\u00c7oklu \u0130\u015f Par\u00e7ac\u0131\u011f\u0131\/\u0130\u015flem (Multithreading\/Multiprocessing):<\/strong> YOLOv9 ve MediaPipe i\u015flemlerini ayr\u0131 i\u015f par\u00e7ac\u0131klar\u0131nda veya i\u015flemlerde \u00e7al\u0131\u015ft\u0131rmak, baz\u0131 ad\u0131mlar\u0131n paralel olarak y\u00fcr\u00fct\u00fclmesini sa\u011flayabilir. \u00d6rne\u011fin, bir i\u015f par\u00e7ac\u0131\u011f\u0131 bir \u00f6nceki kareyi i\u015flerken, di\u011fer i\u015f par\u00e7ac\u0131\u011f\u0131 yeni kareyi kameradan okuyabilir. Python'\u0131n <code>concurrent.futures<\/code> mod\u00fcl\u00fc bunun i\u00e7in uygun olabilir.<br \/>\n*   <strong>Minimum \u00d6n \u0130\u015fleme:<\/strong> G\u00f6r\u00fcnt\u00fc boyutland\u0131rma, renk alan\u0131 d\u00f6n\u00fc\u015f\u00fcm\u00fc gibi \u00f6n i\u015fleme ad\u0131mlar\u0131n\u0131 sadece gerekli oldu\u011funda ve minimum d\u00fczeyde uygulay\u0131n. Her ekstra i\u015flem, de\u011ferli milisaniyeler demektir.<br \/>\n*   <strong>Gereksiz \u00c7izimleri Kald\u0131rma:<\/strong> G\u00f6r\u00fcnt\u00fc \u00fczerine \u00e7izilen her piksel, performans maliyeti getirir. Sadece en gerekli bilgileri (\u00f6rn. sadece noktalar, t\u00fcm tessellation de\u011fil) veya sadece FPS sayac\u0131n\u0131 \u00e7izin.<\/p>\n<p><strong>4. Kamera ve G\u00f6r\u00fcnt\u00fc Ayarlar\u0131:<\/strong><br \/>\n*   <strong>Kamera \u00c7\u00f6z\u00fcn\u00fcrl\u00fc\u011f\u00fc:<\/strong> Daha d\u00fc\u015f\u00fck \u00e7\u00f6z\u00fcn\u00fcrl\u00fckl\u00fc bir kamera g\u00f6r\u00fcnt\u00fcs\u00fc i\u015flemek, genellikle daha h\u0131zl\u0131d\u0131r. \u00c7\u00f6z\u00fcn\u00fcrl\u00fc\u011f\u00fc, uygulaman\u0131z\u0131n ihtiya\u00e7 duydu\u011fu en d\u00fc\u015f\u00fck seviyeye ayarlay\u0131n.<br \/>\n*   <strong>Kare H\u0131z\u0131 (Capture FPS):<\/strong> Kameran\u0131n sa\u011flad\u0131\u011f\u0131 maksimum kare h\u0131z\u0131n\u0131n fark\u0131nda olun. E\u011fer kamera 30 FPS veriyorsa, yaz\u0131l\u0131msal olarak 140 FPS'e ula\u015famazs\u0131n\u0131z. Y\u00fcksek h\u0131zl\u0131 bir kamera kullanmak gerekebilir.<\/p>\n<pre><code class=\"language-html\"><div class=\"expert-tip\">\n    <strong>Ger\u00e7ek Zamanl\u0131 \u0130pu\u00e7lar\u0131:<\/strong> Python GIL (Global Interpreter Lock) nedeniyle, tam CPU paralelle\u015ftirmesi i\u00e7in <code>multiprocessing<\/code> mod\u00fcl\u00fcn\u00fc kullanmak, <code>threading<\/code>&#039;den daha etkili olabilir. Ancak GPU i\u015flemleri GIL&#039;den etkilenmez, bu y\u00fczden GPU&#039;yu yo\u011fun kullanmak performans a\u00e7\u0131s\u0131ndan \u00e7ok daha \u00f6nemlidir.\n  <\/div><\/pre>\n<p><\/code><\/p>\n<p>Bu optimizasyon stratejilerini birle\u015ftirerek ve donan\u0131m\u0131n\u0131z\u0131n potansiyelini sonuna kadar kullanarak, 140 FPS gibi etkileyici bir ger\u00e7ek zamanl\u0131 y\u00fcz noktalama performans\u0131 elde etmek m\u00fcmk\u00fcn hale gelecektir.<\/p>\n<h2>Ger\u00e7ek D\u00fcnya Senaryolar\u0131: Bu Uygulama Nerelerde Kullan\u0131labilir?<\/h2>\n<p>Y\u00fcksek FPS'te \u00e7al\u0131\u015fan ger\u00e7ek zamanl\u0131 bir y\u00fcz noktalama uygulamas\u0131, hayata ge\u00e7irdi\u011fimiz teknolojiyle s\u0131n\u0131rl\u0131 kalmay\u0131p, bir\u00e7ok farkl\u0131 end\u00fcstri ve kullan\u0131m alan\u0131nda \u00e7\u0131\u011f\u0131r a\u00e7\u0131c\u0131 potansiyele sahiptir. \u0130\u015fte bu t\u00fcr bir uygulaman\u0131n kullan\u0131labilece\u011fi baz\u0131 ger\u00e7ek d\u00fcnya senaryolar\u0131:<\/p>\n<p><strong>1. Art\u0131r\u0131lm\u0131\u015f Ger\u00e7eklik (AR) ve Sanal Ger\u00e7eklik (VR) Deneyimleri:<\/strong><br \/>\n*   <strong>Sosyal Medya Filtreleri:<\/strong> Kullan\u0131c\u0131lar\u0131n y\u00fczlerine anl\u0131k olarak uygulanan \u015fapkalar, g\u00f6zl\u00fckler, makyaj veya karakter maskeleri gibi AR filtreleri, 140 FPS sayesinde neredeyse hi\u00e7 gecikme olmadan, ultra ger\u00e7ek\u00e7i ve ak\u0131c\u0131 bir \u015fekilde \u00e7al\u0131\u015fabilir. Bu, kullan\u0131c\u0131 deneyimini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r.<br \/>\n*   <strong>Sanal Deneme Odalar\u0131:<\/strong> E-ticaret siteleri, m\u00fc\u015fterilerin g\u00f6zl\u00fck, \u015fapka veya kozmetik \u00fcr\u00fcnlerini sanal olarak denemelerine olanak tan\u0131yabilir. Y\u00fcksek do\u011fruluk ve h\u0131z, \u00fcr\u00fcnlerin y\u00fcze m\u00fckemmel oturmas\u0131n\u0131 sa\u011flar.<br \/>\n*   <strong>Oyun ve E\u011flence:<\/strong> Oyunlarda, oyuncunun y\u00fcz ifadelerini do\u011frudan oyun i\u00e7i karakterlere yans\u0131tmak (face tracking for avatars) veya y\u00fcz hareketleriyle oyun i\u00e7i komutlar vermek m\u00fcmk\u00fcn olur.<\/p>\n<p><strong>2. G\u00fcvenlik ve G\u00f6zetim Sistemleri:<\/strong><br \/>\n*   <strong>S\u00fcr\u00fcc\u00fc Yorgunluk\/Dikkat Da\u011f\u0131n\u0131kl\u0131\u011f\u0131 Tespiti:<\/strong> Ara\u00e7 i\u00e7i kameralar, s\u00fcr\u00fcc\u00fcn\u00fcn g\u00f6z kapaklar\u0131n\u0131n a\u00e7\u0131l\u0131p kapanma oran\u0131n\u0131, esneme s\u0131kl\u0131\u011f\u0131n\u0131 veya ba\u015f hareketlerini analiz ederek yorgunluk veya dikkat da\u011f\u0131n\u0131kl\u0131\u011f\u0131 belirtilerini ger\u00e7ek zamanl\u0131 olarak alg\u0131layabilir. 140 FPS, bu kritik durumlarda an\u0131nda uyar\u0131lar verilmesini sa\u011flar.<br \/>\n*   <strong>Eri\u015fim Kontrol ve Biyometrik Do\u011frulama:<\/strong> Y\u00fcz tan\u0131ma sistemlerinde, y\u00fcz noktalama, daha sa\u011flam ve spoofing'e (sahtekarl\u0131k) kar\u015f\u0131 dayan\u0131kl\u0131 bir do\u011frulama katman\u0131 sa\u011flayabilir. Canl\u0131l\u0131k tespiti (liveness detection) i\u00e7in y\u00fczdeki mikro hareketlerin analizi yap\u0131labilir.<br \/>\n*   <strong>Davran\u0131\u015f Analizi:<\/strong> Kalabal\u0131k alanlarda, belirli y\u00fcz ifadeleri veya ba\u015f hareketleri \u00fczerinden potansiyel tehlikeler veya anormal davran\u0131\u015flar tespit edilebilir.<\/p>\n<p><strong>3. Sa\u011fl\u0131k ve T\u0131p Uygulamalar\u0131:<\/strong><br \/>\n*   <strong>Tele T\u0131p ve Telet\u0131bbi Muayene:<\/strong> Uzaktan yap\u0131lan muayenelerde, doktorlar hastalar\u0131n y\u00fcz ifadelerindeki asimetrileri veya belirli hareket bozukluklar\u0131n\u0131 (\u00f6rne\u011fin Parkinson hastalar\u0131nda) y\u00fcksek hassasiyetle izleyebilirler.<br \/>\n*   <strong>Fizyoterapi ve Rehabilitasyon:<\/strong> Y\u00fcz felci ge\u00e7iren hastalar\u0131n rehabilitasyon s\u00fcre\u00e7lerinde, egzersizlerin do\u011frulu\u011funu ve ilerlemeyi ger\u00e7ek zamanl\u0131 olarak izlemek i\u00e7in kullan\u0131labilir.<br \/>\n*   <strong>Duygu Analizi:<\/strong> Otizm spektrumundaki bireylerin sosyal ipu\u00e7lar\u0131n\u0131 anlamalar\u0131na yard\u0131mc\u0131 olmak i\u00e7in veya psikolojik ara\u015ft\u0131rmalarda kat\u0131l\u0131mc\u0131lar\u0131n tepkilerini objektif olarak kaydetmek i\u00e7in kullan\u0131labilir.<\/p>\n<p><strong>4. Perakende ve Pazarlama:<\/strong><br \/>\n*   <strong>M\u00fc\u015fteri Deneyim Analizi:<\/strong> Ma\u011fazalardaki kameralar, m\u00fc\u015fterilerin belirli \u00fcr\u00fcnlere veya reklamlara verdi\u011fi tepkileri (\u015fa\u015fk\u0131nl\u0131k, ilgi, memnuniyetsizlik vb.) y\u00fcz ifadeleri \u00fczerinden analiz ederek pazarlama stratejilerini optimize edebilir.<br \/>\n*   <strong>Ki\u015fiselle\u015ftirilmi\u015f Reklamlar:<\/strong> Dinamik reklam panolar\u0131, g\u00f6r\u00fcnt\u00fcleyen ki\u015finin demografik \u00f6zelliklerine veya o anki ruh haline g\u00f6re i\u00e7eri\u011fi ki\u015fiselle\u015ftirebilir.<\/p>\n<p><strong>5. E\u011fitim ve Uzaktan \u00d6\u011frenme:<\/strong><br \/>\n*   <strong>\u00d6\u011frenci Kat\u0131l\u0131m Takibi:<\/strong> Uzaktan e\u011fitim s\u0131ras\u0131nda \u00f6\u011frencilerin derse olan dikkat seviyelerini veya anlama g\u00fc\u00e7l\u00fcklerini y\u00fcz ifadeleri \u00fczerinden tahmin etmek, \u00f6\u011fretmenlere geri bildirim sa\u011flayabilir.<br \/>\n*   <strong>Sanal \u00d6\u011fretmenler:<\/strong> Yapay zeka tabanl\u0131 sanal \u00f6\u011fretmenler, \u00f6\u011frencinin tepkilerine g\u00f6re dersin h\u0131z\u0131n\u0131 veya i\u00e7eri\u011fini ayarlayabilir.<\/p>\n<p>Bu senaryolar, YOLOv9 ve MediaPipe ile olu\u015fturdu\u011fumuz bu uygulaman\u0131n sadece birka\u00e7 potansiyel kullan\u0131m alan\u0131n\u0131 temsil ediyor. Y\u00fcksek h\u0131z ve do\u011fruluk kombinasyonu, bu t\u00fcr teknolojilerin g\u00fcnl\u00fck hayat\u0131m\u0131za daha derinlemesine entegre olmas\u0131n\u0131n \u00f6n\u00fcn\u00fc a\u00e7arak, daha ak\u0131ll\u0131 ve etkile\u015fimli deneyimler sunma potansiyeli ta\u015f\u0131yor.<\/p>\n<h2>Sonu\u00e7 ve Gelecek Perspektifleri<\/h2>\n<p>Bu teknik makalede, YOLOv9 ve MediaPipe'\u0131 bir araya getirerek 140 FPS h\u0131z\u0131nda \u00e7al\u0131\u015fan ger\u00e7ek zamanl\u0131 bir y\u00fcz noktalama uygulamas\u0131n\u0131n nas\u0131l geli\u015ftirilebilece\u011fini ayr\u0131nt\u0131l\u0131 bir \u015fekilde inceledik. Modern yapay zeka ve bilgisayar g\u00f6r\u00fc\u015f\u00fc tekniklerinin g\u00fcc\u00fcn\u00fc, performans optimizasyon stratejileriyle birle\u015ftirerek, bu iddial\u0131 hedefe ula\u015fman\u0131n yol haritas\u0131n\u0131 \u00e7izdik. Ba\u015flang\u0131\u00e7ta temel kavramlar\u0131 ele alarak, YOLOv9'un h\u0131zl\u0131 y\u00fcz tespitindeki rol\u00fcn\u00fc ve MediaPipe'\u0131n hassas y\u00fcz noktalama yeteneklerini ayr\u0131 ayr\u0131 inceledik. Ard\u0131ndan, bu iki teknolojiyi entegre eden mimariyi tasarlad\u0131k ve pratik bir kod \u00f6rne\u011fiyle uygulama geli\u015ftirme s\u00fcrecini ad\u0131m ad\u0131m g\u00f6sterdik. Son olarak, bu performans\u0131 sa\u011flamak i\u00e7in gerekli olan donan\u0131m h\u0131zland\u0131rma, model optimizasyonu ve i\u015flem hatt\u0131 y\u00f6netimi gibi kritik optimizasyon tekniklerini tart\u0131\u015ft\u0131k ve uygulaman\u0131n \u00e7e\u015fitli ger\u00e7ek d\u00fcnya senaryolar\u0131ndaki potansiyelini g\u00f6zler \u00f6n\u00fcne serdik.<\/p>\n<p>Geli\u015ftirdi\u011fimiz bu uygulama, sadece teknik bir ba\u015far\u0131 de\u011fil, ayn\u0131 zamanda yapay zeka alan\u0131ndaki s\u00fcrekli ilerlemenin bir g\u00f6stergesidir. Y\u00fcksek FPS oranlar\u0131, uygulamalar\u0131n daha duyarl\u0131, daha do\u011fal ve daha etkile\u015fimli olmas\u0131n\u0131 sa\u011flayarak kullan\u0131c\u0131 deneyimini k\u00f6kten de\u011fi\u015ftirebilir. Gelecekte, bu t\u00fcr teknolojilerin daha da optimize edilmesi ve yeni donan\u0131m platformlar\u0131na adapte edilmesiyle, \u00e7ok daha y\u00fcksek performans seviyelerine ula\u015fmak m\u00fcmk\u00fcn olacakt\u0131r. \u00d6rne\u011fin, daha entegre ve \u00f6zel AI yongalar\u0131, bu t\u00fcr g\u00f6revleri daha enerji verimli ve daha h\u0131zl\u0131 bir \u015fekilde ger\u00e7ekle\u015ftirebilir. Ayr\u0131ca, bu teknolojilerin mobil cihazlara ve g\u00f6m\u00fcl\u00fc sistemlere daha derinlemesine entegrasyonu, g\u00fcnl\u00fck ya\u015fam\u0131m\u0131z\u0131n her alan\u0131nda ak\u0131ll\u0131 y\u00fcz analizi yeteneklerinin yayg\u0131nla\u015fmas\u0131na olanak tan\u0131yacakt\u0131r. Duygu tan\u0131ma, sa\u011fl\u0131k izleme ve ki\u015fiselle\u015ftirilmi\u015f insan-bilgisayar etkile\u015fimi gibi alanlarda yeni kap\u0131lar a\u00e7\u0131laca\u011f\u0131 kesindir. Bu rehber, y\u00fcksek performansl\u0131 bilgisayar g\u00f6r\u00fc\u015f\u00fc uygulamalar\u0131 geli\u015ftirmek isteyenler i\u00e7in sa\u011flam bir temel olu\u015fturmaktad\u0131r ve gelecekteki yeniliklere ilham vermesini umuyoruz.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular<\/h3>\n<p><strong>1. YOLOv9 yerine ba\u015fka bir YOLO versiyonu kullanabilir miyim?<\/strong><br \/>\nEvet, prensip olarak ba\u015fka YOLO versiyonlar\u0131n\u0131 da kullanabilirsiniz. Ancak YOLOv9, hem do\u011fruluk hem de h\u0131z a\u00e7\u0131s\u0131ndan \u00f6nemli iyile\u015ftirmeler sunan en yeni modellerden biridir. Daha eski versiyonlar (\u00f6rn. YOLOv5, YOLOv8) da i\u015finizi g\u00f6rebilir, ancak 140 FPS hedefine ula\u015fmak i\u00e7in daha fazla optimizasyon veya daha g\u00fc\u00e7l\u00fc donan\u0131m gerekebilir. Se\u00e7iminiz, projenizin spesifik performans ve do\u011fruluk gereksinimlerine ba\u011fl\u0131d\u0131r.<\/p>\n<p><strong>2. MediaPipe Face Landmarker modelini nereden indirebilirim?<\/strong><br \/>\nMediaPipe Face Landmarker model dosyalar\u0131n\u0131 (\u00f6rn. <code>face_landmarker_heavy.task<\/code> veya <code>face_landmarker_lite.task<\/code>), Google'\u0131n resmi MediaPipe \u00f6rneklerinden ve dok\u00fcmantasyonundan indirebilirsiniz. Genellikle MediaPipe'\u0131n GitHub deposunda veya <code>developers.google.com\/mediapipe\/solutions\/vision\/face_landmarker<\/code> adresinde ilgili ba\u011flant\u0131lar\u0131 bulabilirsiniz.<\/p>\n<p><strong>3. Uygulama neden 140 FPS'e ula\u015fm\u0131yor? Ne yapmal\u0131y\u0131m?<\/strong><br \/>\nUygulaman\u0131z\u0131n 140 FPS'e ula\u015fmamas\u0131n\u0131n birka\u00e7 nedeni olabilir:<br \/>\n*   <strong>Donan\u0131m S\u0131n\u0131rlamalar\u0131:<\/strong> \u00d6zellikle g\u00fc\u00e7l\u00fc bir NVIDIA GPU'nuz yoksa bu performansa ula\u015fmak zor olabilir. CPU \u00fczerinde \u00e7al\u0131\u015fmak \u00e7ok daha yava\u015f olacakt\u0131r.<br \/>\n*   <strong>Model Se\u00e7imi:<\/strong> <code>yolov9c.pt<\/code> yerine daha hafif bir YOLOv9 modeli (\u00f6rn. <code>yolov9s.pt<\/code>) veya <code>face_landmarker_heavy.task<\/code> yerine <code>face_landmarker_lite.task<\/code> kullanmay\u0131 deneyin.<br \/>\n*   <strong>Optimizasyon Eksikli\u011fi:<\/strong> CUDA, TensorRT gibi h\u0131zland\u0131rmalar\u0131 do\u011fru kurdu\u011funuzdan ve kulland\u0131\u011f\u0131n\u0131zdan emin olun. Python'daki GIL nedeniyle, \u00e7oklu i\u015f par\u00e7ac\u0131\u011f\u0131 yerine \u00e7oklu i\u015flem (multiprocessing) denemek gerekebilir.<br \/>\n*   <strong>Kamera S\u0131n\u0131rlamas\u0131:<\/strong> Kameran\u0131z\u0131n kendisi saniyede 140 kareden daha az kare yakal\u0131yor olabilir. Daha y\u00fcksek FPS destekleyen bir kamera kullanman\u0131z gerekebilir.<br \/>\n*   <strong>G\u00f6r\u00fcnt\u00fc \u00c7\u00f6z\u00fcn\u00fcrl\u00fc\u011f\u00fc:<\/strong> \u0130\u015flenen karelerin \u00e7\u00f6z\u00fcn\u00fcrl\u00fc\u011f\u00fcn\u00fc d\u00fc\u015f\u00fcrmek de performans\u0131 art\u0131rabilir.<\/p>\n<p><strong>4. Bu uygulama mobil cihazlarda \u00e7al\u0131\u015f\u0131r m\u0131?<\/strong><br \/>\nTemelde evet, MediaPipe platformlar aras\u0131 bir \u00e7er\u00e7eve oldu\u011fu i\u00e7in mobil cihazlar (Android\/iOS) i\u00e7in de destek sunar. YOLO modellerinin mobil versiyonlar\u0131 (\u00f6rn. YOLO-NCNN, YOLO-TFLite) da mevcuttur. Ancak, Python tabanl\u0131 bu \u00f6rnek kodu do\u011frudan mobil cihazlarda \u00e7al\u0131\u015ft\u0131ramazs\u0131n\u0131z. Mobil i\u00e7in C++ veya Java\/Kotlin (Android), Swift\/Objective-C (iOS) gibi dillerde MediaPipe'\u0131n yerel API'lerini ve optimize edilmi\u015f YOLO modellerini entegre etmeniz gerekir. Mobil cihazlarda 140 FPS elde etmek, genellikle \u00f6zel AI \u00e7ipleri olan \u00fcst d\u00fczey cihazlarda m\u00fcmk\u00fcn olacakt\u0131r.<\/p>\n<p><strong>5. Y\u00fcz noktalama verilerini ne i\u00e7in kullanabilirim?<\/strong><br \/>\nY\u00fcz noktalama verileri \u00e7ok \u00e7e\u015fitli uygulamalar i\u00e7in kullan\u0131labilir:<br \/>\n*   <strong>Y\u00fcz \u0130fadesi Tan\u0131ma:<\/strong> Noktalar aras\u0131ndaki mesafeler veya a\u00e7\u0131 de\u011fi\u015fiklikleri, sevin\u00e7, \u00fcz\u00fcnt\u00fc, \u015fa\u015fk\u0131nl\u0131k gibi duygular\u0131 tespit etmek i\u00e7in kullan\u0131labilir.<br \/>\n*   <strong>3D Y\u00fcz Modelleme:<\/strong> 2D noktalardan 3D y\u00fcz a\u011flar\u0131 olu\u015fturmak m\u00fcmk\u00fcnd\u00fcr.<br \/>\n*   <strong>AR Filtreleri:<\/strong> Sanal g\u00f6zl\u00fck, maske veya makyaj gibi art\u0131r\u0131lm\u0131\u015f ger\u00e7eklik efektlerini y\u00fcz \u00fczerine sabitlemek i\u00e7in.<br \/>\n*   <strong>Ba\u015f Pozu Tahmini:<\/strong> Ba\u015f\u0131n uzaydaki y\u00f6n\u00fcn\u00fc (yaw, pitch, roll) tahmin etmek i\u00e7in.<br \/>\n*   <strong>G\u00f6z Takibi:<\/strong> G\u00f6zlerin hareketini izleyerek bak\u0131\u015f y\u00f6n\u00fcn\u00fc veya dikkat oda\u011f\u0131n\u0131 belirlemek i\u00e7in.<\/p>\n","protected":false},"excerpt":{"rendered":"Ger\u00e7ek zamanl\u0131 y\u00fcz noktalama, bilgisayar g\u00f6r\u00fc\u015f\u00fcn\u00fcn en heyecan verici alanlar\u0131ndan biri. Peki, YOLOv9 ve MediaPipe&#8217;\u0131 birle\u015ftirerek saniyede 140&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-34944","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>YOLOv9 + MediaPipe: 140 FPS Y\u00fcz Noktalama Uygulamas\u0131 Rehberi<\/title>\n<meta name=\"description\" content=\"Hi\u00e7bir etiketi bulunamad\u0131.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"YOLOv9 + MediaPipe: 140 FPS Y\u00fcz Noktalama Uygulamas\u0131 Rehberi\" \/>\n<meta property=\"og:description\" content=\"Hi\u00e7bir etiketi bulunamad\u0131.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-23T21:01:03+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"31 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"YOLOv9 + MediaPipe: 140 FPS Y\u00fcz Noktalama Uygulamas\u0131 Rehberi\",\"datePublished\":\"2025-11-23T21:01:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/\"},\"wordCount\":5320,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/\",\"name\":\"YOLOv9 + MediaPipe: 140 FPS Y\u00fcz Noktalama Uygulamas\u0131 Rehberi\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-23T21:01:03+00:00\",\"description\":\"Hi\u00e7bir etiketi bulunamad\u0131.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"YOLOv9 + MediaPipe: 140 FPS Y\u00fcz Noktalama Uygulamas\u0131 Rehberi\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"YOLOv9 + MediaPipe: 140 FPS Y\u00fcz Noktalama Uygulamas\u0131 Rehberi","description":"Hi\u00e7bir etiketi bulunamad\u0131.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/","og_locale":"tr_TR","og_type":"article","og_title":"YOLOv9 + MediaPipe: 140 FPS Y\u00fcz Noktalama Uygulamas\u0131 Rehberi","og_description":"Hi\u00e7bir etiketi bulunamad\u0131.","og_url":"https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-23T21:01:03+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"31 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"YOLOv9 + MediaPipe: 140 FPS Y\u00fcz Noktalama Uygulamas\u0131 Rehberi","datePublished":"2025-11-23T21:01:03+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/"},"wordCount":5320,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/","url":"https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/","name":"YOLOv9 + MediaPipe: 140 FPS Y\u00fcz Noktalama Uygulamas\u0131 Rehberi","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-23T21:01:03+00:00","description":"Hi\u00e7bir etiketi bulunamad\u0131.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/yolov9-mediapipe-140-fps-yuz-noktalama-uygulamasi-rehberi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"YOLOv9 + MediaPipe: 140 FPS Y\u00fcz Noktalama Uygulamas\u0131 Rehberi"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34944","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=34944"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34944\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=34944"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=34944"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=34944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}