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
96
機械学習で画像を分類してみた話
KerasとZbarを使用して大量の画像を分類→バーコード認識した話。
画像分類は転移学習、バーコードは回転・拡大をしたら認識率があがった。
moyashi
December 07, 2024
Tweet
Share
More Decks by moyashi
See All by moyashi
順番待ちWebサービス 「MATENE」を 有料化した話と サービスを続けられた理由
moyashi
0
49
AIコーディングエージェントのはなし
moyashi
0
100
自分の学習データで画像生成AIを使ってみる話
moyashi
2
850
メールを受信トレイに届けよう - Gmailガイドラインの話
moyashi
3
850
Visual Studio Codeの使い方 基礎編
moyashi
0
120
プログラミング支援AI GitHub Copilot すごいの話
moyashi
0
4.8k
アナログ電話のナンバーディスプレイを安価にIT化する話
moyashi
1
200
Other Decks in Technology
See All in Technology
迷わない!AI×MCP連携のリファレンスアーキテクチャ完全ガイド
cdataj
0
470
Keynoteから見るAWSの頭の中
nrinetcom
PRO
1
180
会社紹介資料 / Sansan Company Profile
sansan33
PRO
11
390k
Redshift認可、アップデートでどう変わった?
handy
1
140
#22 CA × atmaCup 3rd 1st Place Solution
yumizu
1
160
投資戦略を量産せよ 2 - マケデコセミナー(2025/12/26)
gamella
1
640
Databricks Free Edition講座 データエンジニアリング編
taka_aki
0
2.6k
手軽に作れる電卓を作って イベントソーシングに親しもう CQRS+ESカンファレンス2026
akinoriakatsuka
0
210
業務の煩悩を祓うAI活用術108選 / AI 108 Usages
smartbank
9
21k
「駆動」って言葉、なんかカッコイイ_Mitz
comucal
PRO
0
140
Introduction to Sansan Meishi Maker Development Engineer
sansan33
PRO
0
330
All About Sansan – for New Global Engineers
sansan33
PRO
1
1.3k
Featured
See All Featured
How to build a perfect <img>
jonoalderson
1
4.8k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
Utilizing Notion as your number one productivity tool
mfonobong
2
200
Build The Right Thing And Hit Your Dates
maggiecrowley
38
3k
GraphQLとの向き合い方2022年版
quramy
50
14k
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.2k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
1
1.4k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
120
Everyday Curiosity
cassininazir
0
120
Navigating Algorithm Shifts & AI Overviews - #SMXNext
aleyda
0
1.1k
The agentic SEO stack - context over prompts
schlessera
0
590
Statistics for Hackers
jakevdp
799
230k
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関連でかなり助けてもらった。 • これ系は色んな人を助けられそうな気はするけど、 クライアントワークではあんまりしたくない気もする。 微妙な”できなさ具合”を上手く説明でき、お客さんに理解してもらえるか…
まとめ 点