MRが楽しい

MRやVRについて学習したことを書き残す

公式チュートリアル「MR and Azure 302b 7章」を試してみる

本日はチュートリアルの実施枠です。
Academyの「MR and Azure 302b: Custom vision」の実施内容をまとめます。
docs.microsoft.com
前回記事の続きです。
bluebirdofoz.hatenablog.com
今回は「Chapter 7」です。

Chapter 7:Create the CustomVisionObjects class

2番目に作成するスクリプトは CustomVisionObjects クラスです。
他のクラスが Custom Vision Service の呼び出しをシリアライズおよびデシリアライズするために使用する多くのオブジェクトが含まれています。

1.Script フォルダを開きます。
フォルダ内で右クリックして、Creapte -> C# Script を選択します。
Script の名称は CustomVisionObjects に設定します。
f:id:bluebirdofoz:20180824094052j:plain

2.新しいスクリプトをダブルクリックしてVisual Studioで開きます。
3-5.以下の通り、スクリプトを編集します。
・CustomVisionObjects.cs

// 名前空間の追加
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;

public class CustomVisionObjects : MonoBehaviour {
    // The objects contained in this script represent the deserialized version
    // of the objects used by this application 
    // このスクリプトに含まれるオブジェクトは、
    // このアプリケーションで使用されるオブジェクトの非直列化バージョンを表します

    /// <summary>
    /// Web request object for image data
    /// イメージデータのWebリクエストオブジェクト
    /// </summary>
    class MultipartObject : IMultipartFormSection
    {
        public string sectionName { get; set; }

        public byte[] sectionData { get; set; }

        public string fileName { get; set; }

        public string contentType { get; set; }
    }

    /// <summary>
    /// JSON of all Tags existing within the project
    /// contains the list of Tags
    /// プロジェクト内に存在するすべてのタグのJSON
    /// タグのリストを含む
    /// </summary> 
    public class Tags_RootObject
    {
        public List<TagOfProject> Tags { get; set; }
        public int TotalTaggedImages { get; set; }
        public int TotalUntaggedImages { get; set; }
    }

    public class TagOfProject
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public string Description { get; set; }
        public int ImageCount { get; set; }
    }

    /// <summary>
    /// JSON of Tag to associate to an image
    /// Contains a list of hosting the tags,
    /// since multiple tags can be associated with one image
    /// イメージに関連付けるタグのJSON
    /// タグをホストするリスト
    /// 1つの画像に複数のタグを関連付けることができます
    /// </summary> 
    public class Tag_RootObject
    {
        public List<Tag> Tags { get; set; }
    }

    public class Tag
    {
        public string ImageId { get; set; }
        public string TagId { get; set; }
    }

    /// <summary>
    /// JSON of Images submitted
    /// Contains objects that host detailed information about one or more images
    /// 送信された画像のJSON
    /// 1つまたは複数のイメージに関する詳細情報をホストするオブジェクトを含みます
    /// </summary> 
    public class ImageRootObject
    {
        public bool IsBatchSuccessful { get; set; }
        public List<SubmittedImage> Images { get; set; }
    }

    public class SubmittedImage
    {
        public string SourceUrl { get; set; }
        public string Status { get; set; }
        public ImageObject Image { get; set; }
    }

    public class ImageObject
    {
        public string Id { get; set; }
        public DateTime Created { get; set; }
        public int Width { get; set; }
        public int Height { get; set; }
        public string ImageUri { get; set; }
        public string ThumbnailUri { get; set; }
    }

    /// <summary>
    /// JSON of Service Iteration
    /// </summary> 
    public class Iteration
    {
        public string Id { get; set; }
        public string Name { get; set; }
        public bool IsDefault { get; set; }
        public string Status { get; set; }
        public string Created { get; set; }
        public string LastModified { get; set; }
        public string TrainedAt { get; set; }
        public string ProjectId { get; set; }
        public bool Exportable { get; set; }
        public string DomainId { get; set; }
    }

    /// <summary>
    /// Predictions received by the Service after submitting an image for analysis
    ///  分析のために画像を提出した後にサービスが受け取った予測結果
    /// </summary> 
    [Serializable]
    public class AnalysisObject
    {
        public List<Prediction> Predictions { get; set; }
    }

    [Serializable]
    public class Prediction
    {
        public string TagName { get; set; }
        public double Probability { get; set; }
    }
}

f:id:bluebirdofoz:20180824094103j:plain

6.Visual Studio で変更を保存して Unity に戻ります。
f:id:bluebirdofoz:20180824094114j:plain

Chapter 7 はここまでです。
次回は Chapter 8 を実施します。
bluebirdofoz.hatenablog.com