Udostępnij za pośrednictwem


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


Uwaga

Samouczki akademii rzeczywistości mieszanej zostały zaprojektowane z myślą o urządzeniach HoloLens (1. generacji) i zestawach słuchawkowych immersyjnych rzeczywistości mieszanej. W związku z tym uważamy, że ważne jest pozostawienie tych samouczków na miejscu dla deweloperów, którzy nadal szukają wskazówek dotyczących opracowywania tych urządzeń. Te samouczki nie zostaną zaktualizowane przy użyciu najnowszych zestawów narzędzi ani interakcji używanych dla urządzenia 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ć urządzenia 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 usługi Machine Learning (ML) 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, przygotowywania i wizualizacji. Na podstawie tych składników można utworzyć eksperyment analizy predykcyjnej, wykonać iterowanie i użyć go do wytrenowania modelu. Po zakończeniu trenowania możesz sprawić, że model działa w chmurze platformy Azure, aby następnie ocenić nowe dane. Aby uzyskać więcej informacji, odwiedź stronę usługi Azure Machine Learning Studio (wersja klasyczna).

Po ukończeniu tego kursu będziesz mieć aplikację immersywnego zestawu słuchawkowego 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 (klasycznym) 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 najbardziej popularne elementy sprzedaży.

W aplikacji należy do Ciebie, jak zintegrować wyniki z projektem. Ten kurs został zaprojektowany, aby nauczyć cię, jak zintegrować usługę platformy Azure z projektem aparatu Unity. Twoim zadaniem jest wykorzystanie wiedzy uzyskanych z tego kursu w celu ulepszenia aplikacji rzeczywistości mieszanej.

Ten kurs jest samodzielnym samouczkiem, który nie obejmuje bezpośrednio żadnych innych laboratoriów rzeczywistości mieszanej.

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 zestawach nagłownych immersywnych windows Mixed Reality (VR), możesz również zastosować to, czego nauczysz się w tym kursie do urządzenia Microsoft HoloLens. Zgodnie 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ć 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 bezpłatnie korzystać z najnowszego oprogramowania, jak wymieniono w artykule dotyczącym instalacji narzędzi, choć nie należy zakładać, że informacje zawarte w tym kursie doskonale pasują do tego, co znajdziesz w nowszym oprogramowaniu niż wymienione poniżej.

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

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 — Konfiguracja 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 Portalu Azure.

    Uwaga

    Jeśli nie masz jeszcze konta platformy Azure, musisz je utworzyć. Jeśli obserwujesz ten samouczek w sytuacji w klasie lub laboratorium, poproś instruktora lub jednego z opiekunów o pomoc przy konfigurowaniu nowego konta.

  2. Po zalogowaniu się 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 z dostępem do odczytu (RA-GRS).

    6. Pozostaw opcję 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ę dla grupy zasobów (jeśli tworzysz nową grupę zasobów). Lokalizacja najlepiej znajdować się w regionie, w którym aplikacja będzie uruchamiana. 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 zakończyło się pomyślnie, co 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 i wyszukaj pozycję Obszar roboczy usługi Machine Learning Studio, naciśnij 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ę dla grupy zasobów (jeśli tworzysz nową grupę zasobów). Lokalizacja najlepiej znajdować się w regionie, w którym aplikacja będzie uruchamiana. 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ą Obszar roboczy z menu rozwijanego.

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

    8. W sekcji Warstwa cenowa planu usługi internetowej wybierz wybraną warstwę cenową. Warstwa testowania programowania o nazwie DEVTEST Standard powinna być dostępna bezpłatnie.

    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ć na utworzenie usługi. 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 Dodatkowe linki 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.

Na potrzeby tego kursu udostępniono przykładową tabelę o nazwie ProductsTableCSV i można je pobrać tutaj.

Ważne

Powyższy plik .zip zawiera pliki ProductsTableCSV i unitypackage, które będą potrzebne 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 o 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ę produktem było 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. W tym celu kliknij przycisk + Nowy w lewym dolnym rogu ekranu.

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

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

    Zrzut ekranu przedstawiający wyróżnione elementy menu Zestaw danych i Z pliku lokalnego w oknie dialogowym Nowy.

  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 dla użytkownika, aby znaleźć i wybrać dane do przekazania.

    2. Po zaznaczeniu 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 go dodać automatycznie).

    4. Korzystając 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

Przed utworzeniem systemu uczenia maszynowego należy utworzyć eksperyment, aby zweryfikować teorię danych. W wynikach 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ę Eksperymentuj>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. Z panelu po lewej stronie rozwiń pozycję Zapisane zestawy danych Moje zestawy> danych i przeciągnij element ProductsTableCSV na kanwę eksperymentu.

    Zrzut ekranu przedstawiający okno Eksperyment z rozwiniętym folderem Moje zestawy danych w menu i tabelą Produktów C S V na kanwie eksperymentu.

  4. W panelu po lewej stronie rozwiń pozycję Przykład przekształcania>danych i Podziel. 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 użyjesz do trenowania algorytmu uczenia maszynowego. Druga część zostanie użyta do oceny dokładności wygenerowanego algorytmu.

    Zrzut ekranu przedstawiający okno Eksperyment z elementami Partition (Partycja) i Sample (Przykład) i Split Data (Podział danych) w menu z podziałem danych zastosowanymi do kanwy.

  5. W panelu po prawej stronie (podczas wybierania elementu Podziel dane na kanwie) zmodyfikuj pozycję 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 Losowe dzielenie pozostaje zaznaczone.

    Zrzut ekranu przedstawiający panel Właściwości z wypełnionym polem wyboru Podział losowy, a pole Ułamek wierszy został ustawiony 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 (danych) do danych wejściowych Split Data (Podział danych).

    Zrzut ekranu przedstawiający kanwę eksperymentu przedstawiającą połączenie narysowane między tabelą Products Table C S V dot c s v i podziałem danych.

  7. W panelu Eksperymenty po lewej stronie rozwiń węzeł Uczenie usługi Machine Learning>. Przeciągnij element Train Model (Trenowanie modelu) do obszaru roboczego Experiment (Eksperyment). Kanwa powinna wyglądać tak samo jak poniżej.

    Zrzut ekranu przedstawiający kanwę eksperymentu przedstawiającą połączenie narysowane między tabelą Products Table C S V dot c s v i podziałem danych z poniższym modelem trenowania.

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

    Zrzut ekranu przedstawiający kanwę eksperymentu przedstawiającą połączenie narysowane między tabelą Products Table C S V dot c s v, Podział danych 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 product , a następnie naciśnij Enter, produkt zostanie ustawiony jako kolumna do trenowania przewidywań. Następnie 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. Zamierzasz wytrenować algorytm regresji logistycznej w wielu klasach, aby przewidzieć najbardziej sprzedany produkt na podstawie godziny dnia i daty. Ten dokument wykracza poza zakres tego dokumentu, aby wyjaśnić szczegóły różnych algorytmów dostarczonych przez usługę Azure Machine Learning Studio, jednak więcej informacji można znaleźć w ściągawce algorytmu uczenia maszynowego

  12. W panelu elementy eksperymentu po lewej stronie rozwiń węzeł Machine Learning>Initialize Model Classification (Inicjowanie klasyfikacji modeli>) i przeciągnij element Multiclass Logistics Regression (Regresja logistyczna) na kanwę 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 przedstawiającą trenowanie modelu połączonego z wieloklasową regresją logistyczną i podziałem danych.

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

  15. Połącz dane wyjściowe z dolnej części modułu Train Model (Trenowanie modelu) z lewym górnymi danymi wejściowymi score model (Generowanie wyników dla modelu).

  16. Połącz prawe dane wyjściowe z obszaru Split Data ( Podział danych) z prawym górnym wejściem elementu Score Model ( Generowanie wyników dla modelu ).

    Zrzut ekranu przedstawiający kanwę eksperymentu przedstawiającą model oceny połączony z trenowaniem modelu i podziałem danych.

  17. Na liście elementów Experiment (Eksperyment) w panelu po lewej stronie rozwiń węzeł Machine Learning Evaluate (Ocena uczenia>maszynowego) i przeciągnij element Evaluate Model (Ocena modelu) na kanwę.

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

    Zrzut ekranu przedstawiający kanwę eksperymentu przedstawiającą model oceny połączony z modelem Score Model (Generowanie wyników dla 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 zobaczyć 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ść wskaźnik myszy na obszarze Wyniki oceny, a następnie wybierz pozycję Visualize (Wizualizacja).

    Zrzut ekranu przedstawiający menu kliknij prawym przyciskiem myszy pozycję Ocena elementu modelu, w którym są wyświetlane wyróżnione wyniki oceny i elementy menu Wizualizacja.

  22. Wyniki oceny zostaną wyświetlone z przewidywanymi wynikami w porównaniu z rzeczywistymi wynikami. W tym celu użyto 30% oryginalnego zestawu danych, który został wcześniej podzielony na potrzeby oceny modelu. Wyniki nie są świetne, najlepiej, aby w każdym wierszu był wyróżniony element w kolumnach.

    Zrzut ekranu przedstawiający wykres Wyniki, który pokazuje wyniki eksperymentu na wykresie pól z wartościami procentowymi.

  23. Zamknij wyniki.

  24. Aby korzystać z nowo wytrenowanego modelu uczenia maszynowego, musisz udostępnić go jako usługę internetową. W tym celu kliknij element menu Skonfiguruj usługę internetową 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 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 w dolnej części strony zostanie wyświetlony przycisk Wdróż usługę internetową. 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 Wdróż usługę internetową w menu Wdróż usługę internetową.

    W przeglądarce może pojawić się monit o zezwolenie na wyskakujące okienko, które powinno być dozwolone, ale może być konieczne ponowne naciśnięcie przycisku 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 zanotowanie klucza interfejsu API kliknij przycisk REQUEST/RESPONSE w sekcji Domyślny punkt końcowy poniżej klucza.

    Zrzut ekranu przedstawiający okno usługi Microsoft Azure Machine Learning Studio, w którym jest wyświetlany klucz A P I i wyróżniony link Żądanie odpowiedzi ukośnika.

    Uwaga

    Jeśli klikniesz pozycję 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 będą pokazywać dane JSON reprezentujące prawdopodobieństwo wyboru każdego produktu.

  29. Zostanie otwarta nowa strona internetowa zawierająca instrukcje i kilka przykładów dotyczących struktury żądania wymaganej 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 odpowiedzi A I z wyróżnioną pozycją Żądanie U R I.

Masz teraz utworzony system uczenia maszynowego, który zapewnia najbardziej prawdopodobny produkt do sprzedaży na podstawie historycznych danych zakupów skorelowanych z godziną dnia i dnia roku.

Aby wywołać usługę internetową, musisz mieć adres URL punktu końcowego usługi i klucz interfejsu API dla usługi. Kliknij kartę Uż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 immersywny zestaw słuchawkowy rzeczywistości mieszanej.

Uwaga

Na potrzeby tego kursu nie będzie wymagane kontrolery ruchu. Jeśli potrzebujesz obsługi 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 jest ustawiony na wartość 3D.

  2. Po otwarciu aparatu Unity warto sprawdzić, czy domyślny edytor skryptów jest 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ź do pozycji Ustawienia kompilacji pliku>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 urządzenia 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. Dla wersji programu Visual Studio jest ustawiona wartość Najnowsza zainstalowana.

    5. Polecenie Build and Run (Kompilacja i uruchamianie ) ma wartość Local Machine (Maszyna lokalna).

    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 uruchomieniowego skryptó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ługiwane w rzeczywistości wirtualnej), upewnij się, że dodano zestaw WINDOWS Mixed Reality SDK

      Zrzut ekranu przedstawiający kartę Ustawienia języka X R, która pokazuje, że jest włączona funkcja Windows Mixed Reality S D K poniżej S D K s wirtualnej rzeczywistości.

  7. Po powrocie do ustawień kompilacji Projekty języka C# środowiska Unity 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 zawiera scenę ze wszystkimi obiektami w tym wstępnie skompilowanymi, dzięki czemu można skupić się na tym, aby wszystko działało. 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. Po wybraniu pulpitu nawigacyjnego aparatu Unity 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 , a następnie 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, które pokazuje 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 przedstawiający nowo zaimportowane foldery w folderze Assets.

  5. W folderze Project Panel 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 sceny aparatu Unity z wyróżnionym elementem menu Gizmos w górnej nawigacji.

Rozdział 7 . Sprawdzanie bibliotek DLL w a 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).

Aby to zrobić:

  • Kliknij lewym przyciskiem myszy plik Newtonsoft w folderze Plugins i przyjrzyj się panelowi Inspector (Inspektor). Upewnij się, że opcja Dowolna platforma jest zaznaczona. Przejdź do karty uwP, a także upewnij się, że nie przetwarzaj jest zaznaczona.

    Importowanie bibliotek DLL w a środowisku Unity

Rozdział 8 . Tworzenie klasy ShelfKeeper

Klasa ShelfKeeper hostuje metody kontrolujące interfejs użytkownika i produkty zduplikowane w scenie.

W ramach zaimportowanego pakietu otrzymasz tę klasę, choć jest niekompletna. 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ę i ma 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. Przed powrotem do aparatu Unity pamiętaj o zapisaniu zmian w programie Visual Studio.

  4. Wróć 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łania (tj. Date (Text Mesh)), po prostu przeciągnij odpowiednie obiekty z Panelu hierarchii do pól docelowych. Zobacz poniżej, 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 Enter, a trzy miejsca zostaną utworzone poniżej.

    2. W hierarchii rozwiń obiekt Czas wyświetlania (klikając strzałkę obok niej po lewej stronie). Następnie kliknij kamerę główną z 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 miejsc tekstowych daty i godziny w inspektorze głównego aparatu w składniku ShelfKeeper.

    4. Przeciągnij punkty spawn z panelu hierarchii (pod obiektem Półka ) do elementów docelowych odwołań 3 elementów poniżej tablicy Spawn 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 użyteczne.

  • Interpretowanie danych, pobieranie 3 zalecanych produktów.

  • Wywołanie 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ł w dolnej części skryptu, poniżej wszystkich innych kodów 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 odpowiedzi na żądanie 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 usługę Microsoft Azure Machine Learning Studio z linkiem Żądania odpowiedzi ukośnika poniżej strony pomocy P I.

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

  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 usługi Machine Learning 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 do obiektu Main Camera .

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

Rozdział 10 — Tworzenie rozwiązania platformy UNIWERSALNEJ systemu Windows

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

Aby skompilować:

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

  2. Przejdź do ustawień kompilacji pliku>

  3. Zaznacz pole wyboru o nazwie Projekty języka 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 zająć trochę czasu), 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 App ) 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 urządzenia Microsoft HoloLens można łatwiej ustawić tę opcję na maszynę zdalną, aby nie być naciągniętym na komputer. 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 > Sieć i Internet > Wi-Fi > Advanced Options. Adres IPv4 jest adresem, którego należy użyć.
    • Upewnij się, że tryb dewelopera jest włączony; znajduje się w obszarze Ustawienia > Aktualizacja i zabezpieczenia > dla deweloperów.

    Zrzut ekranu przedstawiający menu programu Microsoft Visual Studio, które pokazuje, że maszyna lokalna jest wybrana w polu Platforma 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 rzeczywistości mieszanej zobaczysz ławę, która została skonfigurowana w scenie aparatu Unity, a po zainicjowaniu dane skonfigurowane na platformie Azure zostaną pobrane. Dane zostaną zdeserializowane w aplikacji, a trzy najlepsze wyniki bieżącej daty i godziny zostaną udostępnione wizualnie, ponieważ trzy modele na ławce.

Zakończona aplikacja usługi Machine Learning

Gratulacje, utworzono aplikację rzeczywistości mieszanej, która wykorzystuje usługę Azure Machine Learning do przewidywania 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 zegarze 23 lutego.

Ćwiczenie

Ćwiczenie 1

Poeksperymentuj z kolejnością sortowania aplikacji i masz na półce trzy dolne przewidywania, ponieważ te dane mogą być również 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.