So-net無料ブログ作成
前の10件 | -

Rasberry Pi のPythonでRAW現像プログラムテスト [Raspberry Pi]

rawpyというPythonのモジュールでカメラのRAWファイルを読み込んで、
自分でRAW現像のプログラムがかけるという情報を得たので試してみた。
なお、作ったプログラムはgithubに置いてあるので、参照してください。
(ブログ中の画像ファイルはすべて画素数を小さく加工してあります)

参考記事 というか、下記の手順をそのまま試してみた。
ゼロから作るRAW現像その1 - 基本的な処理
http://uzusayuu.hatenadiary.jp/entry/2018/09/23/162412


1. 必要なモジュールのインストール
 % pip3 install rawpy
 としてみるとなにやら libraw が無いというようなエラーが出た。
 Raspberry Pi では使えないかと一瞬思ったが、librawというのが必要なのかも? と思い
 % sudo apt-get install libraw-bin libraw-dev libraw-doc
 % pip3 install rawpy
 あっさりインストール出来た。ついでに他に必要なモジュールもインストールしておく。
 % pip3 install imageio

2. 最初のテスト
 まずはrawpyがPENTAXのRAWファイル (*.PEF) に対応してるかが不安だったので、
 RAWファイルを読み込んで、RAWファイルの情報を取得するものを作ってみる。
 ファイルは raw_info.py (github参照)
 実行してみると、(下記は一部のみ表示)
 % python3 raw_info.py
 camera_whitebalance
 [13312.0, 8192.0, 9152.0, 8192.0]
 color_desc
 b'RGBG'
 sizes
 ImageSizes(raw_height=2624, raw_width=3936, height=2616, width=3896, top_margin=0, left_margin=0, iheight=2616, iwidth=3896, pixel_aspect=1.0, flip=5)
 ちゃんと情報が表示された。PENTAXに対応してて良かった。

3. try1 RAWファイルを読み込んで無理やり表示
 今回のテストとして下記のRAWファイルを入力した。
 ただし、この画像は通常の現像ソフトを使って明るさやコントラストなどを調整した画像です。
IMGP0243_e01_sa2_c2_1024_s.jpg

 最初のファイルは try1.py (githubを参照)。
 実行した結果はこうなった。
try1_s.png
 なんとなくRAWファイルが読み込めているのが分かる。
 縦横が違うのは最後に調整すればいいので、今は気にしない。

4. try2 Black level 調整
 黒レベルの調整を行ってみる。
 ただし調整するためのblack_level_per_channelの値が[0, 0, 0, 0]なので変化はないはず。
 ファイルは try2.py (githubを参照)
 結果は下記の画像。
try2_s.png
 全然変わってない。

5. try3 demosaicの実行
 RAWファイルの1画素の値はRGBの値ではなくて、RかGかBのどれかの色の値しか持っていない。
 だいたい2x2の画素で下記のように配置されている (R=Red, G=Green, B=Blue)
   R G
   G  B
 これを合成することで各画素の色を作り出すようになっている。
 ただし、ここでは最初のお試しなので、4つの画素から1つの画素を作る簡易でモザイク処理を
 試してみる。(結果的に画素数は縦横半分の大きさになる)
  R = R
  G = 2つのGの値の平均値
  B = B
 という計算をして色を作り出して画像を作ってみた。
 ファイルは try3.py (githubを参照)
 結果は下記の画像
try3_s.png
 なんとなく色が出てるけど全体的に青っぽい感じ。

4. try4 ホワイトバランスの調整
 RAWファイルにcamera_whitebalance [13312.0, 8192.0, 9152.0, 8192.0] という値があるので
 これを利用してホワイトバランスの調整を行う。
 調整値は、下記の式になるらしい。
  R = 13312 / 8192
  G = 8192 / 8192
  B = 9152 / 8192
 ファイルは try4.py (githubを参照)
 これでRGBの値を調整した結果が下記の画像
try4_s.png
 全体的に暗いけど、赤みが増した感じ。try3の結果より色がいいが、ちょっと赤く感じる。

5. try5 ガンマ補正
 目に映る色の強度はリニアではないので、それに合わせてガンマ補正を行う。
 ファイルは try5.py (githubを参照)
 結果が下記の画像
try5_s.png
 コントラストが低めだけど、少し明るくなった感じ。

6. try6 カラーマトリクス補正
 カメラのセンサーの色の癖を見た目に合わせて調整する。
 ただしRAWファイルに保管されているcolor_matrixの値がすべて "0" だったので、
 かわりにrgb_xyz_matrix
  [[ 0.9566 -0.2863 -0.0803]
   [-0.717 1.5172 0.2112]
   [-0.0818 0.0803 0.9705]
   [ 0. 0. 0. ]]
 を利用してみた。
 ファイルは try6.py (githubを参照)
 結果が下記の画像。
try6_s.png
 赤が強すぎて色味がエグい感じに見える。
 たぶんrgb_xyz_matrixを使うのが間違いな感じ。これは失敗。

とりあえずここまでで try5.pyの結果、RAWファイルから画像ファイルを作り出せるようになった。
PythonでRAWファイルの現像を自分で試せるとは思っていなかった。
しかもRaspberry Piで動くのは便利。
処理時間はtry5.pyで10分くらい時間がかかっているのはしょうがないかな?

nice!(0)  コメント(0) 

Pythonistaでgitを使う [Pythonista]

プログラムのソース管理である Github に Pythonistaから直接アクセスして、
作ったプログラムを登録してみた。

1. まずはgithub にアカウントの登録
 https://github.co.jp/ でアカウントを登録し、
 その後に "New repository" から新しいレポジトリを作っておく。
 するとそのレポジトリは "https://github.com/アカウント名/レポジトリ.git" でアクセス出来るようになる。

2. Pythonista で git を使う環境 stash をインストールする
 Pythonista を起動し、画面の右から左へスワイプするとコンソール画面が出るので、
 そこで、
 
    import requests as r; exec(r.get('http://bit.ly/get-stash').text)
 

 とするとインストールが始まるので、
 
    Installation completed.
 

 と出るのを待つ。
 終わったらPythonistaを再起動(ホーム画面ダブルタップからPythonistaを上へスワイプして終了し、再度起動する)
 するとPythonistaのホームに "launch_stash.py" が配置されるので、それを選択して実行すると、
 シェルが起動する。

3. gitを使ってみる
 stash を起動して、githubに登録したいファイルのあるディレクトリに移動する。
 
    $ cd (directory)
 

 git の初期化をする。
 
    git init .
 

 なにやらエラーが出てうまく動いていない様子。
 
    gittle  already exists
    funky already exists
 

 調べてみたけど的を得た解答が見つからなかったけど、ふとPython 2.7で実行することを思いつく。
 stashを実行するときに実行ボタンを長押しするとPython 2.7を選択できるので、そこから実行し、
 gitの初期化をしてみる。
 
    git init .
 

 エラーが出なくてうまく動いている様子。ls -a で見ると ".git" ディレクトリも出来ているので、うまく出来た。
 まずはローカルレポジトリにファイルを追加して、commitする。
 
    git add (ファイル名)
    git commit
 

 その後 Github へ登録してみる。
 
    git push https://github.com/(アカウント名)/(レポジトリ).git
 

 うまく出来たようなので、Webからgithubへアクセスしてファイルを確認してみると、
 ちゃんとソースが登録されていた。

Pythonistaから直接githubへアクセス出来るのはすごいな~
stash は普通のシェルだから、Pythonista上でプログラムのコピーは面倒なんだけど、
stash でディレクトリを作ってファイルコピーすればバックアップも簡単に出来る。
便利。

タグ:GitHub Pythonista
nice!(0)  コメント(1) 

PythonistaでSonyのデジカメのリモートコントロール [Pythonista]

Wifiに繋がるソニーのデジカメはWifi経由でカメラをコントロールするための
Camera Remote APIを公開しているので、
iPhone上で動くPythonistaから接続を試してみた。

1. SSDPでデジカメの接続先を探す
 iPhoneをデジカメのWifiに接続して、SSDPを送ることでカメラのIPアドレスと
 接続するURLを調べられるようだ。
 ということでPythonistaからSSDPを送ってみる。
import socket

MSEARCH_REQUEST_LINES = (
	'M-SEARCH * HTTP/1.1',
	'HOST: 239.255.255.250:1900',
	'MAN: "ssdp:discover"',
	'MX: %(timeout)s',
	'ST:urn:schemas-sony-com:service:ScalarWebAPI:1',
	'',
	''
)

timeout = 5
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.settimeout(timeout)
req = '\r\n'.join(MSEARCH_REQUEST_LINES) % {'timeout': timeout}
sock.sendto(bytes(req, encoding='utf-8'), ('239.255.255.250', 1900))
while True:
	try:
		res, device = sock.recvfrom(4096)
		print('----------- from %s' % (device,))
		print(res)
		print('-----------')
	except socket.timeout:
		print("timeout")
		break

sock.close()

 実行してみたけどtimeoutしてデジカメが検出出来なかった。
 不思議なことにiPhoneをデジカメのWifiに繋いでも、iPhoneのWifi接続マークが出なくて、
 "4G"のままになっていた。けど状態でソニーが作ったデジカメをコントロールするアプリはちゃんと動くし、さらに普通にネットにも繋がってるという、両方に繋がっている状態に見える。
 よくわからない状態だったので、ネットで調べてると接続先URLを見つけたのでそこへ接続することにした。

 後で分かったことだけど、デジカメにWifiで繋ぐと、デジカメのIPは10.0.0.1、iPhoneのIPは10.0.1.1となっているが、
 デフォルトゲートウェイが設定されていないせいで、SSDPの通信はデジカメに行かないでインターネット側に送っていたらしい。
 iPhoneの"4G"の通信を止めてやることで、上のプログラムを実行するとデジカメから反応があった。
b'HTTP/1.1 200 OK
CACHE-CONTROL: max-age=1800
EXT: 
LOCATION: http://10.0.0.1:64321/scalarwebapi_dd.xml
SERVER: UPnP/1.0 SonyImagingDevice/1.0
ST: urn:schemas-sony-com:service:ScalarWebAPI:1
USN: uuid:00000000-xxxx-xxxx-xxxx-xxxxxxxx::urn:schemas-sony-com:service:ScalarWebAPI:1
X-AV-Physical-Unit-Info: pa=""; pl=;
X-AV-Server-Info: av=5.0; hn=""; cn="Sony Corporation"; mn="SonyImagingDevice"; mv="1.0";

 このLOCATIONに書いてあるURLにアクセスすると、カメラをコントロールするためのURLを返してくれるらしい。

2. デジカメのコントロール
 JSONでカメラをコントロールするためのコマンドを書いてURLへ送ることでカメラが動いてくれるらしい。
 試しにシャッターを切るコマンドを送ってみた。
import json
import requests

SONY_CAMERA_URL = 'http://10.0.0.1:10000/sony/camera'

def sony_cam_control_1 ():
	req_body = json.dumps({
			'method' : 'actTakePicture',
			'params' : [],
			'id'     : 1,
			'version': '1.0'	})
	res = requests.post(SONY_CAMERA_URL, data=req_body)
	#print("%s" %(res))
	print(res.json())
	return res.json()

ret = sony_cam_control_1()

 ちゃんとシャッターを切ってくれた。
 これでカメラをコントロール出来るようになった。
 後はシャッターボタンとかのUIを作ってやれば、写真を撮るアプリが出来そう。


nice!(0)  コメント(4) 

Raspberry Pi で Tensorflow その2 [Raspberry Pi]

TensorflowがRaspberry Piを正式にサポートしたということなので、
再度インストールしてみた。

まずは前回インストールしたパッケージのアンインストール。
% sudo pip uninstall tensorflow


そしてTensorFlowのインストール
% sudo apt install libatlas-base-dev
% sudo pip3 install tensorflow


ちゃんと入ったか確認してみる。
$ python3
Python 3.5.3 (default, Jan 19 2017, 14:11:04)
[GCC 6.3.0 20170124] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import tensorflow
>>> hello = tensorflow.constant("Hello, TensorFlow")
>>> sess = tensorflow.Session()
>>> print(sess.run(hello))
b'Hello, TensorFlow'
>>> exit()

ちゃんとPython3 で動いている。

サンプルの画像分類を試す
前回と同じように実行したがエラーとなった。
$ python3 classify_image.py --model_dir ./imagenet/
Traceback (most recent call last):
  File "classify_image.py", line 227, in 
    tf.app.run(main=main, argv=[sys.argv[0]] + unparsed)
TypeError: run() got an unexpected keyword argument 'argv'


結果的には最後の行を下記のように修正して動くようになった。
tf.app.run()


nice!(0)  コメント(0) 

PythonからTweet [Raspberry Pi]

PythonのプログラムからTweetしてみる。

まずはPythonからTweetするモジュールがあるのでそれをインストールする。
モジュールはいくつかあるようだけど、Twythonを使ってみた。
% sudo apt-get install python3-twython


前に作ったTwitterのCONSUMER_KEYとACCESS_TOKENを下記のように config.py として保存する。
CONSUMER_KEY = "xxxx"
CONSUMER_SECRET = "xxxx"
ACCESS_TOKEN = "xxxx"
ACCESS_TOKEN_SECRET = "xxxx"


そして、Pythonで下記のように作る。twi.py
Jpegの画像ファイルと、日付をつけてTweetしてみる。
from twython import Twython
from PIL import Image
import io
import config

twitter = Twython(config.CONSUMER_KEY, config.CONSUMER_SECRET, config.ACCESS_TOKEN, config.ACCESS_TOKEN_SECRET)

photo = Image.open("data/20180805/photo_20180805_173503.jpg")
image_io = io.BytesIO()
photo.save(image_io, format='JPEG')
image_io.seek(0)

image_ids = twitter.upload_media(media=image_io)
twitter.update_status(status="20180805 173503", media_ids=[image_ids['media_id']])


無事につぶやけました。

nice!(0)  コメント(0) 

PythonからTwitterへTweetするための設定

PythonのプログラムでTweetするための設定をしたのでメモ

1. まずは専用のアカウントを作成する。
 https://twitter.com/ へ行ってTwitterのアカウントを作る。
 ただし、プログラムからのTweetをするようなアプリを作る目的の時は、電話番号も登録する必要がある。

2. Twitterの開発者登録をする。
 Twitterにログインしたまま、https://apps.twitter.com/ へ行く。
 すると、いろいろWebで調べてみた感じと違って、開発者登録が必要と出ている。
 どうやら2018年7月から変わったらしい。
 開発者登録画面には、アプリの詳細を書く場所があって、300文字以上入力しないといけないとかいてある。
 しかも英語で・・・
 しょうがないので簡単に100文字くらいで書いて、"aaaaa" って感じで埋めてみた。
 登録されたらメールが来ると書いてあったので待ってみた。 
 
 3日くらいたってようやくメールが来たが、メールには、
 もっとアプリの詳細を書け、としか書いてなかった・・・
 しょうがないので英文でもう少し細かい内容の説明を書いてメールを返信。
 
 さらに2日くらいたって、「登録されました」と返信メールが来た。
 やっとスタートライン。面倒になったなぁ。

3. Consumer API keysとAccess tokenを受け取る。
 http://developer.twitter.com/en/account/get-started へ行って、
 新しいアプリの登録をして、
 Consumer API keysとAccess tokenを受け取る。
 この辺は他のブログに良く書いてあるのと同じなので省略。

これでようやくTweetする準備が完了した。
今日はここまで。


nice!(0)  コメント(0) 

WindowsにOpenCV [OpenCV]

前回はRaspberry PiにOpenCVをインストールしてみたけど、
今回はWindows上にOpenCVをインストールしてみた。

Windows上にAnacondaをインストールしておくことが必要。
Anacondaのインストールは省略。
Anaconda Prompt を起動したところからスタート。

まずはOpenCVのインストール
 Anaconda Forge というところに最新版のOpenCVがあることを確認したので、
 そこからインストールする。
 % conda install -c conda-forage opencv

動作確認
 python
 >>> import cv2
 >>> print(cv2.__version__)
 3.4.1
 >>> exit()

 ちゃんと 3.4.1 がインストールされた。

前回と同じ、camera_face.py を試してみる。
 Haarの認識モデルは下記のディレクトリにインストールされていたので、コピーしてくる。
  c:\Anaconda3\pkgs\opencv-3.4.1-py35_200\Library\etc\haarcascades\

 % cp c:\Anaconda3\pkgs\opencv-3.4.1-py35_200\Library\etc\haarcascades\haarcascade_frontalface_alt.xml .

 そして前回と同じように camera_face.py を作る。(ブログの都合上全角スペースでインデントしているので修正が必要かも)
  import cv2

  def camera_capture():
   cap = cv2.VideoCapture(0)

   while True:
    ret, frame = cap.read()

    gray = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY)
    face = faceCascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=1, minSize=(1, 1))

    if len(face) > 0:
     for rect in face:
      cv2.rectangle(frame, tuple(rect[0:2]), tuple(rect[0:2] + rect[2:4]), (255,255,255), thickness=1)

    cv2.imshow('camera capture', frame)

    key = cv2.waitKey(1)
    if key == 27:
     break

   cap.release()
   cv2.destroyAllWindows()

  cascade_path = "haarcascade_frontalface_alt.xml"
  faceCascade = cv2.CascadeClassifier(cascade_path)

  camera_capture()

 そして実行
 % python camera_face.py

PCについてるカメラで取り込んで、顔の位置を認識してそこに四角い枠を追加して、
リアルタイムに表示された。

タグ:OpenCV
nice!(0)  コメント(0) 

Raspberry Pi で OpenCV [Raspberry Pi]

Raspberry Pi に OpenCV をインストールして、顔認識を試してみた。

OpenCVのインストール
 OpenCVをソースからビルドするのは時間がかかるので、今回はバイナリをインストールすることにした。

 % wget https://github.com/mt08xx/files/raw/master/opencv-rpi/libopencv3_3.4.1-20180304.1_armhf.deb
 % sudo apt install ./libopencv3_3.4.1-20180304.1_armhf.deb
 % sudo ldconfig

 動作確認
 % python -c 'import cv2; print(cv2.__version__)'
 3.4.1
 % python3 -c 'import cv2; print(cv2.__version__)'
 3.4.1

 ちゃんとOpenCVのバージョンが表示されてるので、インストールされている様子。


お試し1 画像ファイルの顔認識テスト
 OpenCVには最初から顔検出器用が用意されているのでそれを使用してみる。

 % vi face.py (ブログの都合上全角スペースでインデントしているので修正が必要かも)
  import cv2
  import os

  def face_detector(img_path, ):
   img = cv2.imread(img_path, cv2.IMREAD_COLOR)
   gray = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
   face = faceCascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=1, minSize=(1, 1))

   if len(face) > 0:
    for rect in face:
     cv2.rectangle(img, tuple(rect[0:2]), tuple(rect[0:2] + rect[2:4]), (255, 255, 255), thickness=2)
   else:
    print("no face")

   cv2.imshow("result", img)
   cv2.imwrite("outimg/" + os.path.basename(img_path), img);
   key = cv2.waitKey(0)

  cascade_path = "/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml"
  faceCascade = cv2.CascadeClassifier(cascade_path)

  img_files = os.listdir('inimg')
  for img_file in img_files:
   full_path_name = 'inimg/' + img_file
   print(full_path_name)
   face_detector(full_path_name)

 % mkdir inimg outimg

 顔が入っている適当な画像ファイルを inimgディレクトリに置いて、実行すると、
 顔を認識した部分に白い枠を追加して画像表示し、outimgディレクトリに出力してくれる。

 % pytone3 face.py

 うまく顔認識していることが確認出来た。


お試し2 USBカメラからのキャプチャ
 ラズパイ用のカメラもジュールは持っていないけどUSBにつなぐWebカメラ(130万画素)は持っているので、
 キャプチャしてみる。

 % vi getcamera.py (ブログの都合上全角スペースでインデントしているので修正が必要かも)
  import cv2

  def camera_capture():
   cap = cv2.VideoCapture(0)

   while True:
    ret, frame = cap.read()
    cv2.imshow('camera capture', frame)

    key = cv2.waitKey(1)
    if key == 27:
     break

    cap.release()
    cv2.destroyAllWindows()

  camera_capture()

 % python3 getcamera.py

 ちゃんとカメラから取り込んだ画像(640x480くらい)が15〜20フレーム/secくらいで表示された。
 ESCキーを押すと終了する。


お試し3 USBカメラからキャプチャして顔認識
 お試し1と2を組み合わせてリアルタイム顔認識を試してみる。

 % vi camera_face.py (ブログの都合上全角スペースでインデントしているので修正が必要かも)
  import cv2

  def camera_capture():
   cap = cv2.VideoCapture(0)

   while True:
    ret, frame = cap.read()

    gray = cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY)
    face = faceCascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=1, minSize=(1, 1))

    if len(face) > 0:
     for rect in face:
      cv2.rectangle(frame, tuple(rect[0:2]), tuple(rect[0:2] + rect[2:4]), (255,255,255), thickness=1)

    cv2.imshow('camera capture', frame)

    key = cv2.waitKey(1)
    if key == 27:
     break

   cap.release()
   cv2.destroyAllWindows()

  cascade_path = "/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml"
  faceCascade = cv2.CascadeClassifier(cascade_path)

  camera_capture()

 % python3 camera_face.py

 リアルタイムに顔認識出来るようになった。
 ただし 1〜2フレーム/sec とだいぶ遅くなった。

参考にしたサイトはここです。
http://uepon.hatenadiary.com/entry/2018/02/12/113432
https://qiita.com/mt08/items/e8e8e728cf106ac83218
https://tomosoft.jp/design/?p=8876


nice!(0)  コメント(0) 

Raspberry Pi で Tensorflow [Raspberry Pi]

Raspberry Pi で Deep Learning の Tensorflow を動かしてみる。

まずはインストール
 ここを見て、Raspberry Pi で動くバイナリパッケージのダウンロードの仕方を見ておく。
 Python3 が入っているので Python3用のパッケージをダウンロードする。
  % wget https://github.com/samjabrahams/tensorflow-on-raspberry-pi/releases/download/v1.1.0/tensorflow-1.1.0-cp34-cp34m-linux_armv7l.whl
 そしてインストールしてみると、
  % sudo pip3 install tensorflow-1.1.0-cp34-cp34m-linux_armv7l.whl
  tensorflow-1.1.0-cp34-cp34m-linux_armv7l.whl is not a supported wheel on this platform.
 エラーになった。
 どうやらダウンロードしたパッケージは Python3.4 用だけど、
 インストールされている Python は Python3.5 ということが判明。
 ソースからビルドしてもいいけど、今の目的は「とりあえず使ってみる」なので、
 Python2.7用のバイナリパッケージを使うことにしてみた。
 ダウンロードしてインストールする。
  % wget https://github.com/samjabrahams/tensorflow-on-raspberry-pi/releases/download/v1.1.0/tensorflow-1.1.0-cp27-none-linux_armv7l.whl
  % sudo pip install tensorflow-1.1.0-cp27-none-linux_armv7l.whl
 今度は問題なくインストール完了。
 インストール方法を見てみると、下記もやっておけと書いてあるので、やっておく。
  % sudo pip uninstall mock
  % sudo pip install mock

動くか確認
 hello_tf.py というファイルを作って、期待通り動くかを確認する。
  % vi hello-tf.py
   ======
   #hello-tf.py
   import tensorflow as tf
   import multiprocessing as mp

   core_num = mp.cpu_count()
   config = tf.ConfigProto(
    inter_op_parallelism_threads = core_num,
    intra_op_parallelism_threads = core_num )
   sess = tf.Session(config=config)

   hello = tf.constant('hello tensorflow')
   print sess.run(hello)

   a = tf.constant(10)
   b = tf.constant(32)
   print sess.run(a+b)
   ======
 そして実行
  % python hello-tf.py
 下記のように表示されれば問題なく動いたことになる。
  hello tensorflow
  42

サンプルの画像分類を試す
 Tensorflowにサンプルで用意されている画像分類を試してみる。
 既に学習まで終わった状態で提供されているので、すぐに動かして試してみることが出来る。
 ただ、ネットで少し検索するとTensorflowをインストールすると
 ~/tensorflow/tensorflow/models/image/imagenet/classify_image.py ファイルが出来ていると
 書いてあるが探してみても見つからない。
 どうやらTensorflow 1.1 ではパッケージには同梱されていない様子。

 よって、gihubから
classify_image.py をダウンロードしてきた。
  % mkdir imagenet
  % cd imagenet
  % wget https://raw.githubusercontent.com/tensorflow/models/master/tutorials/image/imagenet/classify_image.py

 初めの1回目は学習済みデータのダウンロードが行われてから、パンダの画像を使って
 パンダと認識するかが実行される。
  % python classify_image.py
  >> Downloading inception-2015-12-05.tgz 100.0%
  Successfully downloaded inception-2015-12-05.tgz 88931400 bytes.
  giant panda, panda, panda bear, coon bear, Ailuropoda melanoleuca (score = 0.89107)
  indri, indris, Indri indri, Indri brevicaudatus (score = 0.00779)
  lesser panda, red panda, panda, bear cat, cat bear, Ailurus fulgens (score = 0.00296)
  custard apple (score = 0.00147)
  earthstar (score = 0.00117)
 89%の確率でパンダであると認識できた。

 学習済みデータは Raspberry Pi を再起動すると消えてしまうので、ローカルに移動して
 実行できるか試してみる。
  % mv /tmp/imagenet/ .
  % python classify_image.py --model_dir imagenet/ --image_file imagenet/cropped_panda.jpg
 これで、ローカルにある学習データを使って画像の分類が出来た。

 ネットからいくつか画像データをダウンロードして、試してみた。
  猫画像
   % python classify_image.py --model_dir imagenet/ --image_file cat_1.jpg
   Egyptian cat (score = 0.49180)
   tiger cat (score = 0.25432)
   tabby, tabby cat (score = 0.14356)
   lynx, catamount (score = 0.03078)
   mouse, computer mouse (score = 0.01840)
  49%で Egyptial cat と認識した。

  飛行機雲 その1
   % python classify_image.py --model_dir imagenet/ --image_file jet_cloud_1.jpg
   airliner (score = 0.77991)
   wing (score = 0.04719)
   warplane, military plane (score = 0.03326)
   space shuttle (score = 0.02544)
   missile (score = 0.00422)
  78%で airliner。5%で wing。3%でwarplane と認識された。

  飛行機雲 その2
   % python classify_image.py --model_dir imagenet/ --image_file jet_cloud_2.jpg
   airliner (score = 0.38874)
   wing (score = 0.03683)
   ski (score = 0.03144)
   hook, claw (score = 0.02940)
   warplane, military plane (score = 0.02702)
  39%で airliner。4%で wing。3%でski と認識された。

  飛行機雲は分類にもなくて、学習データにもないんだろうな・・・

nice!(0)  コメント(0) 

Raspberry Pi で RetroPie を動かし、X68kのエミュレーターを起動する [Raspberry Pi]

Rasberry Pi に RetroPie を入れて遊んでみた

RetroPie というのはいろんなエミュレータをパッケージして、
一つのランチャーから各種エミュレータを実行できるものです。
しかもPS3のコントローラが使えます。

今回は、RetroPieのインストールからX68kエミュのインストールと、
Human68k の起動までを試してみます。

インストール
 RetroPie のサイトからイメージをダウンロードする。
 https://retropie.org.uk/ から、Raspberry Pi 2 用のイメージをダウンロードします。
 ダウンロードしたファイルはgzipファイルなので、7-zipなどで解凍します。
 自分は、Windowsマシンに Bash on Ubuntsu on Windows をインストールしてあるので、
 gzip -d *.img.gz で解凍しました。

microSDにイメージを書き込む
 http://www.si-linux.co.jp/techinfo/index.php?DD%20for%20Windows
 ここにある DD for Windows を使って、解凍したイメージファイルをSDに書き込みます。
 注意点は、管理者権限で実行すること。

RetroPieの起動と設定
 microSDをRaspberry Piへセットして、
 テレビ、キーボードとPS3のコントローラを接続して、電源を接続します。
 RetroPieのロゴが表示され、しばらくするとemulation stationが起動します。
 
 ゲームパッドの設定
  初回は、ゲームパッドの設定画面が表示されるので、
  https://cloud.githubusercontent.com/assets/10035308/22185413/f10f27de-e099-11e6-97a4-ecbbc82c9e46.png
  を参考にして、ボタンを割り当てていきます。
  最後はHotkeysの設定をします。Selectボタンを割り当てておけばいいです。
  Hotkeysと他のボタンの同時押しで、エミュレータの終了など各コマンドを実行できます。
  https://retropie.org.uk/docs/First-Installation/#configure-controllers
  を参考にしてください。
 
 ファイルシステムの拡張
  大きめのmicroSDを使っても、はじめは解凍したイメージファイルまでの領域しか使えないので、
  すべての容量を使えるように拡張します。
  emulation stationのトップ画面でRetroPieに合わせ(はじめはこのメニューしか選べないですが)
  Aボタンを押し、その後 RASPI CONFIG を選択します。
  次に 7 Advanced Options を選択、
  次に A1 Expand FileSystem を選択すると、
  ファイルシステムが拡張されます。
  その後トップメニューへ戻り、STARTボタンを押し、QUITを選択、RESTART SYSTEMを選択して、
  再起動します。
 
 ロケーションの設定
  RetroPieメニューから、RASPI CONFIG -> 4 Localisation Options -> I1 Change Locale -> Ja_JP.UTF-8 UTF-8を追加する、
  次の画面では、en_GB.UTF-8 UTF-8を選択しておきます。
  次に、RetroPieメニューに戻り、4 Localisation Options -> I2 Change Timezoneを選択し、
  ASIA->TOKYO を選択します。
  次にまたRetroPieメニューに戻り、4 Localisation Options -> I3 Change Keyboard Layoutを選択、
  Generic 105-key (Intel) PC -> Other -> Japanese -> Japanese -> The default for the keyboard layout -> No compose keyを選択、
  RetroPieメニューに戻り、4 Localisation Options -> I4 Change Wi-Fi Countryを選択、
  JP Japanを選択する。
 
 ここで一度再起動しました。
 
 パスワードの変更
  デフォルトのユーザー pi は パスワード raspberry が設定されているので、
  パスワードを変更します。
  RetroPieメニューから、RASPI CONFIG -> 1 Change User Password でパスワードを変更します。
 
 WiFiの設定
  RetroPieメニュー面から、WIFIを選択し、
  1 Connect to WiFi networkを選択、
  すると接続可能なSSIDが表示されるので接続したいSSIDを選択し、
  SSIDのパスワードを入力します。
 
 パッケージのアップデート
  RetroPieメニューから RETROPIE SETUPを選択し、
  U Update all installed packages を選択し、YESを選択するとアップデートが始まります。
  しばらくすると終了するので、再起動します。
 
 SAMBAの設定
  必要なROMファイルなどをRetroPieへ持ってくるために、Windowsマシンからフォルダーを共有するために、
  SAMBAの設定をします。
  RetroPieメニューから RETROPIE SETUP -> C Configuration / tools -> 828 samba - Configure Samba ROM Shares
  -> 1 Install RetroPie Samba shares と選択し、OKを押すと完了です。
  
  これでWindowsマシンのExplorerから "\\retropie" へアクセスできるようになります。
  ユーザー名パスワードを入力する画面が出たら、pi / 設定したパスワード を入力します。
  もし、 "\\retropie" でアクセス出来ない場合は、"\\ipアドレス" でアクセスできます。
 
 lr-px68kのインストール
  x68kのエミュであるlr-px68kをインストールする。
  まだ実験的なパッケージでソースからビルドする必要がある。
  しかもX68000のBIOSやHuman68kはシャープが公開しているので、それを利用する。
 
  RetroPieメニューからRetroPie SETUPを選択、
  -> Manage packages
   -> Manage experimental packages
    -> lr-px68k
     -> Update from source
  これだけで、ソースのダウンロードからビルドまでが自動で行われる。
  終わったら再起動する。
 
  PC上で、X68000用のファイルをダウンロードする。
   サイトは http://www.retropc.net/x68000/person/fsharp.htm
   ROMは http://www.retropc.net/x68000/software/sharp/x68bios/index.htm
   Human68kは http://www.retropc.net/x68000/software/sharp/human302/
  必要なファイルは
   cgrom.dat
   iplrom.dat
   iplromco.dat
   iplromxv.dat
   iplrom30.dat
   HUMAN302.XDF
 
  ダウンロードしたファイルをRetroPieへSAMBAを介して持っていく。
  上5つのROMファイルは \\retropie\bios\keropi へ配置する。
   ファイル名はすべて小文字にしておく。
  HUMAN302.XDFは、 \\retropie\roms\x68000 へ配置します。
 
  RetroPie では X68000 のROMファイルの拡張子は .dim/.DIM のみが有効になっているが .XDF も利用できるので設定する。
   RetroPie の画面からSTARTボタンを押し、QUIT-> QUIT EMULATION STATION を選んでEmulation Stationを終了する。
   $ sudo nano /etc/emulationstation/es_system.cfg
   と入力して、エディタを起動し、
   x68000 の拡張子(extension)の部分に、".XDF" を追加する。
  その後 $ emulationstation と入力することで、再起動する。
  すると今までトップメニューでは RetroPie しか選択できなかったのが、X68000 が追加される。
  X68000 を選択すると、HUMAN302 というファイルが見れるので、それを選択すると、
  エミュレーターが起動し、Human68k が起動する。
   キーボードから dir などのコマンドを入力すると動くのが確認できる。
 
  ちなみに、
   F12キー : ディスクイメージの入れ替えやリセットなど
   select+STARTボタン : エミュレーターの終了
  が行える。
 
  ただし、HUMAN302.XDF ファイルを別名でコピーして、
  そのイメージをドライブ1 で設定し、
   % format b:
  としてみたが、うまくフォーマットできなかった。
  もう少し遊んでみよう。
80ABEA60-CB1C-43E5-B794-7CC04E638C44.jpeg
nice!(0)  コメント(0) 
前の10件 | -

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。