OSSライセンスについて
OSSライセンス概要
- OSSライセンスについての、自分用のまとめです
- 正確な情報は、各ライセンスの原文等を参照する必要あり
概要
カテゴリ | ライセンス | 複製/再頒布 | 改変 | 改変部分のソース公開 | 他部分のソース公開 |
---|---|---|---|---|---|
CopyLeft | GNU General Public License v3.0 | OK | OK | 必要 | 必要 |
準CopyLeft | Mozilla Public License 2.0 | OK | OK | 必要 | 不要 |
非CopyLeft | Apache License 2.0 | OK | OK | 不要 | 不要 |
非CopyLeft | MIT License | OK | OK | 不要 | 不要 |
非CopyLeft | BSD 2-Clause "Simplified" License | OK | OK | 不要 | 不要 |
非CopyLeft | BSD 3-Clause "New" or "Revised" License | OK | OK | 不要 | 不要 |
ライセンスの大まかな概要
- コピーレフト
- 準コピーレフト
- コピーレフトに対し、以下が異なる
- 派生ソフトは、同じライセンスが適用
- 他のソフトと組み合わせた場合、ライセンスの適用は要求しない
- コピーレフトに対し、以下が異なる
- 非コピーレフト
- コピーレフトに対し、以下が異なる
- 派生ソフトに、同じライセンスの適用は要求しない
- 他のソフトと組み合わせた場合、ライセンスの適用は要求しない
- コピーレフトに対し、以下が異なる
- 共通
リンク
- opensource-jp/licensesのGithub
https://github.com/opensource-jp/licenses
NN学習の試行回数による変化
NN学習の試行回数による変化
概要
- NNの学習について、試行回数を重ねていくと、結果がどの程度変動するかを調べる
- 簡単なネットワーク、畳み込みネットワークでやってみる
- 乱数シードを固定した場合もやってみる
- 異常データを含む場合にどうなるかもやってみる(ラベルをランダム値に変更することで模擬)
- 結果
- 10回繰り返しの結果として、単純なMNISTではほとんど差異がなかった
- また、CNNでも同様の結果となった
- 乱数シードを固定することで、ばらつきはなくなる
- また、3つに1つの割合で、ラベルをランダム値に変更した場合、試行ごとのばらつきが、正常データのみの場合に比べて大きい結果となった
環境
- Python : ver3.8.5
- TensorFlow : ver2.3.1
結果詳細
単純なニューラルネットワークの場合
[試行ごとの学習の精度変化] [試行ごとの学習の損失関数変化]
[試行ごとの評価の精度変化] [試行ごとの評価の損失関数変化]
CNNの場合
[試行ごとの学習の精度変化] [試行ごとの学習の損失関数変化]
[試行ごとの評価の精度変化] [試行ごとの評価の損失関数変化]
乱数シード値を固定した場合
[試行ごとの学習の精度変化] [試行ごとの学習の損失関数変化]
[試行ごとの評価の精度変化] [試行ごとの評価の損失関数変化]
1/3のラベルをランダム値にした場合
[試行ごとの学習の精度変化] [試行ごとの学習の損失関数変化]
[試行ごとの評価の精度変化] [試行ごとの評価の損失関数変化]
Jupyter Notebookのテーマ変更方法
Jupyter Notebookのテーマ変更方法
概要
Jupyter Notebookのテーマを変更する方法の自分用メモ。
(ダークテーマで使えるようにする)
方法
1.pipにて、jupyterthemesをインストール
$ pip install jupyterthemes
2.jupyter起動前に、以下コマンドで設定を行う(以下は例)
$ jt -t monokai -cellw 90% -T -N -kl
※詳細なコマンドは、 https://github.com/dunovank/jupyter-themes を参照
3.jupyter起動
$ jupyter notebook
Raspiで温度/湿度センサー値取得(DHT11)
Raspiで温度/湿度センサー値取得(DHT11)
2020/8/16
概要
- Raspi4で、温度/湿度を計測する(とりあえず値の取得まで)
- センサーは、DHT11を使用
環境
- Raspberry Pi 4 Model B 4GB RAM
- Raspbian GNU/Linux 10(buster)
- Python 3.7.3
- DHT11(KUMAN Kitsのものを利用)
方法
1.RaspiにDHT11を接続
以下のように接続(ブレッドボード利用)
- DHT11 GND → Raspi GPIO 9pin(GND)
- DHT11 DATA → Raspi GPIO 7pin(GPIO ch4)
- DHT11 Vcc → Raspi GPIO 2pin(Vcc)
2.プログラム実行
Raspi起動し、Pythonプログラムにて温度/湿度を取得する。 ソフトは色々あるが、以下が参考になる。
https://github.com/szazo/DHT11_Python
なお、pinの指定は、GPIOのch番号(=4)をかく。
instance = dht11.DHT11(pin = 4)
pandasでCOVID-19データファイルをプロット
pandasでCOVID-19データファイルをプロット
概要
- pandasを使用し、COVID-19データをプロットする(主目的はpandasの練習)
環境
- Python ver : 3.7.7
- Numpy ver : 1.18.4
- Scipy ver : 1.4.1
- Pandas ver : 1.0.3
- matplotlib ver : 3.2.1
データ
厚生労働省のwebページから、データ(csvファイル)を取得
オープンデータ|厚生労働省
データの読み込み
pandasのread_csv()
で、簡単に読み込める。
data_pcr_positive_daily = './pcr_positive_daily.csv' data_pcr_tested_daily = './pcr_tested_daily.csv' df_pcr_positive = pd.read_csv(data_pcr_positive_daily) df_pcr_tested = pd.read_csv(data_pcr_tested_daily)
複数のDataFrameの連結
merge()
を使用し、共通の「日付」列を元にして連結する。
df = pd.merge(df_pcr_positive,df_pcr_tested,on='日付')
移動平均のように、窓を使用した計算処理にはrolling()
を使用する。
mean()
の他にもメソッドが用意されている。
例えば以下のようにすることで、移動平均した列を新たに追加できる。
df['移動平均'] = df.iloc[:,1].rolling(7).mean()
列同士を使用した演算で、新たに列を作ることも可能。
df['陽性率'] = df.iloc[:,1] / df.iloc[:,2] * 100
コード全体
import numpy as np import matplotlib.pyplot as plt from matplotlib.dates import DateFormatter,DayLocator import pandas as pd # CSVデータファイル # https://www.mhlw.go.jp/stf/covid-19/open-data.html data_pcr_positive_daily = './pcr_positive_daily.csv' data_pcr_tested_daily = './pcr_tested_daily.csv' # データファイルをpandasで読み込み # - 日々の陽性者数と、PCR検査実施数を連結 # - また、陽性者数の移動平均、陽性率も計算 df_pcr_positive = pd.read_csv(data_pcr_positive_daily) df_pcr_tested = pd.read_csv(data_pcr_tested_daily) df = pd.merge(df_pcr_positive,df_pcr_tested,on='日付') df['移動平均'] = df.iloc[:,1].rolling(7).mean() df['陽性率'] = df.iloc[:,1] / df.iloc[:,2] * 100 # [%] data_date = df.iloc[:,0].astype(np.datetime64) data_pcr_positive = df.iloc[:,1] data_pcr_positive_ave = df.iloc[:,3] # 陽性者数および移動平均をプロット plt.bar(data_date,data_pcr_positive,label='PCR Positive') plt.plot(data_date,data_pcr_positive_ave,label='moving_ave',color='r') plt.gca().xaxis.set_major_formatter(DateFormatter('%Y-%m-%d')) plt.gca().xaxis.set_major_locator(DayLocator(interval=14)) plt.gcf().autofmt_xdate() plt.xlabel('Date') plt.ylabel('PCR positive') plt.grid(which='both') plt.legend() plt.show()
Raspberry Pi4でTFLite(環境構築)
Raspberry Pi4でTFLite(環境構築)
2020/8/9
概要
- ラズパイ4でTFLiteによる推論処理を動作させる
- 環境準備
- TFLiteのExampleの動作
環境
- Raspberry Pi 4 Model B 4GB RAM
- Raspbian GNU/Linux 10(buster)
- Camera V2
- Python 3.7.3
環境構築
1.TFLiteの準備
TFLite用にvenv
で環境を用意しておく。
$ python3 -m venv 環境名 $ source 環境名/bin/activate
TensorFlow Liteインタープリタのインストール
$ pip3 install https://dl.google.com/coral/python/tflite_runtime-2.1.0.post1-cp37-cp37m-linux_armv7l.whl
参考:https://www.tensorflow.org/lite/guide/python
2.Exampleのダウンロード
以下のExampleを持ってくる。 https://github.com/tensorflow/examples/tree/master/lite/examples/object_detection/raspberry_pi
3.download.shの実行
download.sh
を実行する。
実行権限がない場合は、以下で付与する。
この時、必要なパッケージもpip3でインストールされる。
$ chmod 755 download.sh
4.実行
python3 detect_picamera.py \ --model /tmp/detect.tflite \ --labels /tmp/coco_labels.txt
Raspberry Pi4でOpenCV(環境構築)
Raspberry Pi4でOpenCV(環境構築)
2020/8/9
概要
- ラズパイ4でOpenCVを動作させる
- 環境準備
- カメラ入力の画面表示
環境
- Raspberry Pi 4 Model B 4GB RAM
- Raspbian GNU/Linux 10(buster)
- Camera V2
- Python 3.7.3
- OpenCV 4.1.1
環境構築
1.ライブラリ関連のインストール
$ sudo apt-get install libhdf5-dev libhdf5-serial-dev libhdf5-103 $ sudo apt-get install libjpeg-dev libtiff5-dev libjasper-dev libpng-dev $ sudo apt-get install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev $ sudo apt-get install libxvidcore-dev libx264-dev $ sudo apt-get install libatlas-base-dev $ sudo apt-get install libqtgui4 libqtwebkit4 libqt4-test python3-pyqt5 $ sudo apt-get install python3-dev
2.OpenCVのインストール
OpenCV用にvenv
で環境を用意し、インストールを行う。
$ python3 -m venv 環境名 $ source 環境名/bin/activate $ pip3 install opencv-contrib-python
この状態ではImportError(undefined symbol: __atomic_fetch_add_8)が発生するため、以下を実行
$ vim.tiny ~/.bashrc
最後の行に
export LD_PRELOAD=/usr/lib/arm-linux-gnueabihf/libatomic.so.1
を追加した後、以下を実行
source ~/.bashrc
参考:https://qiita.com/XM03/items/48463fd910470b226f22
3.カメラ入力の画面表示
以下のようなコードでカメラ入力を画面に表示できる。 (qキー押下で終了)
import cv2 capture = cv2.VideoCapture(0) while(True): ret, frame = capture.read() windowsize = (640, 480) frame = cv2.resize(frame, windowsize) cv2.imshow('camera',frame) if cv2.waitKey(1) & 0xFF == ord('q'): break capture.release() cv2.destroyAllWindows()