ひでみのアイデア帳 2019-03-26T20:21:06+09:00 urn:uuid:32c34578-c4da-8d90-5f18-1740239359ee RISC-V用のLLVM 8.0をビルド urn:uuid:362be466-0401-b1e1-ab6d-d8c9b291250d RISC-V用のLLVM 8.0をビルド

Ultra96にMIPIボードを繋げようと思った。

しかし、I2Cの電圧が+3.3Vに上がっていなかったので1608サイズの4.7kΩを入手して付けてみようとした。

そしたら、パッドサイズは1005だったようなんだけど、まぁ、それはいいとして付けようと挑戦したんだけど、なかなか見えないし、部品間も狭くてピンセットのサイズの大きく・・・

で、半田付けに失敗した・・・(^-^;

ショボ〜ンとして、半田付けは諦めて気分転換に違うことをすることにした。

そういえば、LLVMが8.0がリリースって見たよなぁ・・・。

RISC-V用のLLVMのビルド

ビルド方法はGetting Started with the LLVM Systemに書かれているので別に迷うこと無いんだけど・・・

こんな感じでいいのかな?

$ git clone https://github.com/llvm/llvm-project.git
$ cd llvm-project.git
$ git checkout llvmorg-8.0.0
$ mkdir build
$ cd build
$ cmake -DLLVM_ENABLE_PROJECTS=clang -G "Unix Makefiles" ../llvm
$ export RISCV=${HOME}/riscv32
$ cmake -DLLVM_ENABLE_PROJECTS=clang -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Debug" -DBUILD_SHARED_LIBS=True -DLLVM_USE_SPLIT_DWARF=True -DLLVM_OPTIMIZED_TABLEGEN=True -DLLVM_BUILD_TESTS=True -DLLVM_DEFAULT_TARGET_TRIPLE="riscv32-unknown-elf"   -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="RISCV" ../llvm
$ make

とりあえず、ビルドは時間がかかるのでコンパイルテストはまた次回。

]]>
2019-03-24T22:00:37+09:00 ひでみ hidemi@sweetcafe/jp <h1>RISC-V用のLLVM 8.0をビルド</h1> <p>Ultra96にMIPIボードを繋げようと思った。</p> <p>しかし、I2Cの電圧が+3.3Vに上がっていなかったので1608サイズの4.7kΩを入手して付けてみようとした。</p> <p>そしたら、パッドサイズは1005だったようなんだけど、まぁ、それはいいとして付けようと挑戦したんだけど、なかなか見えないし、部品間も狭くてピンセットのサイズの大きく・・・</p> <p>で、半田付けに失敗した・・・(^-^;</p> <p>ショボ〜ンとして、半田付けは諦めて気分転換に違うことをすることにした。</p> <p>そういえば、LLVMが8.0がリリースって見たよなぁ・・・。</p> <h2>RISC-V用のLLVMのビルド</h2> <p>ビルド方法は<a href="https://llvm.org/docs/GettingStarted.html">Getting Started with the LLVM System</a>に書かれているので別に迷うこと無いんだけど・・・</p> <p>こんな感じでいいのかな?</p> <pre><code class="txt">$ git clone https://github.com/llvm/llvm-project.git $ cd llvm-project.git $ git checkout llvmorg-8.0.0 $ mkdir build $ cd build $ cmake -DLLVM_ENABLE_PROJECTS=clang -G "Unix Makefiles" ../llvm $ export RISCV=${HOME}/riscv32 $ cmake -DLLVM_ENABLE_PROJECTS=clang -G "Unix Makefiles" -DCMAKE_BUILD_TYPE="Debug" -DBUILD_SHARED_LIBS=True -DLLVM_USE_SPLIT_DWARF=True -DLLVM_OPTIMIZED_TABLEGEN=True -DLLVM_BUILD_TESTS=True -DLLVM_DEFAULT_TARGET_TRIPLE="riscv32-unknown-elf" -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD="RISCV" ../llvm $ make</code></pre> <p>とりあえず、ビルドは時間がかかるのでコンパイルテストはまた次回。</p>
EOS Kiss M urn:uuid:32dd0477-7848-2b62-c473-f6fae4b0f48e EOS Kiss M

子供の進学に合わせて、カメラを新調した。

ミラーレス一眼のEOS Kiss Mです。

一年落ちで安かったです。

今日は途中から天気もよく、近くに桜が咲き始めているのがあったので試し撮りしてみました。

初めての一眼なんですが、いい感じに撮れていて満足です。

ただ、外に出るのは花粉が飛んでて辛いんですがね。

]]>
2019-03-21T21:26:37+09:00 ひでみ hidemi@sweetcafe/jp <h1>EOS Kiss M</h1> <p>子供の進学に合わせて、カメラを新調した。</p> <p>ミラーレス一眼のEOS Kiss Mです。</p> <p>一年落ちで安かったです。</p> <p>今日は途中から天気もよく、近くに桜が咲き始めているのがあったので試し撮りしてみました。</p> <p><img src="./files/190321-153803.jpg" alt="" /> <img src="./files/190321-153904.jpg" alt="" /> <img src="./files/190321-153917.jpg" alt="" /></p> <p>初めての一眼なんですが、いい感じに撮れていて満足です。</p> <p>ただ、外に出るのは花粉が飛んでて辛いんですがね。</p>
sfdiskでパーティショニング urn:uuid:cdda1a5a-a34e-ab80-0f30-920c02b18934 sfdiskでパーティショニング

忘れてしまいそうなので備忘録。

SDカードのパーティショニングをするとき、fdiskを使うんだけどfdiskってスクリプトにするの面倒くさいよね。

シェルスクリプトで<<EOFまでとかするのってあまり好きじゃないんだよね。

ついつい、忘れがちなんだけどsfdiskを使う。

ディスクのサイズを見る

引数'-l'でデバイス情報を取得する。

$ sudo sfdisk -l /dev/sdc
Disk /dev/sdc: 14.8 GiB, 15854469120 bytes, 30965760 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0007c9c0

ディスク情報のファイルを作成する

次のようにstartとsizeにセクタ番号とセクタ数を書くことでパーティションを設定します。

label: dos
label-id: 0x0007c9c0
device: /dev/sdc
unit: sectors

/dev/sdc1 : start=        2048, size=     2097152, type=83, bootable
/dev/sdc2 : start=     2099200, size=    28866560, type=c

これをdisk.txtとする。

ディスクの書き換え

ディスク情報のファイルを次のようにsfdiskに流し込みます。

$ sudo sfdisk /dev/sdc < disk.txt
Checking that no-one is using this disk right now ... OK

Disk /dev/sdc: 14.8 GiB, 15854469120 bytes, 30965760 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0007c9c0

Old situation:

>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Script header accepted.
>>> Created a new DOS disklabel with disk identifier 0x0007c9c0.
/dev/sdc1: Created a new partition 1 of type 'Linux' and of size 1 GiB.
/dev/sdc2: Created a new partition 2 of type 'W95 FAT32 (LBA)' and of size 13.8 GiB.
/dev/sdc3: Done.

New situation:
Disklabel type: dos
Disk identifier: 0x0007c9c0

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sdc1  *       2048  2099199  2097152    1G 83 Linux
/dev/sdc2       2099200 30965759 28866560 13.8G  c W95 FAT32 (LBA)

The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

ディスクの確認

引数-lで出来上がったディスクを確認する。

$ sudo sfdisk -l /dev/sdc
Disk /dev/sdc: 14.8 GiB, 15854469120 bytes, 30965760 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x0007c9c0

Device     Boot   Start      End  Sectors  Size Id Type
/dev/sdc1  *       2048  2099199  2097152    1G 83 Linux
/dev/sdc2       2099200 30965759 28866560 13.8G  c W95 FAT32 (LBA)

既にディスクがあるなら

バックアップの意味も兼ねて既にディスクがあるのなら引数-dでディスク情報を抜き出すことができる。

$ sudo sfdisk -d /dev/sdc
label: dos
label-id: 0x0007c9c0
device: /dev/sdc
unit: sectors

/dev/sdc1 : start=        2048, size=     2097152, type=83, bootable
/dev/sdc2 : start=     2099200, size=    28866560, type=c
]]>
2019-03-14T22:46:48+09:00 ひでみ hidemi@sweetcafe/jp <h1>sfdiskでパーティショニング</h1> <p>忘れてしまいそうなので備忘録。</p> <p>SDカードのパーティショニングをするとき、fdiskを使うんだけどfdiskってスクリプトにするの面倒くさいよね。</p> <p>シェルスクリプトで&lt;&lt;EOFまでとかするのってあまり好きじゃないんだよね。</p> <p>ついつい、忘れがちなんだけどsfdiskを使う。</p> <h2>ディスクのサイズを見る</h2> <p>引数'-l'でデバイス情報を取得する。</p> <pre><code class="txt">$ sudo sfdisk -l /dev/sdc Disk /dev/sdc: 14.8 GiB, 15854469120 bytes, 30965760 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x0007c9c0</code></pre> <h2>ディスク情報のファイルを作成する</h2> <p>次のようにstartとsizeにセクタ番号とセクタ数を書くことでパーティションを設定します。</p> <pre><code class="txt">label: dos label-id: 0x0007c9c0 device: /dev/sdc unit: sectors /dev/sdc1 : start= 2048, size= 2097152, type=83, bootable /dev/sdc2 : start= 2099200, size= 28866560, type=c</code></pre> <p>これをdisk.txtとする。</p> <h2>ディスクの書き換え</h2> <p>ディスク情報のファイルを次のようにsfdiskに流し込みます。</p> <pre><code class="txt">$ sudo sfdisk /dev/sdc &lt; disk.txt Checking that no-one is using this disk right now ... OK Disk /dev/sdc: 14.8 GiB, 15854469120 bytes, 30965760 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x0007c9c0 Old situation: &gt;&gt;&gt; Script header accepted. &gt;&gt;&gt; Script header accepted. &gt;&gt;&gt; Script header accepted. &gt;&gt;&gt; Script header accepted. &gt;&gt;&gt; Created a new DOS disklabel with disk identifier 0x0007c9c0. /dev/sdc1: Created a new partition 1 of type 'Linux' and of size 1 GiB. /dev/sdc2: Created a new partition 2 of type 'W95 FAT32 (LBA)' and of size 13.8 GiB. /dev/sdc3: Done. New situation: Disklabel type: dos Disk identifier: 0x0007c9c0 Device Boot Start End Sectors Size Id Type /dev/sdc1 * 2048 2099199 2097152 1G 83 Linux /dev/sdc2 2099200 30965759 28866560 13.8G c W95 FAT32 (LBA) The partition table has been altered. Calling ioctl() to re-read partition table. Syncing disks.</code></pre> <h2>ディスクの確認</h2> <p>引数-lで出来上がったディスクを確認する。</p> <pre><code class="txt">$ sudo sfdisk -l /dev/sdc Disk /dev/sdc: 14.8 GiB, 15854469120 bytes, 30965760 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x0007c9c0 Device Boot Start End Sectors Size Id Type /dev/sdc1 * 2048 2099199 2097152 1G 83 Linux /dev/sdc2 2099200 30965759 28866560 13.8G c W95 FAT32 (LBA)</code></pre> <h2>既にディスクがあるなら</h2> <p>バックアップの意味も兼ねて既にディスクがあるのなら引数-dでディスク情報を抜き出すことができる。</p> <pre><code class="txt">$ sudo sfdisk -d /dev/sdc label: dos label-id: 0x0007c9c0 device: /dev/sdc unit: sectors /dev/sdc1 : start= 2048, size= 2097152, type=83, bootable /dev/sdc2 : start= 2099200, size= 28866560, type=c</code></pre>
謎のARMアクセラレータ・その2 urn:uuid:410d5ae1-3890-5ea6-2c22-9b53d6e88d55 謎のARMアクセラレータ・その2

追加チュートリアルをやってみた。

参照元はここ

まずは再学習?

$ DEMO_DIR=/tmp
$ wget -P ${DEMO_DIR} http://download.tensorflow.org/example_images/flower_photos.tgz
$ tar zxf ${DEMO_DIR}/flower_photos.tgz -C ${DEMO_DIR}
$ wget -P ${DEMO_DIR} http://storage.googleapis.com/cloud-iot-edge-pretrained-models/canned_models/mobilenet_v1_1.0_224_quant_embedding_extractor_edgetpu.tflite
$ cd python-tflite-source/edgetpu/
$ python3.5 demo/classification_transfer_learning.py --extractor ${DEMO_DIR}/mobilenet_v1_1.0_224_quant_embedding_extractor_edgetpu.tflite --data ${DEMO_DIR}/flower_photos --output ${DEMO_DIR}/flower_model.tflite --test_ratio 0.95
----------------------      Args    ----------------------
Embedding extractor : /tmp/mobilenet_v1_1.0_224_quant_embedding_extractor_edgetpu.tflite
Data set : /tmp/flower_photos
Output path : /tmp/flower_model.tflite
Ratio of test images: 95%
---------------      Parsing data set    -----------------
Dataset path: /tmp/flower_photos
Image list successfully parsed! Category Num =  5
---------------- Processing training data ----------------
This process may take more than 30 seconds.
Processing category: daisy
Processing category: sunflowers
Processing category: tulips
Processing category: dandelion
Processing category: roses
----------------      Start training     -----------------
----------------     Training finished!  -----------------
Model saved as :  /tmp/flower_model.tflite
Labels file saved as : /tmp/flower_model.txt
------------------   Start evaluating   ------------------
Evaluating category [ daisy ]
Evaluating category [ sunflowers ]
Evaluating category [ tulips ]
Evaluating category [ dandelion ]
Evaluating category [ roses ]
----------------     Evaluation result   -----------------
Top 1 : 80%
Top 2 : 91%
Top 3 : 97%
Top 4 : 99%
Top 5 : 100%

そして、推論?

wget -O ${DEMO_DIR}/rose.jpg https://c2.staticflickr.com/4/3062/3067374593_f2963e50b7_o.jpg
$ time python3.5 demo/classify_image.py --model ${DEMO_DIR}/flower_model.tflite --label ${DEMO_DIR}/flower_model.txt --image  ${DEMO_DIR}/rose.jpg
---------------------------
roses
Score :  0.226562
---------------------------
tulips
Score :  0.207031
---------------------------
daisy
Score :  0.191406

real    0m3.385s
user    0m0.106s
sys 0m0.022s

チュートリアルの性能はこんなものということで・・・

]]>
2019-03-09T16:04:45+09:00 ひでみ hidemi@sweetcafe/jp <h1>謎のARMアクセラレータ・その2</h1> <p>追加チュートリアルをやってみた。</p> <p>参照元は<a href="https://coral.withgoogle.com/tutorials/edgetpu-retrain-classification-ondevice/">ここ</a>。</p> <h2>まずは再学習?</h2> <pre><code class="txt">$ DEMO_DIR=/tmp $ wget -P ${DEMO_DIR} http://download.tensorflow.org/example_images/flower_photos.tgz $ tar zxf ${DEMO_DIR}/flower_photos.tgz -C ${DEMO_DIR} $ wget -P ${DEMO_DIR} http://storage.googleapis.com/cloud-iot-edge-pretrained-models/canned_models/mobilenet_v1_1.0_224_quant_embedding_extractor_edgetpu.tflite $ cd python-tflite-source/edgetpu/ $ python3.5 demo/classification_transfer_learning.py --extractor ${DEMO_DIR}/mobilenet_v1_1.0_224_quant_embedding_extractor_edgetpu.tflite --data ${DEMO_DIR}/flower_photos --output ${DEMO_DIR}/flower_model.tflite --test_ratio 0.95 ---------------------- Args ---------------------- Embedding extractor : /tmp/mobilenet_v1_1.0_224_quant_embedding_extractor_edgetpu.tflite Data set : /tmp/flower_photos Output path : /tmp/flower_model.tflite Ratio of test images: 95% --------------- Parsing data set ----------------- Dataset path: /tmp/flower_photos Image list successfully parsed! Category Num = 5 ---------------- Processing training data ---------------- This process may take more than 30 seconds. Processing category: daisy Processing category: sunflowers Processing category: tulips Processing category: dandelion Processing category: roses ---------------- Start training ----------------- ---------------- Training finished! ----------------- Model saved as : /tmp/flower_model.tflite Labels file saved as : /tmp/flower_model.txt ------------------ Start evaluating ------------------ Evaluating category [ daisy ] Evaluating category [ sunflowers ] Evaluating category [ tulips ] Evaluating category [ dandelion ] Evaluating category [ roses ] ---------------- Evaluation result ----------------- Top 1 : 80% Top 2 : 91% Top 3 : 97% Top 4 : 99% Top 5 : 100%</code></pre> <h2>そして、推論?</h2> <pre><code class="txt">wget -O ${DEMO_DIR}/rose.jpg https://c2.staticflickr.com/4/3062/3067374593_f2963e50b7_o.jpg $ time python3.5 demo/classify_image.py --model ${DEMO_DIR}/flower_model.tflite --label ${DEMO_DIR}/flower_model.txt --image ${DEMO_DIR}/rose.jpg --------------------------- roses Score : 0.226562 --------------------------- tulips Score : 0.207031 --------------------------- daisy Score : 0.191406 real 0m3.385s user 0m0.106s sys 0m0.022s</code></pre> <p>チュートリアルの性能はこんなものということで・・・</p>
謎のARMアクセラレータ urn:uuid:7109fb71-67ba-3634-bc69-cfb56400808a 謎のARMアクセラレータ

本日、謎のARMアクセラレータが届きました。

中身はCoralと言って「EDGE TPU COPROCESSOR」でした。

こんな感じです。

セットアップ

セットアップ環境はUbuntu 18.04.1LTSです。

下記のURLを参照しながらチュートリアルを進めます。

https://coral.withgoogle.com/tutorials/accelerator/

Setup for Linux or Raspberry Pi

とりあえず、APIのインストールをします。

wget http://storage.googleapis.com/cloud-iot-edge-pretrained-models/edgetpu_api.tar.gz
tar xzf edgetpu_api.tar.gz
cd python-tflite-source
bash ./install.sh

Ubuntu 18.04ではPythonが3.6なので次のエラーが発生します。

./install.sh: line 96: python3.5: command not found

Python 3.5インストール

次のようにPython 3.5をインストールします。

wget https://www.python.org/ftp/python/3.5.6/Python-3.5.6.tgz
tar xzf Python-3.5.6.tgz
cd Python-3.5.6
./configure --enable-optimizations
sudo make altinstall

インストールの再開

Python 3.5をインストールできたらAPIのインストールを再開します。

bash ./install.sh

念の為、udevを確認します。

$ cat /etc/udev/rules.d/99-edgetpu-accelerator.rules
SUBSYSTEM=="usb",ATTRS{idVendor}=="1a6e",GROUP="plugdev"
SUBSYSTEM=="usb",ATTRS{idVendor}=="18d1",GROUP="plugdev"

さらに念の為、udevを再読み込みます。

sudo udevadm control --reload-rules

USBを確認してみます。

$ lsusb
Bus 002 Device 004: ID 1a6e:089a Global Unichip Corp.

googleじゃないんだ・・・

サンプルの実行

サンプルを実行してみます。

cd edgetpu/
$ time python3.5 demo/classify_image.py \
--model test_data/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \
--label test_data/inat_bird_labels.txt \
--image test_data/parrot.jpg
---------------------------
Ara macao (Scarlet Macaw)
Score :  0.61328125
---------------------------
Platycercus elegans (Crimson Rosella)
Score :  0.15234375

real    0m3.035s
user    0m0.338s
sys     0m0.045s

もうひとつ、サンプルを実行してみます。

"--output"を付けると結果を出力することができます。

$ time python3.5 demo/object_detection.py \
--model test_data/mobilenet_ssd_v2_face_quant_postprocess_edgetpu.tflite \
--input test_data/face.jpg \
--output ~/detection_results.jpg
-----------------------------------------
score =  0.99609375
box =  [474.22854804992676, 38.03488787482766, 738.8013491630554, 353.5309683683231]
-----------------------------------------
score =  0.9921875
box =  [205.4297697544098, 110.28378465056959, 487.75309658050537, 439.73802454331343]
-----------------------------------------
score =  0.83203125
box =  [6.2277887016534805, 182.35811898071842, 127.13575917482376, 326.5376813379348]
-----------------------------------------
score =  0.5
box =  [859.8422718048096, 213.5472493581642, 1008.978108882904, 383.9367261515483]

real    0m3.094s
user    0m0.401s
sys     0m0.046s

その他

結構、暖かくなります。

]]>
2019-03-09T00:35:04+09:00 ひでみ hidemi@sweetcafe/jp <h1>謎のARMアクセラレータ</h1> <p>本日、謎のARMアクセラレータが届きました。</p> <p><img src="./files/190308-100825.jpg" alt="" /></p> <p>中身はCoralと言って「EDGE TPU COPROCESSOR」でした。</p> <p><img src="./files/190308-100900.jpg" alt="" /></p> <p>こんな感じです。</p> <p><img src="./files/190308-100913.jpg" alt="" /></p> <h2>セットアップ</h2> <p>セットアップ環境はUbuntu 18.04.1LTSです。</p> <p>下記のURLを参照しながらチュートリアルを進めます。</p> <p><a href="https://coral.withgoogle.com/tutorials/accelerator/">https://coral.withgoogle.com/tutorials/accelerator/</a></p> <h3>Setup for Linux or Raspberry Pi</h3> <p>とりあえず、APIのインストールをします。</p> <pre><code class="txt">wget http://storage.googleapis.com/cloud-iot-edge-pretrained-models/edgetpu_api.tar.gz tar xzf edgetpu_api.tar.gz cd python-tflite-source bash ./install.sh</code></pre> <p>Ubuntu 18.04ではPythonが3.6なので次のエラーが発生します。</p> <pre><code class="txt">./install.sh: line 96: python3.5: command not found</code></pre> <h3>Python 3.5インストール</h3> <p>次のようにPython 3.5をインストールします。</p> <pre><code class="txt">wget https://www.python.org/ftp/python/3.5.6/Python-3.5.6.tgz tar xzf Python-3.5.6.tgz cd Python-3.5.6 ./configure --enable-optimizations sudo make altinstall</code></pre> <h2>インストールの再開</h2> <p>Python 3.5をインストールできたらAPIのインストールを再開します。</p> <pre><code class="txt">bash ./install.sh</code></pre> <p>念の為、udevを確認します。</p> <pre><code class="txt">$ cat /etc/udev/rules.d/99-edgetpu-accelerator.rules SUBSYSTEM=="usb",ATTRS{idVendor}=="1a6e",GROUP="plugdev" SUBSYSTEM=="usb",ATTRS{idVendor}=="18d1",GROUP="plugdev"</code></pre> <p>さらに念の為、udevを再読み込みます。</p> <pre><code class="txt">sudo udevadm control --reload-rules</code></pre> <p>USBを確認してみます。</p> <pre><code class="txt">$ lsusb Bus 002 Device 004: ID 1a6e:089a Global Unichip Corp.</code></pre> <p>googleじゃないんだ・・・</p> <h2>サンプルの実行</h2> <p>サンプルを実行してみます。</p> <pre><code class="txt">cd edgetpu/ $ time python3.5 demo/classify_image.py \ --model test_data/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \ --label test_data/inat_bird_labels.txt \ --image test_data/parrot.jpg --------------------------- Ara macao (Scarlet Macaw) Score : 0.61328125 --------------------------- Platycercus elegans (Crimson Rosella) Score : 0.15234375 real 0m3.035s user 0m0.338s sys 0m0.045s</code></pre> <p>もうひとつ、サンプルを実行してみます。</p> <p>&quot;--output&quot;を付けると結果を出力することができます。</p> <pre><code class="txt">$ time python3.5 demo/object_detection.py \ --model test_data/mobilenet_ssd_v2_face_quant_postprocess_edgetpu.tflite \ --input test_data/face.jpg \ --output ~/detection_results.jpg ----------------------------------------- score = 0.99609375 box = [474.22854804992676, 38.03488787482766, 738.8013491630554, 353.5309683683231] ----------------------------------------- score = 0.9921875 box = [205.4297697544098, 110.28378465056959, 487.75309658050537, 439.73802454331343] ----------------------------------------- score = 0.83203125 box = [6.2277887016534805, 182.35811898071842, 127.13575917482376, 326.5376813379348] ----------------------------------------- score = 0.5 box = [859.8422718048096, 213.5472493581642, 1008.978108882904, 383.9367261515483] real 0m3.094s user 0m0.401s sys 0m0.046s</code></pre> <h2>その他</h2> <p>結構、暖かくなります。</p>