MENU
  • 手帳
    • 手帳 リフィル自作した手帳のリフィルを公開していきます!
    • 手帳 レビュー
    • 手帳 アイデア
    • 手帳 ジャーナリング
  • 独学
    • 独学 キャリアコンサルタント国家資格キャリアコンサルタントの試験対策や学んだコトなどをまとめていきます!
    • 独学 プログラミング
    • 独学 リスキリング自分で楽しく効率よく学習するリスキリングのTipsや参考情報をまとめますᕦ(ò_óˇ)ᕤ
  • ワーク
    • キャリア 転職
    • マインドセット
    • マインドフルネス自分の気持ちを高めて、常に前向きに平常心でいるためのTipsや参考情報をまとめます!
    • ツール活用 効率化
人気の記事ランキングTOP 5!
  • 【自作手帳】自作リフィルのおすすめテンプレート10選!(PDF無料ダウンロード可!)
  • 【2026最新】ジャーナリングのおすすめ本10選!Unlimited対応も!
  • 【自作手帳】Word,Excelで出来る!A5システム手帳のリフィル自作方法
  • 【無料】Goodnotes6で使えるデジタルプランナー・テンプレート10選(PDFダウンロード可)
  • 【保存版】Goodnotes6の使い方まとめ!PDFの読み込み・PDF化・メモの書き方を徹底解説
手帳でキャリアも人生も自分らしく!
キャリアの実験室
  • 手帳
    • 手帳 リフィル自作した手帳のリフィルを公開していきます!
    • 手帳 レビュー
    • 手帳 アイデア
    • 手帳 ジャーナリング
  • 独学
    • 独学 キャリアコンサルタント国家資格キャリアコンサルタントの試験対策や学んだコトなどをまとめていきます!
    • 独学 プログラミング
    • 独学 リスキリング自分で楽しく効率よく学習するリスキリングのTipsや参考情報をまとめますᕦ(ò_óˇ)ᕤ
  • ワーク
    • キャリア 転職
    • マインドセット
    • マインドフルネス自分の気持ちを高めて、常に前向きに平常心でいるためのTipsや参考情報をまとめます!
    • ツール活用 効率化
キャリアの実験室
  • 手帳
    • 手帳 リフィル自作した手帳のリフィルを公開していきます!
    • 手帳 レビュー
    • 手帳 アイデア
    • 手帳 ジャーナリング
  • 独学
    • 独学 キャリアコンサルタント国家資格キャリアコンサルタントの試験対策や学んだコトなどをまとめていきます!
    • 独学 プログラミング
    • 独学 リスキリング自分で楽しく効率よく学習するリスキリングのTipsや参考情報をまとめますᕦ(ò_óˇ)ᕤ
  • ワーク
    • キャリア 転職
    • マインドセット
    • マインドフルネス自分の気持ちを高めて、常に前向きに平常心でいるためのTipsや参考情報をまとめます!
    • ツール活用 効率化
  1. ホーム
  2. 独学
  3. 独学 プログラミング
  4. 【Python入門】ディープラーニングの実践 | CNN等で画像の自動判別

【Python入門】ディープラーニングの実践 | CNN等で画像の自動判別

2024 11/21
独学 プログラミング
ワタシ

今回はPythonでの“ディープラーニング”について理解を深めます。

データ分析をしていくと、ディープラーニングという概念を自分でもできないかと思う事が増えます。

ただ、ちょっと調べたけれども敷居が高そう…。

ということでポイントを絞って、下記に整理していきます。

尚、ディープラーニングの統計的な仕組の理解においては下記にポイントを別途まとめます。

あわせて読みたい
【ディープラーニング】 画像を処理して自動検出する仕組とは ワタシ 今回はディープラーニングについて理解を深めます。 AIという言葉と共に一気に有名になったがのがディープラーニングという手法です。 そしてこの「ディープラー...
合わせて確認したい記事

Pythonを時短で基礎から応用まで一気に学びたい時はこちらもオススメ!
>>【Python】TechAcademyを実際に使ってみて学べたこと

目次

今回の論点整理

”ディープラーニング“の使いドコ

ディープラーニングの使いどころは以前も記載した通り画像処理などの領域です。

今回は下記のようなデータ(数字の”4″)を読み込んで傾向を出す・予測する形を構築します。

ディープラーニングは雰囲気からして難解を極める領域かとおもいますが、分解して考えるとベース部分はそこまで難しい話ではないので、基礎の理論的な部分とセットでご確認頂けると幸いです。

あわせて読みたい
【データサイエンス】統計に関する情報整理 / AI, 機械学習, 深層学習の位置づけ ワタシ 今回は“AI,機械学習の位置づけ”について理解を深めます。 統計を勉強する中で、「AI、機械学習、深層学習」というものが色々なところで出てきますがこれらはどの...

具体的な想定場面

今回の想定は以下の通りです。


想定:自分は統計をかじっているパン屋の店主、店舗のオペレーションを合理化するための新システム案を模索中
状況:パン購入時にAIを使ったカメラでの写真データを元に自動判定して価格を出すシステムを作って入力の手間を省けないかを検討している。
意図:上記はどういうロジックで実装すればいいかアルゴリズムエンジンを考えたい。

このような時、「ディープラーニング」という考え方が使えるのだと思います。

今回の抑えドコ

そこで、今回は上記を実現する手順について下記に備忘録的にまとめたいと思います。

抑えドコ!
  • 今回の焦点
    ▷ディープラーニングに関して
    (想定場面:画像データを使って分類わけのアルゴリズムを考えたい)
  • ポイント
    ▷全体のネットワーク構築
    ▷CNNの書き方
    ▷画像認識のタスク

順に触れます。

”ディープラーニング”理解のポイント

ポイント① ネットワーク構築の全体像

まず、プログラミング部に触れる前に抑えておきたいのが、ディープラーニングの仕組です。下記を確認頂くのが良いかと思います。

あわせて読みたい
【データサイエンス】統計に関する情報整理 / AI, 機械学習, 深層学習の位置づけ ワタシ 今回は“AI,機械学習の位置づけ”について理解を深めます。 統計を勉強する中で、「AI、機械学習、深層学習」というものが色々なところで出てきますがこれらはどの...

上記でも触れましたがCNNという考え方は、画像処理を考える際は当たり前のように使われたりします。

ではまずこれは何なのか。

CNNとは何か

CNN=Neural NetworkにConvolution(畳み込み)を追加したもの

上記のリンクでも話した通り一言でいえば”読み込んだデータをぼやかす”的な意味合いの処理を行います。

つまり、画像データを数値化し、そのデータをぼやかしまくってそれっぽい特徴を抽出する作業を行います。

全体の流れと設定すべきプログラムの位置づけとしては以下の通り

その上で、これを左から順にプログラムにおとしていきます。

プログラムの流れ
  1. ライブラリの読み込み
  2. デバイスの指定
  3. データを読み込み
  4. ネットワークの定義
  5. 損失関数
  6. 最適化アルゴリズムの指定
  7. 学習

上の順に則して、順にふれていきます。

ポイント②プログラミングの流れ

上記の7つのステップで分けて考えます。

①ライブラリの読み込み

まず、この手の分析をする際の代表格のライブラリは下記3つです。

  • TensorFlow
    ▷ Google製の機械学習フレームワークで最もポピュラーなフレー
    ムワークのひとつ
    ▷ 2019年にTensorFlow2.0が出たので要注目
  • Keras
    ▷Scikit-learnのように簡単にディープラーニングを実行できる高水
    準ライブラリ
  • PyTorch
    ▷人気急上昇中の機械学習ライブラリで比較的書きやすいと言わ
    れる

その中でも今回は、とっつきやすいといわれるPyTorchを扱います。コードは以下の通り。

import torch
from torch import nn
from torch imoport optim
import torch.nn.functional as F
from torch.utils.data import DataLoader, TenesorDataset

②デバイスの指定

また、PyTorchではcudaという概念も活用できうる。

cubaとは何かという点はこちら、簡単にいうとGPU(画像用半導体チップ)の計算が出来る環境です。

そこで、もしcudaが使用できるマシンであればTrue、そうでなければFalseを返します。コードは以下の通り。

if torch.cuba.is_available():
  device = 'cuba'
else:
  device = 'cpu'
print(device)

③データを読み込み

学習データとテストデータに分けていきます。具体的にはTensorDatasetとDataLoaderを使います。

コードは以下の通り

X_train, X_test, y_train, y_test = train__test_split(
 X, y, test_size=0.3, random_state=1234)

#torch.tensorでNumpyの配列からtensor型にデータ変換

X_train_tensor = torch.tensor(X_train, dtype=torch.float32)
y_train_tensor = torch.tensor(y_train, dtype=torch.int64)
X_test_tensor = torch.tensor(X_test, dtype=torch.float32)
y_test_tensor = torch.tensor(y_test, dtype=torch.int64)

#dataset, loaderをセット

train_dataset = TensorDataset(X_train_tensor,y_train_tensor)
train_loader= DataLoader(train_dataset, batch_size=50, shuffle=True)

test_dataset = TensorDataset(X_test_tensor, y_test_tensor)
test_loader = DataLoader(test_dataset, batch_size=50, shuffle = True)

④ネットワークの定義

ネットワークの定義はnn.Sequentialを使って以下の3つを指定します。

指定が必要なもの
  • 入出力の次元数
    ▷入力:最初のnn.Linear()関数の最初の引数
    ▷出力:最後のnn.Linear()関数の最後の引数
  • 隠れ層のニューロン数
    ▷上記の入出力以外のnn.Linear関数の引数
  • 活性化関数
    ▷nn.ReLU()関数

コードで記載すると以下の通り

net = nn.Sequential(
 nn.Linear(64,32),
 nn.ReLU(),
 nn.Linear(32,16),
 nn.ReLU(),
 nn.Linear(16,10)
)
net

⑤損失関数

nn.CrossEntropyLoss()関数で目的関数に交差エントロピー誤差関数を用意します。

これはシンプルに定義だけ

loss_func =nn.CrossEntropyLoss()

ちなみに他にもこのような関数

関数の種類
  • nn.BCEWithLogitsLoss()
    ▷2クラス分類交差エントロピー誤差関数
  • nn.CrossEntropyLoss()
    ▷多クラス交差エントロピー誤差関数
  • nn.MSELoss()
    ▷回帰問題平均二乗誤差関数
  • nn.L1Loss()
    ▷回帰問題平均絶対誤差関数

⑥最適化アルゴリズムの指定

あとはパラメーターを初期化し、最適化アルゴリズムを指定すれば準備完了です。

コードは以下の通り

optimizer = optim.SGD(net.parameters(), lr=0.1)

ちなみに…SGD以外にもAdam,AdaDelta,AdaGradというものもあります。

⑦学習

そして最後に上記を加味して学習します。関数trainingが必要な変数を辞書型でまとめます。

コードは以下の通り

param = {
 'trainloader':train_loader,
 'valloader':test_loader,
 'net':net,
 'optimizer':optimizer,
 'lossfunc':loss_func,
 'epochs':15,
 'device':device
 }

①~⑥の定義したものを辞書型でパラメータセットをすることで学習がはじまります。

net, train_loss_track, test_loss_track = training(**param)

以上を元に、training関数を定義して実行すれば処理が回ります。

ポイント③CNN構築の基本と汎用ネットワーク

上記、CNNにおいて具体的なイメージが沸かないとピンとこないと思うので、ポイント①ポイント②の視点を元にネットワークを定義します。

例えばこの4という画像を読み込んでいくネットワークの定義を想定します。

上記の定義
  • Convolution(畳み込み)
    ▷指定したベクトルを元に意図した形でぼやかす
  • Pooling(ぼやかし)
    ▷決まった範囲・法則(平均値など)をとってぼやかす
  • FC(全結合)
    ▷画像をフラットにしてニューラルネットにすること
  • 隠れ層(Relu)
    ▷活性化関数を元に勾配(影響)を算出
  • Softmax
    ▷出てきた数値からカテゴリと紐づけ・分類わけ

コードにすると以下のような形になります。

net = nn.Sequential(
 nn.Conv2d(in_channels=1, out_channels=28, kernel_size=2),
 nn.ReLU(),
 nn.MaxPool2d(kernel_size=2),
 nn.Conv2d(in_channels=28, out_channels=32, kernel_size=2),
 nn.ReLU(),
 nn.MaxPool2d(kernel_size=2),

 Flatten(),
 nn.Linear(1152,100),
 nn.ReLU(),
 nn.Linear(100,10)
)

これが基本形になるわけですが、実際の読み込みを考えるともっともっと複雑な式になります。

つまり、covolution等の処理が信じられない程くりかえさないといけないわけです。

ただ、毎回定義するのは面倒を極めるので、実はプリセットされたものがあるのでそちらのネットワーク(移転学習)を使うのが賢明です。

代表格は以下の通り

移転学習出来るネットワーク
  • AlexNet
  • VGGNet
  • GoogLeNet
  • ResNet

これらの詳細な特徴はそれぞれググってみればよいと思います。

上記の基本系を理解した上で、上記が活用できればほぼほぼ自分で回せるようになるはずです。

まとめ 

上記を活用する際に、理解しておくべきポイントは以下3点

今回の抑えドコ
  • ポイント①:ネットワーク構築の全体像
     ▷現実世界に照らし合わせて分析ステップを分ける
  • ポイント②:プログラム作成の流れ
     ▷7つのステップに合わせてコードを考える
  • ポイント③:CNN構築の基本と汎用ネットワーク
     ▷基本的な書き方を踏まえ移転学習を利用する

ここまで分解して理解ができると、いきなり使いこなせないにしても、何を試しに学んで勉強すればいいのかが分かります。

また、何よりも、今まで意味不明であったディープラーニングの領域の参考書やブログで記載されている意味は理解できるようになると思います。

今後は自主勉強として上記を学ぶ一方で、業務でも出来る事・できないことはしっかりと理解した上で話を勧めたいと思います。

ご精読頂きありがとうございました。
m(_ _)m

【参考】Python初心者のお勉強のお供

上記の内容と併せて実務で活かすという視点では下記の参考図書も合わせて確認すると理解が深まります(-_-)

▼オススメの参考書籍(Kindle)▼

Python2年生 データ分析のしくみ 体験してわかる!会話でまなべる!
created by Rinker
¥2,178 (2026/02/05 17:48:45時点 Amazon調べ-詳細)
  • Kindle
  • Amazon
  • 楽天市場
  • Yahooショッピング
Marketing Python マーケティング・パイソン AI時代マーケターの独習プログラミング入門(できるビジネス) できるビジネスシリーズ
created by Rinker
¥2,376 (2026/02/05 21:44:16時点 Amazon調べ-詳細)
  • Kindle
  • Amazon
  • 楽天市場
  • Yahooショッピング
Python実践データ分析100本ノック
created by Rinker
¥2,376 (2026/02/05 17:48:46時点 Amazon調べ-詳細)
  • Kindle
  • Amazon
  • 楽天市場
  • Yahooショッピング

▼おすすめの動画学習(Udemy)▼

>>ゼロからPythonで学ぶ人工知能と機械学習 【2023年最新版】

>>現役シリコンバレーエンジニアが教えるPython 3 入門 + 応用

>>独学で身につけるPython〜基礎編〜【業務効率化・自動化】

【参考】Python初心者が抑えたいポイント集

Python(主にデータ分析・自動化)に関しては

下記に実践したポイントをまとめています。基本的にコピペするだけでそのまま使えます٩( ᐛ )و

あわせて読みたい
【Python入門】コピペしてそのまま使えるPythonの自動化プログラムまとめ ワタシ ども、らーにゃです。今回はPythonのプログラムについてまとめます。 Pythonをもっと身近なことに応用できないか? プログラミングをかじり始めた人で、こんなこ...

業務効率化・自動化においてはGoogle Apps Scriptもセットで学ぶことをオススメ!

こちらもコピペしてすぐに使えます!

あわせて読みたい
【GAS入門】コピペしてそのまま使えるGoogle Apps Scriptプログラム一覧 ワタシ ども、らーにゃです。今回はGASの活用についてまとめます。 身の回りのことをもっと自動化できないものか? 仕事でもプライベートでも忙しくなるほどに自動化の...

PythonとGoogle Apps Scriptどちらを深めようかを迷っていればこちら!

あわせて読みたい
【徹底比較】PythonとGASをどちらを学ぶべきか?実際に両方を学んで分かった違いとオススメ学習法 ワタシ ども、らーにゃです。今回はPythonとGASを比較していきます。 自分は非エンジニアだけど… 「もっともっと効率化したい!」 「プログラムを書けるようになりたい...
独学 プログラミング
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
  • 【要約】「仮説思考」とは何か?生産性の高めスキルアップを促す思考法
  • 【Python入門】WEB上のデータを抽出してテキストマイニング(スクレイピング)

この記事を書いた人

らーにゃのアバター らーにゃ

ビビっときたTipsや手帳術を発信します ٩( ᐛ )و

●家族:フルキャリ妻と子供2人

●資格:国家資格キャリアコンサルタント

●趣味:手帳歴20年 | 自作歴12年| デジプラ歴4年

関連記事

  • 【GAS】ショートカットを利用してApple Watch→スプレッドシートのデータ連携を行う
  • 【レビュー】ChatGPTの使い方 | プログラミング初心者の応用 (GAS/Python)
  • 【GAS】Google Fitのデータをスプレッドシートに引き抜くプログラムを考える
  • 【徹底比較】PythonとGASをどちらを学ぶべきか?実際に両方を学んで分かった違いとオススメ学習法
  • 【GAS】TogglのAPIを利用したデータ連携の仕様変更について
  • 【Python入門】コピペしてそのまま使えるPythonの自動化プログラムまとめ
  • 【Python自動化】GoogleスプレッドシートにPythonからデータを流し込む方法
  • 【Python自動化】タスクスケジューラで定時にPythonファイルを自動実行する方法

コメント

コメントする コメントをキャンセル

ブログの記事一覧
カナダでキャリコン/コーチをしながら理想のセカンドキャリア作るためのヒントや考え方をブログやYouTubeで発信中!

●家族:フルキャリ妻1人、子供2人
●資格:国家資格キャリアコンサルタント
●趣味:手帳歴20年 | 自作歴12年| デジプラ歴4年
人気の記事ランキングTOP5!
  • 【自作手帳】自作リフィルのおすすめテンプレート10選!(PDF無料ダウンロード可!)
  • 【2026最新】ジャーナリングのおすすめ本10選!Unlimited対応も!
  • 【自作手帳】Word,Excelで出来る!A5システム手帳のリフィル自作方法
  • 【無料】Goodnotes6で使えるデジタルプランナー・テンプレート10選(PDFダウンロード可)
  • 【保存版】Goodnotes6の使い方まとめ!PDFの読み込み・PDF化・メモの書き方を徹底解説
目次
検索
  • プロフィール
  • サイトマップ
  • プライバシーポリシー
  • お問い合わせ

© キャリアの実験室.

  • メニュー
  • ジャーナル
  • 自作手帳
  • アイデア
目次