Yapay Zeka ile Poligon Atış Performansımı Nasıl Geliştirdim?
Atıcılık benim için sadece bir hobi değil, aynı zamanda sürekli gelişmeyi hedeflediğim bir tutku. Poligon atışlarında performansımı objektif bir şekilde değerlendirebilmek için, yapay zeka teknolojisinden yararlanmaya karar verdim. Bu süreçte, atış sonrası hedef üzerindeki mermi izlerini tespit eden ve performansımı analiz eden bir sistem geliştirdim. Sistem, atışlarımın doğruluğunu ve tutarlılığını değerlendirmeme olanak tanıdı.
Bu süreçte aşağıdaki adımları takip ettim.
Veri Toplama ve Hazırlık
Bu sistemi geliştirmek için, poligon atışlarımdan topladığım verileri kullandım. Farklı hava koşullarında ve çeşitli açılardan çektiğim atış hedeflerimin fotoğraflarını bir araya getirdim. Her bir fotoğrafta, mermi izlerinin tam konumunu dikkatlice etiketledim. Ayrıca internette araştırıp buldugum 3361 adet hedef üzerindeki mermi izlerinden bir dataset yaratttım.
Model Mimarisi
Kullandığım model, YOLOv5 adında, gerçek zamanlı nesne tespiti yapabilen ve yüksek doğruluk oranına sahip bir yapay zeka modeliydi. Modeli eğitirken, verilerimi eğitim, doğrulama ve test setleri olarak ayırdım ve her bir görüntüyü özenle işledim.
Modelin performansını, atışlarımın grupmanını ve önceki atışlarıma olan yakınlığını analiz ederek değerlendirdim. Bu analizler, atışlarımın ne kadar tutarlı olduğunu ve belirli bir hedef noktasına ne kadar yakın atabildiğimi gösterdi.
Kullandığım model benim kendimce çıkarttığım ve çok da profesyonel olmayan bir hesaplama mantığı idi. Çalışma mantığı merminin hedefi deldiği bir önceki yere yakınlığının tespitinin yapılmasına dayanmaktadır. Eğer bir önceki mermi grupmanına cok yakın ise %5 eğer bir önceki mermiye değmiyor ise %10 eğer grupman daha uzak ise %20 ve yükselerek değerler oluşturmakta ve atış sonunda hangi seviyede olduğumu hem puanlama hemde grupmanlama bazında skorlamaktadır. Bu işlemin geçmişini tuttuğu için ise kendi gelişimimin ne derece arttığını tespit ve takip etmemi sağlamıştır.
Daha teknik olarak yapilan sürecin adımlarını aşağıda özetlemeye çalıştım.
Aşağıda, bu süreci nasıl yönetebileceğinizi ve bu verileri nasıl kullanabileceğinizi anlatan adımlar ve öneriler sunulmuştur:
1. Verilerin Toplanması ve Kaydedilmesi
Gereksinimler:
- Atışların tarih ve saati
- Hedefin tipi ve mesafesi
- Atışların X ve Y koordinatları
- Atıcının kimliği
Adımlar:
- Atış Sonuçlarının Kaydedilmesi: Her atış seansından sonra, merminin hedef üzerinde açtığı deliklerin koordinatları kaydedilmelidir. Bu veriler, AI otomatik bir sistem aracılığıyla toplanabilir.
- Veri Depolama: Veriler, bir veritabanında veya organize bir şekilde elektronik tabloda saklanmalıdır. Her seans için ayrı bir kayıt tutarak tarih ve saat bilgilerini içermelidir.
2. Grupmanlama Analizinin Yapılması
Adımlar:
- Merkez Noktasının Hesaplanması: Her atış seansı için tüm mermilerin ortalama X ve Y koordinatları hesaplanarak grupman merkez noktası bulunur.
- Standart Sapma ve Çap: Mermilerin grupman merkezine olan mesafeleri hesaplanarak standart sapma ve grupmanın çapı belirlenir. Bu, atışların ne kadar sıkı bir grup oluşturduğunu gösterir.
3. Gelişimin Takip Edilmesi
Adımlar:
- Verilerin Görselleştirilmesi: Zaman içinde atış sonuçlarının görselleştirilmesi için grafikler ve çizelgeler kullanılır. Bu grafikler, atıcının performansındaki eğilimleri ve gelişimleri göstermeye yardımcı olur.
- İlerlemenin Değerlendirilmesi: Atıcının grupman çapındaki değişiklikler ve standart sapmadaki azalmalar, performans gelişiminin göstergeleridir.
Asağıda performansımı takip etmek için kullandığım küçük bir uygulama bilgisinide ekte paylaşıyorum.
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
# Verilerin yüklenmesi
shooting_data = pd.read_csv('shooting_data.csv')
# Grupman merkezinin hesaplanması
group_center = shooting_data.groupby('session_id').agg({'x_coordinate': 'mean', 'y_coordinate': 'mean'}).reset_index()
group_center.columns = ['session_id', 'center_x', 'center_y']
# Grupman çapı ve standart sapma hesaplamaları
def calculate_group_metrics(session_data):
center_x = session_data['center_x'].values[0]
center_y = session_data['center_y'].values[0]
distances = np.sqrt((session_data['x_coordinate'] - center_x)**2 + (session_data['y_coordinate'] - center_y)**2)
return pd.Series({'group_diameter': distances.max(), 'std_deviation': distances.std()})
metrics = shooting_data.merge(group_center, on='session_id').groupby('session_id').apply(calculate_group_metrics).reset_index()
# Görselleştirme
plt.figure(figsize=(10, 6))
plt.plot(metrics['session_id'], metrics['group_diameter'], label='Group Diameter')
plt.plot(metrics['session_id'], metrics['std_deviation'], label='Standard Deviation')
plt.xlabel('Session ID')
plt.ylabel('Metric Value')
plt.title('Performance Over Time')
plt.legend()
plt.show()
Bu deneyim, yapay zekanın atıcılık performansımı nasıl objektif bir şekilde değerlendirebileceğimi gösterdi. İleride, daha geniş veri setleriyle modelimi geliştirmeyi ve gerçek zamanlı analiz yeteneklerini artırmayı planlıyorum.
Geliştirdiğim bu yapay zeka tabanlı sistem sayesinde, poligon atış performansımı iyileştirmek için büyük bir adım attım. Bu teknoloji, benim gibi amatör atıcılar için eğitim ve yarışma ortamlarında büyük bir potansiyele sahip. Bu konuda daha uzman kişilerin görüşleri ile çok daha gelişmiş yapay zeka sistemleri kurabiliriz.