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
72
機械学習で画像を分類してみた話
KerasとZbarを使用して大量の画像を分類→バーコード認識した話。
画像分類は転移学習、バーコードは回転・拡大をしたら認識率があがった。
moyashi
December 07, 2024
Tweet
Share
More Decks by moyashi
See All by moyashi
AIコーディングエージェントのはなし
moyashi
0
60
自分の学習データで画像生成AIを使ってみる話
moyashi
2
630
メールを受信トレイに届けよう - Gmailガイドラインの話
moyashi
3
800
Visual Studio Codeの使い方 基礎編
moyashi
0
110
プログラミング支援AI GitHub Copilot すごいの話
moyashi
0
4.2k
アナログ電話のナンバーディスプレイを安価にIT化する話
moyashi
1
170
Other Decks in Technology
See All in Technology
フルカイテン株式会社 エンジニア向け採用資料
fullkaiten
0
6.7k
20250514_未経験から Fintech実務参画まで。学生エンジニアの挑戦録
hideto1008
0
870
Cursor Meetup Tokyo
iamshunta
5
1.5k
Eight Engineering Unit 紹介資料
sansan33
PRO
0
3.4k
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
2k
Bill One 開発エンジニア 紹介資料
sansan33
PRO
4
12k
AIエージェントのフレームワークを見るときの個人的注目ポイント
os1ma
1
250
20250612_GitHubを使いこなすためにソニーの開発現場が取り組んでいるプラクティス.pdf
osakiy8
1
330
Oracle Cloud Infrastructure IaaS 新機能アップデート 2025/03 - 2025/05
oracle4engineer
PRO
1
130
ai bot got sick (abc 2025s version)
kojira
0
140
Tenstorrent HW/SW 概要説明
tenstorrent_japan
0
240
Digitization部 紹介資料
sansan33
PRO
1
4k
Featured
See All Featured
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
770
We Have a Design System, Now What?
morganepeng
52
7.6k
Why Our Code Smells
bkeepers
PRO
337
57k
Designing for Performance
lara
609
69k
The World Runs on Bad Software
bkeepers
PRO
68
11k
Art, The Web, and Tiny UX
lynnandtonic
299
21k
Embracing the Ebb and Flow
colly
85
4.7k
Stop Working from a Prison Cell
hatefulcrawdad
269
20k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
6
670
Building Flexible Design Systems
yeseniaperezcruz
328
39k
GraphQLとの向き合い方2022年版
quramy
46
14k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.3k
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関連でかなり助けてもらった。 • これ系は色んな人を助けられそうな気はするけど、 クライアントワークではあんまりしたくない気もする。 微妙な”できなさ具合”を上手く説明でき、お客さんに理解してもらえるか…
まとめ 点