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
120
1
Share
機械学習で画像を分類してみた話
KerasとZbarを使用して大量の画像を分類→バーコード認識した話。
画像分類は転移学習、バーコードは回転・拡大をしたら認識率があがった。
moyashi
December 07, 2024
More Decks by moyashi
See All by moyashi
ポートを開けないVPN Tailscaleの話
moyashi
0
87
AWS SES VDMで 将来の配信事故を防げた話
moyashi
0
1.3k
順番待ちWebサービス 「MATENE」を 有料化した話と サービスを続けられた理由
moyashi
0
94
AIコーディングエージェントのはなし
moyashi
0
120
自分の学習データで画像生成AIを使ってみる話
moyashi
2
960
メールを受信トレイに届けよう - Gmailガイドラインの話
moyashi
3
880
Visual Studio Codeの使い方 基礎編
moyashi
0
140
プログラミング支援AI GitHub Copilot すごいの話
moyashi
0
5.1k
アナログ電話のナンバーディスプレイを安価にIT化する話
moyashi
1
230
Other Decks in Technology
See All in Technology
Claude Code で使える DuckDB Skills を試してみた / DuckDB Skills and Claude Code
masahirokawahara
2
2.2k
AI時代の私の技術インプットとアウトプット術
tonkotsuboy_com
2
300
TSKaigi 2026 - 型プラグインシステムの実装に使われるテクニック
teamlab
PRO
2
310
既存プロダクトQAから新規プロダクトQAへ
ryotakahashi
0
190
TSKaigi 2026 - 10秒のビルドを1秒へ:tsdownが切り拓く2026年のTypeScriptライブラリ開発
teamlab
PRO
2
240
A Harness for Behaviour: how to get AI to generate code that does what we intend, or "TDD in the age of AI"
xpmatteo
0
350
freee-mcpを Local→Remote で出してわかった MCP認可実装のリアル
terara
2
550
論文紹介:Pixal3D (SIGGRAPH 2026)
tenten0727
0
700
GitHub Copilot CLI で考える複数エージェント設計
tomokusaba
0
170
コーポレートサイトのアクセシビリティ改善とJIS準拠への実践
lycorptech_jp
PRO
2
130
権限管理設計を完全に理解した
rsugi
1
190
Python開発環境にハーネス適用を検討する
yuuka51
1
480
Featured
See All Featured
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
300
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.5k
How to Ace a Technical Interview
jacobian
281
24k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
390
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
23k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
130
Docker and Python
trallard
47
3.8k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
510
Discover your Explorer Soul
emna__ayadi
2
1.1k
sira's awesome portfolio website redesign presentation
elsirapls
0
250
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
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関連でかなり助けてもらった。 • これ系は色んな人を助けられそうな気はするけど、 クライアントワークではあんまりしたくない気もする。 微妙な”できなさ具合”を上手く説明でき、お客さんに理解してもらえるか…
まとめ 点