UiPath AI Centerに自作したAIモデルをアップロードする方法（実際に使ってみる編）

:::note info
本記事は[UiPath AI Centerに自作したAIモデルをアップロードする方法](https://qiita.com/tacman/items/c63f23c9462ad6426e4a)の続きです。
上記の記事でAIモデルをアップロードしたテナントに接続したUiPath Studio端末で作業してください。
:::

前回の記事では、UiPath AI Center上にAIモデルをアップロード・デプロイするところまでを実施しました。

今回はUiPath Studioを使ってアップロードしたAIモデルを実際に使ってみます。

#### プロジェクト作成
UiPath Studioを起動しプロジェクトを作成します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/27eb39bf-93c9-2b92-b206-02db4e2719cc.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/939360fe-2ed9-8522-f4eb-962558376741.png)

#### ML Services アクティビティ パッケージのインストール
StudioからAI CenterのAIモデルを呼び出すには[ML スキル](https://docs.uipath.com/ja/activities/other/latest/user-guide/ml-skills) アクティビティを使います。このアクティビティは[ML Services アクティビティ パッケージ](https://docs.uipath.com/ja/activities/other/latest/user-guide/about-the-ml-services-activities-pack)に含まれているので、このアクティビティパッケージをプロジェクトにインストールします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/3e6987b2-bb2c-b41f-0ff9-2cd8179b94c2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/19e95434-fed6-fe8d-7b0e-a461f4409aa9.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/516b89eb-ec32-9056-3911-cd6889839b67.png)

#### プロジェクトフォルダーに必要なファイルを格納
前回Colaboratoryでダウンロードした以下のファイルをプロジェクトフォルダーに格納します。

* titanic_test_input.csv
* titanic_test_answer.csv

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/48406c2d-1089-a4e7-0466-1cb7e7752f50.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/33d965bc-2e36-0bd2-6962-f5ace79b6bc8.png)

#### MLスキル の利用
それでは、実際にStudioからAIモデルを呼び出してみましょう。
アクティビティパネルからMLスキルを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/e16f5bee-96dc-ad52-710b-5af5e041ab04.png)

MLスキル の上部にあるドロップダウンリストから、先ほどアップロード・デプロイしたMLスキルを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/c8c55e01-1a13-7cf6-84fd-016fb890aa83.png)

MLスキルが正しく呼び出せるか、スキルをテストを実行してみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/bf97b3e7-f3f1-6a7b-e852-7e12988bcbdb.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/d03ea47d-e766-f62d-d4d1-bca63d369704.png)

おお！問題なく呼び出せていますね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/7321253e-cf78-75f3-2f9d-667003041a46.png)

#### 戻り値をcsvファイルに書き込み
MLスキルの残りのオプションも入力しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/5c4e9812-da40-f43d-6911-a7e4f2cbb257.png)

後続の処理でレスポンスを扱いやすくするため代入で`String[]`型に変換しておきます。（ここでの変数名は`レスポンス配列`）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/a4f67656-9177-a6a9-9405-fb20117a61a9.png)
```vb:右辺の中身
レスポンス.Replace("[", "").Replace("]", "").Split(",")
```

上記のレスポンス配列を書き込むためのデータテーブル(`出力用データテーブル`)を CSVを読み込み アクティビティで作成しておきます。（titanic_test_answer.csvを利用）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/27228cd0-e237-d6c4-f095-a9da8230c3f3.png)

上記で作成した`出力用データテーブル`に`レスポンス配列`を書き込むための`Prediction`列を追加します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/5d4ca37b-b95a-f874-d5c8-6d28a53daccc.png)

繰り返し（データテーブルの各行）と代入を使い、`出力用データテーブル`の`Prediction`列に`レスポンス配列`を書き込んでいきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/e458b129-1e6e-7e9e-6512-87fdb428c4bc.png)
```vb:代入 の中身
CurrentRow("Prediction") = レスポンス配列(インデックス)
```

:::note info
繰り返し（データテーブルの各行） のプロパティ`現在のインデックス`に`Int32`型の変数を設定してください。（ここの変数名は`インデックス`）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/9421d42d-5c55-ab06-cd26-6e8cb198f1e8.png)
:::

最後に CSVに書き込み で`出力用データテーブル`をtitanic_test_output.csvに書き込みます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/4b375e8d-96e8-eedd-60da-a29ec218ee9c.png)

処理は以上で完了です。全体の流れは以下をご確認ください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/8e4be4a1-bfe7-33d3-38b4-b0b1074a4b76.png)

#### 実行と確認
それではプロジェクトを実行してみましょう。

プロジェクトフォルダーにCSVが出力されていますね。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/72c2c818-b2db-b086-0f57-db3a0124d724.png)

ちゃんと`Prediction`列が書き込まれています！よかった！一行目から間違っているのが気になりますが。。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/913a5efc-390d-3ca0-baa3-42b4515dbd45.png)

ちゃんと予測できているのか正解率を見てみましょう。

:::note info
モデルのパフォーマンスを測る場合、本来であればニーズに合わせて[適合率(precision)や再現率(recall)](https://en.wikipedia.org/wiki/Precision_and_recall)などの指標を見る必要がありますが、今回は簡易的に確認するため正解率を利用しています。
:::

ちゃちゃっとExcelで計算しちゃいます。
P列にEXACT関数で`Survived`と`Prediction`が一致しているかを確認しましょう。(全レコード分コピーしておきます。)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/5f95ef44-c86b-79ea-e6d3-e724a64b3d3e.png)
```text:
=EXACT(C2,N2)
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/9dd81709-3a69-908e-b8c4-385c4c06d1b5.png)

全レコードに対しどれぐらい正解しているか、COUNTIF関数とCOUNTA関数を使って確認してみましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/f5f8c0ea-8c56-df4e-5e4f-d55d059b908f.png)
```text:
=COUNTIF(P2:P296,TRUE)/COUNTA(P2:P296)
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3472342/ec922cec-b66a-77bb-8f6e-32d2373d02a7.png)

0.8という結果が出ました！（Kaggleのチュートリアルから持ってきたモデルなのでこんなものでしょう。）
とりあえず、無事にアップロードしたAIモデルが使えているようです。

お疲れ様でした。

## おわりに
今回の作業はいかがでしたでしょうか？UiPath AI CenterへのAIモデルのアップロードは意外と簡単ではなかったでしょうか？

この記事を参考に皆様が自社に貯めているAIモデルをRPAにも活用いただけるととてもうれしく思います。

ぜひ自社でもUiPath AI Centerを活用したい、という方がいらっしゃいましたら是非UiPathまでご連絡ください！

Happy AI Life:airplane: