自治体に向けて機械学習を使って何か提供できないかLobeを使って検証してみました

この記事は トラストバンク Advent Calendar 2021 の10日目の記事です。

こんにちは！
トラストバンクのテックリード兼、開発リーダーをさせて頂いている[@kazuyaseo](https://qiita.com/kazuyaseo)です。

昨日は[nirastamo](https://qiita.com/nirastamo)さんの[「そうだ、TGIFをやろう」](https://qiita.com/nirastamo/items/3ba13f1f49bc5457218a)でした！
リモート環境下でいかにコミュニケーションを活性化するかは、本当に重要な課題だと思います。
難しいからこそ、これからも一緒にコミュニケーションを活性化させたいと思いました！

# 自治体にテックの力で何か提供できないかと考えていました

[<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69338/61e10bdf-4a4a-20b2-a47e-31350d22c96f.png">](https://www.furusato-tax.jp/area)

トラストバンクは寄付者向けに[ふるさとチョイス](https://www.furusato-tax.jp)を提供していまして、
その裏では自治体様が[管理ツール(CMS)](https://qiita.com/keichiro24/items/5734485158f15d2a2d2c)を利用して情報を更新することで日々ふるさとチョイスは成長しています。

トラストバンクで仕事をしていて良かったなと思える事の一つに
<font color="Orange">**システムを利用していただいている自治体様に対して、エンジニアが直接話を聞ける環境**</font>
があると思っています。
「自分の担当しているシステムが役に立っているのか」、「どう利用してもらえているのか」
を直接聞けるのはものづくりをするエンジニアにとってとても大事な時間だと思っています！

今年はCMSの担当をさせて頂いているおかげで多くの自治体様と会話させていただきました。
そんな自治体様との打ち合わせの中に知ったのですが、
日々のふるさと納税業務の中でも**「掲載写真」**の運用に苦労されていると言う話を聞きました。
**たくさんの写真から選別をしたり**、**駄目だったら取り直ししたり**、**1回アップした画像を新しいものに差し替えたり**と
色々と大変との事でした。

その話を聞いた時に、
<font color="Orange">**CMSに写真をアップしたら、自動的に良し悪しを付けてくれたり、どこに掲載すれば良いかアドバイスしてくれたら良いのではないか？**</font>
と考えました。
それと同時に
<font color="Blue">**したい気持ちはあるけど、まだ自分自身が機械学習がどこまで出来るのか全く知らないな**</font>
と思い、自分の知識の少なさを呪いました。

前置きが長くなりましたが、
今回はふるさとチョイス上に掲載されている写真と去年話題になった[Lobe](https://www.lobe.ai/)を使って
**機械学習ではどんな写真の判別が出来るのかを鰻の写真を使って検証し、理解を深める**をやってみようと思います。

今回の検証で機械学習を少しでも自分の頭で理解できたら、来年は自治体様にもオススメできるかも！

## 検証してみること

検証してみようと思うのは、
<font color="Brown">自分の撮影したカットされていない鰻の写真を見て、
　「1尾」の鰻と判定できるのか？
　「カット」した鰻と判定されるのか？</font>
を検証してみようと思います。

ちなみに今年寄付して頂いた鰻の写真はコチラ（調理前ですいません。）

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69338/88547450-90a0-0992-38be-efcfc8fc69ad.jpeg" width=50%>

パッと見他感じでも「1尾」の写真なのですが、機械学習はこの鰻を「1尾」と判断してくれるのか検証してみようと思います。

## ①事前準備

自分の手元で機械学習を始めるためには

* [Lobe](https://www.lobe.ai/)
* 学習の元になる写真（複数枚)

の2つがあればOKです。

Lobeはサイトからダウンロードしてインストールするだけですぐに利用できます。

次に学習の元となる写真データですが、今回は以下のページに記載されている鰻の写真を持ってきました。

https://www.furusato-tax.jp/feature/a/series_eel-kabayaki


## ②学習させる内容とデータの準備

今回はシンプルに鰻の種類を**「1尾」**のままで写っている物と**「カット」**されているもので2種類に分けてみました。
一見シンプルに見えますが、鰻の写真は「ラッピングされたもの」や「鰻重」や「うな丼」、
「フライパンの上に乗っているもの」から「網の上に乗ってるもの」、しまいには「文字の入ってるもの」など様々なので、
個人的には「**本当に判定できるのか？**」と疑ってます。

準備は簡単、Lobeはフォルダを分けることで、自動的に分類をしてくれます。
そのため、自分のパソコンの中で以下の様なフォルダ構成を用意し、そのフォルダの中にガシガシ画像ファイルをおいておけばOKです。

```
unagi
 ├ cut     # ← こっちに「カット」された鰻の写真をガシガシ置く
 └ natural # ← こっちに「1尾」のままの鰻の写真をガシガシ置く
```

出来上がりイメージ
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69338/545ab344-c924-ba65-b1ea-01dbc619ea40.png" width=50%>

## ③Lobeに写真を読み込ませる。

Lobeをインストールして起動すると以下の様な画面が表示されるので「New Project」を選択する。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69338/088f8971-ce91-fc3b-014e-f1f33f3834e6.png" width=50%>

Projectのトップが表示されるので、データを読み込ませるために右上の「Import」をクリックして、表示されたメニューの中から「Dataset」を選ぶ。（Datasetを選ぶことで、フォルダ単位でインポートされます。）

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69338/c867158f-1b92-0832-7c68-bb7e04451100.png" width=50%>

Import Datasetのポップアップが出たら「Choose Dataset」を選択して、[先程準備した](#②学習させる内容とデータの準備)`unagi`フォルダを選択する。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69338/7a417bf6-9d59-fb8f-a11d-578f5dc38a44.png" width=30%>

"Label Using Folder Name"のラジオボタンを選択した状態で「Import」をクリック

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69338/3b381016-ad49-bdad-3750-14ff9e615832.png" width=30%>

無事に読み込まれました！

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69338/017d890d-d5c0-39cd-6cf2-bb5f36fa3832.png" width=80%>

## ④機械学習の判別できなかったものを確認する

自分が勝手に「1尾」と「カット」でカテゴライズした画像を渡したけど、機械学習も判断に迷うものがあったみたいで、
その画像がどんな画像であるか教えられるのが左メニューのTrainから見ることが出来る。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69338/6ddb108f-7612-7bc1-4d0a-77f06c126162.png" width=70%>

鰻重に乗っている鰻が「カット」されたものじゃないか？？？と疑っているが、個人的には1尾だと思う。。。。
ただ、それ以外は「1尾」にカウントされているのが結構凄いなと思いました。

## ⑤自分の撮った写真を読み込ませてみる。

最後に、自分が今年寄付した鰻の写真をスマホで撮って、学習させたLobeに読み込ませてみようと思います。
Lobeの左メニューから"Use"を選択し、メイン画面に写真をドラッグアンドドロップして、写真をラベリングしてもらいます。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69338/c720e8d5-b262-647c-3048-138c535cb88b.png" width=50%>

## ⑥結果

なんと、見事に"natural"と表示、<font color="Brown">「1尾」である</font>と判定してくれました！！！

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/69338/0af4f010-9890-b7a4-30fb-d2cbd02cd886.png" width=80%>


## ⑦結論

長々とお付き合いありがとうございます。
かなりファジーな部分まで判断してくれる事もわかり、
来年度から自治体さんが画像の判定に困っていたら、
「機械学習はどうですか？」と言うお話が少しできそうな気がしました。
また、機械学習に興味があるけど「何が出来るかわからない」と言う人も多いと思いますので、何かの足しになれば幸いです！


明日の記事は[Trustbank Advent Calendar 2021](https://qiita.com/advent-calendar/2021/trustbank)のオープニングも努めていただいた、CTOの[yamaken66](https://qiita.com/yamaken66)さんです、お願いします！