TensorFlowの最近のブログ記事

QR Code Scanner with TensorFlow Lite

QR Code Scanner with TensorFlow Lite と言うのがあったので、試してみる。

正確には、Android 版だが、
Android QR Code Detection with TensorFlow Lite

modelの作成は、下記、model_maker を参考にしているみたい。
Object Detection with TensorFlow Lite Model Maker

最終的には、Raspi 3b+ で試してみようと思います。
注) Raspi 3b+ に、Coral USB TPU を使っても効果は無いみたい。もっとパワーが必要じゃ。

Raspi TensorFlow Lite Object detection は、
examples/lite/examples/object_detection /raspberry_pi
を参考にします。

1. 開発環境
開発は、PC 上で行います。
PC Ubuntu Mate 22.04
Intel Core i-5 4570 3.2GHz x 4 with 12G Memory
Python 3.9
tflite-model-maker 0.4.2

1.1 Python3.9 を別途インストールします。
Python の Dual インストールは、下記を参照しました。

Install Python 3.9 or 3.8 on Ubuntu 22.04 LTS Jammy JellyFish

Tensorflow で、 MNIST を学び直し。

tensorflow 2.10 環境で、tensoflow MNIST を学び直していて、
MNIST データのダウンロードで困ったので、メモしておきました。

1.『TensorFlowで学ぶディープラーニング 中井悦司著』(マイナビ出版) を再度紐解いて、機械学習の基本を学び直ししようとしたら、
Tensorflow での記述だったので、tensorflow2 環境下でも出来るようにメモしました。

機械学習に関して、色々な書籍があるけど、この本が一番基本が判りやすいので、おんちゃんは、お勧めです。
Keras で書けば、超簡単ですが、中で、なにをしているのかよく判らないと感じる人には、お勧めです。
但し、難点が、サンプルコードが、Tensorflow である点です。但し、少し修正すれば、Tensorflow 2 でも同じように、動かせます。

keras.datasets.mnist が使えるようなので、こちらを使います。

環境
 Windows11
 tensorflow-gpu 2.10

Coral Edge TPU USB のサンプルの Object Detection が公開されていたので、 試してみました。の #4 です。

今回は、気になった点の改善を行ってみました。

https://github.com/google-coral/examples-camera

テスト環境
Windows10
Python3.6
Tensorflow 1.15.0 GPU
USB カメラ

 試したのは、上記プログラムの、examples-camera/opencv/ です。

最近、guichristmann/edge-tpu-tiny-yolo を試してみて、再度、こちらの Coral Edge TPU USB のサンプルの Object Detecton を試す。
を動かしてみると、微妙に検出ボックスが大きい気がしました。

プログラムを調べてみると、 guichristmann/edge-tpu-tiny-yolo と、examples-camera/opencv/ では、画像の取り込みと、
検出ボックスの変換に違いがありました。

Tensorflow1.15 pointnet sem_seg #2

Tensorflow1.15 pointnet sem_seg #2 です。

Tensorflow1.15 pointnet sem_seg で、学習ができたので、
今回は、検証用のプログラム、sem_seg/batch_inference.py を試してみました。

開発環境
OS: Windows10
言語: Python3.7
Tensorflow 1.15 GPU
開発ツール: Eclipse

検証は、下記を実行するだけですが、
> cd sem_seg
> python batch_inference.py

実際に試してみると、入力データが、 .npy が必要のようです。
オリジナルの text zipをダウンロードして、sem_seg/collect_indoor3d_data.py を実行すると、
作成される様ですが、肝心のオリジナルの text zip を入手できません。
なので、学習で使った、.h5 ファイルを使うように、変更してみました。

Tensorflow1.15 pointnet sem_seg

Tensorflow1.15 pointnet sem_seg を試してみました。

Tensorflow1.15 pointnet part_seg で part_seg を試したので、
今回は、 sem_seg を試してみました。

charlesq34/pointnet
上記ページの sem_seg の部分です。

開発環境
OS: Windows10
言語: Python3.7
Tensorflow 1.15 GPU
開発ツール: Eclipse

学習は、下記を実行するだけですが、
> cd sem_seg
> python train.py

例に習って、オリジナルのままの、 train.py では、
長い時間、学習が終わるまで待たなければいけないので、不便です。
epoch=4 とか、少しずつ出来るように、手を加えてみました。
また、 Tensorboard での表示が少し変なので、変更してみました。

Tensorflow1.15 pointnet part_seg #1

Tensorflow1.15 で pointnet part_seg を試してみました。 #1

Tensorflow1.15 pointnet part_seg で学習ができたので、今回は、part_seg/test.py を試してみました。

開発環境
OS: Windows10
言語: Python3.7
Tensorflow 1.15 GPU
開発ツール: Eclipse

下記を実行するだけです。
> cd part_seg
> python test.py

そうすると、part_seg/test_results の結果が出力されました。
0_diff.obj 0_gt.obj 0_pred.obj 0.log 等、ファイルが一杯作成されました。

xxx. obj とは、なんぞね?
どうやら、text file の様なので、Text Editer で中を見てみると。

Tensorflow1.15 pointnet part_seg

Tensorflow1.15 で pointnet part_seg を試してみました。

ROS を使って、草刈りロボットの開発を目指していますが、畑の境界をどの様に認識させるかで、止まっています。
やはり、ここは、機械学習でどうにか出来ないか思案しています。
そんな折、Depthカメラでの、PointCloud データを入力にした、モデルがあったので、
今回試してみました。

charlesq34/pointnet
上記ページの part_seg の部分です。

開発環境
OS: Windows10
言語: Python3.7
Tensorflow 1.15 GPU
開発ツール: Eclipse

学習は、下記を実行するだけですが、
> cd part_seg
> python train.py

どうも、オリジナルのままの、 train.py では、
長い時間、学習が終わるまで待たなければいけないので、不便です。
epoch=10 とか、少しずつ出来るように、手を加えてみました。

但し、最初に断って置きますが、なかなか、 label_acc (test and trainning label accuracy) の値が上がってきません。
これで、良いのか? ちょっと疑問です。

Coral Edge TPU USB のサンプルの Object Detection が公開されていたので、
試してみました。の#3 です。

https://github.com/google-coral/examples-camera

テスト環境
Raspberry Pi 3B+
Coral Edge TPU USB
Python3.7
Tensorflow 1.15.0
Raspi カメラ

前回のプログラムでは、Raspi で実行させると、発声のタイミングで、Stream バッファに画像が貯まるので、声が出た後の画像が、
実際のカメラの前の映像と一致しない問題が出ました。

OpenCV でのStream バッファのクリア自体は用意されていなくて、代替手段として、cap.read() または、 cap.grab() を5回繰り返して、
受け捨てする方法が、Web に出ていたので試してみました。が、

結論としては、余り良くないので、 picamera stream to OpenCV が出来ないか、Webで検索していたら、
丁度良いサンプルが在ったので、それを取り入れてみました。

Accessing the Raspberry Pi Camera with OpenCV and Python

結局は、下記、が元ネタみたいです。
色々な使い方が、出来るようです。

https://picamera.readthedocs.io/en/release-1.13/recipes2.html

Keras CNN Sound Classify #6

Keras CNN で 音の分類 #6。update 2020.5.29

ディープラーニングで音声分類 のサンプルが出ていたので、試してみましたの #6です。
今度は、Inception V3 を使っての学習ができたので、学習済モデルを、Tensorflow Lite に変換して試してみました。

開発環境
OS: Windwos10
GPU: GeForece GTX 1070 8GB
Anaconda
Python3.6
TensorFlow 1.15.0 GPU
Keras 2.3.1

注1) 今回は、TensorFlow 1.15.0 を使いました。
TensorFlow 1.14.0 では、Tensoflow Liteへの変換が上手く行きませんでした。
また、こちらの方が、Tensorflow Lite の実行速度が速いきがします。
注2)  Keras は、オリジナルを使っています。
tensorflow.python.keras を敢えて使っていません。

tensorflowでMASK R-CNNによるSemantic Segmentation

tensorflowでMASK R-CNNによるSemantic Segmentation
みて、おんちゃんも試してみました。

 元ネタは、
https://github.com/tensorflow/models/tree/master/research/object_detection
なので、

windows10 のMSYS2 ターミナルから、適当なディレクトリで、

$cd /c/app/tensorflow
$git  clone https://github.com/tensorflow/models.git

ダウンロードして、

OpenCV3.4.2 Dnn Object Detection with TensorFlow Model

OpenCV3.4.2 dnn モジュールを使うと、TensorFlow の学習済みモデルを利用した、
Object Detection AP が簡単に出来ると言う事なので、試してみました。

参考ページは、こちらになります。
TensorFlow Object Detection API

おんちゃんは、入力をWebカメラ、USBカメラにしました。
Model は、MobileNet-SSD v2 / 2018_03_29 を使っています。

使った感想は、検出オブジェクトの重複があるようで、重複を削る所が足りないような気がします。
但し、CPU だけで、結構な速度が出るのは、関心しました。
もしかしたら、 OpenCV の dnn では、TensorFlow Lite の様なモデルの軽量化をしているのかもしれません。
後、Boxの枠ですが、画像ファイルだと大体出来ていますが、動画だと少し変です。おおんちゃんの
プログラムミスかもしれません。

以上です。コッホ!!

注) OpenCV3.4.2 以降を使ってください。古いバージョンだとエラーが出ます。

TensorFlow Lite Object Detection on PC(CentOS7)

公開されている、Object Detection API を TensorFlow Lite で書いてみました。

プログラムのベースは、 object_detection_tutorial.ipynblabel_image.py です。

使ったモデルは、こちらで公開されている、 ssd_mobilenet_v1_coco_2018_01_28 をダウンロードして、
下記ページに従って、
Running on mobile with TensorFlow Lite
ssd_mobilenet_v1_coco_2018_01_28 -> detect.tflite へ変換しました。

因みに、おんちゃんは、 CentOS7 に Python3.5 (IUS版) をインストールして、
その後、 TensorFlow を buzel でソースビルドを行っています。

Tensorflow Lite は、with XLA JIT support=y を指定して、Buzel でのソースビルドが必要です。
当初、Windows10 でCmake で試しみましたが、上記のオプションが指定できないので、
結局、CentOS7 になりました。

実行時の注意点は、vis_util.visualize_boxes_and_labels_on_image_array() のパラメータで
min_score_thresh=0.3 (default=0.5) にして、ボックスの表示を多くしています。
そうすると、ssd_mobilenet_v1_coco でも結構検出しているのが、目で見えるので、楽しいです。

公開されている、TensorFlow Object Detection API を USBカメラ、Mjpg-streamer での利用方法を試してみます。
GitHub で公開されている、object_detectioon_tutorial.ipynb をベースに、 USBカメラ、Mjpg-streamer での利用をためしてみました。
https://github.com/tensorflow/models/tree/master/research/object_detection

サンプルは、ローカルの画像を2つ読み込んで、試していますが、
これを、 USB カメラ、mjpg-steamer から取り込んだキャプチャー画像に変えてみます。

object_detectioon_tutorial.ipynb が実行できる環境が整えば、結構簡単です。
Windows10 + Tensorflow-1.5.0 GPU +Python3.5 + OpenCV3.4 (Anaconda で全て構築しています)
Tensorflow は、新しいバージョンが出ていますが、GPU版は、1.5.0 をつかいます。

TensorFlow cifar10_eval.py のオリジナル画像で試す。

TenserFlow のサンプルプログラムの CIFAR-10 で
cifar10_eval.py で、自分で作った画像を使って評価するプログラム例が出ていたので、
試してみました。

参考にさせてもらったのは、こちらのページの
自前の画像で予測してみる ですが

http://blog.suprsonicjetboy.com/entry/2017/04/30/204951

実際に試してみると、saver = tf.train.Saver(variables_to_restore) エラーになりました。


なにか、Restore した形式と、合致していない云々...のエラーのような?


仕方が無いので、自分で色々トライ・アンド・エラーで試して、何分、TensorFlow の勉強を始めて、1ヶ月そこそこなので、何もわからず、しまいには、力仕事になりましたが、
どうにか実行できるようになりました。

このアーカイブについて

このページには、過去に書かれたブログ記事のうちTensorFlowカテゴリに属しているものが含まれています。

前のカテゴリはStereo Cameraです。

次のカテゴリはTensorFlow 2です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

カテゴリ

ウェブページ

サイトナビ