これはWHITEPLUS Advent Calendar 2020の14日目の記事です。
はじめに
こんにちは、WHITEPLUS リネットマーケティング部システム開発Gのhirasushiです。
突然ですが、皆さんは洗濯の前に『洗濯表示』を見ていますか?
『洗濯表示』(洗濯マーク)は、服のタグについている、その服にあったケア方法(洗い方、干し方、アイロンのかけ方など)を教えてくれる記号です。
(詳細については弊社のリネットマガジン内洗濯マークの記事をチェック!)
しかしそれぞれの記号が何を表しているか、についてちゃんと把握している人よりしていない人のほうが多いのでは無いでしょうか...。 私もその中の一人で、『洗濯不可能』マークくらいしかわからず、それ以外はえいやで洗濯機に入れてしまったりします。 でもせっかく宅配クリーニングのリネットを運営するWHITEPLUSに入社したのだから...ということで、 連休にこの洗濯記号の意味を自動で出してくれる機械学習モデルを作ってみました。
下準備
今回モデルの作成にはGCPのVision AIを使用しました。 Vision AIにはAutoML VisionとVision APIという2つのプロダクトがあるのですが、 AutoMLは
独自のカスタム機械学習モデルのトレーニングを自動化します。
Vision APIは
強力な事前トレーニング済み機械学習モデルを提供します。
という紹介になっています。日本の洗濯記号のトレーニング済み機械学習モデルは存在しないことが推測されたため、AutoMLを使うことにしました。
まず、AutoMLを使うためにGCP上でAutoML APIを有効にしておきます。
モデルの作成
その後、VisionのコンソールからAutoML Vision > データセット > 新しいデータセットを選択し、データセット名を入力します。また今回は画像内の特定の記号を判定したいので、『オブジェクト検出』を選択してデータセットを作成します。
作成したデータセットのインポートタブを開き、パソコンから洗濯ラベルの画像をアップロードします。その際アップロード先にCloud Strageのバケットを指定する必要があるので、無い場合はここで一緒にバケットを作成します。
(今回のモデル作成で2番目に大変だったのはこの部分です。自宅の服のラベルをひたすら写真に取るというのはなかなか時間がかかりました。また、服によってはほしい選択記号がついていなかったりするため、普段は着ない礼服なんかも引っ張り出して写真を取りました)
画像のアップロード&インポートが終わったら、次にイメージタブを開き、ラベルを作成します。今回は洗濯記号の数だけのラベルを作りました。
ラベルを作成したら、次はひたすら画像にアノテーション付加をしていきます。
(1番目に大変だったのがこの部分です。特にツール等必要とせずブラウザ上でできるのはいいのですが、とにかく数量が必要なため、総計300枚以上の画像に対してラベルをつけていきました。休日を2日費やしました)
なんとかアノテーション付加を終わらせたら、トレーニングタブのトレーニングを開始をクリックし、モデルができるのを待ちます。
モデルができたら、評価タブでモデルの適合率や再現率を確認できます。
モデルをテストしてみる
テストと使用タブでデプロイを実行すると、画像をアップしてモデルを試すことができます。(テスト終了後はデプロイを削除するのを忘れずに...課金対象なので) こちらがそのテストの結果です!
テストの結果
結果を見ると、
- 判定できている記号といない記号がある
- 珍しくてサンプル数が少ない記号は検出に難がありました
- 1つの記号を複数の記号だと判定してしまう
- 例えば『ウェットクリーニングができる』の記号の下に一本線がはいると『弱いウェットクリーニングができる』、二本線が入ると『非常に弱いウェットクリーニングができる』となります。このため『非常に弱いクリーニングができる』の記号を『非常に弱いクリーニングができる』と『ウェットクリーニングができる』と二重に判定してしまいます。
となりました。 このように、実用的にはまだまだ物足りないモデルとなってしまいました。
しかし今回アノテーションを手動で行ったことにより、すべての洗濯記号を完璧に把握することができ、結果正しい洗濯方法を学ぶことができました。
少し想定していた形とは違いますが、洗濯記号と同時にVision AIの使い方も知ることができたので、今後のより技術的な解決に繋がるのではないでしょうか。
さいごに
ホワイトプラスでは、たとえ失敗に終わったとしてもチャレンジをし続けるエンジニアを募集しています。