Urządzenia HoloLens (1. generacji) i Azure 307: Uczenie maszynowe


Uwaga

Samouczki Mixed Reality Academy zostały zaprojektowane z myślą o urządzeniach HoloLens (1. generacji) i Mixed Reality immersywnych zestawów słuchawkowych. W związku z tym uważamy, że ważne jest pozostawienie tych samouczków w miejscu dla deweloperów, którzy nadal szukają wskazówek dotyczących opracowywania dla tych urządzeń. Te samouczki nie zostaną zaktualizowane o najnowsze zestawy narzędzi ani interakcje używane na potrzeby HoloLens 2. Będą one utrzymywane w celu kontynuowania pracy na obsługiwanych urządzeniach. W przyszłości zostanie opublikowana nowa seria samouczków, które pokażą, jak opracowywać na potrzeby HoloLens 2. To powiadomienie zostanie zaktualizowane za pomocą linku do tych samouczków po ich opublikowaniu.


końcowy produkt - start

Z tego kursu dowiesz się, jak dodać możliwości uczenia maszynowego do aplikacji rzeczywistości mieszanej przy użyciu usługi Azure Machine Learning Studio (wersja klasyczna).

Azure Machine Learning Studio (wersja klasyczna) to usługa firmy Microsoft, która udostępnia deweloperom dużą liczbę algorytmów uczenia maszynowego, które mogą pomóc w danych wejściowych, wyjściowych, przygotowaniach i wizualizacjach. Na podstawie tych składników można następnie opracować eksperyment analizy predykcyjnej, wykonać iterację na nim i użyć go do wytrenowania modelu. Po trenowaniu możesz sprawić, że model działa w chmurze platformy Azure, aby umożliwić mu ocenę nowych danych. Aby uzyskać więcej informacji, odwiedź stronę usługi Azure Machine Learning Studio (wersja klasyczna).

Po ukończeniu tego kursu będziesz mieć aplikację zestawu nagłownego immersyjnego rzeczywistości mieszanej i nauczysz się wykonywać następujące czynności:

  1. Podaj tabelę danych sprzedaży w portalu usługi Azure Machine Learning Studio (wersja klasyczna) i zaprojektuj algorytm w celu przewidywania przyszłej sprzedaży popularnych elementów.
  2. Utwórz projekt aparatu Unity, który może odbierać i interpretować dane przewidywania z usługi ML.
  3. Wyświetl dane predykacji wizualnie w projekcie aparatu Unity, udostępniając na półce najpopularniejsze elementy sprzedaży.

W aplikacji należy do Ciebie, jak zintegrować wyniki z projektem. Ten kurs jest przeznaczony do nauki integrowania usługi platformy Azure z projektem aparatu Unity. Twoim zadaniem jest wykorzystanie wiedzy zdobytą z tego kursu w celu ulepszenia aplikacji rzeczywistości mieszanej.

Ten kurs jest samodzielnym samouczkiem, który nie obejmuje bezpośrednio żadnych innych Mixed Reality Labs.

Obsługa urządzeń

Kurs HoloLens Immersyjne zestawy nagłowne
MR i Azure 307: Uczenie maszynowe ✔️ ✔️

Uwaga

Chociaż ten kurs koncentruje się głównie na Windows Mixed Reality immersywnych zestawach słuchawkowych (VR), możesz również zastosować to, czego uczysz się w tym kursie, aby Microsoft HoloLens. Wraz z kursem zobaczysz notatki dotyczące wszelkich zmian, które mogą być konieczne do zastosowania w celu obsługi urządzenia HoloLens. Podczas korzystania z urządzenia HoloLens można zauważyć pewne echo podczas przechwytywania głosu.

Wymagania wstępne

Uwaga

Ten samouczek jest przeznaczony dla deweloperów, którzy mają podstawowe doświadczenie w językach Unity i C#. Należy również pamiętać, że wymagania wstępne i pisemne instrukcje zawarte w tym dokumencie reprezentują to, co zostało przetestowane i zweryfikowane w momencie pisania (maj 2018 r.). Możesz korzystać z najnowszego oprogramowania, jak wymieniono w artykule dotyczącym instalacji narzędzi, choć nie należy zakładać, że informacje w tym kursie doskonale pasują do tego, co znajdziesz w nowszym oprogramowaniu niż wymienione poniżej.

Na potrzeby tego kursu zalecamy następujący sprzęt i oprogramowanie:

Przed rozpoczęciem

Aby uniknąć problemów podczas tworzenia tego projektu, zdecydowanie zaleca się utworzenie projektu wymienionego w tym samouczku w folderze głównym lub niemal głównym (długie ścieżki folderów mogą powodować problemy w czasie kompilacji).

Rozdział 1 — Konfigurowanie konta usługi Azure Storage

Aby korzystać z interfejsu API usługi Azure Translator, należy skonfigurować wystąpienie usługi, które ma zostać udostępnione aplikacji.

  1. Zaloguj się do witryny Azure Portal.

    Uwaga

    Jeśli nie masz jeszcze konta platformy Azure, musisz je utworzyć. Jeśli korzystasz z tego samouczka w sytuacji na potrzeby zajęć lub laboratorium, poproś instruktora lub jednego z opiekunów o pomoc przy konfigurowaniu nowego konta.

  2. Po zalogowaniu kliknij pozycję Konta magazynu w menu po lewej stronie.

    Zrzut ekranu przedstawiający okno platformy Microsoft Azure, które pokazuje element Konta magazynu w menu nawigacji po lewej stronie.

    Uwaga

    Wyraz Nowy mógł zostać zastąpiony ciągiem Create a resource (Utwórz zasób) w nowszych portalach.

  3. Na karcie Konta magazynu kliknij pozycję Dodaj.

    Zrzut ekranu przedstawiający okno platformy Microsoft Azure z wyświetlonym ekranem Konta magazynu i wyróżnionym przyciskiem Dodaj.

  4. W panelu Tworzenie konta magazynu :

    1. Wstaw nazwę konta, pamiętaj, że to pole akceptuje tylko cyfry i małe litery.

    2. W obszarze Model wdrażania wybierz pozycję Resource Manager.

    3. W polu Rodzaj konta wybierz pozycję Magazyn (ogólnego przeznaczenia w wersji 1)..

    4. W obszarze Wydajność wybierz opcję Standardowa.

    5. W obszarze Replikacja wybierz pozycję Magazyn geograficznie nadmiarowy dostępny do odczytu (RA-GRS).

    6. Pozostaw wartość Wymagany bezpieczny transfer jako Wyłączony.

    7. Wybierz subskrypcję.

    8. Wybierz grupę zasobów lub utwórz nową. Grupa zasobów umożliwia monitorowanie, kontrolowanie dostępu, aprowizowania i zarządzania rozliczeniami dla kolekcji zasobów platformy Azure. Zaleca się zachowanie wszystkich usług platformy Azure skojarzonych z jednym projektem (np. takich jak te laboratoria) w ramach wspólnej grupy zasobów.

      Jeśli chcesz dowiedzieć się więcej na temat grup zasobów platformy Azure, odwiedź artykuł grupy zasobów.

    9. Określ lokalizację grupy zasobów (jeśli tworzysz nową grupę zasobów). Lokalizacja najlepiej będzie znajdować się w regionie, w którym będzie uruchamiana aplikacja. Niektóre zasoby platformy Azure są dostępne tylko w niektórych regionach.

  5. Musisz również potwierdzić, że rozumiesz warunki i postanowienia zastosowane do tej usługi.

    Zrzut ekranu przedstawiający okno dialogowe Tworzenie konta magazynu zawierające informacje wypełnione przez użytkownika w wymaganych polach tekstowych.

  6. Po kliknięciu pozycji Utwórz trzeba będzie poczekać na utworzenie usługi. Może to potrwać minutę.

  7. Po utworzeniu wystąpienia usługi w portalu zostanie wyświetlone powiadomienie.

    Zrzut ekranu przedstawiający powiadomienie Wdrożenie powiodło się, które informuje użytkownika o pomyślnym wdrożeniu w grupie zasobów.

Rozdział 2 — Azure Machine Learning Studio (wersja klasyczna)

Aby korzystać z usługi Azure Machine Learning, należy skonfigurować wystąpienie usługi Machine Learning, które ma zostać udostępnione aplikacji.

  1. W witrynie Azure Portal kliknij pozycję Nowy w lewym górnym rogu, a następnie wyszukaj ciąg Obszar roboczy usługi Machine Learning Studio, naciśnij klawisz Enter.

    Zrzut ekranu przedstawiający okno platformy Microsoft Azure z obszarem roboczym usługi Machine Learning Studio w okienku zawartości.

  2. Nowa strona zawiera opis usługi Obszaru roboczego usługi Machine Learning Studio . W lewym dolnym rogu tego monitu kliknij przycisk Utwórz , aby utworzyć skojarzenie z tą usługą.

  3. Po kliknięciu pozycji Utwórz zostanie wyświetlony panel, w którym musisz podać pewne szczegóły dotyczące nowej usługi Machine Learning Studio:

    1. Wstaw żądaną nazwę obszaru roboczego dla tego wystąpienia usługi.

    2. Wybierz subskrypcję.

    3. Wybierz grupę zasobów lub utwórz nową. Grupa zasobów umożliwia monitorowanie, kontrolowanie dostępu, aprowizowania i zarządzania rozliczeniami dla kolekcji zasobów platformy Azure. Zaleca się zachowanie wszystkich usług platformy Azure skojarzonych z jednym projektem (np. takich jak te laboratoria) w ramach wspólnej grupy zasobów.

      Jeśli chcesz dowiedzieć się więcej na temat grup zasobów platformy Azure, odwiedź artykuł grupy zasobów.

    4. Określ lokalizację grupy zasobów (jeśli tworzysz nową grupę zasobów). Lokalizacja najlepiej będzie znajdować się w regionie, w którym będzie uruchamiana aplikacja. Niektóre zasoby platformy Azure są dostępne tylko w niektórych regionach. Należy użyć tej samej grupy zasobów, która była używana do tworzenia usługi Azure Storage w poprzednim rozdziale.

    5. W sekcji Konto magazynu kliknij pozycję Użyj istniejącej, a następnie kliknij menu rozwijane, a następnie kliknij konto magazynu utworzone w ostatnim rozdziale.

    6. Wybierz odpowiednią warstwę cenową Obszaru roboczego z menu rozwijanego.

    7. W sekcji Plan usługi sieci Web kliknij pozycję Utwórznową, a następnie wstaw nazwę w polu tekstowym.

    8. W sekcji Warstwa cenowa planu usługi internetowej wybierz wybraną warstwę cenową. Warstwa testowania programistycznego o nazwie DEVTEST Standard powinna być dostępna bez opłat.

    9. Musisz również potwierdzić, że rozumiesz warunki i postanowienia zastosowane do tej usługi.

    10. Kliknij pozycję Utwórz.

      Zrzut ekranu przedstawiający okno dialogowe usługi Azure Machine Learning Studio zawierające informacje wprowadzone przez użytkownika w polach tekstowych.

  4. Po kliknięciu pozycji Utwórz trzeba będzie poczekać, aż usługa zostanie utworzona, może to potrwać minutę.

  5. Po utworzeniu wystąpienia usługi w portalu zostanie wyświetlone powiadomienie.

    Zrzut ekranu przedstawiający okno platformy Microsoft Azure, w którym jest wyświetlane nieprzeczytane powiadomienie w menu nawigacji.

  6. Kliknij powiadomienie, aby zapoznać się z nowym wystąpieniem usługi.

    Zrzut ekranu przedstawiający powiadomienie Wdrożenie zakończyło się pomyślnie, co informuje użytkownika o pomyślnym wdrożeniu obszaru roboczego w grupie zasobów.

  7. Kliknij przycisk Przejdź do zasobu w powiadomieniu, aby zapoznać się z nowym wystąpieniem usługi.

  8. Na wyświetlonej stronie w sekcji Linki dodatkowe kliknij pozycję Uruchom usługę Machine Learning Studio, co spowoduje przekierowanie przeglądarki do portalu usługi Machine Learning Studio .

    Zrzut ekranu przedstawiający okno platformy Microsoft Azure z wyróżnionym linkiem Uruchom usługę Machine Learning Studio w okienku zawartości.

  9. Użyj przycisku Zaloguj się w prawym górnym rogu lub w środku, aby zalogować się do usługi Machine Learning Studio (klasycznej).

    Zrzut ekranu przedstawiający okno usługi Machine Learning Studio z wyróżnionym przyciskiem Zaloguj.

Rozdział 3 — Machine Learning Studio (wersja klasyczna): Konfiguracja zestawu danych

Jednym ze sposobów działania algorytmów uczenia maszynowego jest analizowanie istniejących danych, a następnie próba przewidywania przyszłych wyników na podstawie istniejącego zestawu danych. Zazwyczaj oznacza to, że im więcej istniejących danych, tym lepiej algorytm będzie przewidywał przyszłe wyniki.

Przykładowa tabela jest dostarczana w tym kursie o nazwie ProductsTableCSV i można je pobrać tutaj.

Ważne

Powyższy plik .zip zawiera zarówno plik ProductsTableCSV , jak i plik unitypackage, który będzie potrzebny w rozdziale 6. Ten pakiet jest również udostępniany w tym rozdziale, choć oddzielony od pliku csv.

Ten przykładowy zestaw danych zawiera rekord najlepiej sprzedających się obiektów w każdej godzinie każdego dnia roku 2017.

Zrzut ekranu przedstawiający okno programu Microsoft Excel, w którym przedstawiono przykładowy zestaw danych najlepiej sprzedających się obiektów w każdej godzinie każdego dnia w roku 2017.

Na przykład w dniu 1 z 2017 r., o godzinie 13:00 (godzina 13), najlepiej sprzedającym się elementem była sól i pieprz.

Ta przykładowa tabela zawiera 9998 wpisów.

  1. Wróć do portalu usługi Machine Learning Studio (klasycznego) i dodaj tę tabelę jako zestaw danych dla swojego uczenia maszynowego. Zrób to, klikając przycisk + Nowy w lewym dolnym rogu ekranu.

    Zrzut ekranu przedstawiający klasyczny portal programu Microsoft Azure Machine Learning Studio z wyróżnionym przyciskiem Nowy w menu.

  2. Sekcja pojawi się od dołu, a w niej znajduje się panel nawigacyjny po lewej stronie. Kliknij pozycję Zestaw danych, a następnie po prawej stronie pozycji Z pliku lokalnego.

    Zrzut ekranu przedstawiający okno dialogowe Nowy, w którym są wyświetlane wyróżnione elementy menu Zestaw danych i Z pliku lokalnego.

  3. Przekaż nowy zestaw danych , wykonując następujące kroki:

    1. Zostanie wyświetlone okno przekazywania, w którym można przeglądać dysk twardy dla nowego zestawu danych.

      Zrzut ekranu przedstawiający okno dialogowe Przekazywanie nowego zestawu danych, w którym zostanie wyświetlony przycisk Przeglądaj, aby użytkownik znalazł i wybrał dane do przekazania.

    2. Po wybraniu i powrocie do okna przekazywania pozostaw pole wyboru niezaznaczone.

    3. W polu tekstowym poniżej wprowadź ProductsTableCSV.csv jako nazwę zestawu danych (choć należy je automatycznie dodać).

    4. Z menu rozwijanego dla pozycji Typ wybierz pozycję Ogólny plik CSV z nagłówkiem (.csv).

    5. Naciśnij znacznik w prawym dolnym rogu okna przekazywania, a zestaw danych zostanie przekazany.

Rozdział 4 — Machine Learning Studio (wersja klasyczna): Eksperyment

Zanim będzie można utworzyć system uczenia maszynowego, musisz utworzyć eksperyment, aby zweryfikować teorię dotyczącą danych. Z wynikami będziesz wiedzieć, czy potrzebujesz większej ilości danych, czy też nie ma korelacji między danymi a możliwym wynikiem.

Aby rozpocząć tworzenie eksperymentu:

  1. Kliknij ponownie przycisk + Nowy w lewym dolnym rogu strony, a następnie kliknij pozycję Eksperyment>pusty eksperyment.

    Zrzut ekranu przedstawiający okno programu Microsoft Azure Machine Learning Studio, w którym jest zaznaczony element menu Eksperyment.

  2. Zostanie wyświetlona nowa strona z pustym eksperymentem:

  3. W panelu po lewej stronie rozwiń węzeł Zapisane zestawy danych Moje zestawy>danych i przeciągnij element ProductsTableCSV na kanwę eksperymentu.

    Zrzut ekranu przedstawiający okno Eksperyment, które pokazuje rozwinięty folder Moje zestawy danych w menu i Tabela produktów C S V w kanwie eksperymentu.

  4. W panelu po lewej stronie rozwiń węzeł Przykład przekształcania> danychi Podział. Następnie przeciągnij element Split Data (Podział danych ) na kanwę eksperymentu. Element Split Data (Podział danych) podzieli zestaw danych na dwie części. Jedna część, której będziesz używać do trenowania algorytmu uczenia maszynowego. Druga część zostanie użyta do oceny dokładności wygenerowanego algorytmu.

    Zrzut ekranu przedstawiający okno Eksperyment, w którym przedstawiono elementy Partycja i Przykład i Podział danych w menu z podziałem danych zastosowanymi do kanwy.

  5. W prawym panelu (gdy jest zaznaczony element Podziel dane na kanwie), zmodyfikuj ułamek wierszy w pierwszym wyjściowym zestawie danych na 0,7. Spowoduje to podzielenie danych na dwie części, pierwsza część będzie wynosić 70% danych, a druga część to pozostałe 30%. Aby upewnić się, że dane są podzielone losowo, upewnij się, że pole wyboru Podział losowy pozostaje zaznaczone.

    Zrzut ekranu przedstawiający panel Właściwości, który pokazuje wypełnione pole Podział losowy, a pole Ułamek wierszy zostało ustawione na 0 punkt 7.

  6. Przeciągnij połączenie z podstawy elementu ProductsTableCSV na kanwie do góry elementu Split Data (Podział danych). Spowoduje to połączenie elementów i wysłanie danych wyjściowych zestawu danych ProductsTableCSV (dane) do danych wejściowych split data.

    Zrzut ekranu przedstawiający kanwę eksperymentu, która pokazuje połączenie narysowane między tabelą Products Table C V V c c v i Podział danych.

  7. W panelu Eksperymenty po lewej stronie rozwiń węzełUczeniemaszynowe>. Przeciągnij element Train Model (Trenowanie modelu ) na kanwę Eksperyment. Kanwa powinna wyglądać tak samo jak poniżej.

    Zrzut ekranu przedstawiający kanwę eksperymentu, która pokazuje połączenie narysowane między tabelą Products Table C V dot c s v i Split Data (Podział danych) z poniższym modelem Train Model (Trenowanie modelu).

  8. W lewym dolnym rogu elementu Split Data (Podział danych ) przeciągnij połączenie z prawym górnym rogu elementu Train Model (Trenowanie modelu ). Pierwsze 70% podzielone z zestawu danych będzie używane przez trenowanie modelu do trenowania algorytmu.

    Zrzut ekranu przedstawiający kanwę eksperymentu, która pokazuje połączenie narysowane między tabelą Products Table C S V c c v, Split Data i Train Model.

  9. Wybierz element Train Model (Trenowanie modelu) na kanwie, a następnie w panelu Właściwości (po prawej stronie okna przeglądarki) kliknij przycisk Launch column selector (Uruchom selektor kolumn).

  10. W polu tekstowym wpisz produkt , a następnie naciśnij klawisz Enter, produkt zostanie ustawiony jako kolumna do trenowania przewidywań. W tym celu kliknij znacznik w prawym dolnym rogu, aby zamknąć okno dialogowe wyboru.

    Zrzut ekranu przedstawiający okno dialogowe Wybieranie pojedynczej kolumny z wyróżnioną kolumną produktu w menu kolumn.

  11. Wytrenujesz algorytm regresji logistycznej wieloklasowej , aby przewidzieć najbardziej sprzedany produkt na podstawie godziny dnia i daty. Wykracza to poza zakres tego dokumentu, aby wyjaśnić szczegóły różnych algorytmów dostarczonych przez Azure Machine Learning studio, jednak możesz dowiedzieć się więcej z ściągawek algorytmu uczenia maszynowego

  12. W panelu elementów eksperymentu po lewej stronie rozwiń węzeł Machine Learning>Initialize Model Classification (Inicjowanieklasyfikacji modeli>) i przeciągnij element Multiclass Logistics Regression (Regresja logistyczna) do kanwy eksperymentu.

  13. Połącz dane wyjściowe z dołu wieloklasowej regresji logistycznej z lewym górnym wejściem elementu Train Model (Trenowanie modelu ).

    Zrzut ekranu przedstawiający kanwę eksperymentu, która pokazuje trenowanie modelu połączonego z regresją logistyczną wieloklasową i podziałem danych.

  14. Na liście elementów eksperymentu w panelu po lewej stronie rozwiń pozycję Ocena uczenia> maszynowego i przeciągnij element Score Model (Generowanie wyników modelu) na kanwie.

  15. Połącz dane wyjściowe z dolnej części train model (Trenowanie modelu) z lewym górnym wejściem modelu Score (Generowanie wyników dla modelu).

  16. Połącz dane wyjściowe w prawym dolnym rogu z obszaru Split Data (Podział danych) do prawego górnego rogu elementu Score Model (Generowanie wyników modelu ).

    Zrzut ekranu przedstawiający kanwę eksperymentu, która pokazuje model oceny połączony z trenowaniem modelu i podziałem danych.

  17. Na liście elementów Eksperyment w panelu po lewej stronie rozwiń pozycję Machine LearningEvaluate (Ocenauczenia> maszynowego) i przeciągnij element Evaluate Model (Oceń model) na kanwę.

  18. Połącz dane wyjściowe z modelu Score (Generowanie wyników modelu) z lewym górnym wejściem modelu Evaluate Model (Ocena modelu).

    Zrzut ekranu przedstawiający kanwę eksperymentu, która pokazuje model evaluate połączony z modelem Score Model (Ocena modelu).

  19. Utworzono swój pierwszy eksperyment usługi Machine Learning. Teraz możesz zapisać i uruchomić eksperyment. W menu w dolnej części strony kliknij przycisk Zapisz , aby zapisać eksperyment, a następnie kliknij przycisk Uruchom , aby rozpocząć eksperyment.

    Zrzut ekranu przedstawiający menu Kanwa eksperymentu z wyróżnionymi przyciskami Zapisz i Uruchom.

  20. Stan eksperymentu można wyświetlić w prawym górnym rogu kanwy. Poczekaj chwilę na zakończenie eksperymentu.

    Jeśli masz duży (rzeczywisty) zestaw danych, prawdopodobnie eksperyment może potrwać kilka godzin.

    Zrzut ekranu przedstawiający okno Kanwa eksperymentu, które pokazuje stan eksperymentu w prawym górnym rogu.

  21. Kliknij prawym przyciskiem myszy element Evaluate Model (Ocena modelu ) na kanwie, a następnie w menu kontekstowym umieść kursor myszy na pozycji Wyniki oceny, a następnie wybierz pozycję Visualize (Wizualizacja).

    Zrzut ekranu przedstawiający menu kliknij prawym przyciskiem myszy element Ocena modelu, w którym przedstawiono wyróżnione wyniki oceny i elementy menu Wizualizuj.

  22. Wyniki oceny zostaną wyświetlone z wynikami przewidywanymi w porównaniu z rzeczywistymi wynikami. Używa to 30% oryginalnego zestawu danych, który został podzielony wcześniej do oceny modelu. Wyniki nie są świetne, najlepiej byłoby mieć największą liczbę w każdym wierszu jako wyróżniony element w kolumnach.

    Zrzut ekranu przedstawiający wykres wyniki eksperymentu na wykresie pól z wartościami procentowymi.

  23. Zamknij wyniki.

  24. Aby użyć nowo wytrenowanego modelu uczenia maszynowego, musisz udostępnić go jako usługę internetową. Aby to zrobić, kliknij element menu Konfigurowanie usługi sieci Web w menu w dolnej części strony, a następnie kliknij pozycję Predykcyjna usługa sieci Web.

    Zrzut ekranu przedstawiający menu Eksperyment z wyróżnionym elementem menu Konfigurowanie usługi internetowej.

  25. Zostanie utworzona nowa karta, a model trenowania zostanie scalony w celu utworzenia nowej usługi internetowej.

  26. W menu w dolnej części strony kliknij przycisk Zapisz, a następnie kliknij przycisk Uruchom. Stan zostanie zaktualizowany w prawym górnym rogu kanwy eksperymentu.

    Zrzut ekranu przedstawiający menu Eksperyment z wyróżnionym przyciskiem Menu Uruchom i elementem menu Uruchom.

  27. Po zakończeniu działania przycisk Wdróż usługę internetową pojawi się w dolnej części strony. Wszystko jest gotowe do wdrożenia usługi internetowej. Kliknij pozycję Wdróż usługę internetową (klasyczną) w menu w dolnej części strony.

    Zrzut ekranu przedstawiający menu Eksperyment z wyróżnionym elementem menu Deploy Web Service Classic (Wdróż usługę internetową) z przycisku menu Deploy Web Service (Wdróż usługę internetową).

    Przeglądarka może monitować o zezwolenie na wyskakujące okienko, które powinno być dozwolone, ale może być konieczne ponowne naciśnięcie klawisza Deploy Web Service (Wdróż usługę internetową ), jeśli strona wdrażania nie jest wyświetlana.

  28. Po utworzeniu eksperymentu nastąpi przekierowanie do strony pulpitu nawigacyjnego , na której będzie wyświetlany klucz interfejsu API . Skopiuj go do notatnika na chwilę. Będzie on potrzebny w kodzie bardzo szybko. Po zanotowania klucza interfejsu API kliknij przycisk REQUEST/RESPONSE w sekcji Domyślny punkt końcowy poniżej klucza.

    Zrzut ekranu przedstawiający okno programu Microsoft Azure Machine Learning Studio, w którym jest wyświetlany klucz A P I i wyróżniony link Odpowiedzi ukośnika żądania.

    Uwaga

    Po kliknięciu przycisku Testuj na tej stronie będzie można wprowadzić dane wejściowe i wyświetlić dane wyjściowe. Wprowadź dzień i godzinę. Pozostaw pusty wpis produktu . Następnie kliknij przycisk Potwierdź . Dane wyjściowe w dolnej części strony pokażą kod JSON reprezentujący prawdopodobieństwo wyboru każdego produktu.

  29. Zostanie otwarta nowa strona internetowa zawierająca instrukcje i kilka przykładów dotyczących struktury żądań wymaganych przez usługę Machine Learning Studio (klasyczną). Skopiuj identyfikator URI żądania wyświetlany na tej stronie do Notatnika.

    Zrzut ekranu przedstawiający stronę dokumentacji żądania A P I z wyróżnionym żądaniem U R I.

Utworzono system uczenia maszynowego, który zapewnia najbardziej prawdopodobny produkt, który będzie sprzedawany na podstawie historycznych danych zakupu, skorelowanych z godziną dnia i dnia roku.

Aby wywołać usługę internetową, potrzebny będzie adres URL punktu końcowego usługi i klucz interfejsu API dla usługi. Kliknij kartę Zużycie w górnym menu.

Na stronie Informacje o użyciu zostaną wyświetlone informacje potrzebne do wywołania usługi internetowej z kodu. Wykonaj kopię klucza podstawowego i adresu URL odpowiedzi na żądanie . Będą one potrzebne w następnym rozdziale.

Rozdział 5 . Konfigurowanie projektu aparatu Unity

Skonfiguruj i przetestuj Mixed Reality immersywny zestaw słuchawkowy.

Uwaga

Na potrzeby tego kursu nie będzie wymagane kontrolery ruchu. Jeśli potrzebujesz pomocy technicznej podczas konfigurowania immersyjnego zestawu słuchawkowego, kliknij tutaj.

  1. Otwórz środowisko Unity i utwórz nowy projekt aparatu Unity o nazwie MR_MachineLearning. Upewnij się, że typ projektu ma ustawioną wartość 3D.

  2. Po otwarciu aparatu Unity warto sprawdzić domyślny edytor skryptów ustawiony na program Visual Studio. Przejdź do pozycji Edytuj>preferencje , a następnie w nowym oknie przejdź do pozycji Narzędzia zewnętrzne. Zmień edytor skryptów zewnętrznych na Visual Studio 2017. Zamknij okno Preferencje .

  3. Następnie przejdź dopozycji Ustawienia kompilacjiplików> i przełącz platformę na platforma uniwersalna systemu Windows, klikając przycisk Przełącz platformę.

  4. Upewnij się również, że:

    1. Urządzenie docelowe jest ustawione na dowolne urządzenie.

      W przypadku Microsoft HoloLens ustaw wartość Urządzenie docelowe na HoloLens.

    2. Typ kompilacji jest ustawiony na D3D.

    3. Zestaw SDK jest ustawiony na wartość Najnowsza zainstalowana.

    4. Wersja programu Visual Studio jest ustawiona na najnowszą zainstalowaną.

    5. Kompilowanie i uruchamianie jest ustawione na komputer lokalny.

    6. Nie martw się o skonfigurowanie scen w tej chwili, ponieważ są one udostępniane później.

    7. Pozostałe ustawienia powinny być na razie pozostawione jako domyślne.

      Zrzut ekranu przedstawiający okno dialogowe Ustawienia kompilacji, w którym jest zaznaczony element menu platforma uniwersalna systemu Windows.

  5. W oknie Ustawienia kompilacji kliknij przycisk Ustawienia odtwarzacza , spowoduje to otwarcie powiązanego panelu w obszarze, w którym znajduje się inspektor .

  6. W tym panelu należy zweryfikować kilka ustawień:

    1. Na karcie Inne ustawienia :

      1. Wersja środowiska uruchomieniowegoskryptów powinna być eksperymentalna (odpowiednik platformy.NET 4.6)

      2. Zaplecze skryptów powinno mieć wartość .NET

      3. Poziom zgodności interfejsu API powinien mieć wartość .NET 4.6

        Zrzut ekranu przedstawiający kartę Inne ustawienia, która pokazuje ustawienia, które są włączone zgodnie z opisanymi krokami.

    2. Na karcie Ustawienia publikowania w obszarze Możliwości sprawdź:

      • InternetClient

        Zrzut ekranu przedstawiający kartę Ustawienia publikowania, która pokazuje, że funkcja klienta internetowego jest włączona poniżej opcji Możliwości.

    3. W dalszej części panelu w obszarze Ustawienia XR (znaleziono poniżej ustawień publikowania), zaznacz pole Virtual Reality Supported (Obsługiwana rzeczywistość wirtualna), upewnij się, że dodano zestaw SDK Windows Mixed Reality

      Zrzut ekranu przedstawiający kartę Ustawienia X R, która pokazuje, że włączono Windows Mixed Reality S D K poniżej s virtual reality S D K s.

  7. W obszarze Ustawienia kompilacji Projekty aparatu Unity C# nie są już wyszarzone; zaznacz pole wyboru obok tego.

  8. Zamknij okno Build Settings (Ustawienia kompilacji).

  9. Zapisz projekt (PLIK > ZAPISZ PROJEKT).

Rozdział 6 . Importowanie pakietu APARATU UNITY MLProducts

Na potrzeby tego kursu należy pobrać pakiet zasobów aparatu Unity o nazwie Azure-MR-307.unitypackage. Ten pakiet jest dostarczany wraz ze sceną ze wszystkimi obiektami w tym wstępnie utworzonymi, dzięki czemu można skupić się na uzyskaniu tego wszystkiego, co działa. Skrypt ShelfKeeper jest dostarczany, choć przechowuje tylko zmienne publiczne, na potrzeby struktury konfiguracji sceny. Należy wykonać wszystkie inne sekcje.

Aby zaimportować ten pakiet:

  1. Z pulpitem nawigacyjnym aparatu Unity przed tobą kliknij pozycję Assets (Zasoby ) w menu w górnej części ekranu, a następnie kliknij pozycję Import Package (Importuj pakiet), Custom Package (Pakiet niestandardowy).

    Zrzut ekranu przedstawiający pulpit nawigacyjny aparatu Unity przedstawiający wyróżnione elementy menu Importuj pakiet i Pakiet niestandardowy.

  2. Użyj selektora plików, aby wybrać pakiet Azure-MR-307.unitypackage i kliknij przycisk Otwórz.

  3. Zostanie wyświetlona lista składników tego zasobu. Potwierdź importowanie, klikając pozycję Importuj.

    Zrzut ekranu przedstawiający okno dialogowe Importowanie pakietu aparatu Unity, w którym jest importowany pakiet usługi Azure Machine Learning.

  4. Po zakończeniu importowania zauważysz, że niektóre nowe foldery zostały wyświetlone w panelu projektu aparatu Unity. Są to modele 3D i odpowiednie materiały, które są częścią wstępnie wykonanej sceny, nad którą będziesz pracować. W tym kursie napiszesz większość kodu.

    Zrzut ekranu przedstawiający panel projektu aparatu Unity, który pokazuje nowo zaimportowane foldery w folderze Assets.

  5. W folderze Panel projektu kliknij folder Sceny i kliknij dwukrotnie scenę wewnątrz (o nazwie MR_MachineLearningScene). Zostanie otwarta scena (zobacz obraz poniżej). Jeśli brakuje czerwonych diamentów, po prostu kliknij przycisk Gizmos , w prawym górnym rogu Panelu gier.

    Zrzut ekranu przedstawiający okno Scena aparatu Unity, które pokazuje wyróżniony element menu Gizmos w górnej nawigacji.

Rozdział 7 . Sprawdzanie bibliotek DLL w unity

Aby korzystać z bibliotek JSON (używanych do serializacji i deserializacji), biblioteka DLL Newtonsoft została zaimplementowana wraz z wprowadzonym pakietem. Biblioteka powinna mieć poprawną konfigurację, chociaż warto ją sprawdzić (szczególnie jeśli masz problemy z kodem, który nie działa).

W tym celu:

  • Kliknij prawym przyciskiem myszy plik Newtonsoft w folderze Plugins i przyjrzyj się panelowi Inspector (Inspektor). Upewnij się, że dowolna platforma jest zaznaczona. Przejdź do karty platformy UWP , a także upewnij się, że nie zaznaczaj procesu .

    Importowanie bibliotek DLL w środowisku Unity

Rozdział 8 — Tworzenie klasy ShelfKeeper

Klasa ShelfKeeper hostuje metody kontrolujące interfejs użytkownika i produkty, które zostały zduplikowane w scenie.

W ramach zaimportowanego pakietu otrzymasz tę klasę, choć jest niekompletna. Teraz nadszedł czas na ukończenie tej klasy:

  1. Kliknij dwukrotnie skrypt ShelfKeeper w folderze Scripts , aby otworzyć go za pomocą programu Visual Studio 2017.

  2. Zastąp cały kod istniejący w skrypcie następującym kodem, który ustawia godzinę i datę oraz metodę wyświetlania produktu.

    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. Pamiętaj, aby zapisać zmiany w programie Visual Studio przed powrotem do aparatu Unity.

  4. Po powrocie do edytora aparatu Unity sprawdź, czy klasa ShelfKeeper wygląda następująco:

    Zrzut ekranu przedstawiający klasę Półkakeeper, która pokazuje, że elementy docelowe odwołania są ustawione na siatkę tekstu daty i siatkę tekstu czasowego.

    Ważne

    Jeśli skrypt nie ma elementów docelowych odwołań (tj. Date (Text Mesh)), po prostu przeciągnij odpowiednie obiekty z panelu hierarchii do pól docelowych. Zapoznaj się z poniższymi tematami, aby uzyskać wyjaśnienie, jeśli jest to konieczne:

    1. Otwórz tablicę Spawn Point w skryscie składnika ShelfKeeper , klikając ją lewym przyciskiem myszy. Zostanie wyświetlona sekcja podrzędna o nazwie Size (Rozmiar), która wskazuje rozmiar tablicy. Wpisz 3 w polu tekstowym obok pozycji Rozmiar i naciśnij klawisz Enter, a poniżej zostaną utworzone trzy miejsca.

    2. W hierarchii rozwiń obiekt Czas wyświetlania (klikając lewą strzałkę obok niej). Następnie kliknij kamerę główną z poziomu hierarchii, aby inspektor wyświetlał jego informacje.

    3. Wybierz kamerę główną w panelu hierarchii. Przeciągnij obiekty Daty i godziny z Panelu hierarchii do przedziałów tekstowych daty i godziny w obszarze Inspektor głównego aparatu w składniku ShelfKeeper .

    4. Przeciągnij punkty spawn z panelu hierarchii (poniżej obiektu Półka) do elementów docelowych odwołań 3elementów poniżej tablicySpawn Point, jak pokazano na ilustracji.

      Zrzut ekranu przedstawiający panel hierarchii, który pokazuje, że elementy menu Data, Godzina i Trzy elementy menu Spawn Point znajdują się w klasie Półkakeeper.

Rozdział 9 — Tworzenie klasy ProductPrediction

Następną klasą, którą utworzysz, jest klasa ProductPrediction .

Ta klasa jest odpowiedzialna za:

  • Wykonywanie zapytań względem wystąpienia usługi Machine Learning Service , podając bieżącą datę i godzinę.

  • Deserializowanie odpowiedzi JSON na dane nadające się do użycia.

  • Interpretowanie danych przez pobranie 3 zalecanych produktów.

  • Wywoływanie metod klasy ShelfKeeper w celu wyświetlenia danych w scenie.

Aby utworzyć tę klasę:

  1. Przejdź do folderu Scripts (Skrypty ) w panelu projektu.

  2. Kliknij prawym przyciskiem myszy wewnątrz folderu Utwórz>skrypt języka C#. Wywołaj skrypt ProductPrediction.

  3. Kliknij dwukrotnie nowy skrypt ProductPrediction , aby otworzyć go za pomocą programu Visual Studio 2017.

  4. Jeśli zostanie wyświetlone okno dialogowe Wykryto modyfikację pliku , kliknij pozycję *Załaduj ponownie rozwiązanie.

  5. Dodaj następujące przestrzenie nazw na początku klasy 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. Wewnątrz klasy ProductPrediction wstaw następujące dwa obiekty składające się z wielu klas zagnieżdżonych. Te klasy służą do serializacji i deserializacji kodu JSON dla usługi Machine Learning Service.

        /// <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. Następnie dodaj następujące zmienne powyżej poprzedniego kodu (aby kod pokrewny JSON był u dołu skryptu, poniżej wszystkich innych kodu i poza tym):

        /// <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;
    

    Ważne

    Pamiętaj, aby wstawić klucz podstawowy i punkt końcowy żądania-odpowiedź z portalu usługi Machine Learning do zmiennych w tym miejscu. Na poniższych obrazach pokazano, skąd zostałby pobrany klucz i punkt końcowy.

    Zrzut ekranu przedstawiający program Microsoft Azure Machine Learning Studio z linkiem Żądanie odpowiedzi ukośnika poniżej strony Pomocy P I.

    Zrzut ekranu przedstawiający stronę dokumentacji żądania odpowiedzi A P I z wyróżnioną pozycją POST Request U R I ( Żądanie POST).

  8. Wstaw ten kod w metodzie Start(). Metoda Start() jest wywoływana, gdy klasa inicjuje:

        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. Poniżej przedstawiono metodę, która zbiera datę i godzinę z systemu Windows i konwertuje ją na format, którego nasz eksperyment uczenia maszynowego może użyć do porównania z danymi przechowywanymi w tabeli.

        /// <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. Możesz usunąć metodę Update(), ponieważ ta klasa nie będzie jej używać.

  11. Dodaj następującą metodę, która przekaże bieżącą datę i godzinę do punktu końcowego usługi Machine Learning i otrzyma odpowiedź w formacie 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. Dodaj następującą metodę, która jest odpowiedzialna za deserializowanie odpowiedzi JSON i przekazanie wyniku deserializacji do klasy ShelfKeeper . Ten wynik będzie nazwami trzech pozycji przewidywanych do sprzedaży najwięcej w bieżącej dacie i godzinie. Wstaw poniższy kod do klasy ProductPrediction poniżej poprzedniej metody.

        /// <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. Zapisz program Visual Studio i wróć do środowiska Unity.

  14. Przeciągnij skrypt klasy ProductPrediction z folderu Script na obiekt Main Camera .

  15. Zapisz scenę i projekt Zapisz>scenę/Plik zapisz>projekt.

Rozdział 10 — Tworzenie rozwiązania platformy UWP

Teraz nadszedł czas, aby skompilować projekt jako rozwiązanie platformy UWP, aby można było uruchomić go jako aplikację autonomiczną.

Aby skompilować:

  1. Zapisz bieżącą scenę, klikając pozycjęZapisz scenypliku>.

  2. Przejdź doustawień kompilacjipliku>

  3. Zaznacz pole wyboru o nazwie Projekty C# aparatu Unity (jest to ważne, ponieważ umożliwi edytowanie klas po zakończeniu kompilacji).

  4. Kliknij pozycję Dodaj otwarte sceny,

  5. Kliknij pozycję Kompiluj.

    Zrzut ekranu przedstawiający okno dialogowe Ustawienia kompilacji z wyróżnionym elementem menu platforma uniwersalna systemu Windows.

  6. Zostanie wyświetlony monit o wybranie folderu, w którym chcesz skompilować rozwiązanie.

  7. Utwórz folder BUILDS i w tym folderze utwórz inny folder z wybraną odpowiednią nazwą.

  8. Kliknij nowy folder, a następnie kliknij pozycję Wybierz folder, aby rozpocząć kompilację w tej lokalizacji.

    Zrzut ekranu przedstawiający okno Eksplorator plików z wyróżnionym folderem Kompilacje.

    Zrzut ekranu przedstawiający okno Eksplorator plików, w którym jest wyświetlana zawartość folderu Kompilacje i wyróżniony przycisk Wybierz folder.

  9. Po zakończeniu kompilowania środowiska Unity (może to trochę potrwać), zostanie otwarte okno Eksplorator plików w lokalizacji kompilacji (sprawdź pasek zadań, ponieważ może nie zawsze pojawiać się nad oknami, ale powiadomi o dodaniu nowego okna).

Rozdział 11 — Wdrażanie aplikacji

Aby wdrożyć aplikację:

  1. Przejdź do nowej kompilacji aparatu Unity (folderu Aplikacja ) i otwórz plik rozwiązania za pomocą programu Visual Studio.

  2. Po otwarciu programu Visual Studio należy przywrócić pakiety NuGet, które można wykonać, klikając prawym przyciskiem myszy rozwiązanie MachineLearningLab_Build z Eksplorator rozwiązań (znajdującego się po prawej stronie programu Visual Studio), a następnie klikając polecenie Przywróć pakiety NuGet:

    Zrzut ekranu przedstawiający okno programu Visual Studio z wyróżnionym elementem menu Przywróć pakiety Nu Get.

  3. W obszarze Konfiguracja rozwiązania wybierz pozycję Debuguj.

  4. W polu Platforma rozwiązania wybierz pozycję x86, Komputer lokalny.

    W przypadku Microsoft HoloLens można łatwiej ustawić tę opcję na Maszynę zdalną, aby nie być na tym komputerze. Należy jednak również wykonać następujące czynności:

    • Poznaj adres IP urządzenia HoloLens, który można znaleźć w obszarze Ustawienia > & Internet > Wi-Fi > Opcje zaawansowane; adres IPv4 jest adresem, którego należy użyć.
    • Upewnij się, że tryb dewelopera jest włączony; znajduje się w temacie Ustawienia > Aktualizuj & Zabezpieczenia > dla deweloperów.

    Zrzut ekranu przedstawiający menu programu Microsoft Visual Studio, które pokazuje, że maszyna lokalna jest wybrana na platformie rozwiązania.

  5. Przejdź do menu Kompilacja i kliknij pozycję Wdróż rozwiązanie , aby załadować aplikację bezpośrednio na komputer.

  6. Aplikacja powinna być teraz wyświetlana na liście zainstalowanych aplikacji gotowych do uruchomienia.

Po uruchomieniu aplikacji Mixed Reality zostanie wyświetlona ławka skonfigurowana w scenie aparatu Unity, a po zainicjowaniu dane skonfigurowane na platformie Azure zostaną pobrane. Dane zostaną zdeserializowane w aplikacji, a trzy najważniejsze wyniki bieżącej daty i godziny zostaną udostępnione wizualnie jako trzy modele na ławce.

Gotowa aplikacja usługi Machine Learning

Gratulacje, utworzono aplikację rzeczywistości mieszanej, która wykorzystuje usługę Azure Machine Learning do prognozowania danych i wyświetlania jej na scenie.

Zrzut ekranu przedstawiający okno programu Microsoft Visual Studio, które pokazuje półkę z trzema obiektami i kartą z tekstem 15 o' clock 23 lutego.

Ćwiczenie

Ćwiczenie 1

Poeksperymentuj z kolejnością sortowania aplikacji i masz trzy dolne przewidywania wyświetlane na półce, ponieważ te dane byłyby potencjalnie przydatne.

Ćwiczenie 2

Użycie tabel platformy Azure umożliwia wypełnienie nowej tabeli informacjami o pogodzie i utworzenie nowego eksperymentu przy użyciu danych.