Google ColaboratoryでPIL形式のイメージを表示する

Updated:

Google Colaboratoryでは、そのままではPIL(Python Image Library)形式の画像を表示できません。 表示する方法を調べたので、メモしておきます。

通常、PIL形式の画像を表示するには、showメソッドを使って

pil_image.show()

のようにしますが、Google Colaboratoryでは、このやり方では画像が表示されません。

調べたところ、Colaboratoryでは、IPython.displayモジュールのdisplay関数を使えばよいようです。

具体的には、次のようにすれば、PILイメージを表示できます。

from IPython.display import display

display(pil_image)

参考サイト:

Google ColaboratoryからGoogle Driveのファイルにアクセスする

Updated:

Google Colaboratoryから、Google Drive内のファイルを使う手順のメモ書きです。

まず次のPythonコードを実行して、Google Driveをマウントします。

from google.colab import drive
drive.mount('/content/gdrive')

このPythonコードを実行すると、あなたのGoogle Driveのファイルが/content/gdriveにマウントされます。

初めて実行する時には、次のように認証用URLリンクと認証文字列入力用のフィールドが表示されます。

このURLにアクセスして、Google Driveのアカウントを選択すると、 「Google Drive File Stream が Google アカウントへのアクセスをリクエストしています」という画面が表示されます。 ここで[許可]ボタンをクリックすると認証用文字列が表示されます。

表示された文字列をEnter your authorization code:というフィールドに入力してCtrl-Enterをタイプすると、Google Driveがマウントされます。

上のコードで指定したディレクトリ/content/gdriveの中のMy Driveというディレクトリが、Google Driveのトップディレクトリになります。 あとは、適切にパスを指定すれば、Google Drive内のファイルやディレクトリにアクセスできます。

Google DriveはLinux的にマウントされているので、!でLinuxコマンドを起動すれば、自由に扱うことができます。

FPGAは楽しい!

Updated:

昨年(2019年)の春頃から、FPGAに取り組み始めました。 FPGA(Field Programmable Gate Array)とは、プログラマブルなハードウェアです。

HDL(Hardware Description Language: ハードウェア記述言語)というプログラミング言語によって、デジタル回路を記述します。 これがいわゆる「ソースファイル」に当たります。 HDLで記述したソースファイルを開発ツールで処理することにより、Bitstreamファイル(FPGAに与える定義データ)を生成します。 FPGAの電源を投入すると、FPGAはBitstreamファイルを読み込んで、記述した回路として動作するという仕組みです。

数年前からFPGAには興味があったのですが、2019年になって本腰を入れて取り組むことにしました。 いろいろと情報を集めて、3月12日に秋葉原の秋月電子で、Xilinx社のFPGAが搭載されたZybo Z7-20というボードを購入しました。

このボードには、Xilinx社のZynq-7020というFPGAが搭載されています。 Zynqシリーズは、FPGAに加えて、CPU(デュアルコアのCortex-A9)も搭載しています。 ですからCPUとFPGAを組み合わせて、処理を行なうこともできます。 また、CPU上でLinuxを動かすこともできます。

広く使われているHDLとしては、Verilog HDLとVHDLの2種類がありますが、私はVerilogを選びました。 Verilogの入門書を読みつつ、サンプルを写経したり、アレンジしたりしました。 Verilogを一通りは理解しました(つもりです)。 ソフトウェアと同じように、実際にはこの先の道のりが果てしなく長いわけですが。

下の動画は、Zyboをいじりはじめた頃(2019/3/30)のもので、VerilogでLチカ回路を実装して動かしています。

Lチカとは、「LEDをチカチカ点滅させる」という意味で、ソフトウェアのHello Worldに相当します。

4個のLEDを順に点滅させるだけですが、自分で設計した回路が動作するのはわくわくしますね。 「パタヘネを読みながらCPUを実装したいな」などと、夢が広がります。

2020年最初の買い物 - Jetson nano developer kit

Updated:

2020年も2月になってしまいましたが、正月の「初秋葉原詣」について書きます。

1月5日に、自分へのお年玉ということで、久しぶりに秋葉原に買い出しに出かけました。 当初はPcam 5C(Zybo用のCCDカメラ)とSDカードを1, 2枚買う予定でした。 予算としては1万円も使わないつもりでした。

秋月電子に行って、店員さんにPcam 5Cを倉庫から探してもらって、レジで会計をしようとしたら、何とレジ後ろの棚にJetson nano developer kitがあるではありませんか。

気が付いたら、Jetson Nanoと付属品一式(ACアダプター、SDカード、ジャンパーピン)も(物理)買い物カゴに入ってました(笑)。

こうなると、ZyboやJetson Nano用のサブモニタが欲しくなり、あきばおーで10.1インチマルチモニター(8999円)を買ってしまいました。

当初の予定よりも、かなり予算をオーバーしてしまいましたが、2020年も幸先良い幕開けとなりました。

と日記には書いておこう。

VirtualBox上のUbuntu 16.04LTSとWindows 10との間でファイルを共有できるようにしました

Updated:

VirtualBox上のUbuntu 16.04LTSとWindows 10との間で、共有フォルダ(ディレクトリ)を設定して、ファイルを共有できるようにしました。

共有フォルダ(ディレクトリ)のパスは、それぞれ次のようにします。 (アカウント名はmyaccountとします。)

  • Windows: c:\Users\myaccount\Documents\share
  • Ubuntu: /media/share_win

Ubuntuでは、共有ディレクトリは/mediaの下に置くというコンベンションなので、それに従って、共有ディレクトリのパスは/media/share_winとしました。

まず、Windows側で、共有するフォルダc:\Users\myaccount\Documents\shareを作成します。

次に、VirtualBoxで共有フォルダの設定を行ないます。 VirtualBoxマネージャを起動して、対象の仮想マシンを選択してから、[設定]ボタンをクリックします。 そして[共有フォルダ]をクリックすると、共有フォルダ設定画面になります。 この画面の右端にある「フォルダにプラスマーク」のアイコンをクリックすると、「共有フォルダーの追加」ダイアログが表示されます。

ここで次のように入力して、「OK」を押します。

  • フォルダーのパス: c:\Users\myaccount\Documents\share
  • フォルダー名: share
  • 自動マウント: チェックする
  • マウントポイント: /media/share_win

これでVirtualBox側の設定は完了です。

次にUbuntu側の設定を行ないます。

Ubuntuでは、グループvboxsfに所属しているユーザだけが共有ディレクトリにアクセスできます。 デフォルトではユーザはこのグループに属していません。 そこで、次のコマンドで自分(ここではmyaccount)をグループvboxsfに追加してから、Ubuntuをリブートしてください。

$ sudo adduser myaccount vboxsf

Ubuntuをリブートすると、Ubuntu環境の中からは、共有ディレクトリ/media/share_winにアクセスできるようになります。 例えばlsを実行するとこんな感じに表示されます。

$ ls -l /media/share_win/
合計 55132
-rwxrwx--- 1 root vboxsf  3032840 12月 23 23:51 BOOT.BIN
-rwxrwx--- 1 root vboxsf 53408620 12月 23 23:51 image.ub
-rwxrwx--- 1 root vboxsf      817 12月 21 22:10 out.txt
$ 

これでVirtualBox上のUbuntuとWindows 10との間でファイルが共有できるようになりました。