Python

Web上の好きな画像データを自動取得する python【icrawlerの使い方】

ディープラーニングの勉強をするとき、MNISTやCIFAR10などの元からある画像データではなく、自分でweb上から集めたいときがあります。10枚程度であればGoogle画像で検索して手作業で保存しても問題ないですが、ディープラーニングに使うような1000枚とかの画像を集めるのは現実的でないため自動取得させましょう。
Python

Webカメラで手話をリアルタイム認識させる – ディープラーニング【keras実装】

手話数字をWebカメラでリアルタイムで認識させるPythonプログラムです。ディープラーニングライブラリであるKerasを使いました。中身はTensorFlowで処理されます。まずは手話数字の画像データをGitからダウンロードしてください。1~9の手話数字を集めたデータセットです。
Python

PyTorchでCIFAR10を画像分類する【VGG】ソースコード付き

PyTorchでカラー画像のデータセット(CIFAR10)を分類するソースコードです。CIFAR10は学習データ5万枚、テストデータ1万枚の合計6万枚の色画像で構成されています。クラスは10クラスあります。モデルは畳み込み層6層、全結合層3層からなるVGG9を使用しました。まずはmain関数があるmain.pyファイルを作成します。最初はCIFAR10データをダウンロードするためdownload=Trueとしましたが、2回目からはdownload=Falseとしてください。
Python

PyTorchで手書き数字MNISTを画像分類する【LeNet5】ソースコード付き

PyTorchで手書き数字(MNIST)を画像分類するソースコードです。MNISTは学習データ5万枚、テストデータ1万枚の合計6万枚の手書き数字で構成されています。モデルはLeNetを少しいじったものを使用しました。まずはmain関数があるmain.pyファイルを作成します。最初はMNISTデータをダウンロードするためdownload=Trueとしましたが、2回目からはdownload=Falseとしてください。
Python

【PyTorch】分類結果を表で可視化する – confusion_matrixの作成

PyTorchでニューラルネットワークを作成、画像分類したときの結果を表にする方法です。例えばCIFA10を認識させたときに、ネコの画像を正しくネコと認識できた回数、間違えてイヌと認識してしまった回数...を画面上に表示させます。ネコの画像はイヌの画像に似てるから誤認識しやすい、逆にネコは飛行機に似てないから飛行機とは認識されづらい、といった分析が可能になります。
Python

【PyTorch】重みの分布を可視化する – matplotlibでヒストグラムの作成

例えば、PyTorchで下記のようなネットワークモデルを作成し、その重みの値をグラフにプロットすることを考えます。以下の関数を作成し、学習後にmain.py内で関数を呼び出します。今回は9層からなるモデルだったため縦3つ×横3つのヒストグラムを作成します。features.0.weightが第1層目の重みを表します。features.0.biasとするとバイアスを取り出すことができます。
Python

【PyTorch】2値化ニューラルネットワークで認識精度を上げる – 重み更新のアルゴリズム

重みを更新するとき、量子化された重みを誤差逆伝搬のときに更新していました。W ← W_org - δ×∂L/∂W ここのW_orgが量子化された数値(2値化では-1,+1)でした。W_orgを量子化前の浮動小数点精度に変更することで精度が向上します。PyTorchで実装するには、まず重みを量子化する前に浮動小数点精度の重みを保持しておきます。順伝搬は量子化後の値で積和演算します。
Python

【PyTorch】入力・重みを量子化する – Binarized Neural Network 畳み込み層・全結合層をカスタマイズ

ニューラルネットワークの入力xに自作の関数を適応する方法を紹介します。ライブラリはPyTorchです。入力xや重みwを量子化することで画像分類や物体検知を効率化する研究が行われています。以前書いた記事では重みweightを2値に量子化する方法を説明しましたが今回は重みに加え、入力inputも量子化する方法を解説します。
Python

【PyTorch】Paddingのカスタマイズ – ConstantPad2dとは?パディングで0以外の数字を使いたい

PyTorchのデフォルトではpadding処理は0を加えることになっています。実験で0以外の数値を使いたい場合はnn.ConstantPad2d()を使います。第1引数にパディングするピクセル数、第2引数にパディングの数値を記述します。例えば、入力画像の上下左右1ピクセルを0でパディングしたいときはnn.ConstantPad2d(1,0)とします。
Python

【PyTorch】バイアスBiasの値を書き換える 自作畳み込み層・全結合層

前回の記事では畳み込み層および全結合層の重みを+1,-1の2値に量子化する方法を紹介しました。今回は線形結合のバイアスを操作する方法を紹介します。バイアスを整数に丸める処理を加えたと思います。modelus.pyに畳み込み層を記述していきます。
タイトルとURLをコピーしました