gocha124の日記

ごちゃごちゃ書きます

アルゴリズム・サイエンス:入口からの超入門 (アルゴリズム・サイエンスシリーズ 1―超入門編)

アルゴリズム・サイエンス:入口からの超入門 (アルゴリズム・サイエンスシリーズ 1―超入門編)を読みました。途中まで。

学生さんに、なぜコンピュータが役立つのかのとっかかりとなる説明に始まって、コンピュータとプログラミング言語、技術の要素にまで、理解しやすいようにつなげて説明してくれている。

はじめに電卓とパソコン(CPU、メモリ)の比較を例に挙げて、複数の値を変数にとっておけること、カッコを使った演算がMCとかM+とかよくわからないボタンになっているのを、人間が読める形(プログラム)で、マシン語ではなく、扱えるようになっていて、繰り返し処理が得意とかとか。

画像処理や、数値データの活用の案件にむけて、知識増強したくて、このシリーズを読んでみようと思って手にとりました。

 

次を読むかは未定(今現在の案件には直結してこないので)。入社して2、3年の若手に、技術の入り口に立ち戻ってもらうのにはよいのかな。

 

アルゴリズム・サイエンス:入口からの超入門 (アルゴリズム・サイエンスシリーズ 1―超入門編)

アルゴリズム・サイエンス:入口からの超入門 (アルゴリズム・サイエンスシリーズ 1―超入門編)

 

 

Java言語で学ぶデザインパターン入門 マルチスレッド編

結城浩Java言語で学ぶデザインパターン入門 マルチスレッド編を読みました。

java.util.concurrentパッケージが追加されたことで増補版がでたものです。

Javaを使用し始めた当時ではjava.util.concurrentパッケージなど無く、java.lang.Threadを使ってゼロからのプログラミングが要求されたけど、現在はパッケージを使うことで、より簡単に実装ができます。

ちょうど最近見ていた案件で、java.util.concurrentを使用したソースコードをメンテすることがあり、Java1.4時代で知識停滞している自分にとってjava.util.concurrent.Future、ExecutorServiceを使っての説明が参考になると思って読みました。

 

 

Java言語で学ぶリファクタリング入門

結城浩Java言語で学ぶリファクタリング入門を読みました。

案件では、じっくりとソースコードをメンテナンスする時間を取れない(取らないといけないのに。定時が終電のような状況では難しい)ので読んだだけ。いつか役立てれるときにもう一度読もう。

 

Java言語で学ぶリファクタリング入門

Java言語で学ぶリファクタリング入門

 

コンピュータビジョン

オライリーのコンピュータビジョンを読みました。

職場でまわりの人たちが画像認識、画像分析をやってるのですが、チンプンカンプンだったので勉強です。

画像からの特徴量抽出、画像分割、物体認識のさわりがぼんやりわかりました。今回読んだだけなのですが、pythonによるサンプルコードが充実しているので、理解の定着には是非手を動かしてみるとよいと思います。が動かせてません。

 

以下内容備忘のキーワードメモ。

 

2.画像の局所記述子
Harrisコーナー検出器
SIFT

 

3.画像間の写像

アフィン変換

 

4.カメラモデルと拡張現実感
カメラキャリブレーション
姿勢推定

 

5.多視点幾何学
エピポーラ線
エピ極
エピポーラ幾何
SVDで最小二乗推定

 

6.画像のクラスタリング
k平均法
階層クラスタリング
スペクトラルクラスタリング
特徴量ベクトルに平均RGB値とPCA係数

 

7.画像検索
SIFT記述子のような局所記述子
ビジュアルワード
bag_of_visual_wordrモデル

 

8.画像認識
k近傍法
密なSIFT特徴量ベクトル
ベイズ分類器
次元削減にPCA
SVM
多クラス問題の例、数独光学文字認識
マスの抽出、枠線
画像の位置合わせ

 

9.画像の領域分割(セグメンテーション)
前景、背景。個々の物体。
グラフカット

 

10.OpenCV
SURF特徴量
オプティカルフローは2枚の連続する画像間での物体の動き。画像上での移動を表す2Dのベクトル場
動画圧縮、動き推定、物体追跡、画像の領域分割に応用
コーナーの特徴点を追いかける

 

以上。

 

 

実践 コンピュータビジョン

実践 コンピュータビジョン

 

 

Javaの性能改善メモ

Javaプログラムの性能を改善したいが、うまく原因調査できておらず、行き当たりバッタリの手当てになっている。

JDKの基本的な情報、調査方法、改善方法を調べた内容をメモしておく。

 

★Setは集合、重複無し。
Listはリスト。
LinkedListとArrayList

Java6:ArrayListは500万件で200数十ms。LinkedListは200万で数十ms。

Java8:ArrayListは2億件で100数十ms。LinkedListは5000万で100数十ms。

ArrayList、LinkedListいずれも拡張forがよい。
LinkedListのget(i)はめちゃくちゃ遅いので単純なfor(ループカウンタ)も遅い。途中の要素追加がある場合に使える。
ArrayListのcontainsはだめ、HashSetを使う。

Mapの要素はkeySetではなくentrySetでまわす。

 

★初期容量の指定
負荷係数を考慮しないような指定(n * 4 / 3 + 1)
http://d.hatena.ne.jp/Kappuccino/touch/20080723/1216787927


1) Map<K,V> map = new HashMap<K,V>();
2) HashMap<K,V> map = new HashMap<K,V>();
JITでないと1は2に比べて2倍以上遅い。
http://developer.android.com/intl/ja/guide/practices/design/performance.html#myths

★オートボクシングによる暗黙のnew
数値が-128〜127はキャッシュだが、これ以外はnewされる。
trove。
hppc。

★スレッドダンプ、ヒープダンプ、GC
jstack、jmap
http://www.techscore.com/blog/2016/02/05/%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89%E3%83%80%E3%83%B3%E3%83%97%E3%81%A7%E3%83%9C%E3%83%88%E3%83%AB%E3%83%8D%E3%83%83%E3%82%AF%E3%82%92%E8%AA%BF%E6%9F%BB%E3%81%97%E3%82%88%E3%81%86/


★CPU、I/O
uptime
dmesg | tail
vmstat 1
mpstat -P ALL 1
pidstat 1
iostat -xz 1
free -m
sar -n DEV 1
sar -n TCP,ETCP 1
top

https://yakst.com/ja/posts/3601

告白

湊かなえの告白を読みました。

 

告白 (双葉文庫) (双葉文庫 み 21-1)

告白 (双葉文庫) (双葉文庫 み 21-1)