Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
機械学習で画像を分類してみた話
Search
moyashi
December 07, 2024
Technology
1
52
機械学習で画像を分類してみた話
KerasとZbarを使用して大量の画像を分類→バーコード認識した話。
画像分類は転移学習、バーコードは回転・拡大をしたら認識率があがった。
moyashi
December 07, 2024
Tweet
Share
More Decks by moyashi
See All by moyashi
自分の学習データで画像生成AIを使ってみる話
moyashi
2
510
メールを受信トレイに届けよう - Gmailガイドラインの話
moyashi
3
760
Visual Studio Codeの使い方 基礎編
moyashi
0
100
プログラミング支援AI GitHub Copilot すごいの話
moyashi
0
3.7k
アナログ電話のナンバーディスプレイを安価にIT化する話
moyashi
1
150
Other Decks in Technology
See All in Technology
mixi2 の技術スタックを探ってみる (アプリ編)
ichiki1023
0
110
TypeScript開発にモジュラーモノリスを持ち込む
sansantech
PRO
3
870
デジタルアイデンティティ人材育成推進ワーキンググループ 翻訳サブワーキンググループ 活動報告 / 20250114-OIDF-J-EduWG-TranslationSWG
oidfj
0
140
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
1
5k
Oracle Exadata Database Service(Dedicated Infrastructure):サービス概要のご紹介
oracle4engineer
PRO
0
12k
[JAWS-UG新潟#20] re:Invent2024 -CloudOperationsアップデートについて-
shintaro_fukatsu
0
150
pg_bigmをRustで実装する(第50回PostgreSQLアンカンファレンス@オンライン 発表資料)
shinyakato_
0
150
シフトライトなテスト活動を適切に行うことで、無理な開発をせず、過剰にテストせず、顧客をビックリさせないプロダクトを作り上げているお話 #RSGT2025 / Shift Right
nihonbuson
3
1.5k
DUSt3R, MASt3R, MASt3R-SfM にみる3D基盤モデル
spatial_ai_network
3
510
ネットワーク可視化の世界
likr
7
5.7k
MasterMemory v3 最速確認会
yucchiy
0
310
AWS re:Invent 2024 ふりかえり勉強会
yhana
0
700
Featured
See All Featured
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
3
230
jQuery: Nuts, Bolts and Bling
dougneiner
62
7.6k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.8k
Building Your Own Lightsaber
phodgson
104
6.2k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Six Lessons from altMBA
skipperchong
27
3.5k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
How STYLIGHT went responsive
nonsquared
96
5.3k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
49
2.2k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
160
15k
Transcript
機械学習で画像を 分類してみた話 2024/12/07 伊勢IT交流会
もやし工房 石黒 光茂 @koike_moyashi mitsushige.ishiguro もやし工房
写真ファイルを分類する ▪□□□□□□□□▪□□□□▪□□▪□□□□□□▪□□□□... やること ▪はバーコードを適当に写した写真 □は商品の写真
写真ファイルを分類する ▪□□□□□□□□▪□□□□▪□□▪□□□□□□▪□□□□... ↓ ▪□□□□□□□□ ▪□□□□ ▪□□ ▪□□□□□□ ▪□□□□ やること バーコード写真と商品写真を分類
バーコードの数字のフォルダを作成して入れて、 サーバに自動アップロードする + WebUI付ける ▪はバーコードを適当に写した写真 □は商品の写真
写真ファイルを分類する • 画像分類→機械学習 • バーコード検出→オープンソースのソフト やること
画像分類 Google の TensorFlow などを、 さらに簡単に使える(Tensorflowをバックエンドとして使う)、 Kerasと言うPythonのライブラリを使ってみる。 機械学習 / Keras
https://keras.io/
学習させてみる 学習元の▪は5000枚、□は8000枚程度 Kerasのチュートリアル + GitHub Copilotの助けを借りながら、 学習用のコードを書いてみた。 学習させてみる
学習させてみる→いまいち なんかいまいち。ざっくり90~95%くらいの精度。 結果 この時点ではグラフの意味もイマイチ分からなかったが、あんまり結果が良く無いぽい事はわかった。
よくネットとかで見るグラフ チュートリアルにも読み方が書いてあった グラフの見方 • Training 学習元データで検証 • Validation 検証用データで検証 •
結果は、はい/いいえ ではなく自信度(確信度)みたいなので出てくる。 バーコード(0.85)的な。= 85%の確率でバーコード。 • Epoch 学習回数。たくさんすればよいと言うこともない • Accuracy モデルがどれだけ正しく予測できたかの割合 • Loss 予測がどれくらい間違っているか EpochをあげるつれてLossが下がっていくと良い 増えていったり、Validationだけ上がってくと何かおかしい Epochをあげるつれて正確度が上がっていくと良い 両方あがってくと良いけどそうじゃないなら何かおかしい
転移学習で学習 なんやかんやあって、 「転移学習」ってのを使うと良いぽいことがわかった 精度を上げられないか…
転移学習で学習 • 既に学習済みのモデルを転用して、新たなモデルを生成する方法 • 学習済みモデルは色んなものを既に学習してるので、 今回のような2分類しかしない独自のデータでは邪魔なだけかと思ってたけど、 そうじゃないぽい • よく聞くファインチューニングとは、 ちょっとだけ意味合いが違うらしいけど
似たもの。 転移学習とは Zero to Oneから引用 https://zero2one.jp/ai-word/transfer-learning/
学習済みモデルは色んな種類がある VGG16:シンプル ◯:実装が簡単で理解しやすい。多くのコンピュータビジョンタスクで広く使用される。 ✕:モデルサイズが大きく、計算コストが高い。 ResNet50:深いネットワークを効果的にトレーニング可能 ◯:計算効率が高く、深い層でもなんだか良い感じ。 ✕:ネットワーク構造が複雑。 MobileNet:軽量で、モバイルや組み込みデバイスで良い感じ ◯:モデルサイズが小さく、計算速度が速い。 ✕:高精度を求められるタスクには向かない。
その他、EfficientNet、InceptionV3、Xceptionなど 既に学習済みのモデル ↓5年前MobileNetを使ったml5.jsを試してみたやつ https://www.slideshare.net/slideshow/ss-208636922/208636922
モデルを比較してみる 説明を見てもよくわかなかった&今回は少々遅くても良かったので、 VGG16、ResNet50V2、EfficientNetを 同一条件で比較するようなコードを書いて結果を見てみた。 既に学習済みのモデルを利用
モデルを比較してみる 既に学習済みのモデルを利用 ネットの記事でよくみるグラフの形! (VGG16はちょっとだけ結果が良くなかったので省いてある)
転移学習の結果 • ResNet50 V2が結果がやや良かったのでこれで。 2分類なので?正解率は99%くらい。すごい。 • 学習はPCのGPU使って15分程度。 前回発表した画像まねっ子の学習時間を思うとあっと言う間と言う印象。 • 学習結果を使う側はCPUのみ。そこまで遅くはない。
既に学習済みのモデルを利用
バーコードを認識させる • それなりに歴史のあるZBarと言うソフトをPythonから利用(pyzbar) 綺麗に撮れてる場合、斜めとかでもちゃんと認識する。 • バーコードは適当に撮られてて小さかったり暗かったり回転してたりで、 機械学習で「バーコードぽい」と分類できても、認識してくれない(取得率 85%くらい)。 バーコード読み取り /
ZBar 回転 暗い 一部怪しい 小さい・複数
バーコードを認識させる • 画像処理ライブラリ(OpenCV)で少しづつ回転させたり、拡大したり、 明るさ変えたりで 97%くらいに。ただ、処理に時間かかる。 拡大、回転が効果があった。機械学習でバーコードだけを抜き出そうとしたけど、自分にはできなかった。 • バーコードは決まったフォーマットで、決まった角度から写してもらえば、認識度はあげられそう。 バーコード認識も機械学習で行けるのかもしれない。 •
有料のライブラリを使うと精度は高かった(値段も高い) バーコード読み取り 回転 ↓ 少しづつ回 転 一部怪しい ↓ 補正 小さい・複数 ↓ 拡大 暗い ↓ 明るく
今のところ100%の精度は厳しそうだけど、今後は色々使えそうで楽しい • 今回のケースでは2分類程度であればかなり賢かった。使う側もそこまで重いわけでもない。 ただ、100%分類できるわけではない。 • 自分が未知の分野は生成AI助かる。今回はOpenCV関連でかなり助けてもらった。 • これ系は色んな人を助けられそうな気はするけど、 クライアントワークではあんまりしたくない気もする。 微妙な”できなさ具合”を上手く説明でき、お客さんに理解してもらえるか…
まとめ 点