Bagikan melalui


HoloLens (generasi ke-1) dan Azure 307: Pembelajaran mesin


Catatan

Tutorial Mixed Reality Academy dirancang dengan HoloLens (generasi ke-1) dan Mixed Reality Immersive Headsets dalam pikiran. Dengan demikian, kami merasa penting untuk meninggalkan tutorial ini di tempat bagi pengembang yang masih mencari panduan dalam mengembangkan untuk perangkat tersebut. Tutorial ini tidak akan diperbarui dengan toolset atau interaksi terbaru yang digunakan untuk HoloLens 2. Mereka akan dipertahankan untuk terus bekerja pada perangkat yang didukung. Akan ada serangkaian tutorial baru yang akan diposting di masa depan yang akan menunjukkan cara mengembangkan untuk HoloLens 2. Pemberitahuan ini akan diperbarui dengan tautan ke tutorial tersebut ketika diposting.


produk akhir -start

Dalam kursus ini, Anda akan mempelajari cara menambahkan kemampuan Pembelajaran Mesin (ML) ke aplikasi realitas campuran menggunakan Azure Pembelajaran Mesin Studio (klasik).

Azure Pembelajaran Mesin Studio (klasik) adalah layanan Microsoft, yang menyediakan sejumlah besar algoritma pembelajaran mesin kepada pengembang, yang dapat membantu input data, output, persiapan, dan visualisasi. Dari komponen-komponen ini, kemudian dimungkinkan untuk mengembangkan eksperimen analitik prediktif, melakukan iterasi di atasnya, dan menggunakannya untuk melatih model Anda. Setelah pelatihan, Anda dapat membuat model Anda beroperasi dalam cloud Azure, sehingga kemudian dapat mencetak data baru. Untuk informasi selengkapnya, kunjungi halaman Azure Pembelajaran Mesin Studio (klasik).

Setelah menyelesaikan kursus ini, Anda akan memiliki aplikasi headset imersif realitas campuran, dan akan belajar bagaimana hal berikut:

  1. Berikan tabel data penjualan ke portal Azure Pembelajaran Mesin Studio (klasik), dan rancang algoritma untuk memprediksi penjualan item populer di masa mendatang.
  2. Buat Proyek Unity, yang dapat menerima dan menginterpretasikan data prediksi dari layanan ML.
  3. Tampilkan data predikasi secara visual dalam Proyek Unity, melalui penyediaan item penjualan paling populer, di rak.

Dalam aplikasi Anda, terserah Anda tentang bagaimana Anda akan mengintegrasikan hasilnya dengan desain Anda. Kursus ini dirancang untuk mengajari Anda cara mengintegrasikan Layanan Azure dengan Proyek Unity Anda. Ini adalah tugas Anda untuk menggunakan pengetahuan yang Anda peroleh dari kursus ini untuk meningkatkan aplikasi realitas campuran Anda.

Kursus ini adalah tutorial mandiri, yang tidak secara langsung melibatkan Mixed Reality Labs lainnya.

Dukungan perangkat

Kursus HoloLens Headset imersif
MR dan Azure 307: Pembelajaran mesin ✔️ ✔️

Catatan

Meskipun kursus ini terutama berfokus pada headset imersif Windows Mixed Reality (VR), Anda juga dapat menerapkan apa yang Anda pelajari dalam kursus ini ke Microsoft HoloLens. Saat mengikuti kursus, Anda akan melihat catatan tentang perubahan apa pun yang mungkin perlu Anda gunakan untuk mendukung HoloLens. Saat menggunakan HoloLens, Anda mungkin melihat beberapa gema selama pengambilan suara.

Prasyarat

Catatan

Tutorial ini dirancang untuk pengembang yang memiliki pengalaman dasar dengan Unity dan C#. Perlu diketahui juga bahwa prasyarat dan instruksi tertulis dalam dokumen ini mewakili apa yang telah diuji dan diverifikasi pada saat penulisan (Mei 2018). Anda bebas menggunakan perangkat lunak terbaru, seperti yang tercantum dalam artikel instal alat, meskipun tidak boleh diasumsikan bahwa informasi dalam kursus ini akan sangat cocok dengan apa yang akan Anda temukan di perangkat lunak yang lebih baru daripada apa yang tercantum di bawah ini.

Kami merekomendasikan perangkat keras dan perangkat lunak berikut untuk kursus ini:

Sebelum memulai

Untuk menghindari masalah saat membangun proyek ini, sangat disarankan agar Anda membuat proyek yang disebutkan dalam tutorial ini di folder root atau near-root (jalur folder panjang dapat menyebabkan masalah pada build-time).

Bab 1 - Penyiapan Akun Azure Storage

Untuk menggunakan Azure Translator API, Anda harus mengonfigurasi instans layanan untuk tersedia untuk aplikasi Anda.

  1. Masuk ke Portal Microsoft Azure.

    Catatan

    Jika Anda belum memiliki akun Azure, Anda harus membuatnya. Jika Anda mengikuti tutorial ini dalam situasi ruang kelas atau lab, mintalah instruktur atau salah satu proktor untuk membantu menyiapkan akun baru Anda.

  2. Setelah Anda masuk, klik Akun Penyimpanan di menu sebelah kiri.

    Cuplikan layar jendela Microsoft Azure, yang memperlihatkan item Akun Penyimpanan di menu navigasi kiri.

    Catatan

    Kata Baru mungkin telah diganti dengan Buat sumber daya, di portal yang lebih baru.

  3. Pada tab Akun Penyimpanan, klik Tambahkan.

    Cuplikan layar jendela Microsoft Azure, yang memperlihatkan layar Akun penyimpanan dan tombol Tambahkan yang disorot.

  4. Di panel Buat Akun Penyimpanan:

    1. Sisipkan Nama untuk akun Anda, ketahuilah bidang ini hanya menerima angka, dan huruf kecil.

    2. Untuk Model penyebaran, pilih Resource manager.

    3. Untuk Jenis akun, pilih Penyimpanan (tujuan umum v1).

    4. Dalam Performa, pilih Standar.

    5. Untuk Replikasi pilih Penyimpanan baca-akses-geo-redundan (RA-GRS).

    6. Biarkan Transfer aman diperlukan sebagai Dinonaktifkan.

    7. Pilih Langganan.

    8. Pilih Grup Sumber Daya atau buat yang baru. Grup sumber daya menyediakan cara untuk memantau, mengontrol akses, menyediakan, dan mengelola penagihan untuk kumpulan aset Azure. Disarankan untuk menyimpan semua layanan Azure yang terkait dengan satu proyek (misalnya seperti lab ini) di bawah grup sumber daya umum).

      Jika Anda ingin membaca selengkapnya tentang Grup Sumber Daya Azure, silakan kunjungi artikel grup sumber daya.

    9. Tentukan Lokasi untuk grup sumber daya Anda (jika Anda membuat Grup Sumber Daya baru). Lokasi idealnya akan berada di wilayah tempat aplikasi akan berjalan. Beberapa aset Azure hanya tersedia di wilayah tertentu.

  5. Anda juga perlu mengonfirmasi bahwa Anda telah memahami Syarat dan Ketentuan yang diterapkan pada Layanan ini.

    Cuplikan layar dialog Buat akun penyimpanan, yang memperlihatkan informasi yang diisi pengguna ke dalam bidang teks yang diperlukan.

  6. Setelah mengklik Buat, Anda harus menunggu layanan dibuat, ini mungkin memakan waktu satu menit.

  7. Pemberitahuan akan muncul di portal setelah instans Layanan dibuat.

    Cuplikan layar pemberitahuan Penyebaran berhasil, yang memberi tahu pengguna bahwa penyebaran ke grup sumber daya berhasil.

Bab 2 - Azure Pembelajaran Mesin Studio (klasik)

Untuk menggunakan Azure Pembelajaran Mesin, Anda harus mengonfigurasi instans layanan Pembelajaran Mesin agar tersedia untuk aplikasi Anda.

  1. Di Portal Microsoft Azure, klik Baru di sudut kiri atas, dan cari Pembelajaran Mesin Studio Workspace, tekan Enter.

    Cuplikan layar jendela Microsoft Azure, yang memperlihatkan ruang kerja Pembelajaran Mesin Studio di panel konten.

  2. Halaman baru akan memberikan deskripsi layanan Pembelajaran Mesin Studio Workspace. Di kiri bawah perintah ini, klik tombol Buat , untuk membuat asosiasi dengan layanan ini.

  3. Setelah Anda mengklik Buat, panel akan muncul di mana Anda perlu memberikan beberapa detail tentang layanan Pembelajaran Mesin Studio baru Anda:

    1. Sisipkan nama Ruang Kerja yang Anda inginkan untuk instans layanan ini.

    2. Pilih Langganan.

    3. Pilih Grup Sumber Daya atau buat yang baru. Grup sumber daya menyediakan cara untuk memantau, mengontrol akses, menyediakan, dan mengelola penagihan untuk kumpulan aset Azure. Disarankan untuk menyimpan semua layanan Azure yang terkait dengan satu proyek (misalnya seperti lab ini) di bawah grup sumber daya umum).

      Jika Anda ingin membaca selengkapnya tentang Grup Sumber Daya Azure, silakan kunjungi artikel grup sumber daya.

    4. Tentukan Lokasi untuk grup sumber daya Anda (jika Anda membuat Grup Sumber Daya baru). Lokasi idealnya akan berada di wilayah tempat aplikasi akan berjalan. Beberapa aset Azure hanya tersedia di wilayah tertentu. Anda harus menggunakan grup sumber daya yang sama dengan yang Anda gunakan untuk membuat Azure Storage di Bab sebelumnya.

    5. Untuk bagian Akun penyimpanan, klik Gunakan yang sudah ada, lalu klik menu dropdown, dan dari sana, klik Akun Penyimpanan yang Anda buat di Bab terakhir.

    6. Pilih tingkat harga Ruang Kerja yang sesuai untuk Anda, dari menu dropdown.

    7. Di dalam bagian Paket layanan web, klik Buat baru, lalu sisipkan nama untuk paket tersebut di bidang teks.

    8. Dari bagian Tingkat harga paket layanan web, pilih tingkat harga pilihan Anda. Tingkat pengujian pengembangan yang disebut DEVTEST Standard harus tersedia untuk Anda tanpa biaya.

    9. Anda juga perlu mengonfirmasi bahwa Anda telah memahami Syarat dan Ketentuan yang diterapkan pada Layanan ini.

    10. Klik Buat.

      Cuplikan layar dialog Azure Pembelajaran Mesin Studio, yang memperlihatkan informasi yang dimasukkan pengguna ke dalam bidang teks.

  4. Setelah mengklik Buat, Anda harus menunggu layanan dibuat, ini mungkin memakan waktu satu menit.

  5. Pemberitahuan akan muncul di portal setelah instans Layanan dibuat.

    Cuplikan layar jendela Microsoft Azure, yang memperlihatkan pemberitahuan belum dibaca di menu navigasi.

  6. Klik pemberitahuan untuk menjelajahi instans Layanan baru Anda.

    Cuplikan layar pemberitahuan Penyebaran berhasil, yang memberi tahu pengguna bahwa penyebaran ruang kerja ke grup sumber daya berhasil.

  7. Klik tombol Buka sumber daya di pemberitahuan untuk menjelajahi instans Layanan baru Anda.

  8. Di halaman yang ditampilkan, di bawah bagian Tautan Tambahan, klik Luncurkan Pembelajaran Mesin Studio, yang akan mengarahkan browser Anda ke portal Pembelajaran Mesin Studio.

    Cuplikan layar jendela Microsoft Azure, yang memperlihatkan tautan Luncurkan Pembelajaran Mesin Studio yang disorot di panel konten.

  9. Gunakan tombol Masuk, di kanan atas atau di tengah, untuk masuk ke Pembelajaran Mesin Studio (klasik).

    Cuplikan layar jendela Pembelajaran Mesin Studio, yang memperlihatkan tombol Masuk yang disorot.

Bab 3 - Pembelajaran Mesin Studio (klasik): Penyiapan himpunan data

Salah satu cara kerja algoritma Pembelajaran Mesin adalah dengan menganalisis data yang ada dan kemudian mencoba memprediksi hasil di masa mendatang berdasarkan himpunan data yang ada. Ini umumnya berarti bahwa semakin banyak data yang ada yang Anda miliki, semakin baik algoritma akan memprediksi hasil di masa mendatang.

Tabel sampel disediakan untuk Anda, untuk kursus ini, yang disebut ProductsTableCSV dan dapat diunduh di sini.

Penting

File .zip di atas berisi ProductsTableCSV dan .unitypackage, yang akan Anda butuhkan di Bab 6. Paket ini juga disediakan dalam Bab tersebut, meskipun terpisah ke file csv.

Himpunan data sampel ini berisi catatan objek terlaris pada setiap jam setiap hari dalam setahun 2017.

Cuplikan layar jendela Microsoft Excel, yang memperlihatkan himpunan data sampel objek terlaris setiap jam setiap hari dalam tahun 2017.

Misalnya, pada hari ke-1 tahun 2017, pukul 13.00 (jam 13), barang terlaris adalah garam dan lada.

Tabel sampel ini berisi 9998 entri.

  1. Kembali ke portal Pembelajaran Mesin Studio (klasik), dan tambahkan tabel ini sebagai Himpunan Data untuk ML Anda. Lakukan ini dengan mengklik tombol + Baru di sudut kiri bawah layar.

    Cuplikan layar portal klasik Pembelajaran Mesin Microsoft Azure Studio, yang menampilkan tombol Baru yang disorot di menu.

  2. Bagian akan muncul dari bawah, dan di dalamnya ada panel navigasi di sebelah kiri. Klik Himpunan Data, lalu di sebelah kanannya, Dari File Lokal.

    Cuplikan layar dialog Baru, yang memperlihatkan item menu Himpunan Data dan Dari File Lokal yang disorot.

  3. Unggah Himpunan Data baru dengan mengikuti langkah-langkah berikut:

    1. Jendela unggahan akan muncul, tempat Anda dapat Menelusuri hard drive Anda untuk himpunan data baru.

      Cuplikan layar dialog Unggah himpunan data baru, yang memperlihatkan tombol Telusuri pengguna untuk menemukan dan memilih data yang akan diunggah.

    2. Setelah dipilih, dan kembali ke jendela unggah, biarkan kotak centang tidak dicentang.

    3. Di bidang teks di bawah ini, masukkan ProductsTableCSV.csv sebagai nama untuk himpunan data (meskipun harus ditambahkan secara otomatis).

    4. Menggunakan menu dropdown untuk Jenis, pilih File CSV Generik dengan header (.csv).

    5. Tekan tanda centang di kanan bawah jendela unggah, dan Himpunan Data Anda akan diunggah.

Bab 4 - The Pembelajaran Mesin Studio (klasik): Eksperimen

Sebelum Anda dapat membangun sistem pembelajaran mesin, Anda harus membangun eksperimen, untuk memvalidasi teori Anda tentang data Anda. Dengan hasilnya, Anda akan tahu apakah Anda membutuhkan lebih banyak data, atau jika tidak ada korelasi antara data dan kemungkinan hasil.

Untuk mulai membuat eksperimen:

  1. Klik lagi pada tombol + Baru di kiri bawah halaman, lalu klik Eksperimen Eksperimen> Kosong.

    Cuplikan layar jendela Pembelajaran Mesin Microsoft Azure Studio, yang memperlihatkan item menu Eksperimen dipilih.

  2. Halaman baru akan ditampilkan dengan Eksperimen kosong:

  3. Dari panel di sebelah kiri perluas Himpunan Data Tersimpan Himpunan> Data Saya dan seret ProductsTableCSV ke Kanvas Eksperimen.

    Cuplikan layar jendela Eksperimen, yang memperlihatkan folder Himpunan Data Saya yang diperluas di menu dan Tabel Produk C S V di Kanvas Eksperimen.

  4. Di panel di sebelah kiri, perluas Sampel Transformasi>Data dan Pisahkan. Lalu seret item Pisahkan Data ke Kanvas Eksperimen. Item Pisahkan Data akan membagi himpunan data menjadi dua bagian. Satu bagian yang akan Anda gunakan untuk melatih algoritma pembelajaran mesin. Bagian kedua akan digunakan untuk mengevaluasi akurasi algoritma yang dihasilkan.

    Cuplikan layar jendela Eksperimen, yang memperlihatkan item Partisi dan Sampel dan Pisahkan Data di menu dengan Data Terpisah yang diterapkan ke Kanvas.

  5. Di panel kanan (saat item Pisahkan Data pada kanvas dipilih), edit Pecahan baris dalam himpunan data output pertama menjadi 0,7. Ini akan membagi data menjadi dua bagian, bagian pertama akan menjadi 70% dari data, dan bagian kedua adalah 30%. Untuk memastikan bahwa data dibagi secara acak, pastikan kotak centang Pemisahan acak tetap dicentang.

    Cuplikan layar panel Properti, yang memperlihatkan kotak centang Pemisahan acak terisi dan bidang Pecahan baris telah diatur ke 0 poin 7.

  6. Seret koneksi dari dasar item ProductsTableCSV di kanvas ke bagian atas item Pisahkan Data. Ini akan menghubungkan item dan mengirim output himpunan data ProductsTableCSV (data) ke input Data Terpisah.

    Cuplikan layar Kanvas Eksperimen, yang memperlihatkan koneksi yang digambar antara Products Table C S V dot c s v dan Split Data.

  7. Di panel Eksperimen di sisi kiri, perluas Pembelajaran Mesin> Train. Seret item Latih Model ke kanvas Eksperimen. Kanvas Anda akan terlihat sama seperti di bawah ini.

    Cuplikan layar Kanvas Eksperimen, yang menunjukkan koneksi yang digambar antara Products Table C S V dot c s v dan Split Data, dengan Latih Model di bawah ini.

  8. Dari kiri bawah item Pisahkan Data seret koneksi ke kanan atas item Latih Model. Pemisahan 70% pertama dari himpunan data akan digunakan oleh Model Latih untuk melatih algoritma.

    Cuplikan layar Kanvas Eksperimen, yang menunjukkan koneksi yang digambar antara Products Table C S V dot c s v, Split Data, dan Train Model.

  9. Pilih item Latih Model di kanvas, dan di panel Properti (di sisi kanan jendela browser Anda) klik tombol Luncurkan pemilih kolom.

  10. Dalam produk jenis kotak teks lalu tekan Enter, produk akan diatur sebagai kolom untuk melatih prediksi. Setelah ini, klik centang di sudut kanan bawah untuk menutup dialog pemilihan.

    Cuplikan layar dialog Pilih kolom tunggal, yang memperlihatkan kolom produk yang disorot di menu kolom.

  11. Anda akan melatih algoritma Regresi Logistik Multikelas untuk memprediksi produk yang paling banyak dijual berdasarkan jam dalam sehari dan tanggal. Namun, di luar cakupan dokumen ini untuk menjelaskan detail algoritma berbeda yang disediakan oleh studio Azure Pembelajaran Mesin, Anda dapat mengetahui lebih lanjut dari Pembelajaran Mesin Algoritma Cheat Sheet

  12. Dari panel item eksperimen di sebelah kiri, perluas Pembelajaran Mesin> Initialize Model>Classification, dan seret item Regresi Logistik Multikelas ke kanvas eksperimen.

  13. Sambungkan output, dari bagian bawah Regresi Logistik Multikelas, ke input kiri atas item Latih Model .

    Cuplikan layar Kanvas Eksperimen, yang menunjukkan Melatih Model yang terhubung ke Regresi Logistik Multikelas dan Data Terpisah.

  14. Dalam daftar item eksperimen di panel di sebelah kiri, perluas Pembelajaran Mesin> Score, dan seret item Model Skor ke kanvas.

  15. Sambungkan output, dari bagian bawah Latih Model, ke input kiri atas Model Skor.

  16. Sambungkan output kanan bawah dari Pisahkan Data, ke input kanan atas item Model Skor.

    Cuplikan layar Kanvas Eksperimen, yang menunjukkan Model Skor yang terhubung ke Latih Model dan Pisahkan Data.

  17. Dalam daftar item Eksperimen di panel di sebelah kiri, perluas Pembelajaran Mesin> Evaluate, dan seret item Evaluasi Model ke kanvas.

  18. Sambungkan output dari Model Skor ke input kiri atas Model Evaluasi.

    Cuplikan layar Kanvas Eksperimen, yang menunjukkan Model Evaluasi yang tersambung ke Model Skor.

  19. Anda telah membangun Eksperimen Pembelajaran Mesin pertama Anda. Anda sekarang dapat menyimpan dan menjalankan eksperimen. Di menu di bagian bawah halaman, klik tombol Simpan untuk menyimpan eksperimen Anda lalu klik Jalankan untuk memulai eksperimen.

    Cuplikan layar menu Kanvas Eksperimen, yang memperlihatkan tombol Simpan dan Jalankan yang disorot.

  20. Anda dapat melihat status eksperimen di kanan atas kanvas. Tunggu beberapa saat hingga eksperimen selesai.

    Jika Anda memiliki himpunan data besar (dunia nyata) kemungkinan eksperimen dapat memakan waktu berjam-jam untuk dijalankan.

    Cuplikan layar jendela Kanvas Eksperimen, yang menunjukkan status eksperimen di sudut kanan atas.

  21. Klik kanan pada item Evaluasi Model di kanvas dan dari menu konteks arahkan mouse ke atas Hasil Evaluasi, lalu pilih Visualisasikan.

    Cuplikan layar menu klik kanan item Evaluasi Model, yang memperlihatkan hasil Evaluasi yang disorot dan Memvisualisasikan item menu.

  22. Hasil evaluasi akan ditampilkan yang menunjukkan hasil yang diprediksi versus hasil aktual. Ini menggunakan 30% dari himpunan data asli, yang dibagi sebelumnya, untuk mengevaluasi model. Anda dapat melihat hasilnya tidak bagus, idealnya Anda akan memiliki angka tertinggi di setiap baris menjadi item yang disorot dalam kolom.

    Cuplikan layar bagan Hasil, yang memperlihatkan hasil eksperimen dalam grafik kotak dengan persentase.

  23. Tutup Hasil.

  24. Untuk menggunakan model Pembelajaran Mesin yang baru dilatih, Anda perlu mengeksposnya sebagai Layanan Web. Untuk melakukan ini, klik item menu Siapkan Layanan Web di menu di bagian bawah halaman, dan klik Layanan Web Prediktif.

    Cuplikan layar menu Eksperimen, yang memperlihatkan item menu Siapkan Layanan Web yang disorot.

  25. Tab baru akan dibuat, dan model latih digabungkan untuk membuat layanan web baru.

  26. Di menu di bagian bawah halaman klik Simpan, lalu klik Jalankan. Anda akan melihat status diperbarui di sudut kanan atas kanvas eksperimen.

    Cuplikan layar menu Eksperimen, yang memperlihatkan tombol menu Jalankan yang disorot dan item menu Jalankan.

  27. Setelah selesai berjalan, tombol Sebarkan Layanan Web akan muncul di bagian bawah halaman. Anda siap untuk menyebarkan layanan web. Klik Sebarkan Layanan Web (Klasik) di menu di bagian bawah halaman.

    Cuplikan layar menu Eksperimen, yang memperlihatkan item menu Sebarkan Layanan Web Klasik yang disorot dari tombol menu Sebarkan Layanan Web.

    Browser Anda mungkin meminta untuk mengizinkan pop-up, yang harus Anda izinkan, meskipun Anda mungkin perlu menekan Sebarkan Layanan Web lagi, jika halaman penyebaran tidak ditampilkan.

  28. Setelah Eksperimen dibuat, Anda akan diarahkan ke halaman Dasbor tempat Kunci API Anda akan ditampilkan. Salin ke notepad untuk saat ini, Anda akan segera membutuhkannya dalam kode Anda. Setelah Anda mencatat Kunci API Anda, klik tombol REQUEST/RESPONSE di bagian Titik Akhir Default di bawah Kunci.

    Cuplikan layar jendela Pembelajaran Mesin Microsoft Azure Studio, yang menampilkan kunci A P I dan tautan Respons garis miring Permintaan yang disorot.

    Catatan

    Jika Anda mengklik Uji di halaman ini, Anda akan dapat memasukkan data input dan melihat output. Masukkan hari dan jam. Biarkan entri produk kosong. Lalu klik tombol Konfirmasi . Output di bagian bawah halaman akan menunjukkan JSON yang mewakili kemungkinan setiap produk menjadi pilihan.

  29. Halaman web baru akan terbuka, menampilkan instruksi dan beberapa contoh tentang struktur Permintaan yang diperlukan oleh Pembelajaran Mesin Studio (klasik). Salin URI Permintaan yang ditampilkan di halaman ini, ke notepad Anda.

    Cuplikan layar halaman Dokumentasi Respons Permintaan A P I, yang memperlihatkan Permintaan U R I yang disorot.

Anda sekarang telah membangun sistem pembelajaran mesin yang menyediakan produk yang paling mungkin dijual berdasarkan data pembelian historis, berkorelasi dengan waktu hari dan hari dalam setahun.

Untuk memanggil layanan web, Anda memerlukan URL untuk titik akhir layanan dan Kunci API untuk layanan tersebut. Klik tab Konsumsi , dari menu atas.

Halaman Info Konsumsi akan menampilkan informasi yang Anda perlukan untuk memanggil layanan web dari kode Anda. Ambil salinan Kunci Primer dan URL Permintaan-Respons . Anda akan membutuhkannya di Bab berikutnya.

Bab 5 - Menyiapkan Proyek Unity

Siapkan dan uji Mixed Reality Immersive Headset Anda.

Catatan

Anda tidak akan memerlukan Pengontrol Gerakan untuk kursus ini. Jika Anda memerlukan dukungan untuk menyiapkan Immersive Headset, silakan klik DI SINI.

  1. Buka Unity dan buat Proyek Unity baru yang disebut MR_MachineLearning. Pastikan jenis proyek diatur ke 3D.

  2. Dengan Unity terbuka, ada baiknya memeriksa Editor Skrip default diatur ke Visual Studio. Buka Edit>Preferensi lalu dari jendela baru, navigasikan ke Alat Eksternal. Ubah Editor Skrip Eksternal ke Visual Studio 2017. Tutup jendela Preferensi .

  3. Selanjutnya, buka Pengaturan Build File>dan alihkan platform ke Platform Windows Universal, dengan mengklik tombol Beralih Platform.

  4. Pastikan juga bahwa:

    1. Perangkat Target diatur ke Perangkat Apa Pun.

      Untuk Microsoft HoloLens, atur Perangkat Target ke HoloLens.

    2. Jenis Build diatur ke D3D.

    3. SDK diatur ke Terbaru diinstal.

    4. Versi Visual Studio diatur ke Terbaru yang terinstal.

    5. Build and Run diatur ke Komputer Lokal.

    6. Jangan khawatir tentang menyiapkan Adegan sekarang, karena ini disediakan nanti.

    7. Pengaturan yang tersisa harus dibiarkan sebagai default untuk saat ini.

      Cuplikan layar dialog Pengaturan Build, yang memperlihatkan item menu Platform Windows Universal dipilih.

  5. Di jendela Pengaturan Build, klik tombol Pengaturan Pemutar, ini akan membuka panel terkait di ruang tempat Pemeriksa berada.

  6. Di panel ini, beberapa pengaturan perlu diverifikasi:

    1. Di tab Pengaturan Lainnya:

      1. Versi Runtime Pembuatan Skrip harus Eksperimental (Setara.NET 4.6)

      2. Scripting Backend harus .NET

      3. Tingkat Kompatibilitas API harus .NET 4.6

        Cuplikan layar tab Pengaturan Lainnya, yang memperlihatkan pengaturan yang diaktifkan sesuai dengan langkah-langkah yang diuraikan.

    2. Dalam tab Pengaturan Penerbitan, di bawah Kemampuan, periksa:

      • InternetClient

        Cuplikan layar tab Pengaturan Penerbitan, yang memperlihatkan kemampuan Klien Internet diaktifkan di bawah Kemampuan.

    3. Selanjutnya di bawah panel, di Pengaturan XR (ditemukan di bawah Pengaturan Penerbitan), centang Realitas Virtual yang Didukung, pastikan Windows Mixed Reality SDK ditambahkan

      Cuplikan layar tab Pengaturan X R, yang menunjukkan Windows Mixed Reality S D K di bawah Virtual Reality S D K diaktifkan.

  7. Kembali ke Pengaturan Build Proyek Unity C# tidak lagi berwarna abu-abu; centang kotak di samping ini.

  8. Tutup jendela Pengaturan Build.

  9. Simpan Proyek Anda (PROYEK PENYIMPANAN FILE>).

Bab 6 - Mengimpor Paket Unity MLProducts

Untuk kursus ini, Anda harus mengunduh Paket Aset Unity yang disebut Azure-MR-307.unitypackage. Paket ini dilengkapi dengan adegan, dengan semua objek di bawaan itu, sehingga Anda dapat fokus untuk membuatnya berfungsi. Skrip ShelfKeeper disediakan, meskipun hanya menyimpan variabel publik, untuk tujuan struktur penyiapan adegan. Anda harus melakukan semua bagian lainnya.

Untuk mengimpor paket ini:

  1. Dengan dasbor Unity di depan Anda, klik Aset di menu di bagian atas layar, lalu klik Impor Paket, Paket Kustom.

    Cuplikan layar Dasbor Unity, yang memperlihatkan item menu Paket Impor dan Paket Kustom yang disorot.

  2. Gunakan pemilih file untuk memilih paket azure-MR-307.unitypackage dan klik Buka.

  3. Daftar komponen untuk aset ini akan ditampilkan kepada Anda. Konfirmasi impor dengan mengklik Impor.

    Cuplikan layar dialog Impor Paket Unity, yang memperlihatkan paket Azure Pembelajaran Mesin sedang diimpor.

  4. Setelah selesai mengimpor, Anda akan melihat bahwa beberapa folder baru telah muncul di Panel Proyek Unity Anda. Itulah model 3D dan bahan masing-masing yang merupakan bagian dari adegan yang telah dibuat sebelumnya yang akan Anda kerjakan. Anda akan menulis sebagian besar kode dalam kursus ini.

    Cuplikan layar Panel Proyek Unity, yang memperlihatkan folder yang baru diimpor di folder Aset.

  5. Di dalam folder Panel Proyek, klik folder Adegan dan klik dua kali pada adegan di dalamnya (disebut MR_MachineLearningScene). Adegan akan terbuka (lihat gambar di bawah). Jika berlian merah hilang, cukup klik tombol Gizmos , di kanan atas Panel Game.

    Cuplikan layar jendela Adegan Unity, yang memperlihatkan item menu Gizmos yang disorot di navigasi atas.

Bab 7 - Memeriksa DLL di Unity

Untuk memanfaatkan penggunaan pustaka JSON (digunakan untuk serialisasi dan deserialisasi), DLL Newtonsoft telah diimplementasikan dengan paket yang Anda bawa. Pustaka harus memiliki konfigurasi yang benar, meskipun perlu diperiksa (terutama jika Anda mengalami masalah dengan kode tidak berfungsi).

Untuk melakukannya:

  • Klik kiri pada file Newtonsoft di dalam folder Plugin dan lihat panel Inspektur. Pastikan Platform apa pun dicentang. Buka tab UWP dan pastikan juga Jangan proses dicentang.

    Mengimpor DLL di Unity

Bab 8 - Buat kelas ShelfKeeper

Kelas ShelfKeeper menghosting metode yang mengontrol UI dan produk yang muncul di adegan.

Sebagai bagian dari paket yang diimpor, Anda akan diberikan kelas ini, meskipun tidak lengkap. Sekarang saatnya untuk menyelesaikan kelas tersebut:

  1. Klik dua kali pada skrip ShelfKeeper , di dalam folder Skrip , untuk membukanya dengan Visual Studio 2017.

  2. Ganti semua kode yang ada dalam skrip dengan kode berikut, yang mengatur waktu dan tanggal dan memiliki metode untuk menampilkan produk.

    using UnityEngine;
    
    public class ShelfKeeper : MonoBehaviour
    {
        /// <summary>
        /// Provides this class Singleton-like behavior
        /// </summary>
        public static ShelfKeeper instance;
    
        /// <summary>
        /// Unity Inspector accessible Reference to the Text Mesh object needed for data
        /// </summary>
        public TextMesh dateText;
    
        /// <summary>
        /// Unity Inspector accessible Reference to the Text Mesh object needed for time
        /// </summary>
        public TextMesh timeText;
    
        /// <summary>
        /// Provides references to the spawn locations for the products prefabs
        /// </summary>
        public Transform[] spawnPoint;
    
        private void Awake()
        {
            instance = this;
        }
    
        /// <summary>
        /// Set the text of the date in the scene
        /// </summary>
        public void SetDate(string day, string month)
        {
            dateText.text = day + " " + month;
        }
    
        /// <summary>
        /// Set the text of the time in the scene
        /// </summary>
        public void SetTime(string hour)
        {
            timeText.text = hour + ":00";
        }
    
        /// <summary>
        /// Spawn a product on the shelf by providing the name and selling grade
        /// </summary>
        /// <param name="name"></param>
        /// <param name="sellingGrade">0 being the best seller</param>
        public void SpawnProduct(string name, int sellingGrade)
        {
            Instantiate(Resources.Load(name),
                spawnPoint[sellingGrade].transform.position, spawnPoint[sellingGrade].transform.rotation);
        }
    }
    
  3. Pastikan untuk menyimpan perubahan Anda di Visual Studio sebelum kembali ke Unity.

  4. Kembali ke Unity Editor, periksa apakah kelas ShelfKeeper terlihat seperti di bawah ini:

    Cuplikan layar kelas Shelf Keeper, yang menunjukkan bahwa target referensi diatur ke Jala Teks Tanggal dan Jala Teks Waktu.

    Penting

    Jika skrip Anda tidak memiliki target referensi (yaitu Tanggal (Jala Teks)), cukup seret objek yang sesuai dari Panel Hierarki, ke bidang target. Lihat di bawah ini untuk penjelasan, jika diperlukan:

    1. Buka array Spawn Point dalam skrip komponen ShelfKeeper dengan mengklik kiri. Sub-bagian akan muncul yang disebut Ukuran, yang menunjukkan ukuran array. Ketik 3 ke dalam kotak teks di samping Ukuran dan tekan Enter, dan tiga slot akan dibuat di bawahnya.

    2. Dalam Hierarki perluas objek Tampilan Waktu (dengan mengklik kiri panah di sampingnya). Selanjutnya klik Kamera Utama dari dalam Hierarki, sehingga Pemeriksa menampilkan informasinya.

    3. Pilih Kamera Utama di Panel Hierarki. Seret objek Tanggal dan Waktu dari Panel Hierarki ke slot Teks Tanggal dan Teks Waktu dalam Pemeriksa Kamera Utama di komponen ShelfKeeper.

    4. Seret Titik Spawn dari Panel Hierarki (di bawah objek Shelf) ke target referensi 3 Element di bawah array Spawn Point, seperti yang ditunjukkan pada gambar.

      Cuplikan layar Panel Hierarki, yang menunjukkan bahwa Tanggal, Waktu, dan tiga item menu Spawn Point berada di kelas Shelf Keeper.

Bab 9 - Buat kelas ProductPrediction

Kelas berikutnya yang akan Anda buat adalah kelas ProductPrediction .

Kelas ini bertanggung jawab untuk:

  • Mengkueri instans Pembelajaran Mesin Service, memberikan tanggal dan waktu saat ini.

  • Deserialisasi respons JSON ke dalam data yang dapat digunakan.

  • Menginterpretasikan data, mengambil 3 produk yang direkomendasikan.

  • Memanggil metode kelas ShelfKeeper untuk menampilkan data di Adegan.

Untuk membuat kelas ini:

  1. Buka folder Skrip, di Panel Proyek.

  2. Klik kanan di dalam folder, Buat>Skrip C#. Panggil skrip ProductPrediction.

  3. Klik dua kali pada skrip ProductPrediction baru untuk membukanya dengan Visual Studio 2017.

  4. Jika dialog Modifikasi File Terdeteksi muncul, klik *Muat Ulang Solusi.

  5. Tambahkan namespace berikut ke bagian atas kelas ProductPrediction:

    using System;
    using System.Collections.Generic;
    using UnityEngine;
    using System.Linq;
    using Newtonsoft.Json;
    using UnityEngine.Networking;
    using System.Runtime.Serialization;
    using System.Collections;
    
  6. Di dalam kelas ProductPrediction sisipkan dua objek berikut yang terdiri dari sejumlah kelas berlapis. Kelas-kelas ini digunakan untuk menserialisasikan dan mendeserialisasi JSON untuk Layanan Pembelajaran Mesin.

        /// <summary>
        /// This object represents the Prediction request
        /// It host the day of the year and hour of the day
        /// The product must be left blank when serialising
        /// </summary>
        public class RootObject
        {
            public Inputs Inputs { get; set; }
        }
    
        public class Inputs
        {
            public Input1 input1 { get; set; }
        }
    
        public class Input1
        {
            public List<string> ColumnNames { get; set; }
            public List<List<string>> Values { get; set; }
        }
    
        /// <summary>
        /// This object containing the deserialised Prediction result
        /// It host the list of the products
        /// and the likelihood of them being sold at current date and time
        /// </summary>
        public class Prediction
        {
            public Results Results { get; set; }
        }
    
        public class Results
        {
            public Output1 output1;
        }
    
        public class Output1
        {
            public string type;
            public Value value;
        }
    
        public class Value
        {
            public List<string> ColumnNames { get; set; }
            public List<List<string>> Values { get; set; }
        }
    
  7. Kemudian tambahkan variabel berikut di atas kode sebelumnya (sehingga kode terkait JSON berada di bagian bawah skrip, di bawah semua kode lain, dan keluar dari jalan):

        /// <summary>
        /// The 'Primary Key' from your Machine Learning Portal
        /// </summary>
        private string authKey = "-- Insert your service authentication key here --";
    
        /// <summary>
        /// The 'Request-Response' Service Endpoint from your Machine Learning Portal
        /// </summary>
        private string serviceEndpoint = "-- Insert your service endpoint here --";
    
        /// <summary>
        /// The Hour as set in Windows
        /// </summary>
        private string thisHour;
    
        /// <summary>
        /// The Day, as set in Windows
        /// </summary>
        private string thisDay;
    
        /// <summary>
        /// The Month, as set in Windows
        /// </summary>
        private string thisMonth;
    
        /// <summary>
        /// The Numeric Day from current Date Conversion
        /// </summary>
        private string dayOfTheYear;
    
        /// <summary>
        /// Dictionary for holding the first (or default) provided prediction 
        /// from the Machine Learning Experiment
        /// </summary>    
        private Dictionary<string, string> predictionDictionary;
    
        /// <summary>
        /// List for holding product prediction with name and scores
        /// </summary>
        private List<KeyValuePair<string, double>> keyValueList;
    

    Penting

    Pastikan untuk menyisipkan kunci utama dan titik akhir permintaan-respons, dari portal Pembelajaran Mesin, ke dalam variabel di sini. Gambar di bawah ini menunjukkan dari mana Anda akan mengambil kunci dan titik akhir.

    Cuplikan layar Pembelajaran Mesin Microsoft Azure Studio, yang menampilkan tautan Minta Respons garis miring di bawah Halaman Bantuan A P I.

    Cuplikan layar halaman Dokumentasi Respons Permintaan A P I, yang memperlihatkan POST Request U R I yang disorot.

  8. Sisipkan kode ini dalam metode Start(). Metode Start() dipanggil ketika kelas menginisialisasi:

        void Start()
        {
            // Call to get the current date and time as set in Windows
            GetTodayDateAndTime();
    
            // Call to set the HOUR in the UI
            ShelfKeeper.instance.SetTime(thisHour);
    
            // Call to set the DATE in the UI
            ShelfKeeper.instance.SetDate(thisDay, thisMonth);
    
            // Run the method to Get Predication from Azure Machine Learning
            StartCoroutine(GetPrediction(thisHour, dayOfTheYear));
        }
    
  9. Berikut ini adalah metode yang mengumpulkan tanggal dan waktu dari Windows dan mengonversinya menjadi format yang dapat digunakan eksperimen Pembelajaran Mesin kami untuk membandingkan dengan data yang disimpan dalam tabel.

        /// <summary>
        /// Get current date and hour
        /// </summary>
        private void GetTodayDateAndTime()
        {
            // Get today date and time
            DateTime todayDate = DateTime.Now;
    
            // Extrapolate the HOUR
            thisHour = todayDate.Hour.ToString();
    
            // Extrapolate the DATE
            thisDay = todayDate.Day.ToString();
            thisMonth = todayDate.ToString("MMM");
    
            // Extrapolate the day of the year
            dayOfTheYear = todayDate.DayOfYear.ToString();
        }
    
  10. Anda dapat menghapus metode Update() karena kelas ini tidak akan menggunakannya.

  11. Tambahkan metode berikut yang akan mengomunikasikan tanggal dan waktu saat ini ke titik akhir Pembelajaran Mesin dan menerima respons dalam format JSON.

        private IEnumerator GetPrediction(string timeOfDay, string dayOfYear)
        {
            // Populate the request object 
            // Using current day of the year and hour of the day
            RootObject ro = new RootObject
            {
                Inputs = new Inputs
                {
                    input1 = new Input1
                    {
                        ColumnNames = new List<string>
                        {
                            "day",
                            "hour",
                        "product"
                        },
                        Values = new List<List<string>>()
                    }
                }
            };
    
            List<string> l = new List<string>
            {
                dayOfYear,
                timeOfDay,
                ""
            };
    
            ro.Inputs.input1.Values.Add(l);
    
            Debug.LogFormat("Score request built");
    
            // Serialize the request
            string json = JsonConvert.SerializeObject(ro);
    
            using (UnityWebRequest www = UnityWebRequest.Post(serviceEndpoint, "POST"))
            {
                byte[] jsonToSend = new System.Text.UTF8Encoding().GetBytes(json);
                www.uploadHandler = new UploadHandlerRaw(jsonToSend);
    
                www.downloadHandler = new DownloadHandlerBuffer();
                www.SetRequestHeader("Authorization", "Bearer " + authKey);
                www.SetRequestHeader("Content-Type", "application/json");
                www.SetRequestHeader("Accept", "application/json");
    
                yield return www.SendWebRequest();
                string response = www.downloadHandler.text;
    
                // Deserialize the response
                DataContractSerializer serializer;
                serializer = new DataContractSerializer(typeof(string));
                DeserialiseJsonResponse(response);
            }
        }
    
  12. Tambahkan metode berikut, yang bertanggung jawab untuk mendeserialisasi respons JSON, dan mengkomunikasikan hasil deserialisasi ke kelas ShelfKeeper . Hasil ini akan menjadi nama dari tiga item yang diprediksi paling banyak dijual pada tanggal dan waktu saat ini. Masukkan kode di bawah ini ke kelas ProductPrediction , di bawah metode sebelumnya.

        /// <summary>
        /// Deserialize the response received from the Machine Learning portal
        /// </summary>
        public void DeserialiseJsonResponse(string jsonResponse)
        {
            // Deserialize JSON
            Prediction prediction = JsonConvert.DeserializeObject<Prediction>(jsonResponse);
            predictionDictionary = new Dictionary<string, string>();
    
            for (int i = 0; i < prediction.Results.output1.value.ColumnNames.Count; i++)
            {
                if (prediction.Results.output1.value.Values[0][i] != null)
                {
                    predictionDictionary.Add(prediction.Results.output1.value.ColumnNames[i], prediction.Results.output1.value.Values[0][i]);
                }
            }
    
            keyValueList = new List<KeyValuePair<string, double>>();
    
            // Strip all non-results, by adding only items of interest to the scoreList
            for (int i = 0; i < predictionDictionary.Count; i++)
            {
                KeyValuePair<string, string> pair = predictionDictionary.ElementAt(i);
                if (pair.Key.StartsWith("Scored Probabilities"))
                {
                    // Parse string as double then simplify the string key so to only have the item name
                    double scorefloat = 0f;
                    double.TryParse(pair.Value, out scorefloat);
                    string simplifiedName =
                        pair.Key.Replace("\"", "").Replace("Scored Probabilities for Class", "").Trim();
                    keyValueList.Add(new KeyValuePair<string, double>(simplifiedName, scorefloat));
                }
            }
    
            // Sort Predictions (results will be lowest to highest)
            keyValueList.Sort((x, y) => y.Value.CompareTo(x.Value));
    
            // Spawn the top three items, from the keyValueList, which we have sorted
            for (int i = 0; i < 3; i++)
            {
                ShelfKeeper.instance.SpawnProduct(keyValueList[i].Key, i);
            }
    
            // Clear lists in case of reuse
            keyValueList.Clear();
            predictionDictionary.Clear();
        }
    
  13. Simpan Visual Studio dan kembali ke Unity.

  14. Seret skrip kelas ProductPrediction dari folder Skrip, ke objek Kamera Utama.

  15. Simpan adegan anda dan proyek File>Save Scene/File>Save Project.

Bab 10 - Bangun Solusi UWP

Sekarang saatnya untuk membangun proyek Anda sebagai solusi UWP, sehingga dapat berjalan sebagai aplikasi mandiri.

Untuk Membangun:

  1. Simpan adegan saat ini dengan mengklik Simpan Adegan File>.

  2. Buka Pengaturan Penyusunan File>

  3. Centang kotak yang disebut Unity C# Projects (ini penting karena akan memungkinkan Anda mengedit kelas setelah build selesai).

  4. Klik Tambahkan Adegan Terbuka,

  5. Klik Bangun.

    Cuplikan layar dialog Pengaturan Build, yang memperlihatkan item menu Platform Windows Universal disorot.

  6. Anda akan diminta untuk memilih folder tempat Anda ingin membangun Solusi.

  7. Buat folder BUILDS dan di dalam folder tersebut buat folder lain dengan nama pilihan Anda yang sesuai.

  8. Klik folder baru Anda lalu klik Pilih Folder, untuk memulai build di lokasi tersebut.

    Cuplikan layar jendela File Explorer, yang memperlihatkan folder Build yang disorot.

    Cuplikan layar jendela File Explorer, yang memperlihatkan konten folder Build dan tombol Pilih Folder yang disorot.

  9. Setelah Unity selesai membangun (mungkin perlu waktu), Unity akan membuka jendela File Explorer di lokasi build Anda (periksa bilah tugas Anda, karena mungkin tidak selalu muncul di atas jendela Anda, tetapi akan memberi tahu Anda tentang penambahan jendela baru).

Bab 11 - Sebarkan Aplikasi Anda

Untuk menyebarkan aplikasi Anda:

  1. Navigasi ke build Unity baru Anda ( folder Aplikasi ) dan buka file solusi dengan Visual Studio.

  2. Dengan Visual Studio terbuka, Anda perlu Memulihkan Paket NuGet, yang dapat dilakukan melalui mengklik kanan solusi MachineLearningLab_Build Anda, dari Penjelajah Solusi (ditemukan di sebelah kanan Visual Studio), lalu mengklik Pulihkan Paket NuGet:

    Cuplikan layar jendela Visual Studio, yang memperlihatkan item menu Pulihkan Paket Nu Get yang disorot.

  3. Di Konfigurasi Solusi pilih Debug.

  4. Di Platform Solusi, pilih x86, Komputer Lokal.

    Untuk Microsoft HoloLens, Anda mungkin merasa lebih mudah untuk mengatur ini ke Komputer Jarak Jauh, sehingga Anda tidak tertambat ke komputer Anda. Meskipun, Anda juga harus melakukan hal berikut:

    • Ketahui Alamat IP HoloLens Anda, yang dapat ditemukan dalam Jaringan Pengaturan > & Opsi Tingkat Lanjut Wi-Fi > Internet>; IPv4 adalah alamat yang harus Anda gunakan.
    • Pastikan Mode Pengembang Aktif; ditemukan di Pengaturan > Pembaruan & Keamanan > Untuk pengembang.

    Cuplikan layar menu Microsoft Visual Studio, yang menunjukkan bahwa Komputer Lokal dipilih di Platform Solusi.

  5. Buka menu Build dan klik Sebarkan Solusi untuk memuat samping aplikasi ke PC Anda.

  6. Aplikasi Anda sekarang akan muncul dalam daftar aplikasi yang diinstal, siap untuk diluncurkan.

Saat Anda menjalankan aplikasi Mixed Reality, Anda akan melihat bangku yang disiapkan di adegan Unity Anda, dan dari inisialisasi, data yang Anda siapkan dalam Azure akan diambil. Data akan dideserialisasi dalam aplikasi Anda, dan tiga hasil teratas untuk tanggal dan waktu Anda saat ini akan disediakan secara visual, karena tiga model di bangku.

Aplikasi Pembelajaran Mesin Anda yang sudah selesai

Selamat, Anda membangun aplikasi realitas campuran yang memanfaatkan Azure Pembelajaran Mesin untuk membuat prediksi data dan menampilkannya di adegan Anda.

Cuplikan layar jendela Microsoft Visual Studio, yang memperlihatkan rak dengan tiga objek dan kartu dengan teks jam 15 23 Feb.

Latihan

Latihan 1

Bereksperimenlah dengan urutan pengurutan aplikasi Anda dan buat tiga prediksi bawah muncul di rak, karena data ini berpotensi berguna juga.

Latihan 2

Menggunakan Tabel Azure mengisi tabel baru dengan informasi cuaca dan membuat eksperimen baru menggunakan data.