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

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

【Python】pillow-simdによる画像読み込みの高速化

ディープラーニングのモデルをネットから拾ってくると、画像読み込みにopencvが使われているケースやpillowが使われているケースがあります。自分は使い慣れている/速いという理由でopencvを使ってもらえると助かるのですが、pillowが使われているケースも…

【Python】画像データ拡張ライブラリAlbumentationsを使ってみる

PyTorch版のYOLO v3を作っている人がいたので試してみようと思っています。 github.com ただ、Trainにデータ拡張が入っていないのでデータ拡張ロジックを追加したいと思ったところ、 Albumentationsというライブラリを見つけました。 github.com 物体検出や…

【C#】ToList()の挙動についての勘違い

C#

ToList()が思ってた動作と違ったのでメモしておきます。 ↓のようなクラスを作ります。 class MyClass { public MyClass() { var random = new Random(); Value = random.Next(100); } public int Value { get; set; } } 上記クラスを使って以下のようなコー…

【C#】System.IO.Compression.ZipFileクラスのCreateFromDirectoryメソッドはデフォルト設定だと日本語フォルダ名に非対応

C#

アプリケーションでエラーが起きたら必要なログを全てフォルダに集めて、そのフォルダをzip化するということを やろうとしたら、フォルダ名に日本語が入っていると文字化けすることが分かりました。 解決策は以下に書かれていて、encodingにEncoding.GetEnco…

【Visual Studio】NuGetを実行したら「'xxxxx' にはすでに 'NETStandard.Library' に対して定義された依存関係があります。」というエラーが出るときの対処法

下記記事にあるようにNuGetをアップデートするのが正解。 というか何故こんな意味不明なエラーメッセージ。。。 qiita.com

【OpenCV】OpenCV3以降でDense SIFTを使いたい

画像から特徴量抽出する方法として、Dense SIFTを使いたいと思ったのですが、何故かOpenCV2のあるバージョンで削除されてしまったようです。ただ幸いkeypointを指定することでDense SIFTを実施できるようなのでメモします(とはいえSIFTの特許の問題があるの…

【異常検知】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]…