旅行好きなソフトエンジニアの備忘録

プログラミングや技術関連のメモを始めました

【異常検知】GANを用いた画像の異常検知

ANOGAN, ADGAN, Efficient GANといったGANを用いて異常検知する手法が下記にまとめられています。 habakan6.hatenablog.com ADGANとEfficient GANはANOGANを改良した手法になるようです。そのため手法の概念を学ぶには ANOGANを勉強すれば良さげです。初め解…

【WPF】回転中心を指定してコントロールを90度回転させたい

画面に表示させる画像を90度回転させて表示したいことがあったのですが、普通にRotateTransformを指定すると、コントロールの左上を回転中心として回転してしまいました。コントロールの中心を回転中心としたかったのですが、以下のようにRenderTransformOri…

【WPF】DataGridのScrollバーをトップへ移動させる

DataGridに大量のデータを表示します。その時画面にデータ全てを表示できないのでスクロールバーを使ってデータを閲覧します。この状態であるイベントを起こした時に下の方に移動したスクロールバーをトップに持って行きたいという状況。これは以下の方法で…

【異常検知】オートエンコーダーを用いた画像の異常検知

以下のサイトで画像の異常検知をやっていて面白そうなので自分でも試してみました。 qiita.com --- 試した環境 --- Windows10 Python 3.6 Keras 2.1.4 Tensorflow-gpu 1.5.0 使うデータセットは9クラスに分類されたキュウリの画像です。 github.com 以下の写…

【Python】 x-meansを使ってクラスタリングする例

k-meansのクラスタ数を自動で決めてくれるx-meansという手法があることを以下で知ったので試してみようとしました。 qiita.com ただリンク先のコードは自分のデータセットに対しては「行列式が0で計算できない」といったようなエラーが出ました。それで代わ…

【C#】byte*をbyte[]に変換する

C++のDLLからJPEGにエンコードされた画像データ(型はunsinged charのポインタ)が送られてくるので、それをC#側でbyteポインタで受け取りbyte[]に変換後、OpenCvSharpのMatに変換したかった話です。byteポインタをbyte配列に変換するにはMarshal.Copyを利用…

【C#】エンコードされたbyte配列をMatに変換する

C++のDLLからJPEGにエンコードされた画像データ(型はunsinged charのポインタ)が送られてくるので、それをC#側でbyteポインタで受け取りbyte[]に変換後、OpenCvSharpのMatに変換したかった話です。調べてみるとOpenCvSharpにはImDecodeというメソッドがあ…

【統計】母欠点数に関する検定

ある製品を検査すると従来N個の欠点が見つかっていた。この対策が行われ、効果を検証するため製品をM個ピックアップしたところ、L個の欠点が見つかった。さて、欠点は減ったと言えるかどうか、というお題があって書籍「入門統計解析法」で調べると226ページ…

【C#】TimeSpanに割り算を適用する方法

C#

複数のTimeSpanの平均値を求めたかったため、TimeSpanに割り算を適用する方法を調べたのですが、以下のやり方で出来ることが分かりました。 // 60秒 var t1 = new TimeSpan(0, 0, 60); // Ticksに割り算を適用してTimeSpanのコンストラクタに入れる var t2 =…

【C#】動的にChartを追加する

円グラフを描きたいけれども、アプリを動作させてからでないと何個の円グラフを描くか決めれない状況のため、動的にChartを追加する方法を調べました。グラフを描くために使ったライブラリはLiveCharts.Wpfになります。 まずはxamlです。以下で定義したStack…

【Python】PCANetを試してみる

教師なし学習で画像の特徴量抽出を行う方法を調べていて以下を見つけたのでMNISTで試してみました。以下記事にgithubへのリンクがあるので、そこのpcanet.pyを写します。 qiita.com 写したpcanet.pyを使い、以下のmain.pyを書いて動作させれば特徴抽出⇒分類…

【PyTorch】モデルがevalモードの時にout of memoryが発生する事への対処法

PyTorchでモデルがtrainモードの時には発生しないのですが、evalモードの時にGPUのメモリが解放されないまま消費されていきout of memoryが発生していました。調べたところ、Variableにvolatileという引数があって、これをTrueにすれば良いよというアドバイ…

トランザクション分離レベルについて分かりやすく説明してくれてるサイト

Repeatable Readとか何のことか良く分かっていなかったのですが、下記サイトに助けられました。 qiita.com

【Python】不均衡な2クラスセグメンテーション問題に適用するロス関数のメモ

この論文で不均衡な2クラスセグメンテーション問題に適用するロス関数が提案されていたのでメモします。ディープラーニングを使ったセグメンテーションでデータが極端に不均衡(例えば画像のほとんどが0で、1はちょっとだけ)の場合、工夫をしないと学習が上…

【Python】How to generate one-hot encodings for an array in numpy? - 101 Numpy Exercises

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., …

【Python】How to find the most frequent value in a numpy array? - 101 Numpy Exercises

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…

【Python】How to sort a 2D array by a column? - 101 Numpy Exercises

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', '…

【Python】How to get the second largest value of an array when grouped by another array? - 101 Numpy Exercises

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',…

【Python】How to convert a numeric to a categorical (text) array? - 101 Numpy Exercises

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…

【Python】How to drop rows that contain a missing value from a numpy array? - 101 Numpy Exercises

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:…

【Python】How to find the percentile scores of a numpy array? - 101 Numpy Exercises

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…

【C#】リストから指定した値に一番近い値を持つインデックスを取得する

C#

例えば以下のようなことがやりたく、普段for文を回してサーチしていました。 var list = new List<double>() { 1.0, 2.0, 3.0, 4.0, 5.0, 6.0 }; double value = 3.1; int index = FindClosestIndex(list, value); // 3.1に一番近い値は3.0。3.0のインデックスは2な</double>…

【Python】How to extract a particular column from 1D array of tuples? - 101 Numpy Exercises

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…

【Python】How to print only 3 decimal places in python numpy array? - 101 Numpy Exercises

Q: 小数点を三桁のみ表示するようにしなさい A: # Create the random array rand_arr = np.random.random([5,3]) # Limit to 3 decimal places np.set_printoptions(precision=3) rand_arr[:4] #> array([[ 0.443, 0.109, 0.97 ], #> [ 0.388, 0.447, 0.191]…

【Python】How to swap two columns in a 2d numpy array? - 101 Numpy Exercises

Q: 変数arrのカラム0とカラム1を入れ替えなさい arr = np.arange(9).reshape(3,3) #> array([[0, 1, 2], #> [3, 4, 5], #> [6, 7, 8]]) A: arr = arr[:, [1, 0, 2]] #> array([[1, 0, 2], #> [4, 3, 5], #> [7, 6, 8]]) www.machinelearningplus.com

【Python】How to replace items that satisfy a condition without affecting the original array? - 101 Numpy Exercises

Q: 0~9の奇数を元の変数に影響を与えずに-1に変更する A: import numpy as np arr = np.arange(0, 10) arr_ = np.where(arr%2 == 1, -1, arr) www.machinelearningplus.com

【Python】KerasでMobileNetのモデルファイルを読み込む方法

KerasでMobileNetのモデルファイルを読み込もうとすると"Unknown activation function:relu6"といったエラーが出ます。このエラーへの対処はここに書かれており、以下のようにすれば大丈夫でした。 from keras.utils.generic_utils import CustomObjectScope…

【ディープラーニング】マシンビジョンにおけるディープラーニングのメリット・デメリット

最近以下の本を買って読んでみたのですが、各社事例の薄い紹介に留まっており、アルゴリズム等を説明しているわけではないためエンジニアには特に有用な本でないと思いました。 画像認識の極み?ディープラーニング" (映像情報MOOK)作者: 映像情報インダスト…

【機械学習】「仕事ではじめる機械学習」を読んでのメモ

1章 機械学習プロジェクトのはじめ方 1.2 機械学習プロジェクトの流れ 1. 問題を定式化する * ○○のために××が必要。そのために機械学習を利用する。機械学習が○○に貢献しているかどうかの判断として、□□をKPIとする 2. 機械学習をしなくて良い方法を考える …

【C#】Windows7で日本語音声合成する

C#

音声合成はSystem.Speech.SynthesisのSpeechSynthesizerクラスを使えば良いのですが、Windows7ではデフォルトで日本語対応しておらず、対応させるには非常に面倒そうでした。 結局ここに書いてあるように、Windows7ではSpeechLibを使うのが楽だと思います。 …