Kobe'yi bir saniyede öldüren bir atış yapay zekasını nasıl eğiteceğinizi öğretin ve kabul etmeyi reddederseniz pratik yapın. Açık kaynak kodu eklidir

Özgün çalışma: Abe Haskins

Annie derleyin ve organize edin

Qubit Üretildi | Genel Hesap QbitAI

Bu eğiticide, Google mühendisi Abe Haskins, çekim yapabilen bir yapay zeka üretmek için Unity3D ve TensorFlow'u kullanmayı öğretmek için basit ve anlaşılması kolay bir dil kullanıyor.

Pek çok kişi makaledeki bu giflerin bir gün boyunca görüntülenebileceğini söyledi! NBA oyuncularını saniyeler içinde öldürmek için yapay zekayı kullanmayı öğreten okul otobüsü başlamak üzere. Otobüse binmeye hazır mısınız?

hazırlık aşaması

Resmi eğitime başlamadan önce, aşağıdaki araçlara sahip olup olmadığınızı kontrol edin:

  • Basketbol ve fiziksel çevre Birliğini simüle edin
  • Eğitim modelleri için Node.js ve TensorFlow.js
  • Modeli, ML aracısı varlık paketi aracılığıyla Unity'nin TensorFlowSharp'ına yerleştirin
  • Unity'de bulunan grafikler için TensorFlow.js'yi tsjs dönüştürücüsüne dönüştürün
  • Doğrusal regresyonun basit görselleştirilmesi için Google E-Tablolar

İhtiyaç duyulan tüm araçlar bu. Sonra, size bu araçları nasıl kullanacağınızı öğreteceğim. Sonraki öğrenmeyi ve anlamayı kolaylaştırmak için herkesin önce açık kaynak kodunu indirmesini öneririm.

Kod adresi:

https://github.com/abehaskins

net hedef

Hedefi daha basit düşünmek, hedefe ulaşmak için daha elverişlidir.Bu görevi basit bir problem olarak düşünebiliriz, burada atıcı ile basket arasındaki mesafe x ve saha y ise gol atılır.

Bu şekilde düşündüğünüzde, modelin çok basit olduğunu hissediyor musunuz? Unity'de nasıl daha karmaşık AI yapılacağıyla ilgileniyorsanız, Unity'den ML-Agents projesinin tamamını görüntüleyebilirsiniz.

ML-Agents proje adresi:

https://github.com/Unity-Technologies/ml-agents

Basket ve top

Bu oyunda sadece basket atmamız gerekiyor. Kullanmanız gereken ilk şey Unity'dir.Genellikle oyun oynarken gördüğünüz küpün logosu Unity logosudur. Tüm platformlar için 2D ve 3D oyunlar oluşturabilen bir oyun motorudur.

Unity, temel 3B modelleme ve komut dosyası çalışma zamanını (Mono) içeren yerleşik bir fiziksel dünya sistemine sahiptir ve C # programlamayı destekler.

Stadyumun büyük çevresini birleştirmek karmaşık değil:

Evet, resimdeki kırmızı bloklar oyuncuları temsil ediyor. Topun sepetin içinden geçtiği belirli zamanı tespit etmeye yardımcı olmak için simüle edilmiş sepete görünmez bir tetikleyici yerleştirilmiştir.

Tetikleme eğitimi:

https://unity3d.com/cn/learn/tutorials/topics/physics/colliders-triggers

Yukarıdaki şekilde gösterildiği gibi, Unity düzenleyicide, yeşil görünmez tetik çıplak gözle görülebilir. Tetiğin üst ve alt olmak üzere iki tetikleyiciye bölündüğü gözlemlenebilir, böylece topun sepetin üstünden altına kadar geçirdiği süre hesaplanabilir. Bu iki tetikleyici /Assets/BallController.cs içindeki OnTriggerEnter içinde görüntülenebilir.

Yukarı ve aşağı tetikleyicilere sahip olmanın bir başka avantajı, topun malzemesini buna göre değerlendirebilmeniz ve mesafe ve kuvvet gibi iki temel değişkene hakim olmanıza yardımcı olabilmenizdir.

Atış

Basketbol üretmekten ve potaya vurmaya çalışmaktan sorumlu bir betik olan /Assets/BallSpawnerController.cs dosyasını açın. Bu kodu Shoot () sonunda da görüntüleyebilirsiniz.

Örnekleme kodunun, atış gücünü ve arkalığa olan mesafeyi ayarlayabileceğiniz yepyeni bir örneği temsil ettiğini fark ettiniz mi bilmiyorum.

/Assets/BallController.cs dosyasında açtıysanız, Start () yöntemini kontrol edebilirsiniz ve yeni bir basketbol eklerken bu kodu burada kullanacaksınız.

Başka bir deyişle, yeni bir top yaratırız ve ardından ona belirli bir kuvvet uygularız, yeni topların sürekli akışıyla başa çıkabilmemiz için top 30 saniye sonra otomatik olarak imha edilir.

Her şeyi ayarladıktan sonra, All-Star nişancımızın nasıl çekim yaptığına bir göz atalım. Unity editöründeki oynat butonuna tıklayabilirsiniz ve göreceğiz ...

Eksik!

Neden böyle bir durum var? Cevap, Assets / BallController.cs kodundaki float force = 0.2f satırında yatmaktadır. Bu çizgi tüm topların yörüngesini tutarlı hale getirdi, bu yüzden servis atmadan trajik bir son oldu.

Tabii ki ~ istediğimiz bu değil, bu yüzden bir sonraki adıma ve araştırmaya geçtim.

Rastgele çekimler, veri toplama

Gücü rastgele olarak değiştirerek rastgele bir gürültü ortaya çıkarabiliriz.

Bu şekilde, ne tür bir gücün vurulabileceğini anlayabiliriz. Tabii biraz zaman alacak ~

Şekilde gösterildiği gibi, kırmızı, atılmamış topu temsil eder ve yeşil, atılan topu temsil eder. Bu noktada, herhangi bir yoğunlukta çekim, kullanabileceğimiz bir veri noktasıdır ve bunlar aşağıda tartışılacaktır.

Aynı zamanda, kırmızı topun herhangi bir pozisyondan başarılı bir şekilde vurulmasını istediğimizi düşünmemiz gerekiyor, bu yüzden tek bir yerden atış yapmaktan daha fazlasına ihtiyacımız var. Assets / BallSpawnController.cs konumunda bu satırları bulun ve bu sorunu çözmek için MoveToRandomDistance () öğesini kaldırın.

Böylelikle tekrar koşarsak her atıştan sonra kırmızı topun şevkle sahada zıpladığını görebiliriz.

Rastgele hareket ve rastgele gücün birleşimi çok tuhaf bir şey yaratır: veri. Şu anda Unity'de konsolu kontrol ederseniz, her çekim için kaydedilen verileri görebilirsiniz.

Her başarılı atış kaydedilecek ve o ana kadar yapılan atış sayısı, sepete olan mesafe ve topa vurmak için gereken kuvvet görüntülenebilir. Bu veri artışlarının hızı nispeten yavaştır, MoveToRandomDistance () içindeki 0.3f parametresini (her atışın gecikmesi 300 milisaniyedir) 0.05f'ye (50 milisaniye gecikme) değiştirebiliriz.

Şimdi, parametre hata ayıklamamızın sonucuna bakın:

Bunun aslında iyi bir eğitim yöntemi olduğunu ve sistemin% 6,4'lük bir başarı oranı gösterdiğini keşfettiniz mi? Bir sonraki adımda, bu verileri Unity'den çıkaracağız ve gerekli gücü tahmin etmek için bir model oluşturacağız.

Tahmin, model ve regresyon

TensorFlow'u kullanmadan önce, Unity ortamındaki kırmızı topun yaklaşık 50 vuruşu tamamlamasına izin verdik.

Bu noktada, Unity projesinin kök dizinini kontrol ederseniz, success_shots.csv adlı yeni bir dosya görebilmelisiniz. Bu, Unity'nin orijinal dökümüdür. Bu verileri Excel'de analiz etmek için dışa aktarıyoruz.

Bu .csv dosyasında yalnızca üç satır, dizin, mesafe ve kuvvet vardır. Bu dosyayı Google E-Tablolar'a aktardım ve verilerin dağılımını anlayabilmek için trend çizgileri olan bir dağılım grafiği oluşturdum.

Bu noktalar, bazı kuralları bulmak için birleştirilebilir. Y ekseni kuvvettir ve x ekseni mesafedir. Bazı istisnalar dışında, gerekli mesafe ile atış mesafesi arasında net bir ilişki olduğu görülebilir.

TensorFlow'un piyasaya çıkma ve benzer kodlarla daha karmaşık modeller oluşturmamıza yardımcı olma zamanı. Örneğin, eksiksiz bir oyuna bazı yeni özellikler ekleyebiliriz.

Şimdi TensorFlow.js modelimizi oluşturmamız gerekiyor.

En sevdiğiniz düzenleyicide tsjs / index.js dosyasını açın, bu, veri eğitim modeline dayalı bir script success_shots.csv'dir. Modeli eğitme ve kaydetme yöntemi aşağıdaki gibidir:

Bir dizi x ve y koordinat noktası oluşturmak için .csv dosyasından veri yüklüyoruz, modelin bu verilere uymayı öğrenmesine izin veriyoruz ve sonra kaydediyoruz!

Ne yazık ki, TensorFlowSharp, Tensorflow.js'nin kaydedebileceği model biçimini kabul etmiyor ve modeli Unity'ye tanıtmak için bazı çeviri çalışmaları yapmamız gerekiyor.

Genel olarak konuşursak, TensorFlow.js Biçimi, bir denetim noktası oluşturmak için Keras Biçimine dönüştürülebilir; ayrıca bir denetim noktası oluşturmak için bunları Protobuf Grafik Tanımı ile birleştirebiliriz.

Şimdi, Unity'deki Assets / BallSpawnController.cs altındaki GetForceFromTensorFlow () içindeki modelin neye benzediğini görelim.

Maç günü

Yukarıdaki tamamlanmış sistemi kullanarak model üzerinde bir varyant oluşturduk. 500 kez antrenman yaparken simüle edilmiş basketbolun yörüngesi şu şekildedir:

Doğru oran 10 kat arttı!

Bu sadece 500 kez eğitimin sonucudur ve gerisi size kalmış ~ Oluşturduğum son sonuca geri dönüp bakmayı unutmayın, bu ne kadar güzel bir oyun ~

Portal

Orijinal blog adresi:

https://medium.com/tensorflow/tf-jam-shooting-hoops-with-machine-learning-7a96e1236c32?linkId=54634097

Açık kaynak kodu burada:

https://github.com/abehaskins

İyi şanslar ~

- Bitiş -

Stajyer işe alım

Qubit, etkinlik operasyonu stajyerlerini işe alıyor, AI yıldız şirketlerinin CEO'larını ve yöneticilerini içeren çevrimiçi / çevrimdışı etkinlikleri planlıyor ve yürütüyor ve AI sektör liderleriyle doğrudan iletişim kurma fırsatına sahip. Çalışma yeri Pekin, Zhongguancun'da. Lütfen özgeçmişinizi quxin@qbitai.com adresine gönderin.

Ayrıntılar için lütfen QbitAI diyalog arayüzünde "Stajyer" yazarak yanıt verin.

Qubit QbitAI · Toutiao İmzalayan Yazar

' ' Yapay zeka teknolojisi ve ürünlerindeki yeni eğilimleri takip edin

Gang Jing, Blizzard'ı kızdırdı: Yeni görünüm İngilizlere saygı duymuyor! Yetkili sadece bir resim gönderdi ve geri döndü!
önceki
300.000 nüfuslu küçük bir ülke tekrar patlak verdi ve Dünya Kupası biletlerini bir gecede kilitledi
Sonraki
2018'in en iyi oyunu ama büyük bir sorunu var! Oyuncular neden sinirli değil, kendinden geçmiş
400.000 yuan "Ferrari" Mercedes-Benz BMW'yi saniyeler içinde öldürdü ve piyasaya çıktığında 33 saniye içinde soyuldu!
Baidu AI Etkileşim Tasarımı Enstitüsü'nün en son paylaşımı: görsel-işitsel etkileşim deneyimini belirleyen 2 ana faktör
Bu oyun şirketi hırslı, sadece tavuk yeme dünyasına hükmetmek istemiyor, aynı zamanda Steam ile doğrudan bir ilişkisi var.
Kurşun geçirmez arazi dağ yollarında, yaklaşan araca bakmadan sollama, sahibinin çarpıştığı bir sonraki sahne
Almanya Açık çekilişi: Fan Zhendong ve Zhang Jike aynı üst yarıda, Chen Meng 5 Japon oyuncuyu tek tek çıkardı
Bu Hint takımı, milli futbol takımını neredeyse berabere kesti ve bu gece World Series'e ilk kez çıktı.
Elbette yapay zekanın silahları öldürmemesi iyidir, ancak Oxford bilim adamları Musk'ın konuyu gözden kaçırdığını düşünüyor
Tarihteki en çılgın LOL hayranı! Faker için bir roman yaz, onu anne yap ve ona aşık mı olacaksın?
Bu arabaları ilk aldığımda kapıyı bile açamadım. Terlemekten gerçekten utanıyordum.
Az önce, süperstar Weah'ın oğlu Dünya Kupası'na çıktı.
LOL: Bir analist ve sonra bir koç olun! Tanınmış "Zhong Blow" muhabiri Mo Kaixi bir koça dönüştü!
To Top