Python
マルチラベル問題の評価指標の一つにMacro F1というものがあります。 Macro F1はそのままでは微分できないのでロス関数には適さないのですが、評価指標を微分可能にしてロス関数にしてしまおうという考えもあるようです。 towardsdatascience.com リンクでは…
諸事情によりバッチサイズを大きく取らないといけなくなったのですが、そんな時はoptimizerのstep等のタイミングを変更することで同等のことができそうです。 例えば下記の疑似コードでバッチサイズ16, accumulation=2であればバッチサイズ32で実行している…
マルチラベル+不均衡データを扱うのでマルチラベル問題で利用されているFocalLossの実装を探したのですが見つけました。感謝! import torch.nn as nn import torch.nn.functional as F class FocalLoss(nn.Module): def __init__(self, gamma=2): super(Fo…
ディープラーニングで実験するときにどんなデータ拡張を利用したのかファイルとして保存しておきたかったのですが、 データ拡張ライブラリAlbumentationsの最新版には既にその機能があったのでメモします。 from albumentations import Compose from albumen…
cv2.Blur関数を使って画像をぼかしたいのですが、四角形ではなく円もしくは楕円形状でぼかしたいという状況です。 これはマスクを利用して実現可能なことが分かったのでメモします。 import cv2 import numpy as np def apply_ellipse_blur(image, x, y, hax…
PyTorchのカスタムデータセットにmixupをどう入れ込むかの擬似コードメモです。 # これをDatasetの__get_item__に入れ込めば良い def _apply_mixup(self, image1, label1, idx1, image_size): # mixする画像のインデックスを拾ってくる idx2 = self._get_pai…
ディープラーニングを用いたMetric Learningの一手法であるArcFaceで特徴抽出を行い、その特徴量をUmapを使って2次元に落とし込み可視化しました。KerasでArcFaceを用いる例としてメモしておきます。 qiita.com qiita.com 実装は以下を引っ張ってきました。…
EfficientNetはAutoMLで作成された、パラメータ数の少なさに対して精度が非常に高いモデルです。 OfficialのTensorflowの実装だけでなく、PyTorchやKerasの実装も早速公開されており、使い方を知っておきたく試してみました。 実施内容 EfficientNetをファイ…
クラス分類用のfit_generatorに使うgeneratorの雛形をメモします。 画像が格納されているフォルダが以下のような構造であることを前提とします。 トップフォルダ class1フォルダ class1に属する画像ファイル class2フォルダ class2に属する画像ファイル 以下…
物体検出を行っていて、各クラスに色を割り当ててバウンディングボックスを描画したい、という状況でした。何故か修正前コードでは表題のエラーが発生し、修正後コードのような書き換えをしなければなりませんでした。本質でない部分に大分時間を使ったので…
以下の書籍を読んでて、単位根の有無を調べるのにKPSS検定を行うと書かれている箇所があります(pp.67)。 このPythonコードが欲しかったのでメモしておきます。 ちなみにKPSS検定の帰無仮説は単位根なし、対立仮説は単位根ありとなります。 時系列分析と状…
Processで起動したPythonプログラムの中で使っているprint文の内容をC#側に表示したいと考えました。 方法は以下の記事に書かれているようにProcessクラスのBeginOutputReadLineで可能です。 zawapro.com ただ問題はprint文の結果がC#側にリアルタイムで表示…
ディープラーニングは一般的に多くの学習データが必要とされますが、少量しかない場合にどれ位精度が落ちるのか気になり 実験してみようと思いました。そうは言っても普通にCNNに少量のデータを学習させても簡単に過学習しそうに思えるので、 少量のデータで…
ディープラーニングのモデルをネットから拾ってくると、画像読み込みにopencvが使われているケースやpillowが使われているケースがあります。自分は使い慣れている/速いという理由でopencvを使ってもらえると助かるのですが、pillowが使われているケースも…
PyTorch版のYOLO v3を作っている人がいたので試してみようと思っています。 github.com ただ、Trainにデータ拡張が入っていないのでデータ拡張ロジックを追加したいと思ったところ、 Albumentationsというライブラリを見つけました。 github.com 物体検出や…
画像から特徴量抽出する方法として、Dense SIFTを使いたいと思ったのですが、何故かOpenCV2のあるバージョンで削除されてしまったようです。ただ幸いkeypointを指定することでDense SIFTを実施できるようなのでメモします(とはいえSIFTの特許の問題があるの…
ANOGAN, ADGAN, Efficient GANといったGANを用いて異常検知する手法が下記にまとめられています。 habakan6.hatenablog.com ADGANとEfficient GANはANOGANを改良した手法になるようです。そのため手法の概念を学ぶには ANOGANを勉強すれば良さげです。初め解…
以下のサイトで画像の異常検知をやっていて面白そうなので自分でも試してみました。 qiita.com --- 試した環境 --- Windows10 Python 3.6 Keras 2.1.4 Tensorflow-gpu 1.5.0 使うデータセットは9クラスに分類されたキュウリの画像です。 github.com 以下の写…
k-meansのクラスタ数を自動で決めてくれるx-meansという手法があることを以下で知ったので試してみようとしました。 qiita.com ただリンク先のコードは自分のデータセットに対しては「行列式が0で計算できない」といったようなエラーが出ました。それで代わ…
教師なし学習で画像の特徴量抽出を行う方法を調べていて以下を見つけたのでMNISTで試してみました。以下記事にgithubへのリンクがあるので、そこのpcanet.pyを写します。 qiita.com 写したpcanet.pyを使い、以下のmain.pyを書いて動作させれば特徴抽出⇒分類…
PyTorchでモデルがtrainモードの時には発生しないのですが、evalモードの時にGPUのメモリが解放されないまま消費されていきout of memoryが発生していました。調べたところ、Variableにvolatileという引数があって、これをTrueにすれば良いよというアドバイ…
この論文で不均衡な2クラスセグメンテーション問題に適用するロス関数が提案されていたのでメモします。ディープラーニングを使ったセグメンテーションでデータが極端に不均衡(例えば画像のほとんどが0で、1はちょっとだけ)の場合、工夫をしないと学習が上…
Q: One-hot encodingを計算しなさい (Kerasのnp_utils.to_categoricalを使えば良いのですが、Keras使わない時のためのメモ) Input: arr = np.random.randint(1,4, size=6) arr #> array([2, 3, 2, 2, 2, 1]) Output: #> array([[ 0., 1., 0.], #> [ 0., 0., …
Q: irisのpetal lengthで最も出現頻度が高い値を見つけなさい A: # Input: url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data' iris = np.genfromtxt(url, delimiter=',', dtype='object') # Solution: vals, counts = np.u…
Q: irisデータセットをsepallengthカラムの値でソートしなさい A: url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data' iris = np.genfromtxt(url, delimiter=',', dtype='object') names = ('sepallength', 'sepalwidth', '…
Q: setosaで二番目に長いpetallengthは何? # Input url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data' iris = np.genfromtxt(url, delimiter=',', dtype='object') names = ('sepallength', 'sepalwidth', 'petallength',…
Q: 以下のようにiris_2dの3番目のカラムをビニングしなさい 3より小さい --> 'small' 3-5 --> 'medium' 5以上 --> 'large' # Input url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data' iris_2d = np.genfromtxt(url, delimi…
Q: iris_2dからnanを含まない行だけ取り出しなさい # Input url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data' iris_2d = np.genfromtxt(url, delimiter=',', dtype='float', usecols=[0,1,2,3]) A: # Input url = 'https:…
Q: irisデータの"sepallength"の5~95パーセンタイルを見つけなさい A: # Input url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data' sepallength = np.genfromtxt(url, delimiter=',', dtype='float', usecols=[0]) # Solut…
Q: irisデータのspeciesカラムを取り出しなさい A: url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data' iris_1d = np.genfromtxt(url, delimiter=',', dtype=None) species = np.array([row[4] for row in iris_1d]) specie…