ほぼ週刊てっくメモ

画像処理と自然言語処理を勉強して学んだことを小粒にまとめます

データセット内の画像をひとまず見てみるためのコマンド[Kaggle]

www.kaggle.com

import os
import numpy as np
import pandas as pd
from PIL import Image
import matplotlib.pyplot as plt

labels = pd.read_csv('../input/train_labels.csv')

fig = plt.figure(figsize=(25, 4))
# display 20 images
train_imgs = os.listdir("../input/train")
for idx, img in enumerate(np.random.choice(train_imgs, 20)):
    ax = fig.add_subplot(2, 20//2, idx+1, xticks=[], yticks=[])
    im = Image.open("../input/train/" + img)
    plt.imshow(im)
    lab = labels.loc[labels['id'] == img.split('.')[0], 'label'].values[0]
    ax.set_title(f'Label: {lab}')

f:id:Vastee:20190210134504p:plain


www.kaggle.com

import os
import numpy as np
import pandas as pd
from PIL import Image
import matplotlib.pyplot as plt

labels = pd.read_csv('../input/train.csv')

fig = plt.figure(figsize=(25, 4))
# display 20 images
train_imgs = os.listdir("../input/train")
for idx, img in enumerate(np.random.choice(train_imgs, 20)):
    ax = fig.add_subplot(2, 20//2, idx+1, xticks=[], yticks=[])
    im = Image.open("../input/train/" + img)
    plt.imshow(im)
    lab = labels.loc[labels['Image'] == img, 'Id'].values[0]
    ax.set_title(f'Label: {lab}')

f:id:Vastee:20190210134509p:plain

入力画像とラベルのパス,およびラベルの整形方法を考えれば基本的にどのデータセットでも適用可能.

コンテナとホストのフォルダを共有[Docker]

Dockerを使っていて最初に行き詰まるのは,コンテナとホストのファイルの共有をどうするかだろう.

フォルダを共有するためには -v コマンドの後に ホストのフォルダパス : コンテナのフォルダパス を書く.

実行後,指定したコンテナのフォルダパスに共有用のフォルダが自動で作られているので確認.

以下に例を載せる.

docker run -it -v /home/ubuntu/disk/share:/root/share --runtime=nvidia nvidia/cuda:7.5-cudnn5-devel-ubuntu14.04

私は,ホストのフォルダパスを /home/ubuntu/disk/share に,コンテナのフォルダパスを /root/share に設定するのが好きだ.

LeakGANをインストールしサンプルを動かすまで[GAN][NLP]

長文を生成可能なLeakGANをインストールし,サンプルを動かしてみたのでメモ.

まずはLeakGAN用のコンテナをインストール.このとき使ったのは,nvidia-docker2.

docker run -it --runtime=nvidia nvidia/cuda:7.5-cudnn5-devel-ubuntu14.04

コンテナに入り,パッケージをインストール.

# apt update
# apt install git
# apt install unzip

Anacondaに必要パッケージのインストール.

# apt install -y make build-essential libssl-dev zlib1g-dev libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev libncursesw5-dev libpng-dev

pyenvのインストール.

# cd ~
# mkdir git
# cd git
# git clone git://github.com/yyuu/pyenv.git ~/.pyenv
# git clone https://github.com/yyuu/pyenv-pip-rehash.git ~/.pyenv/plugins/pyenv-pip-rehash
# echo 'export PYENV_ROOT="$HOME/.pyenv"' >> ~/.bashrc
# echo 'export PATH="$PYENV_ROOT/bin:$PATH"' >> ~/.bashrc
# echo 'eval "$(pyenv init -)"' >> ~/.bashrc
# source ~/.bashrc

Anaconda(Python2系)のバージョンを確認.

# pyenv install -l | grep anaconda2
  anaconda2-2.4.0
  anaconda2-2.4.1
  anaconda2-2.5.0
  anaconda2-4.0.0
  anaconda2-4.1.0
  anaconda2-4.1.1
  anaconda2-4.2.0
  anaconda2-4.3.0
  anaconda2-4.3.1
  anaconda2-4.4.0
  anaconda2-5.0.0
  anaconda2-5.0.1
  anaconda2-5.1.0
  anaconda2-5.2.0

Anacondaをインストール.

# pyenv install anaconda2-2.4.0
# pyenv global anaconda2-2.4.0
# echo 'export PATH="$PYENV_ROOT/versions/anaconda2-2.4.0/bin:$PATH"' >> ~/.bashrc
# source ~/.bashrc

Tensorflow-gpu 1.2.1 をインストール.

pip install tensorflow-gpu==1.2.1

適当なディレクトリにLeakGANを落としてくる.

git clone https://github.com/CR-Gjx/LeakGAN.git

サンプルを実行.

cd Image COCO

python Main.py

サンプルを実行後,Image COCO/speech にファイルが出力される.

convert.py を使って,出力ファイルをテキストファイルに変換することができる.

スペックルを用いて隠れた位置にある物体を追跡[CVPR][論文読み]

Tracking Multiple Objects Outside the Line of Sight using Speckle Imaging (CVPR2018)

ieeexplore.ieee.org

f:id:Vastee:20190130151250p:plain

目的

障害物によって隠れた位置(Non-Line-Of-Sight)にある物体の動きを追跡すること.

技術的なキモ

物体とスペックルの動きの関係をシンプルに定式化したこと.

f:id:Vastee:20190130160903p:plain

f:id:Vastee:20190130151303p:plain


物体の動きによるスペックルパターンをシンプルな解法で抽出したこと.

以下に抽出の方法を簡単に説明する.

物体の動きによるスペックルパターン Iprim(p) は,壁のテクスチャ R(p) によって変調され,さらに2次スペックルパターンも含まれるので,カメラで観測されるパターン I(p) は以下のように定義される.

f:id:Vastee:20190130155222p:plain

ここで,平均画像(オブジェクトの動きを捉えた動画像の平均)を算出.

平均画像には,R(p) と Isecon(p) が含まれていると仮定.

f:id:Vastee:20190130155344p:plain

最後に,カメラで観測した画像を平均画像 Imean で割ると Iprim(p) が抽出される.

f:id:Vastee:20190130152017p:plain


複数物体の動きを分離するためのクラスタリング手法を提案 ( 読んでないので把握してません ) .

f:id:Vastee:20190130153743p:plain

先行研究との違い

複数の物体の動きを追跡できるようにした.

実験結果

隠れた場所にある物体の動きを正確に追跡できている... すごい!

f:id:Vastee:20190130154024p:plain

議論

TBA

応用先

救助活動やリモートセンシング,監視,医療に活用と論文に書いてあった.

備考

動画あり.

www.youtube.com

pd.read_csvでUnicodeDecodeErrorがでるときの対処法[Python][Pandas]

Windowsでpd.read_csvを使うと頻繁にエラーがでる.

エラーがでにくいcsvの読み込み方を見つけたので,メモ.

df = pd.read_csv("./hoge.csv",  engine="python", index_col=0)

engineでpythonを指定すると文字コードのエラーが発生しにくくなる.

index_colはデータフレームの左端の場所を指定しているだけなので,お好みで設定してください.