【インストール】
$ sudo apt-get install nodered
$ update-nodejs-and-nodered
参考:Raspberry PiにNode-REDをインストールする
【バージョンアップ】
1.バージョンの確認
$ node-red-pi --max-old-space-size=256
3 Feb 11:27:31 - [info]
Welcome to Node-RED
===================
3 Feb 11:27:31 - [info] Node-RED version: v0.17.4
3 Feb 11:27:31 - [info] Node.js version: v4.8.2
3 Feb 11:27:31 - [info] Linux 4.9.79-v7+ arm LE
2.$ upgdate-nodejs-and-nodered
30分ほど待つ。
3.再度1.を入力してバージョンが上がっていることを確認する。
参考:Node-REDアップデート
2019年11月26日火曜日
Raspberry Piの固定IPアドレス設定
/etc/dhcpcd.confを例えば、以下の様に編集する
interface eth0
static ip_address=IP Address/subnetMask
static routers=GateWay Address
static domain_name_servers=DNS address
例)
interface eth0
static ip_address=192.168.0.254/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1
ここでsubnetmaskについては
/24:255.255.255.0
/16:255.255.0.0
となるので、注意。
後は「shutdown -r now」でリブートしてやる。
参考:Raspberry Piの固定IPアドレスの設定
interface eth0
static ip_address=IP Address/subnetMask
static routers=GateWay Address
static domain_name_servers=DNS address
例)
interface eth0
static ip_address=192.168.0.254/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1
ここでsubnetmaskについては
/24:255.255.255.0
/16:255.255.0.0
となるので、注意。
後は「shutdown -r now」でリブートしてやる。
参考:Raspberry Piの固定IPアドレスの設定
2019年11月25日月曜日
2019年10月3日木曜日
Node-REDのインストール方法
【Node-REDのインストール方法】
1.node.jsをダウンロードし、インストールする。
2.windows powershellを起動し、「node --version; npm --version」と入力して、「v10.16.3 6.11.3」とバージョンが返ってくるかどうか確認をする。
3.powershellから「npm install -g --unsafe-perm node-red」と記入し、インストールを行う。
【Node-REDの起動方法】
1. powershellから「node-red」と入力。
(node-redが立ち上がったら、そのshellは閉じない)
2.firefoxのアドレスに「 http://localhost:1880」と入力。
3.停止するときはpowershellで「Ctrl+C」を入力。
参考リンク
・Windowsで実行する : Node-RED日本ユーザ会
・Node-REDをインストールする
1.node.jsをダウンロードし、インストールする。
2.windows powershellを起動し、「node --version; npm --version」と入力して、「v10.16.3 6.11.3」とバージョンが返ってくるかどうか確認をする。
3.powershellから「npm install -g --unsafe-perm node-red」と記入し、インストールを行う。
【Node-REDの起動方法】
1. powershellから「node-red」と入力。
(node-redが立ち上がったら、そのshellは閉じない)
2.firefoxのアドレスに「 http://localhost:1880」と入力。
3.停止するときはpowershellで「Ctrl+C」を入力。
参考リンク
・Windowsで実行する : Node-RED日本ユーザ会
・Node-REDをインストールする
2019年9月19日木曜日
2019年8月24日土曜日
Pycharmコマンドラインでの引数の設定
Pycharmでpyファイルを走らせるときに、引数を設定したいときは
メニューファイルのRunの下にある「Edit Configuration」をクリックし、Script Pathの下の「Parameters」に書き込む。
参考リンク
メニューファイルのRunの下にある「Edit Configuration」をクリックし、Script Pathの下の「Parameters」に書き込む。
参考リンク
2019年8月8日木曜日
SONY NNC: ver1.50起動
SONY NNC ver1.50が起動しないトラブル(ただ、同じPCにインストールしているver 1.40は普通に起動する。)があったが、Python3.6から3.7にアップデートして、何度かver1.50を起動しているうちに、普通に計算できるようになっていた。
2019年8月4日日曜日
SONY NNC:cli.py(バージョン1.40)
import argparse
import sys
import warnings
warnings.filterwarnings("ignore", message="numpy.dtype size changed")
def _nnabla_version():
import nnabla
return 'Version {}'.format(nnabla.__version__) + \
', ' + \
'Build {}'.format(nnabla.__build_number__)
def version_command(args):
print(_nnabla_version())
return_value = None
def main():
global return_value
import six.moves._thread as thread
import threading
thread.stack_size(128 * 1024 * 1024)
sys.setrecursionlimit(0x3fffffff)
main_thread = threading.Thread(target=cli_main)
main_thread.start()
main_thread.join()
if not return_value:
sys.exit(-1)
def cli_main():
global return_value
return_value = False
import nnabla
parser = argparse.ArgumentParser(description='Command line interface ' +
'for NNabla({})'.format(_nnabla_version()))
parser.add_argument(
'-m', '--mpi', help='exec with mpi.', action='store_true')
subparsers = parser.add_subparsers()
from nnabla.utils.cli.train import add_train_command
add_train_command(subparsers)
from nnabla.utils.cli.forward import add_infer_command, add_forward_command
add_infer_command(subparsers)
add_forward_command(subparsers)
from nnabla.utils.cli.encode_decode_param import add_decode_param_command, add_encode_param_command
add_encode_param_command(subparsers)
add_decode_param_command(subparsers)
from nnabla.utils.cli.profile import add_profile_command
add_profile_command(subparsers)
from nnabla.utils.cli.conv_dataset import add_conv_dataset_command
add_conv_dataset_command(subparsers)
from nnabla.utils.cli.compare_with_cpu import add_compare_with_cpu_command
add_compare_with_cpu_command(subparsers)
from nnabla.utils.cli.create_image_classification_dataset import add_create_image_classification_dataset_command
add_create_image_classification_dataset_command(subparsers)
from nnabla.utils.cli.uploader import add_upload_command
add_upload_command(subparsers)
from nnabla.utils.cli.uploader import add_create_tar_command
add_create_tar_command(subparsers)
from nnabla.utils.cli.convert import add_convert_command
add_convert_command(subparsers)
from nnabla.utils.cli.func_info import add_function_info_command
add_function_info_command(subparsers)
from nnabla.utils.cli.plot import (
add_plot_series_command, add_plot_timer_command)
add_plot_series_command(subparsers)
add_plot_timer_command(subparsers)
from nnabla.utils.cli.draw_graph import add_draw_graph_command
add_draw_graph_command(subparsers)
# Version
subparser = subparsers.add_parser(
'version', help='Print version and build number.')
subparser.set_defaults(func=version_command)
print('NNabla command line interface (Version {}, Build {})'.format(
nnabla.__version__, nnabla.__build_number__))
args = parser.parse_args()
if 'func' not in args:
parser.print_help(sys.stderr)
return
if args.mpi:
from nnabla.utils.communicator_util import create_communicator
comm = create_communicator()
try:
return_value = args.func(args)
except:
import traceback
print(traceback.format_exc())
comm.abort()
else:
try:
return_value = args.func(args)
except:
import traceback
print(traceback.format_exc())
return_value = False
if __name__ == '__main__':
main()
import sys
import warnings
warnings.filterwarnings("ignore", message="numpy.dtype size changed")
def _nnabla_version():
import nnabla
return 'Version {}'.format(nnabla.__version__) + \
', ' + \
'Build {}'.format(nnabla.__build_number__)
def version_command(args):
print(_nnabla_version())
return_value = None
def main():
global return_value
import six.moves._thread as thread
import threading
thread.stack_size(128 * 1024 * 1024)
sys.setrecursionlimit(0x3fffffff)
main_thread = threading.Thread(target=cli_main)
main_thread.start()
main_thread.join()
if not return_value:
sys.exit(-1)
def cli_main():
global return_value
return_value = False
import nnabla
parser = argparse.ArgumentParser(description='Command line interface ' +
'for NNabla({})'.format(_nnabla_version()))
parser.add_argument(
'-m', '--mpi', help='exec with mpi.', action='store_true')
subparsers = parser.add_subparsers()
from nnabla.utils.cli.train import add_train_command
add_train_command(subparsers)
from nnabla.utils.cli.forward import add_infer_command, add_forward_command
add_infer_command(subparsers)
add_forward_command(subparsers)
from nnabla.utils.cli.encode_decode_param import add_decode_param_command, add_encode_param_command
add_encode_param_command(subparsers)
add_decode_param_command(subparsers)
from nnabla.utils.cli.profile import add_profile_command
add_profile_command(subparsers)
from nnabla.utils.cli.conv_dataset import add_conv_dataset_command
add_conv_dataset_command(subparsers)
from nnabla.utils.cli.compare_with_cpu import add_compare_with_cpu_command
add_compare_with_cpu_command(subparsers)
from nnabla.utils.cli.create_image_classification_dataset import add_create_image_classification_dataset_command
add_create_image_classification_dataset_command(subparsers)
from nnabla.utils.cli.uploader import add_upload_command
add_upload_command(subparsers)
from nnabla.utils.cli.uploader import add_create_tar_command
add_create_tar_command(subparsers)
from nnabla.utils.cli.convert import add_convert_command
add_convert_command(subparsers)
from nnabla.utils.cli.func_info import add_function_info_command
add_function_info_command(subparsers)
from nnabla.utils.cli.plot import (
add_plot_series_command, add_plot_timer_command)
add_plot_series_command(subparsers)
add_plot_timer_command(subparsers)
from nnabla.utils.cli.draw_graph import add_draw_graph_command
add_draw_graph_command(subparsers)
# Version
subparser = subparsers.add_parser(
'version', help='Print version and build number.')
subparser.set_defaults(func=version_command)
print('NNabla command line interface (Version {}, Build {})'.format(
nnabla.__version__, nnabla.__build_number__))
args = parser.parse_args()
if 'func' not in args:
parser.print_help(sys.stderr)
return
if args.mpi:
from nnabla.utils.communicator_util import create_communicator
comm = create_communicator()
try:
return_value = args.func(args)
except:
import traceback
print(traceback.format_exc())
comm.abort()
else:
try:
return_value = args.func(args)
except:
import traceback
print(traceback.format_exc())
return_value = False
if __name__ == '__main__':
main()
SONY NNC:cli.py(バージョン1.50)
【バージョン1.50】
import argpars
import sys
import warnings
warnings.filterwarnings("ignore", message="numpy.dtype size changed")
def _nnabla_version():
import nnabla
import nnabla.utils.callback as callback
version_string = 'Version:{}, Build:{}'.format(nnabla.__version__,
nnabla.__build_number__)
callback_version_string = callback.get_callback_version()
if callback_version_string is not None:
version_string += ', Callback:{}'.format(callback_version_string)
return version_string
def version_command(args):
print(_nnabla_version())
return_value = None
def main():
global return_value
import six.moves._thread as thread
import threading
thread.stack_size(128 * 1024 * 1024)
sys.setrecursionlimit(0x3fffffff)
main_thread = threading.Thread(target=cli_main)
main_thread.start()
main_thread.join()
if not return_value:
sys.exit(-1)
def cli_main():
global return_value
return_value = False
parser = argparse.ArgumentParser(description='Command line interface ' +
'for NNabla({})'.format(_nnabla_version()))
parser.add_argument(
'-m', '--mpi', help='exec with mpi.', action='store_true')
subparsers = parser.add_subparsers()
import nnabla
from nnabla.utils.cli.train import add_train_command
add_train_command(subparsers)
from nnabla.utils.cli.forward import add_infer_command, add_forward_command
add_infer_command(subparsers)
add_forward_command(subparsers)
from nnabla.utils.cli.encode_decode_param import add_decode_param_command, add_encode_param_command
add_encode_param_command(subparsers)
add_decode_param_command(subparsers)
from nnabla.utils.cli.profile import add_profile_command
add_profile_command(subparsers)
from nnabla.utils.cli.conv_dataset import add_conv_dataset_command
add_conv_dataset_command(subparsers)
from nnabla.utils.cli.compare_with_cpu import add_compare_with_cpu_command
add_compare_with_cpu_command(subparsers)
from nnabla.utils.cli.create_image_classification_dataset import add_create_image_classification_dataset_command
add_create_image_classification_dataset_command(subparsers)
from nnabla.utils.cli.uploader import add_upload_command
add_upload_command(subparsers)
from nnabla.utils.cli.uploader import add_create_tar_command
add_create_tar_command(subparsers)
from nnabla.utils.cli.convert import add_convert_command
add_convert_command(subparsers)
from nnabla.utils.cli.func_info import add_function_info_command
add_function_info_command(subparsers)
from nnabla.utils.cli.plot import (
add_plot_series_command, add_plot_timer_command)
add_plot_series_command(subparsers)
add_plot_timer_command(subparsers)
from nnabla.utils.cli.draw_graph import add_draw_graph_command
add_draw_graph_command(subparsers)
# Version
subparser = subparsers.add_parser(
'version', help='Print version and build number.')
subparser.set_defaults(func=version_command)
print('NNabla command line interface ({})'.format(_nnabla_version()))
args = parser.parse_args()
if 'func' not in args:
parser.print_help(sys.stderr)
sys.exit(-1)
if args.mpi:
from nnabla.utils.communicator_util import create_communicator
comm = create_communicator()
try:
return_value = args.func(args)
except:
import traceback
print(traceback.format_exc())
comm.abort()
else:
try:
return_value = args.func(args)
except:
import traceback
print(traceback.format_exc())
return_value = False
sys.exit(-1)
if __name__ == '__main__':
main()
import argpars
import sys
import warnings
warnings.filterwarnings("ignore", message="numpy.dtype size changed")
def _nnabla_version():
import nnabla
import nnabla.utils.callback as callback
version_string = 'Version:{}, Build:{}'.format(nnabla.__version__,
nnabla.__build_number__)
callback_version_string = callback.get_callback_version()
if callback_version_string is not None:
version_string += ', Callback:{}'.format(callback_version_string)
return version_string
def version_command(args):
print(_nnabla_version())
return_value = None
def main():
global return_value
import six.moves._thread as thread
import threading
thread.stack_size(128 * 1024 * 1024)
sys.setrecursionlimit(0x3fffffff)
main_thread = threading.Thread(target=cli_main)
main_thread.start()
main_thread.join()
if not return_value:
sys.exit(-1)
def cli_main():
global return_value
return_value = False
parser = argparse.ArgumentParser(description='Command line interface ' +
'for NNabla({})'.format(_nnabla_version()))
parser.add_argument(
'-m', '--mpi', help='exec with mpi.', action='store_true')
subparsers = parser.add_subparsers()
import nnabla
from nnabla.utils.cli.train import add_train_command
add_train_command(subparsers)
from nnabla.utils.cli.forward import add_infer_command, add_forward_command
add_infer_command(subparsers)
add_forward_command(subparsers)
from nnabla.utils.cli.encode_decode_param import add_decode_param_command, add_encode_param_command
add_encode_param_command(subparsers)
add_decode_param_command(subparsers)
from nnabla.utils.cli.profile import add_profile_command
add_profile_command(subparsers)
from nnabla.utils.cli.conv_dataset import add_conv_dataset_command
add_conv_dataset_command(subparsers)
from nnabla.utils.cli.compare_with_cpu import add_compare_with_cpu_command
add_compare_with_cpu_command(subparsers)
from nnabla.utils.cli.create_image_classification_dataset import add_create_image_classification_dataset_command
add_create_image_classification_dataset_command(subparsers)
from nnabla.utils.cli.uploader import add_upload_command
add_upload_command(subparsers)
from nnabla.utils.cli.uploader import add_create_tar_command
add_create_tar_command(subparsers)
from nnabla.utils.cli.convert import add_convert_command
add_convert_command(subparsers)
from nnabla.utils.cli.func_info import add_function_info_command
add_function_info_command(subparsers)
from nnabla.utils.cli.plot import (
add_plot_series_command, add_plot_timer_command)
add_plot_series_command(subparsers)
add_plot_timer_command(subparsers)
from nnabla.utils.cli.draw_graph import add_draw_graph_command
add_draw_graph_command(subparsers)
# Version
subparser = subparsers.add_parser(
'version', help='Print version and build number.')
subparser.set_defaults(func=version_command)
print('NNabla command line interface ({})'.format(_nnabla_version()))
args = parser.parse_args()
if 'func' not in args:
parser.print_help(sys.stderr)
sys.exit(-1)
if args.mpi:
from nnabla.utils.communicator_util import create_communicator
comm = create_communicator()
try:
return_value = args.func(args)
except:
import traceback
print(traceback.format_exc())
comm.abort()
else:
try:
return_value = args.func(args)
except:
import traceback
print(traceback.format_exc())
return_value = False
sys.exit(-1)
if __name__ == '__main__':
main()
2019年8月1日木曜日
sony nnc version 1.50をインストールできない
sony nncの新しいバージョン1.50が公開されたので、ダウンロードしてインストールしたところ、インストール自体はできるが、起動させると以下のようなエラーメッセージが表示された。
Traceback (most recent call last):
File "C:\sony_nnc\neural_network_console_150\libs\scripts\plugin.py", line 5, in <module>
from nnabla import logger
File "C:\sony_nnc\neural_network_console_150\libs\nnabla\python\src\nnabla\__init__.py", line 31, in <module>
from .variable import Variable, Context
File "C:\sony_nnc\neural_network_console_150\libs\nnabla\python\src\nnabla\variable.py", line 17, in <module>
from ._variable import Context
File "_nd_array.pxd", line 64, in init nnabla._variable
File "__init__.pxd", line 918, in init nnabla._nd_array
ValueError: numpy.ufunc size changed, may indicate binary incompatibility. Expected 216 from C header, got 192 from PyObject
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
File "_init.pyx", line 56, in nnabla._init.finalize
SystemError: Parent module 'nnabla' not loaded, cannot perform relative import
visual stodioのバージョンを2017から2015に移してもだめだった。
Traceback (most recent call last):
File "C:\sony_nnc\neural_network_console_150\libs\scripts\plugin.py", line 5, in <module>
from nnabla import logger
File "C:\sony_nnc\neural_network_console_150\libs\nnabla\python\src\nnabla\__init__.py", line 31, in <module>
from .variable import Variable, Context
File "C:\sony_nnc\neural_network_console_150\libs\nnabla\python\src\nnabla\variable.py", line 17, in <module>
from ._variable import Context
File "_nd_array.pxd", line 64, in init nnabla._variable
File "__init__.pxd", line 918, in init nnabla._nd_array
ValueError: numpy.ufunc size changed, may indicate binary incompatibility. Expected 216 from C header, got 192 from PyObject
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
File "_init.pyx", line 56, in nnabla._init.finalize
SystemError: Parent module 'nnabla' not loaded, cannot perform relative import
visual stodioのバージョンを2017から2015に移してもだめだった。
2019年7月28日日曜日
Open CVの例
import cv2 img_src = cv2.imread("./bicycle.jpg",1) img_gray=cv2.cvtColor(img_src, cv2.COLOR_BGR2GRAY) thresh = 100max_pixel= 255ret, img_dst = cv2.threshold(img_gray, thresh, max_pixel,cv2.THRESH_BINARY) cv2.imshow("Show BINARIZATION Image", img_dst) cv2.waitKey(0) cv2.destroyAllWindows()
2019年7月21日日曜日
SONY NNC:DATA SETの作り方
左上のメニューから「TRAINING」をクリックし、次に右上側の「DATA SET」をクリックする。次に、画面上の方で、赤四角で囲った部分をクリック(OPEN DATASET)し(図1)、次に「Create Dataset」を選ぶ(図2)。
次に図3のような画面がでるので、下記を参考にファイルの場所等を指定する。
Source Dir
画像が置いてあるディレクトリ。そのなかに画像の種類ごとに分別してその種類ごとにフォルダに入れて置いておく。
Output Dir
ここに処理された画像とCSV形式の設定ファイルが置かれるので、空のディレクトリを作って指定してやる。
Shaping Mode(画像サイズを揃えるための処理)
Trimming:画像周辺の領域を削ってサイズを整える。
Padding:画像の空白部分にダミーの値(0)を入れてサイズを整える。
Resize: 画像を縦横に適当に引き延ばしてサイズを整える。
Output Color Ch
モノクロだったら1、カラー(RGB)だったら3。1 or 3はNNCのInputの設定をあわせる。
Output width Output height
適当な値を設定する。NNCのInputの設定をあわせる。
Shuffle the order of the data
画像の順番をランダムにするかどうか。通常はチェックを入れる。
Output file1 Output file2
Outputのファイル名(train fileとtest file)。デフォルトは両社の割合が100:0になっているが、通常は70:30 ~ 80:20 ぐらいにしておく。これはデータのうち、70%を使って学習し、残りの30%を使って検証するという意味。
図1 |
図2 |
次に図3のような画面がでるので、下記を参考にファイルの場所等を指定する。
図3 |
Source Dir
画像が置いてあるディレクトリ。そのなかに画像の種類ごとに分別してその種類ごとにフォルダに入れて置いておく。
Output Dir
ここに処理された画像とCSV形式の設定ファイルが置かれるので、空のディレクトリを作って指定してやる。
Shaping Mode(画像サイズを揃えるための処理)
Trimming:画像周辺の領域を削ってサイズを整える。
Padding:画像の空白部分にダミーの値(0)を入れてサイズを整える。
Resize: 画像を縦横に適当に引き延ばしてサイズを整える。
Output Color Ch
モノクロだったら1、カラー(RGB)だったら3。1 or 3はNNCのInputの設定をあわせる。
Output width Output height
適当な値を設定する。NNCのInputの設定をあわせる。
Shuffle the order of the data
画像の順番をランダムにするかどうか。通常はチェックを入れる。
Output file1 Output file2
Outputのファイル名(train fileとtest file)。デフォルトは両社の割合が100:0になっているが、通常は70:30 ~ 80:20 ぐらいにしておく。これはデータのうち、70%を使って学習し、残りの30%を使って検証するという意味。
2019年7月18日木曜日
SONY NNC:01_logistic_regression.sdcproj
01_logistic_regression.sdcproj:
ロジスティック回帰を用いて、数字の4と9を判別させる。
datasetについて、Trainingは「small_mnist_4or9_training.csv」、Validationは「small_mnist_4or9_test.csv」を用いた。
Input (IO Layer)
Size: 画像入力の場合、「色数、高さ、幅」のフォーマットで表されるので、この場合モノクロで、28×28の画像サイズの入力を示す。
Dataset: データが入っている変数(x)。この場合、datasetで見るとx:imageのところに画像が入っていることが分かる。
Affine (Basic Layer)
Affine変換を用いた全結合層
人工ニューロンは
y=f(Σwx+b)と表現されるが、この()内がAffineであり、fの部分が活性化関数となる。
なので、おおまかな流れとしては判別対象が2つの場合は「Affine」「sigmoid」「binary cross entropy」となり、最終的な識別対象が2個以上の場合は「Affine」「softmax」「multicategory cross entropy」となる。
人工ニューロンは
y=f(Σwx+b)と表現されるが、この()内がAffineであり、fの部分が活性化関数となる。
なので、おおまかな流れとしては判別対象が2つの場合は「Affine」「sigmoid」「binary cross entropy」となり、最終的な識別対象が2個以上の場合は「Affine」「softmax」「multicategory cross entropy」となる。
Sigmoid(Activation Layer)
Sigmoid関数によるアウトプット。Affine変換を使って28×28の行列は内積計算しているので、Inputは1つ、Output1つの活性化関数となる。
BinaryCrossEntropy (Loss layer)
Input:1(値は0~1の間を取り、0に近いと数字4の確率が上がり、1に近いと数字9の確率が上がる。)
T.Dataset: データセットに含まれる変数のうち、このレイヤーの出力として期待する変数の変数名を指定します。
T.Generator:データセットの変わりに用いるGeneratorを指定。この場合、Noneなのでデータ生成を行わない。
T.GeneratorMultiplier:Generatorにより生成した値に対して掛ける係数を指定する。この場合、1となっている。(0に設定しても計算できていた。)
T.Dataset: データセットに含まれる変数のうち、このレイヤーの出力として期待する変数の変数名を指定します。
T.Generator:データセットの変わりに用いるGeneratorを指定。この場合、Noneなのでデータ生成を行わない。
T.GeneratorMultiplier:Generatorにより生成した値に対して掛ける係数を指定する。この場合、1となっている。(0に設定しても計算できていた。)
登録:
投稿 (Atom)