3DCG屋さんの活動記録

PROFILE ★★こんな人です

映像制作会社でクリエイティブの修行中。日ごろはMaya&AEを中心にいろんなCGソフトを触りながら、TD寄りの作業が好きで、インタラクティブな体験型空間演出をやりたいと模索中。面白いこと新しいこと大好きな『素直』でいつづける

2020年6月18日木曜日

はじめての OpenCV for Python で画像表示


OpenVINO を使う前に
OpenCVを試してみたい


ってことで


インストール
cmdからpipでインストール

今回は main(core)だけインストールしたので

$ pip install opencv-python

でOK!
どうやら 4.2がインストールされたっぽい。
ちなみに、Windowsです。

さらに、画像表示テスト。

使ってみた。
うほ!簡単楽しい。


ディープラーニング推論セミナー メモ


完全個人用メモ

-------------------------------------------------

・AI CORE Xスターターキット
・Intel OpenVINO

第1部
導入知識編

そもそもAIとは?

◆AIの分類
・条件分岐  例:温度設定で動くエアコン。If文で行動を変える
・機械学習
・ディープラーニング

<解説>
条件分岐:画から特徴を見つけ、さらに条件を人間が事細かに設定して、
【考える:人100、PC0】
機械学習:画から特徴(傾向)を見つけるのを機械にしてもらう。
【特徴見つける 人50、 分析 PC50】
DL:機械に丸投げ。特徴、分析、予測まで全部。非常に処理多くマシン負荷高い!スーパーPCじゃないと無理。昨今のPC性能向上で可能に。ブーム。
【人0、PC100】

◆ディープラーニングの種類
・CNN ConvolutionalNeuralNetwork   画像認識。最も産業に実用化されているディープラーニング。医療:画像診断、工場:目視検査、小売り:自動レジ精算。
・RNN Recurrent Neural Network  過去の株価入力、未来の株価を予測。時系列データ。自然言語処理。Google翻訳の精度向上に貢献 LSTM。 BERT でさらに翻訳向上。
・GAN Generative Adversarial Network  画像生成。本物のアイドル写真を多数覚えさせ、架空のアイドル画像を生成。
・DQN Deep Q-Network  深層強化学習 赤ちゃんがいろいろ調整して、失敗を繰り返して成長する。α碁(人間に勝つまで精度向上)。ゲーム、バーチャルで精度上がってる。これからリアルの世界に進出。車の制御、ロボットの制御。


◆CNNの種類
分類 確率%で結果が返ってくる。  (例:猫95.4% 犬1.9%
     使い方 確率が50%以上なら猫と表示
回帰 数値そのままが返ってくる。 連続量。重さ、長さ、温度、年齢 (例:22.223
     プログラミング上ですぐに使える
検出 顔っぽいものがあるぞ確率で。(分類と回帰の合わせ技)
                   使い方 顔っぽいもの50%のとろこにバウンディングボックスを表示
セグメンテーション 物体検出に近い。ピクセル単位で細かいとこまで分かる。 
     使い方 歩く歩行者の画像→歩きスマホを検知、危険だぞと警告


◆フェーズ
学習データ作成 
 数千~数十万のサンプル用意
 正解の組み合わせ(データセット)の用意
 ラベリング(正解を用意。いろんなパターンで)
学習
 ①まず適当にAIに投げて、結果を確認
 ②結果とラベリングを比較して誤差を算出、それをフィードバックする
 ③誤差が小さくなるようにパラメータ調整して、再度学習 →1回前より精度UP(繰り返し)
 ※①~③を数十~数百回繰り返して、パラメータを詰める
推論 ★←本セミナーはココ
 学習してないデータを使って、予測。
 フィードバックなし、データはたくさんいらない。 
 クラウドコンピューティングの場合、データをクラウドに飛ばして推論してもらう
 (実際に使うやつ。フィードバックはない。)

OpenVINOの場合、学習から得られるファイルは2つだけ!!
・xml モデル、テンプレート
・bin パラメータ、重み 
これがあって、扱い方がわかれば、推論できる!



---------------------
第2部
環境ツール編

◆Intel OpenVINO
・ディープラーニング 推論のための ソフトウェアツール
・無償利用可能、商用利用可能
・エッジコンピューティング
   リアルタイム応答(0.01秒レベル)
   通信料ゼロ(⇔クラウドコンピューティングだと都度通信料かかる)
   セキュリティリスク低い(プライバシーや機密データにたいする安心感がある)

TrainedModel
↓ 様々なツールによってデータ形式・モデル形式が異なる
ModelOptimizer
↓ IR形式に変換(統一できる) ディープラーニングのドロップアウト?レイヤー 量子化 精度下がるがスピード上げる
InferenceEngin 推論 

メリット
IntelのIR形式の学習済みモデルを使用できる。
・目の方向、頭の方向推定
・車や歩行者、自転車を認識
・2D画像から関節を推定
・文字認識
・同一人物の推定

・初心者でも使いやすい。
・ModelOptimizerが肝の機能



◆AI CORE
・AIoT向け 小型高性能PC
・Intel Movidius Myriad X搭載 推論に適したチップ搭載
・OpenVINO インストール済み。設定も。すぐに実行可能
・Ubuntuインストール済み Linuxのディストリビューション(MacOS) GUI

コーディング方法

メモ帳でコーディング(python)
ターミナル コマンド打ち込んで 実行(2.3個覚えれば使える)
コード修正(座標、文字列、色の変更) セーブ
ターミナルでコマンド実行

2回目の実行は速い
 Linuxコマンドは履歴覚える。
 過去のコマンドをすぐに呼び出せる。

95x 95x 50mm の本体サイズ
FullHD USBカメラ同梱
HDMI DP LANx2 5VDC USB3.0x2

実証実験しやすい。




----------------------------------
第3部
プログラミング

◆Python
基礎
特徴:
①多様な用途(科学技術、サーバーなどバックエンド、組み込み系)
②スクリプト言語(⇔C、Javaはビルドが必須)(昔は処理遅いと言われた。が今はPCの高性能化で気にならない)
③インデント(字下げ)

インデントでブロック分け。
他の言語では、{}で分けてた。
見た目すっきり!


OpenCV
基礎:
OpensourceのComputerVision
画像処理、画像認識 ライブラリ
Pythonコードで書くには
import cv2 #パッケージ読み込み

pythonにおけるOpenCVはcv2

import cv2 #openCVの関数が使えるようになる
img=cv2.imread('cat.jpg')
cv2.imshow('image',img)  #ここでいったんいける
cv2.waitKey(0) #キーボード押されるまで待つ
cv2.destroyAllWindows() #閉じる

以上だけで、猫の画が表示される。

動画も処理できる
1fごとにカメラから画像を取得する(無限LOOP)


Numpy
基礎
ベクトル 行列 演算 高速に ライブラリ
推論時に↑を意識しなくても行けるようになってる

import numpy as np
a = [10, 20, 30]
b = np.array(a)
print(b)

次元が重要!
1次元 a = [10, 20, 30]
2次元 b=np.array([ [10, 20, 30], [40, 50, 60] ])
3次元 c=np.array([ [ [1,2,3],[4,5,6] ] , [ [ 7,8,9],[10,11,12] ] ])

画像と親和性高い
・スライス
  画像のクリッピングが1行で可能
・次元の入替
  画像は「高さ、幅、色情報」の3次元
  画像の回転も容易




---------------------------------
Q&A

・クラウド側のサービスで分類と検出
  クラウド データやりとりで時間かかる。数秒とか。 例:サーバーセンター
  エッジ(端末)即座に結果を返す。 例:車に搭載

・ディープラーニング 学習は 変なデータを入れた分だけおかしくなる。(変なデータ1つで全然だめになる、じゃない。)
          そのため、少しずつ少しづずデータの精度上げることができる(アナログ的)

学習はクラウドコンピューティング必須。エッジだとめちゃくちゃ時間かかる。。
推論はエッジコンピューティングでもサッとできる!!★←本セミナーはココ

NeuralComputing Stick (NCS)以外にはOpenVINOのアクセラレータはない(現時点では)
VPUとよばれるchipが入ってる
AI CORE X にはユニットとして入っている。






↓ OpenVINOツールキット https://docs.openvinotoolkit.org/

AI CORE Xスターターキット http://jp-vnet.com/items/plist.php?b=...

↓ ツクモネットショップ販売ページ https://shop.tsukumo.co.jp/goods/4589...

↓ Webコンテンツページ https://jellyware.jp/aicorex/

↓ JellyWareホームページ https://jellyware.jp/








































2020年6月16日火曜日

MayaでV-Rayのコマンドラインレンダー


"C:/Program Files/Autodesk/Maya2018/bin/render.exe" -r vray  -rep 0 -rd "<画像保存フォルダフルパス>" <Mayaファイル名フルパス>



-rep は既存の画像を上書きするかどうか。
0 上書きしない。スキップする。
1 上書きする。


-rd 保存フォルダの指定

最後のファイルパスには ” つけない

以上

2020年6月14日日曜日

ドラッグアンドドロップしたファイルをリストにして、任意のBatchファイルを作成するPythonツール その1


以前の記事の更新版です。

より、直感的に操作できるように改良。

最終的なゴールは、
こちらのサイトでやってる「シーンファイルをフォルダに入れて」の部分を
「GUIにドラッグしてリスト」にしたら便利じゃないかな、
と思って開発始めました!


<改良点1>
以下の①②の両立ができるようになった!!!
①GUIにファイルをドラッグアンドドロップしてリストに追加
②リスト内をドラッグアンドドロップで並び替え

<改良点2>
BatchテキストのPrefixのAssetを追加。



特に、<改良点1>に関しては
Pyside2とQtdesignerでつくったGUIをつかった環境での資料が少なく・・・
結局トライアンドエラーを繰り返して何とかなった。


備忘録
一番のポイントは
<改良点1>はデフォルトでは両立しないということ。
で、このサイトを参考にして改良。(Thanks!!!)
....
が、しかしうまくいかない。
理由は、「外部ファイルも内部リストも、どちらもドラッグしたときにUrlをもっている」ということ!
つまり、DropEventのときに「Urlをもっていないとき」という条件が満たされず
内部リストの並び替えが処理されないということ。
...
で、トライアンドエラーを繰り返して
最終的に、DropEventの冒頭に
super(......
を記述することで、なんとか解決した。(大丈夫なんか?)


ということで完成!!
もっと汎用的になって、需要があればシェアしようと思います。
以上!


2020年6月13日土曜日

ゼロからはじめる QtDesignerでGUI作成と、Pythonでつくるツール!


ゼロからはじめる
QtDesignerでGUI作成と、Pythonでつくるツール!
(過去のメモです。。。)
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー


Qtインストール不要
PyQtインストール不要
.uiを.pyに変換も不要

必要なのは

PySide2 + Python

ファイルは
test.py ←今回書いた
test.ui  ←QtDesignerで作成

さらに、pythonw.exeと関連付ければ
test.pyをダブルクリックするだけで起動する。
こりゃ便利。


ーーーーーーーーーーーー
その他 pythonインストール関係

python3.7をインストール。
python2.7も残す。
C:python/に上入れた。


環境変数に
python37
python37/Scripts
を追加。
python37をpython27の上に配置する


PySide2のインストールはコマンドプロンプトから

よく使うコマンドは
pip install PySide2

python関連
import sys
sys.versioin
sys.exec_prefix

モジュールのバージョン確認は
import PySide2
PySide2.__version__


開発はatom。
QtCharm?いいのかな



■windowsでのPCセットアップ

python入っていたらアンインストール
(スタートメニューから確認、プログラムの削除から確認)

python2.7、python3.7の順でインストール
(C/python/Python27        C/python/Python37)

コマンドプロンプトから
pip install PySIde2
 
環境変数の確認
Python37
Python37/Scripts
Phthon27
Python27/Scripts
 
以上























Python pyside2 Qt アイコン作成 勉強用メモ


アイコン作成

アイコン設定
'iconfile' : 'icon.icns',

macでapp化できなかった。
ので、
python3  setup.py py2app -A
でエイリアス作成ならうまくいった。

pip3.7 install -U py2app==0.15
Pysideのエラーは消えた
pip3.7 install -U ordereddict

python pyside2 Qt  勉強メモ


ボタン押したらコマンドじっっこう

pyside2
ファイルオープン
フォルダオープン
ダイアログまとめサイト!

ーーーーーーーーーーーーーーーーーーー
PYthon勉強

Qt for PYthonやる中で 「class」 「 __init__」 が多用。
def(関数)でだましだましやってきましたが
さすがにこの2つ理解せんと。
ということで以下のサイトを3つ読んだ。 完全理解。

コンストラクタ
クラスと関数の違い(超初心者)
⬇️
インスタンスとコンストラクタ完全理解!





2020年6月10日水曜日

Mayaをコマンドプロンプトから起動して、MayaPythonで処理する


こちらを参考にするも。。できない。

PYTHONPATHのせい?
リモートデスクトップのせい?

なぜだー!

・・・試行錯誤の末、以下で解決。


SET MAYA_UI_LANGUAGE=en_US
SET PYTHONPATH=C:\Users\Taro\Documents\python\maya
 
SET MAYA_CMD_FILE_OUTPUT=C:project\autoBat\runFiles\log\cube.log
"C:\Program Files\Autodesk\Maya2018\bin\maya.exe" -command "python(\"import runCmd;runCmd.run('<Mayaシーンファイルのフルパス>')\")"



コマンドプロンプトで ” 自体を引数に使いたいときは 手前に¥をつける。

エスケープ仕様、なるほど勉強になりました。
参考サイトはこちら

-----------------------------------------------------------
おまけ。
runCmd_BASE.py 



-------------------------------------------------------------------

◆構造のまとめ

①runBat.bat(Mayaシーンファイルのパスを複数入れ、ひとつずつ②の処理するbat)
②runCmd.py(①から送られるシーンファイル情報を受け取り、Mayaで開いて、MayaPythonを実行する。)

で、このあとやろうとしているのは
①に複数Mayaシーンファイルのパスを手書きするの大変なので
①を作成するGUIをPython(QtDesigner)で作成する。→③batWorkGen.exe

...つまり

batWorkGen.exe(GUI操作)→ ①runbat.bat 作成
                          ↓ダブルクリック
                                                    ②runCmd.py が呼び出されて実行