機械学習に必要なアノテーションツールをwindowsにインストールする方法

機械学習に必要なアノテーションツールをwindowsに入れる方法についてのメモ。

ここではアノテーションツールとしてlabelimgをインストールした。

 

ちなみに環境は以下のようになる。

windows10 64 bit

python 3.6

PyQt5

labelimg 

 

(0)anacondaのインストール

これは他のサイトでたくさん紹介されているので割愛。

 

(1)PyQt5のインストール

(1−1)ここから、win-64/pyqt-5.6.0-py36hb5ed885_5.tar.bz2をダウンロードする。(多分pyqt-5.9でもいいはず)

 

(1−2)データのある場所に移動して、以下のコマンドを実行する。

conda install pyqt-5.6.0-py36hb5ed885_5.tar.bz2

 

(1−3)以下のコマンドでインストールを確認する。

pyrcc5 -version

ちゃんとヴァージョンが出てきたらインストール完了。

 

(2)labelimgのインスール

(2−1)ここのファイルをダウンロードし、解凍する。

(自分は緑色の”Clone or download”からDownload ZIPでダウンロードし解凍した。)

 

するとlabelimg-masterというフォルダーがデスクトップに現れるはず。

 

(2−2)labelimg-masterの中に入り以下のコマンドを実行する。

pyrcc5 -o resources.py resources.qrc

python labelImg.py

これで自分は上手くいった。

 

以下のサイトを参考にした。

GitHub - tzutalin/labelImg: LabelImg is a graphical image annotation tool and label object bounding boxes in images

 

画像アノテーションツール「labelImg」を使って認識結果をアノテーションに再利用する

 

関連記事 

haitenaipants.hatenablog.com

 

VBAでmaxifとminif

条件付きで最大値、最小値を求めるコードを書いたのでメモ。 

f:id:haitenaipants:20180605234712p:plain

 以上のようなデータがある時、赤組に限った場合の最大値を求めたい。 

 

0)環境

 Microsoft Excel for Mac 2011

 

1)準備:ReDim Preserve

ReDim Preserveを使えば、配列内のデータを保ったまま、配列の大きさを変更することができる。

例えば

Sub test()

 

Dim A() 

 

For i = 1 To 3

  ReDim Preserve A(i)

  A(i) = i

Next

 

End Sub

とするとA(1)=1, A(2)=2, A(3)=3となる。

 

逆にpreserveがないと

A(1)="", A(2)="", A(3)=3

となる。これは、ただのReDimでは配列内のデータが初期化されてしまい、A(1)とA(2)の値が保持されないからである。

 

 以下のサイトを参考にした。

VBAのReDim Preserveとは:エクセルマクロ・Excel VBAの使い方-配列

 

2)最大値を求めるコード

Sub maxif()

 

Dim RedArray()

Number = 0

 

Start = 2

Last = 12

 

For i = Start To Last

  If Range("A" & i) = "赤組" Then

    Number = Number + 1

    ReDim Preserve RedArray(Number)

    RedArray(Number) = Range("B" & i)

  End If

Next

 

MsgBox WorksheetFunction.Max(RedArray)

 

End Sub

 

ここでRedArrayは、赤組のデータを格納する配列、Numberはその要素数である。

 

またStartLastは入力データの最初の行数と最後の行数である。

 

For ~ Nextは、もしA列の値が"赤組"ならB列の値をRedArrayに追加していく繰り返し文である。

 

.Max(RedArray)は配列RedArrayから最大値を求める関数である。

最小値を求めたい場合は.Min(RedArray)とする。

 

pipを使わずwindows10にtesseractとPyOCRをインストールする方法

pipを使わずにtesseractPyOCRを入れる方法に関するメモ。

参考にされる方は自己責任でお願いします。

 

ちなみに以下のような環境を構築した。

Windows10 64bit

python 3.6

OpenCV 3.4.1

tesseract 3.02

PyOCR 0.5

 

(1)anacondaを入れる

これは他のサイトさんでたくさん説明されているので割愛。

 

(2)OpenCVを入れる

ここopencv_python-3.4.1-cp36-cp36m-win amd64.wmlをダウンロード。

 

ダウンロードしたファイルがある場所に移動し、以下のコマンドをうつ。

pip install opencv_python-3.4.1-cp36-cp36m-win amd64.wml

pipを使っているが外部からインストールするわけではないのでセキュリティとかにはかからないはず。

 

以下のサイトを参考にした。

OpenCV3.4とPython3.6をAnacondaでWndows10へインストール

 

(3)tesseract-OCRのインストール

ここからtesseract-ocr-setup-3.02.02.exeをダウンロードし、インストールする。

 

インストール先はメモしておく。自分の場合はall userじゃない方なので、

 C:Users/ユーザー名/AppData/Local

 に保存された。

 

以下のサイトを参考にした。

tesseract-ocr でOCR - はしくれエンジニアもどきのメモ

 

(4)tesseract-OCRの設定

(4−1)tesseract-OCRpathが通っていないことの確認

インストールしたのはいいものの、なぜかpathが通っていない。実際、tesseractのヴァージョンを確かめる以下のコマンド

tesseract -v        

を実行しても、”〜は内部コマンドまたは外部コマンド〜”とか出るはず。

 

(4−2)tesseract-OCRにpathを通す

setコマンドで一時的にTesseract-OCRにpathを通す。自分の場合は以下のコマンドを用いた。

set path=%path%;C:\Users\ユーザー名\AppData\Local\Tesseract-OCR

 

一時的にpathを通すだけなので再起動の必要はないが、コマンドプロンプトを終了したら消えてしまうので注意。

 

これでtesseract -v を打っても大丈夫なはず。

 

(4−3)tesseract-OCRに言語データへのpathを通す

ただし上のpathだけでは、言語データ(〜¥Local¥Tesseract-OCR¥tessdataにあるeng.traineddataなどのこと)へアクセスできない。

 

これは言語データへアクセスするためのpathである"TESSDATA_PREFIX"が設定されていないためである。そこで、以下のコマンドを実行する。

set TESSDATA_PREFIX=C:\Users\ユーザー名\AppData\Local\Tesseract-OCR

 

ここで注意したいのは、言語データは〜¥Local¥Tesseract-OCR¥tessdataにあるが、その一つ前のフォルダーである〜¥Local¥Tesseract-OCRにpathを通す必要がある。

 

以下のサイトを参考にした。

tesseract3.02.02をソースからインストール - DRYな備忘録

 

 

(5)PyOCRのインストール

ここからwin-64/pyocr-0.5-py36h6a457c8_0.tar.bz2をダウンロード。

 

ダウンロードしたファイルがある場所に移動して、以下のコマンドをうつ。

conda install pyocr-0.5-py36h6a457c8_0.tar.bz2

 

(6)PyOCRのインストール確認

(6−1)PyOCRのインストール確認1

pythonを起動して、以下のコマンドをうつ。

from PIL import Image

import sys

import pyocr

import pyocr.builders

これで何もでなければ、PyOCRのインストールはうまくいっているはず。

 

(6−2)PyOCRのインストール確認2

上のコマンドに続けて以下のコマンドを入力する。

tools = pyocr.get_available_tools() 

if len(tools) == 0:

 print("No OCR tool found")

 sys.exit(1)

 

ここでpyocr.get_available_tools()~/Local/Tesseract-OCR/tesseract.exeを呼び出すモジュールである。

もし"NO OCR tool found"とでたら、(4−2)で行ったpathの設定がうまくいっていない。実際自分は、

set path=%path%;C:\Users\ユーザー名\AppData\Local\Tesseract-OCR

を以下のようにしていて詰まっていた。

set path=%path%;"C:\Users\ユーザー名\AppData\Local\Tesseract-OCR"

 

(6−3)PyOCRのインストール確認3

上のコマンドに続けて以下のコマンドを入力する。

langs = tool.get_available_languages()

print("Available languages: %s" % ", ".join(langs))

これで何もでなかったらちゃんとインストールできている。

 

もしraise Tesseract Error(ret, "unable to get languages")とかがでたら、(4−3)の"TESSDATA_PREFIX"がちゃんと設定されていないためである。

 

あとは他のサイトさんの説明されている通りにやったらうまくいった。

 

以下のサイトを参考にした。 

 tesseract-ocr でOCR - はしくれエンジニアもどきのメモ 

 

関連記事 

haitenaipants.hatenablog.com

 

誰とも友達になれない男と誰とでも友達になれる女

が出会ったらどうなるのだろうか。どちらが勝ってしまうのだろうか。

 

1)誰とも友達になれない男

・なんていうヤツは大抵、何を考えているのかわからず周りから敬遠されているだけなのに、自分は実は一目置かれているとか勘違いしちゃってる痛いやつ。

・自分から話しかけられない。

・大した趣味もない。

・けど寂しがり屋さん。

 

「自分の周りに人はいっぱいいるけど〜、心の底から心開いてないっていうか〜」とかそーいうヤツはどうでもいい。

 

2)誰とも友達になれる女

・大抵明るいし可愛いし人気者。

・自分から話しかけにいく。

・優しい、気がきく。

 

上のようなタイプとはちょっとずれるけど、あんま目立たないのに気付いたら人に囲まれてるような娘っていいよね!

 

3)実際に出会ったらどうなるかについて考察

一般に、誰とも友達になれないような男は、知り合った女性全員を好きになってしまう。

 

一方、誰とでも友達になれる女からしたら男友達はただの友達である。

 

つまり

 

男から見た女→友達以上の存在。つまり友達と思っていない。

 

女から見た男→ただの友達。つまり友達と思っている。

 

さて、友達という関係性は、お互いが友達であると認識した上で成り立つ。

なぜなら、片方が友達と思っているような関係性は友達とは言えないからである。

 

ここで、男が女を友達以上と見なしていることを考えると、男と女は友達ではない。

すなわち、誰とも友達になれない男と誰とでも友達になれる女が出会うと、女の方に矛盾が起きることになる。

このことから、誰とも友達になれない男が女に対して勝ってしまうことがわかる。

言い換えれば、誰とも友達になれない男はやはり誰とも友達になれない。

 

こんなラノベありそうだなと思ってちょっと考えたけど、すごい悲しい気持ちになった。

 

4)実際に出会ったらどうなるかについて再考

あまりにも悲しすぎるので再考してみた。

 

男「勢い余って女さんに告白してしまった」

男「返事を聞く前に逃げてしまったが」

男「…」

男「でも、本当は恋人になりたいとかそーゆんじゃなくて」

男「楽しいからそばにいたいというか」

男「女さんとなら振られたことさえ笑い話になっちゃうな…ははは」

男「明日謝らなきゃな」 

 

・・・

 

女(男に告白されてしまった…)

女「」

女「す、すきでしゅ!」

女「噛むやつがあるかー」

女「…」

女「……」

女「ん〜〜〜」ゴロゴロニヤニヤ

 

・・・

 

男は友達というものを知り、女は友達以上の気持ちを知ってしまった。

もうそこには、誰とも友達になれない男も誰とでも友達になれる女もいなくなっていたのである。(終)

 

5)結言

ラブアンドピース

 

 

 

 

英語の音読を楽しくする方法

どうすれば英語の音読が楽しくなるのか考えたことについてのメモ。

 

(1) そもそもなぜ音読がつまらないのか

(1−1)単調だから

ただ音読するだけというのは単調な作業の繰り返しであり、マンネリを感じやすい。

 

(1−2) できる/できないの差が曖昧だから

例えば同じ文を百回音読したとして、自分の中の何が変わったのか分かりづらい。

つまり、自分のできないことは何で、音読によりそれを克服できたのか?が曖昧である。

そのため何回音読を繰り返しても、達成感があまり感じられない。

 

以上の理由から、自分の中で音読がつまらないものになってしまっていると考えた。

 

(2)対応策:音声入力を使う

 iphoneについてるメモ帳では、音声入力により英語を書き出すことができる。

ただしこの音声入力には発音の精確さが求められる。つまり、以下のようになる。

         発音できてる単語→iphoneに認識される

       発音できていない単語→iphoneに認識されない 

 

発音できない単語を発音できるようになるには、 試行錯誤や舌の位置等を工夫をする必要がある。つまり、音読によるマンネリを防ぐことができると考えられる。

 

また、発音できていない単語が発音できるようになると言うのは、できる/できないの差がはっきりしている。つまり、音読による達成感を得られやすいと考えられる。

 

(3)実際に一ヶ月行った結果

(3−1)発音が良くなった

発音の難しいgirlやyearがちゃんとiphoneに認識されるようになった。このことから、少なくとも英語の発音が良くなったと考えられる。

 

(3−2)普通の音読に比べれば楽しいと感じる

発音できない単語に出会うと試行錯誤や工夫をする必要があるので、マンネリを感じることは少なかった。それとは引き換えに、どうしてもiphoneに認識されない時はイライラや投げ出したい衝動にかられる。

ただし、そういうイライラ等があったからこそ、発音できなかった単語が iphoneに認識されたときは達成感を感じた。

 

また、(3−1)で述べたように発音が良くなると純粋に嬉しく、やりがいを感じることができる。

 

(4)問題点

(4−1)勉強の進行速度が遅くなる。教材としてtoeic公式問題集のpart5〜7を用いていたが、普通の音読だったら1日に5から6ページ進んでいたのが、1から2ページしか進まなくなった。発音できない単語のところで時間が取られてしまったためである。

 

これの対応策としてあまりストイックになりすぎないようにした。どうしても発音できない単語は飛ばしたし、まぐれで発音できてもそれでよしとした。ただしそれでも勉強の進行速度は遅い。

 

(4−2)発音記号の通りに単語を発音しているはずなのに、iphoneが認識してくれない時がある。これには二つの可能性が考えられる。つまり、自分の発音がおかしい、またはiphoneの認識がおかしいという可能性である。(どちらもおかしい場合もあるがこれは割愛)

 

ただし、どちらがおかしいかの判定はすぐできる。電子辞書などを用いて、正しい単語の音をiphoneに聴かせるのだ(自分はkindle fireウィズダム英和・和英を入れて聴かせていた)。これにより

iphoneが正しく認識→自分の発音がおかしい

iphoneが正しく認識しなかった→iphoneがおかしい

ということになる。

 

これを用いて判定を行い、自分がおかしい時は試行錯誤を繰り返し、iphoneがおかしい時はその単語をスキップした。

 

pipを使わずにtensorflowとkerasをwindowsにインストール

tensorflowをpip installを使わずにインストールした時のメモ。

参考にされる方は自己責任でお願いします。

 

ちなみに以下のような環境になりました。適当に最新(2018年5月24日現在)のをインストールしました。

windows 10 64bit

python 3.6

tensorflow 1.8.0 (cpu版)

 keras 2.1.5

 

(1) anacondaのインストール

これは他のサイトさんでいっぱい説明されているので割愛。

 

(2) tensorflowのインストール

(2-1) ここからwin-64/tensorflow-1.8.0-py36_1.tar.bz2をダウンロード。

   

(2-2) ダウンロードしたファイルがある場所で以下のコマンドを実行する。

  conda install win-64/tensorflow-1.8.0-py36_1.tar.bz2

   

(2-3)pythonを起動して、以下のコマンドでtensorflowをimportする   

  import tensorflow as tf

これを実行するとgoogleとかいうmoduleがありませんと怒られるはず。

 

(3) protobufのインストール

正直protobufが何かはわからないです。protocol bufferの略らしいですが。

なんか.protoのファイルから.pyのファイルを作り出すみたいな役割みたいです。(間違ってたらすいません)

例)protobuf test.proto → test.py

Protocol Buffers 入門

 

(3-1)ここからwin-64/protobuf-3.5.2-py36h6538335_0.tar.bz2をダウンロード。

 

(3-2) ダウンロードしたファイルがある場所で以下のコマンドを実行する。

  conda install win-64/protobuf-3.5.2-py36h6538335_0.tar.bz2

   

(3-3)pythonを起動して、以下のコマンドでtensorflowをimportする   

  import tensorflow as tf

これを実行するとabslとかいうmoduleがありませんと怒られるはず。

 

(4) abslのインストール

正直abslが何かはわからないです。Abseilの略らしいですが。

なんかgoogle関係のコードの土台になっているらしいです。

abseil / Welcome to Abseil!

 

(4-1)ここからwin-64/absl-py-0.2.1-py36_0.tar.bz2をダウンロード。

 

(4-2) ダウンロードしたファイルがある場所で以下のコマンドを実行する。

  conda install win-64/absl-py-0.2.1-py36_0.tar.bz2

   

(4-3)pythonを起動して、以下のコマンドでtensorflowをimportする   

  import tensorflow as tf

自分の場合はこれでうまく行きました。

 

(5) kerasのインストール

(5-1)ここからwin-64/keras-2.1.5-py36_0.tar.bz2をダウンロード。

 

(5-2) ダウンロードしたファイルがある場所で以下のコマンドを実行する。

  conda install win-64/keras-2.1.5-py36_0.tar.bz2

   

(5-3)pythonを起動して、以下のコマンドでtensorflowとkerasをimportする   

  import tensorflow as tf

       import keras

  これをすると

  Using theano backend 

  が出て、theano とかいうmoduleがありませんと言われるはず。

 

(5-4) ~/anaconda3/etc/activated.d/keras_activated.datの中身を

  set "KERAS_BACKEND=theans" から

  set "KERAS_BACKEND=tensorflow"

  に変更する。自分はこれで(5-3)のコマンドを行ったら上手くいきました。

  (参考サイト)

  KerasのバックエンドがTheanoから変更できなくなった話 - 粗大メモ置き場

 

関連記事

haitenaipants.hatenablog.com

 

haitenaipants.hatenablog.com

 

感想『なぜあなたは「愛してくれない人」を好きになるのか』

この本を参考に、自分なりに失恋を振り返るフローチャートを作りました!

よかったら使って下さい!感想じゃないですね!

 

1)距離を置く

精神的にも物理的にもです。相手と自分を冷静に見れるようになるまでです。

 

ここで注意なのは、復縁を目的として距離を置くわけではありません!

「追えば逃げる、逃げれば追う」なんていう恋からは卒業です!(自分に言ってますはい)

 

復縁のために距離を置くのではなく、まず冷静になるために距離を置きましょう!

 

もし難しいようなら任天堂Switchと「ゼルダの伝説 ブレス オブ ザ ワイルド」買いましょう!一週間は無心でいられます!

 

2)自分を知って、自分を許す

振られた時は別れた原因を明らかにするべきと言われています。

それ自体には賛成なんですが、正直相手がなぜ振ったのか分からないことも多いですよね。

相手自身もなぜ冷めてしまったのか分からないということもあります。

 

けれど自分のことなら考えやすいはずです!

自分はなぜあの時あんなに怒ってしまったのか。

逆に相手がどういう風に行動してくれたら嬉しかったのか。

 

こういうことを考えると、今回のことだけじゃなく、いままでの交友関係のいざこざと根っこの部分が繋がっていることが多いです!

 

そしてそれを許してあげましょー!

やっぱり人間ですから大人になりきれない所はあると思います。

もちろん、ほっとくのでは無く、それは次の恋での課題です。 

 

3)あきらめる

あきらめると言っても悪い意味じゃーありません!

 

いまの自分と相手じゃどうしようも無いことを認めるのは悔しいかもしれません!

離れてしまったあの人とはもう出会えないかもしれません!

 

けれど、いつの日か、この別れを感謝できる日が来るのを信じて、あきらめるんです。

 

4)ビョークのAll is Full of Love を聞く!

良い曲です!

 

 

AV監督の方が書いた本ということですが、なんか全体的に優しさの溢れた本だなと思いました!

恋の本当の目的は「相手を得る」ことではなく自分を「わかる」ことにあるのです。

特にこの一文には、もの凄く救われた気分になりました。

本当に著者に感謝です。

 

著者の他作品も要チェックですね!(映像作品とか)