鹿児島ハードチル同好会

ブログ移行しました→ http://fuchami.com/

一度にたくさんの画像を開きたい傲慢な人向けのプログラミングの書き方

最近はプログラミングの勉強してるんですけど、TensorflowにてCNNを用いた文字認識モデルを作成してます。

 

こういう文字認識の正解率を問うときってMNIST(http://yann.lecun.com/exdb/mnist/)っていうデータセットが用意されていて、そちらを使う場合が多いみたいです。でも、やっぱり自分で描いた文字で認識させたいってのがありまして。

 
qiita.com


ここのサイトで実際にそれをやってます。
ただ問題なのはいちいち1~9まで引数として渡して実行~ってなると面倒くさい(やり方が分からない。その為毎回学習の過程からさせちゃってて1つの文字認識させるのに1時間半くらいかかっちゃう)ので、全部一気にさせる方法というか、複数の画像を一気に読み込む方法を紹介。

one.jpg
two.jpg
eight.jpg

みたいな感じで読み込ませたい画像のファイル名を入力したmath.txtというファイルを作ります。以下がpythonにて作成したソースコードです。


# coding:utf-8

from PIL import Image
import numpy as np
import sys
import matplotlib.pyplot as plt


#ファイルを開く
f = open('math.txt', 'r')


#1行毎に画像を読み込む
for line in f:
  print line
  #改行削除
  name = line.rstrip()
  print name
  #画像の読み込み
  img = Image.open(name)
  print img


  #画像をarrayに変換
  img = np.asarray(img)
  print img
  #貼り付け
  plt.imshow(img)
  #表示
  plt.show()

ポイントは

#改行削除
name = line.rstrip()

の部分。pythonは改行されるのが仕様?みたいなんでここで改行を削除しないとちゃんと実行出来ません。


そんで実行結果がこちら。
lineの表示では改行されてますが、nameを表示してみるとちゃんと改行が削除されてるのが分かりますね。
画像表示のコードはおまけ、というか備忘録代わりに。

/python$ python math.py
one.jpg


one.jpg
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=28x28 at 0x7F9EE973C320>
[[[255 255 255]
  [255 255 255]
  [255 255 255]
  ..., 
  [255 255 255]
  [255 255 255]
  [255 255 255]]


 [[255 255 255]
  [255 255 255]
  [255 255 255]
  ..., 
  [255 255 255]
  [255 255 255]
  [255 255 255]]


 [[255 255 255]
  [255 255 255]
  [255 255 255]
  ..., 
  [255 255 255]
  [255 255 255]
  [255 255 255]]


 ..., 
 [[255 255 255]
  [255 255 255]
  [255 255 255]
  ..., 
  [255 255 255]
  [255 255 255]
  [255 255 255]]


 [[255 255 255]
  [255 255 255]
  [255 255 255]
  ..., 
  [255 255 255]
  [255 255 255]
  [255 255 255]]


 [[255 255 255]
  [255 255 255]
  [255 255 255]
  ..., 
  [255 255 255]
  [255 255 255]
  [255 255 255]]]


f:id:fuchami:20160720031059p:plain

こんな感じで複数の画像ファイルをリストにでも突っ込んでfor文回して1つずつ評価させればいいんじゃないですかね。
まだ実装してないんですが。

2017/02/08
だいぶ放置してましたが近いうちに実装したやつとかのいろいろを更新しようかと思います

やりました。
fuchami.hatenadiary.jp

同性愛描写のあるMV3選

なんか最近思ったのが好きなアーティストのMVが大概同性愛の描写。そんなわけでオススメの3つです。リリース古めです。

 

 

 

1. Shura - Touch

youtu.be

 

ずっとチューしてるMV。

男女限定かと思いきや、同性でやってる描写がそこそこ

いつも思うけど髭って邪魔じゃないんですかね

 

 

2. Yumi Zouma - Tha Brae

youtu.be

 

こんな休日過ごしたいっすねって思いました。

芝生で寝たいし屋上に登りたい

 

曲について触れると後半3分ごろからいきなり男性ボーカル入ってくるのがずるい構成だなって。

どうでもいいけどキャストのところ見てみると


Starring:
Dasha Nekrasova as The Girl
Vishwam Velandy as The Boy
Lucile Littot as The Neighbor

 

ただの隣人らしい。

 

 

 

3. Garden City Movement

youtu.be

 

頭から、ギターの心地いいなーってなります

このアーティストめちゃくちゃ好きなので次のリリース早くお願いします

 

 

 

洋楽のMVってなんでこんなにいい映像のものが多いんだろうなっておもったら日本のMVみたいに本人が歌ってたり演奏してる描画がほとんど無いからだなって気づいた。辞めたほうがいいと思う

Windows10とUbuntuのデュアルブートをやってみた話

ちょっと途中で引っかかったんで一応記事に書いておきます。

 

大学の講義で人工知能を使ったプログラミング課題が出たので何をやるかいろいろ探してみたら

d.hatena.ne.jp

 

やっぱり流行りのディープラーニングがやってみたいなってことで。

その中でもGoogelのTensorflowというライブラリが気になったんですけどこれ使えるのがMac OSLinuxだけみたいでWindowsじゃ動かないらしいんです。

ってことでUbuntuをサブのノートパソコンに入れてみました。

 

 

ここらへんの記事を参考に導入を開始

(UEFI環境 編)Microsoft Windows10 と Ubuntu 14.04 LTS とのデュアルブート環境の構築 | えび天サーバ ( abten server )

Ubuntu16.04 + Windows10 のデュアルブート環境を構築する - 俺とプログラミング

 

WindowsUbuntuでHDDのディスク領域をわけないといけないのですが僕の環境ではすでにCドライブとDドライブに分かれてたのでDドライブにUbuntuを突っ込むことに。

早速OSをインストールしていくのですがここで問題発生

インストールの種類のこうでは、必ず、それ以外を選択して自分でパーティションを選択してあげます。
先ほど縮小した
「空き領域」を選択して、「+」ボタンを選択。
「サイズ」は4GB程度、
「新しいパーティションのタイプ」は「基本パーティション」、
「新しいパーティションの場所」は「この領域の終点」、
「利用方法」は「スワップ領域」として、「OK」を選択。

これでスワップ領域が確保されます。
次に、残りの空き領域を全てUbunuの領域にします。
「空き領域」を選択して、「+」ボタンを選択。
「サイズ」は 空き領域全ての大きさ
「新しいパーティションのタイプ」は「基本パーティション」、
「新しいパーティションの場所」は「この領域の始点」、
「利用方法」は「ex4ジャーナリングファイルシステム」、
「マウントポイント」は「/」として、 「OK」を選択。

最後に、
ブートローダをインストールするデバイス」の項は、搭載されているSSDもしくはHDD(sda)を選択して、
インストールをクリック。

 

って書いてあった通りにしてみたんですけどスワップ領域の確保後に次のパーティションが作れない現象が発生しました。

???ってなって調べてみると基本パーティションってひとつのHDDで4つしか作れないみたいなんです。

HDDのパーティションを見てみると、

1.Windows10のOS領域

2.リカバリ?バックアップ?用の領域

3.ブートローダー領域

になってました。このノートPCに光学ドライブがついてないんでリカバリ?の際にリカバリディスクとか読み込めないんでそのかわりにHDD内に既に組み込んであるのではないか(ちょっとココらへん詳しくないのでわからない)と勝手に憶測。

ってなわけでスワップ領域作っちゃうと4つパーティション作ることになっちゃってもうそれ以上作れなかったわけです。

 

その時の解決策として基本パーティションではなく論理パーティションを使います。

基本パーティションと論理パーティションの違い - KNOPPIXのススメ

今回はswap領域を基本パーティションではなく論理パーティションとしておくと次のパーティション(Ubuntu OSの領域)が作成できました。

 

 

 

 

 

 

f:id:fuchami:20160622190806j:plain

最終的にこんな感じ

sda1 がブートローダ

sda2がリカバリファイル領域?(正直これ消せば問題なく進んだんだけど何か分からないし怖くて消せなかった)

sda3がWindows10

sda5がswap領域(倫理パーティション)

sda6にUbuntu

 

という感じです。(sda4がないのもよくわからない)

あとは流れるままにインストールを進めて再起動したら無事にOS選択画面も出てWindows,Ubuntu共に起動出来ました。

ってことでやっと人工知能の勉強ができます(できない)