ADFIで路面検査AIを作成する

# はじめに
本記事では、[ノーコードAI開発プラットフォーム ADFI（アドファイ）](https://adfi.jp/ja/ai/)を使って路面検査AIを作成する手順を解説します。
この手順では、学習データと評価データに、ADFIのWebサイトで公開しているサンプル用データセットを利用しています。

実際に商用利用する検査AIを開発する場合は、実際に検査する対象を撮影した画像を学習データ・評価データとしてご使用ください。

## 路面検査AI
道路の表面などのひび割れや破損を検知するAIです。
なお、道路の表面に限らず、画像データしだいで様々な対象の表面を検査するAI（例：建造物の壁面検査AIなど）を作成することもできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117462/35b184d1-3e3a-570c-b191-d9b01f38d7c2.png)

# 路面検査AIの作成手順
## 1. プロジェクトの作成
 - 「ADFI画像認識」のプロジェクトを作成してください。初めてADFIを利用する場合は、[こちらの手順](https://qiita.com/karakurai_rena/items/5f3c5ee32fb58854b9a7)を参考にしてアカウントとプロジェクトを作成してください。

## 2. AIモデルの作成
 - プロジェクト詳細画面で、「AIモデル一覧」の右側の「AIモデル新規作成」ボタンを押してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117462/098bb29e-0bf0-3f1e-089b-2358d4ad7564.png)

 - 作成したいAIモデル名を入力して「作成」を押してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117462/6df8db46-82ad-4cd4-5ab2-d481f551bad9.png)

## 3. 学習データ・評価データの用意
 - 左メニュー「サンプルデータセット」を押して、AIモデルの学習・評価に使う画像をダウンロードします。（自分で学習・評価に使う画像を持っている場合は、ダウンロード不要です。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117462/6419fd59-8751-31b9-ba97-4dd1b0eb063e.png)

 - [ADFI公式サイトのダウンロードページ](https://adfi.jp/ja/download/)から路面検査用のサンプルデータセット「Road inspection」をダウンロードします。ダウンロードしたら圧縮ファイルを展開してください。

## 4. カテゴリーの作成
AIで識別したいカテゴリーを作成します。

### 4-1. 「問題なし」カテゴリー
 - 「AIモデル作成：ステップ1/2」の画面で「新しいカテゴリーを作成」ボタンを押してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117462/8eb4d2fe-3bac-12d6-a849-5a0959dcd407.png)

 - 作成したいカテゴリー名を入力して「作成」を押してください。ここでは、１つ目のカテゴリーとして、問題のない路面の画像を識別するためのカテゴリー「問題なし」を作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117462/6c8f3008-5241-580c-d995-86b69fe4bc5f.png)

 - カテゴリー詳細情報画面では、AIモデルの学習に使用する「学習画像」と、作成したAIモデルの精度測定に使用する「評価画像」を登録します。
 - まずは学習画像を登録します。「学習画像アップロード」ボタンを押してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117462/dd3cd245-a0bf-3bb0-cf30-db51f04d227c.png)

 - アップロードしたい学習画像を選択して、「開く」ボタンを押してください。画像を複数選択して同時にアップロードすることができます。サンプルデータセット「Road inspection」の場合は、「train」⇒「normal」フォルダ内の画像をアップロードしてください。
   - Windowsの場合、「Ctrl」ボタン+「A」ボタンでフォルダ内の画像全部を一括で選択できます。
   - 学習画像数を増やすことでAIの精度が向上する可能性がありますが、学習にかかる時間が長くなります。学習画像数の目安としては、１つのカテゴリーにつき20~50枚です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117462/2d451fca-fa0d-4839-4634-30b425eededa.png)

 - 学習画像のアップロード完了後、カテゴリー詳細情報画面の下部に登録された画像が表示されます。
 - 次に、評価画像を登録します。「評価画像アップロード」ボタンを押してください。
 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117462/04e9048e-4174-3a26-54cd-3d2150d9df7f.png)

 - アップロードしたい評価画像を選択して、「開く」ボタンを押してください。画像を複数選択して同時にアップロードすることができます。サンプルデータセット「Road inspection」の場合は、「test」⇒「normal」フォルダ内の画像をアップロードしてください。
   - Windowsの場合、「Ctrl」ボタン+「A」ボタンでフォルダ内の画像全部を一括で選択できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117462/91fd8f78-7f49-b3d8-c800-bea243cb1bba.png)

 - 評価画像のアップロード完了後、カテゴリー詳細情報画面の下部に、登録された画像が表示されます。これで１つ目のカテゴリーをできました。
 - 右上の「閉じる」ボタン、または、「カテゴリー編集画面を閉じる」ボタンを押してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117462/b941d9a6-bfd9-16ea-d7af-73d9fb9e34c7.png)

### 4-2. 「ひび割れ」カテゴリー
 - 「AIモデル作成：ステップ1/2」の画面で「新しいカテゴリーを作成」ボタンを押してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117462/82d12903-44d8-01aa-e0b1-f8bce25bf68c.png)

 - 作成したいカテゴリー名を入力して「作成」を押してください。ここでは、２つ目のカテゴリーとして、ひび割れた路面の画像を識別するためのカテゴリー「ひび割れ」を作成します。
 - カテゴリー詳細情報画面で学習画像を登録します。「学習画像アップロード」ボタンを押してください。
 - アップロードしたい学習画像を選択して、「開く」ボタンを押してください。サンプルデータセット「Road inspection」の場合は、「train」⇒「crack」フォルダ内の画像をアップロードしてください。
   - Windowsの場合、「Ctrl」ボタン+「A」ボタンでフォルダ内の画像全部を一括で選択できます。
   - 学習画像数を増やすことでAIの精度が向上する可能性がありますが、学習にかかる時間が長くなります。学習画像数の目安としては、１つのカテゴリーにつき20~50枚です。
 - 次に、評価画像を登録します。「評価画像アップロード」ボタンを押してください。
 - アップロードしたい評価画像を選択して、「開く」ボタンを押してください。画像を複数選択して同時にアップロードすることができます。サンプルデータセット「Road inspection」の場合は、「test」⇒「crack」フォルダ内の画像をアップロードしてください。
   - Windowsの場合、「Ctrl」ボタン+「A」ボタンでフォルダ内の画像全部を一括で選択できます。
 - 評価画像のアップロード完了後、カテゴリー詳細情報画面の下部に、登録された画像が表示されます。これで２つ目のカテゴリーをできました。
 - 右上の「閉じる」ボタン、または、「カテゴリー編集画面を閉じる」ボタンを押してください。

## 5. AIモデルの学習
 - AIで識別したい全てのカテゴリーを作成したら、「次のステップに進む」を押してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117462/6f30bc8c-0ffa-aa4b-c1be-d2664813d205.png)

 - 学習設定情報を確認し、問題なければ、「学習開始」ボタンを押して、AIの学習を開始します。
   - 画像中の対象物の上下・左右が固定されていない場合は「データ拡張（回転）」を「あり」に指定してください。
   - 「データ拡張（回転）」を「あり」にした場合、画像の上下や左右が逆の状態でもAIの認識精度が高まります。ただし、学習時間が長くなります。また、画像の上下・左右が通常の状態に対する認識精度が若干低下する場合があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117462/ce950aba-8eb4-40f7-58c2-cda2cb8e0a81.png)

 - 「学習中」と表示され、AIモデルの学習が実行されます。学習が完了するまで、しばらく待ちます。学習時間の長さは、学習画像数に比例します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117462/b07dcdc2-edf5-6a41-966c-6d5a78acb24f.png)

## 6. AIモデルの性能評価
 - AIモデルの学習が完了すると、自動的に「AIモデル評価」の画面が表示されます。
 - 画面中央の「評価結果」で、評価画像全体に対するAIの精度を確認できます。
 - 画面下部では、各画像に対するAIの識別結果を確認できます。
   - 「結果詳細」ボタンを押すと、その画像に対してAIが出力した各カテゴリーのスコアを確認することができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117462/e2e3bf7b-e2a3-1780-4c51-ad4468436001.png)

## 7. AIモデルのダウンロード
 - 作成したAIモデルは、ご自身のPCやサーバーなどのローカル環境で利用することができます。
 - AIモデル詳細画面で「ローカル実行情報」ボタンを押してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117462/e4bdf801-14ff-e4b1-a370-eb9d051a3e3e.png)

 - 「作成したAIモデルをダウンロード」ボタンを押して、AIモデルをダウンロードしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117462/70c67716-4061-f70e-d811-8bdc0fbfbac7.png)

 - ダウンロードしたAIモデルの実行ライセンス情報が表示されます。
 - ライセンスのステータス、ライセンスタイプ、有効期限などを確認できます。
 - ダウンロードしたAIモデルを商用利用する場合は、有料プランにアップグレードして、ライセンスタイプを「定額制ライセンス（自動継続）」または「従量制ライセンス（自動継続）」に変更してください。
   - 有料プランの場合、「無料ライセンス」ボタンを押すことで、ライセンスタイプを変更できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117462/9be3c7e4-091a-6651-646c-c48d7ef71a97.png)

 - 「AIモデル実行モジュール（Pythonプログラム）をダウンロード」ボタンを押して、モジュールをダウンロードしてください。
 - Pythonプログラム内でこのモジュールを呼び出すことで、ダウンロードしたAIモデルを自分のPCやサーバー等のローカル環境で実行することができます。
   - AIモデルの実行方法は、モジュールフォルダ内のサンプルプログラム（sample_vit.py）を参考にしてください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3117462/b453d56a-2611-1aba-b572-990696bfcc23.png)

# ADFIの手順解説記事
 - [ADFIで異物混入検査AIを作成する](https://qiita.com/karakurai_rena/items/45e14891148caff83192)
 - [ADFIで混雑検知AIを作成する](https://qiita.com/karakurai_rena/items/b931bba9a5a347a460c1)
 - [ADFI初心者向けの手順解説（アカウント新規作成～プロジェクト作成）](https://qiita.com/karakurai_rena/items/5f3c5ee32fb58854b9a7)