2018年9月26日水曜日

太陽光関係の展示会(Linuxコマンド忘備録含む)

9月26日
今週の展示会がつまらないとの話なので感じたままを書きます。

ブームが過ぎ従来と同じ方向の展示は段々と魅力が無くなっています。
それは展示会場に来場しているほとんどの人が感じている様に思います。
展示している側はより多くの利益を生むサービスや機器を全面に出している様ですが
その事自体がマンネリ化しているのも、ほとんどの出店者も感じているとも思います。

これ面白い! といったモノを生み出せればと思っています。その商品の説明の仕方や見せる方法も重要だと経験しました。今はその為の準備中です。
ただ基礎的な部分なので時間がまだまだ掛かります。申し訳ありません。

今回の内容はどうしても退屈な内容になります。よく理解していないコマンド操作を試行錯誤しながら覚えていく事を重点的に実践しているので教科書をなぞるより理解が進むと思っています。

Linuxのコマンド操作も何かの本で習得する必要がありますが、下記ポイントを押さえるのが先なようです。

ポイント①
Linuxの下記コマンドを理解し丸暗記

user@host:~/opencv-3.3.1/build$ sudo rm -r*
sudo: unable to resolve host wiwao
rm: invalid option -- '*'
Try 'rm --help' for more information.

”あのですね。ちょっとキツいようですが、
buildの中身をすべて消せば良いんです。
これをコマンドで実行してるだけ。
手っ取り早く言えばUbuntuのエクスプローラでbuildの中身を消すのと同じことです。

OpenCVインストールの前に、以下の内容程度は分かってないとAIには進めません。”


sudosudoでない場合の挙動
sudoでファイルやディレクトリを作ってしまったとき、 sudoでない場合はファイルを修正できなくなる
rm  単独ファイルを消す方法とディレクトリまるごと消す方法
cp ファイルをコピーする方法。ディレクトリまるごとと、単独ファイルではオプションが違う
mkdir フォルダを作る方法
cd  ディレクトリの移動
ls         ファイルを表示させるオプションがあるのでどんな挙動になるのか
cat      テキストファイルの中身を表示
ll   lsと同じですが機種に依存する。lsより便利
nano   テキストファイルの修正
ssh     Macで普通に使えるまで何度も…. $ ssh user.local
lsusb  USBに何がつながっているか
ifconfig 今どこのWiFiにつながってて、自分のipは認識してるか、またWIFIと有線の接続状況はどうか
ls /dev ってのは何なのか。例えばWEBカメラをつなぐとどこが変わるのか
top  今マルチタスクで何が動いているのか
kill  topで動いているプログラムを停止する方法 (Macの強制終了)
df  外部記憶装置で今一体どの程度までファイルが占用してるか(特にTX2ZAVIELでは大事 内部eMMC32Gしかないから。apt install でアプリをインストールすればするほどeMMCの容量が無くなる。80%以上なら危険)
sudo apt install      フリーソフトをインストールする
sudo apt remove インストール済みのアプリを消す
pythonを使いたいなら pipってなんなのか
PythonPythonソースを実行する方法


/home にある .bashrc って何なのか

ポイント②ファイルが無い!
なんとも言えませんが、「ファイルが無いは」実行している場所が違うか、スペル違いだけです。
慣れないうちは、ファイルを実行する前に
ll
を実行して現状のフォルダに a.outがあるかどうか必ず確認することが必要。これが原因ってことはよくあります。

今回の場合、最後に重大なヒントがあります
error: can't open camera: 0
これが原因。ならかんたん
これは母艦にカメラがつながってないか、カメラを認識してないかどちらかです。
カメラがつながっていたら
ll /dev
を実行してみて video0 が最後の方に表示されているかどうか。表示されていれば
でなければvideo1かなんかになってませんか?
そして
lsusb
で出てきた接続機器の中にカメラがあるかどうかです。
カメラによっては認識されない場合があります。マイクロソフトのカメラなどはLinuxでは上手く動作しません。

なので、せめてOpenCVのプログラムをいっぱいコンパイルして実行してみると、プログラムを動かすこつが分かってきます。
また今回表示された内容は エラー以外ソースに書いてあるはずです。ソースに書いてあると言うことはプログラムは正常に動いていること。
で、 表示されたメッセージは実行オプションの指定です。
例えば ./a.out —camera 0
とかでカメラ番号を指定できて、他のオプションはhogの計数指定方法です。
つまりhogの実行はいろんなオプション指定が可能で様々な実験が出来ます。

この際だからOpenCVのソースを片っ端からコンパイルしてみたら? こつがつかめます。

一度はこういったことをやらないとダメッス。

このまま記録して永久保存にします。

上記指摘された内容を考えながら進めた結果下記の通り実行できました。







wiwao@wiwao:~/opencv-3.3.1/samples/gpu$ ./a.out
Histogram of Oriented Gradients descriptor and detector sample.

Usage: hog
  (<image>|--video <vide>|--camera <camera_id>) # frames source
  or  (--folder <folder_path>) # load images from folder
  [--svm <file> # load svm file  [--make_gray <true/false>] # convert image to gray one or not
  [--resize_src <true/false>] # do resize of the source image or not
  [--width <int>] # resized image width
  [--height <int>] # resized image height
  [--hit_threshold <double>] # classifying plane distance threshold (0.0 usually)
  [--scale <double>] # HOG window scale factor
  [--nlevels <int>] # max number of HOG window scales
  [--win_width <int>] # width of the window
  [--win_stride_width <int>] # distance by OX axis between neighbour wins
  [--win_stride_height <int>] # distance by OY axis between neighbour wins
  [--block_width <int>] # width of the block
  [--block_stride_width <int>] # distance by 0X axis between neighbour blocks
  [--block_stride_height <int>] # distance by 0Y axis between neighbour blocks
  [--cell_width <int>] # width of the cell
  [--nbins <int>] # number of bins
  [--gr_threshold <int>] # merging similar rects constant
  [--gamma_correct <int>] # do gamma correction or not
  [--write_video <bool>] # write video or not
  [--dst_video <path>] # output video path
  [--dst_video_fps <double>] # output video fps
Device 0:  "GeForce GTX 1080"  8116Mb, sm_61, Driver/Runtime ver.9.20/9.20

Controls:
ESC - exit
m - change mode GPU <-> CPU
g - convert image to gray or not
1/q - increase/decrease HOG scale
2/w - increase/decrease levels count
3/e - increase/decrease HOG group threshold
4/r - increase/decrease hit threshold

Scale: 1.05
Group threshold: 8
Levels number: 13
Win size: (48, 96)
Win stride: (8, 8)
Block size: (16, 16)
Block stride: (8, 8)
Cell size: (8, 8)
Bins number: 9
Hit threshold: 1.4
Gamma correction: 1

gpusvmDescriptorSize : 1980
cpusvmDescriptorSize : 1980





この調子で残りのサンプルをビルドしながら進めます。一つのサンプルの実行に1日掛かっていますが、お許し下さい。

面白い内容になるのはまだ先になります。

0 件のコメント:

コメントを投稿