2024年2月19日月曜日

カラー図解 Raspberry Piではじめる機械学習 補足情報トップ

はじめに

本ページは、金丸隆志著「Raspberry Piではじめる機械学習」(講談社ブルーバックス)の補足情報をまとめるためのページです。

下記の2つのページと合わせて本書をお読みください。サンプルファイルへのリンクは2つ目のページのトップにあります。
下記にはさらに興味がある方向けの情報を記します。

[Raspberry Pi 5]


[Windows / macOS での演習実行について]


[カメラでの演習実行について]


[TensorFlowについて]


[機械学習と電子工作]


[物体検出と姿勢推定について]

以下は、今となっては古くなったのでサポートを停止した情報です。
(実用的な速度で動作しなかったり、高価な Coral USB Accelerator が必要だったり)

[その他]

以下は必要に応じて参照してください。
最後に、読者の方々の感想などを下記にまとめます。


Raspberry PiへのOSのインストール方法

1. Raspberry Piを用いる上で必要なもの

本ページでは、Raspberry Piに「Raspberry Pi OS」というLinux系OSをインストールする方法を解説します。 この OS は 2020年5月までは「Raspbian(ラズビアン)」という名称でした。Raspberry Piをコンピュータとして使うために必要な機器をまとめると、表1のようになります。機器によってはすでにお持ちだという方も多いでしょう。まずはこの表と、1.1から始まる個別の解説をご覧になり、よくわからない機器があったらお近くのパソコンショップで質問してみることをおすすめします。

表1 Raspberry PiへのOSのインストールに必要な機器
物品 備考
Raspberry Pi 必須。機械学習では動作が高速な Raspberry Pi 4 以降を推奨。電子工作では消費電力の小さい Raspberry Pi 3 あたりを選ぶのも手。1.1で解説
32GB以上のmicroSDカード 必須。書籍発売当時は16GB程度のmicroSDカードで十分だったが、OSの更新に伴い、2024年現在は 32GB 以上の microSD カードを推奨する。16GB のmicroSDカードでは、OSをフルインストールしたときに容量が不足するため。速度は高速なクラス10のものを推奨。アダプタが必要になる場合がある。1.2で解説
インターネットに接続されたPC 必須。microSDカードかSDメモリーカードを読み書きするためのスロットが必要。1.3で解説
microSDカード対応マルチカードリーダー/ライター microSDやSDメモリーカード用のスロットがないPCでは必須。1.3で解説
USBキーボード 必須。本書では有線の日本語キーボードを前提に解説(PS/2と呼ばれるタイプのものは不可)。1.4で解説
USBマウス 必須。有線のマウスを前提に解説(PS/2と呼ばれるタイプのものは不可)。1.4で解説
マイクロUSB接続の電源(Pi Zero~Pi 3の場合)または USB Type-C接続の電源 (Pi 4 / 5の場合) 必須。「USB充電対応ACアダプタ」と「USB(A)オス-USB(Micro-B)オスタイプのUSBケーブル」の組み合わせでも可。Raspberry Pi 4 / 5 の場合は「USB充電対応ACアダプタ」と「USB(A)オス-USB(Type-C)オスタイプのUSBケーブル」の組みあわせでなければならない。Type-C ポートのあるACアダプタの場合、両端が Type-C のケーブルでも良い。流せる電流の大きさに注意。1.5で解説
ディスプレイおよびケーブル(右のどれかを選択) HDMI接続可能なPC用ディスプレイおよびHDMIケーブル。PC用の他、HDMI搭載液晶テレビも可。1.6で解説
DVI-D接続可能なPC用ディスプレイおよびDVI-HDMI変換ケーブル(HDMIがRaspberry Pi側となる)。1.6で解説
Raspberry Pi 4 / 5 の場合、Raspberry Pi側の端子はマイクロHDMI端子でなければならない。1.6で解説
Raspberry Pi用のケース 任意だが、あると安心。1.7で解説
ネットワーク接続用機器 必須。1.85.で解説


なお、パソコンショップなどで質問する際の注意点を1つ述べておきます。通常、キーボードやマウスなどのコンピュータ用機器はWindowsやmacOSでの動作を保証しています。一方、本書で用いるRaspberry Piや、Linux系OSでの動作を保証する機器はほとんどありません。そのため、パソコンショップで「Raspberry Piで動作するキーボードはどれか」と尋ねても、回答できる店員はおそらくいないでしょう。 それではどのような機器を選べばよいでしょうか。通常、Linux系OSで動作する機器を選ぶ際は、「奇抜なものではなく、なるべくベーシックなもの」、「最新のものではなく、長く販売されているもの」を選ぶのが失敗しないコツです。パソコンショップで質問するときの参考にしてみてください。

本章で必要な機器とそれを用いて行う作業の流れをまとめたのが図1です。必要に応じて参照してください。

図1 本章で行う作業の流れ

各項目について、以下でひとつずつ解説していきます。

1.1 Raspberry Pi

Raspberry Piには下記のように様々なバージョンがあります。古い機種は入手しにくくなっていますね。

Raspberry Pi 5 メモリ 8GB  :KSY / 秋月電子通商 / スイッチサイエンス
Raspberry Pi 5 メモリ 4GB  :KSY / 秋月電子通商 / スイッチサイエンス
Raspberry Pi 5 メモリ 2GB  :KSY / 秋月電子通商 / スイッチサイエンス
Model B系 Raspberry Pi 4 Model B (Pi 4 B) メモリ 8GB  :KSY / 秋月電子通商 / 千石電商 / スイッチサイエンス
Raspberry Pi 4 Model B (Pi 4 B) メモリ 4GB  :KSY / 秋月電子通商 / 千石電商 / スイッチサイエンス
Raspberry Pi 4 Model B (Pi 4 B) メモリ 2GB  :KSY / 秋月電子通商 / スイッチサイエンス
Raspberry Pi 3 Model B+ (Pi 3 B+)  :-
Raspberry Pi 3 Model B (Pi 3 B)  :秋月電子通商
Raspberry Pi 2 Model B (Pi 2 B) 無線機能なし
 :スイッチサイエンス
Raspberry Pi Model B+ (Pi 1 B+) 無線機能なし
 :スイッチサイエンス
Model A系 Raspberry Pi 3 Model A+ (Pi 3 A+) Pi 3 B+から有線LAN、USBポート数を減らし、
メモリを1GBから512MBに減らしたもの。
 :KSY / 秋月電子通商 / スイッチサイエンス
Raspberry Pi Model A+ (Pi 1 A+) 無線機能なし。Pi 1 B+から有線LAN、USBポート数を減らし、
メモリを512MBから256MBに減らしたもの。
 :スイッチサイエンス
Zero系 Raspberry Pi Zero 2 W (Pi Zero 2W) Zero Wの高性能版。メモリが512MBと少ないので上級者向け
 :KSY / 秋月電子通商 / スイッチサイエンス
Raspberry Pi Zero WH (Pi Zero WH) Zero Wにピンヘッダを半田づけしたもの。
 :KSY / 秋月電子通商 / スイッチサイエンス
Raspberry Pi Zero W (Pi Zero W)  :秋月電子通商 / スイッチサイエンス
Raspberry Pi Zero (Pi Zero) 無線機能なし。旧版もあるがカメラが使えるのはV1.3のみ。
 :スイッチサイエンス

本書で解説したように、本書で推奨するのは高速なモデルです。上の表では上部のもの、すなわち Pi 5、Pi 4 B、Pi 3 B+、Pi 3 Bなどが該当します。 機械学習の演習を行う場合であれば可能な限り Pi 4 B 以降のモデルが望ましいですし、電子工作の演習を行う場合、消費電力の小さい Pi 3 B などを選択するのも手です。
とは言え、古いモデルは入手困難になってきていますので、入手しやすいモデルを購入する、というのが現実的でしょう。

Pi Zeroシリーズ (Pi Zero 2 W も含む) は、動作速度が遅く搭載メモリ量も少ないという問題があり、 OS を更新することやデスクトップでブラウザを利用するこすら困難なことがありますので上級者向けとお考えください。このような問題が起こるのは、OS が新しくなるに伴い、動作に必要な性能がどんどん高くなっているためと思われます。

さて、Raspberry Pi 4 以降にはメモリ量のバリエーションとして 8GB、4GB、2GB のものがあります。 一般にメモリ量の多い方が複数のタスクを同時に実行した場合の快適さが向上します。 その結果、Raspberry Pi 3よりもメモリ量の多いRaspberry Pi 4 や 5 はブラウザなどの動作が快適です。 ただし、私が書いた書籍(電子工作と機械学習)の範囲では、メモリ量8GB、4GB、2GBの3バージョンの違いはあまりありませんので、お求めやすい価格のものを選んで構いません。
2024年8月の時点ですと、Raspberry Pi 5 のメモリ 2GB がお買い得ですね。

また、「Model A系」と呼ばれるシリーズもありますが、これらはUSBポート数やメモリ容量が少ないため、初めてRaspberry Piを使うという方にはお勧めしません。メモリが少ないと、ブラウザによるインターネットサイトの閲覧など、通常のPCとしての用途でも厳しいことがあるためです。

本ページでは、Pi 5 や Model B系に対する解説をメインとし、Pi Zero シリーズに対して注釈を加えるという形式で解説します。

1.2 32GB以上ののmicroSDカード

Raspberry PiのOSそのものやユーザーの作成したデータを保存するため、図2(A)のようなmicroSDカードが1枚必要です。

図2 (A)microSDカードおよびアダプタ、(B)SDメモリーカードスロット、(C)microSDカードスロット

図2(A)の右側にはアダプタと呼ばれるものが表示されています。お使いのPCによっては、microSDカードの読み書きを行う際にこのアダプタも必要になります。 なお、microSDカードのアダプタにはロック機能がついており、カード側面のスイッチがロック位置にあると書き込みができません。そのため、使用時にはロックが解除されていることに注意してください。

microSDカードを購入する際に注目して頂きたいのは、データを保存できる容量と、スピードクラスの2点です。

容量は32GB(ギガバイト)以上のものを用意してください。容量の単位がMB(メガバイト)で表示されているものでは容量が足りず使えません。

スピードクラスとはmicroSDカードの表面にある丸で囲まれた数値のことで、メモリの読み書きの速度を表します。クラス2、4、6、10のものが販売されており、数字が大きい方が高速です。

読み書き速度に関してはUHSスピードクラスという分類もあります。U1とU3の2種類があり、アルファベットのUの内部に数字が描かれています。U1はスピードクラスのクラス10と同程度、U3はそれ以上の速度となっております。

本書で学ぶ内容は、本書執筆時において容量8GB、スピードクラス10のmicroSDカードで動作確認しましたが、OSが新しくなるにつれ必要とする容量が増えています。2023年10月にリリースされたOSをフルインストールした場合、16GBでは足りず、32GBのサイズが必要であることを確認しています。なお、フルインストール版ではなく、通常インストール版ならば16GBでも足りますが、将来的には16GBでは不足するようになると思われます。

なお、Raspberry PiではmicroSDカードとの相性によりOSが起動しないなどの問題が発生することがまれにあります。そのような問題が起こった場合は別のmicroSDカードを用意するのが良いでしょう。

1.3 インターネットに接続されたPC

図1に示されているように、WindowsやmacOSなどが動作しているPCがRaspberry Piとは別に必要です。インターネットに接続されたPCで、Raspberry PiのOSをダウンロードし、microSDカードに書き込むのです。そのため、このPCではmicroSDカードの読み書きができる必要があります。

一般家庭用のPCには図2(B)のようなSDメモリーカードスロットや図2(C)のようなmicroSDカードスロットがあることが多いのでそちらを用います。SDメモリカードスロットにはmicroSDカードにアダプタを装着したものを挿入し、microSDカードスロットには直接挿入することで、読み書きが行えます。

お使いのPCにこれらのスロットがない場合、下図のようなmicroSDカード対応のマルチカードリーダー/ライターと呼ばれる製品を追加で購入する必要がありますのでご注意ください。


1.4 USBキーボードとUSBマウス

キーボードとマウスはUSB接続方式の有線のものを推奨します。
無線キーボードやマウスを使用したいという場合、 ELECOMのサイトの分類でいえば、「2.4GHz ワイヤレス タイプ (キーボードの場合 / マウスの場合)」であればトラブルは少ないでしょう。このタイプには、Logicool社のコンボタイプ(例えばこちら)のように「一つのUSBデバイスでキーボードとマウスの両方を無線で使える」デバイスもあります。
なお、Bluetoothと呼ばれる無線規格のキーボードやマウスは、Raspberry Pi では使えない機種もありますのでおすすめしません。それでもBluetooth 規格のキーボードとマウスを利用したい、という方のためにコメントしますと、Bluetooth 3.0 規格のものならば動作する可能性が高く、Bluetooth 4.0 規格のものはデフォルトでは動作しないことが多いでしょう。また、動作する場合でも Bluetooth のペアリングの際には有線マウスや 2.4GHz ワイヤレスタイプのマウスが必要となることにもご注意ください。

1.5 マイクロUSB接続の電源(Pi Zero~Pi 3の場合)または USB Type-C接続の電源 (Pi 4 / 5 の場合)
(流すことのできる電流の最大値に注意)

Pi ZeroからPi 3の場合、電源を供給するためにマイクロUSB端子で電源を供給するACアダプタを用います。マイクロUSB端子は図3(A)左のような形状をしています。これまで、スマートフォンの充電に用いられることが多かったものです。
一方、Raspberry Pi 4 / 5 の場合、Raspberry Pi側の端子がUSB Type-Cと呼ばれるものに変化しています。USB Type-C端子は図3(A)右のような形状をしています。こちらは、比較的新しいスマートフォンの充電用に普及が始まっているものです。

図3 (A)左: マイクロUSB端子(Micro-B)、右: USB Type-C 端子、(B)USB充電対応ACアダプタとUSB Type-Cのケーブル

これらのケーブルとUSB対応ACアダプタを組み合わせて用いる場合、代表的な構成は図3(B)のようになります。左側がスマートフォン付属のUSB充電対応ACアダプタ、右側がUSBケーブルです。USBケーブルは、Pi ZeroからPi 3の場合「USB(A)オス-USB(Micro-B)オス」というタイプのもの、Pi 4ならばUSB Type-C対応のものでしたね。

また、最近ですと下の図3 (C) のように、USB Type-Aポート(角のある四角いポート)と USB Type-C ポート(角のない小さめのポート)の両方があるACアダプタ(充電器)もあります。この場合、以下で調べ方を記しますが、 USB Type-C ポートの方が流すことのできる電流が大きいことが多いように思います(図3 (C) の場合、Type A ポートが5V/2.4A、Type C ポートが 5V/3A)。そのような場合、Pi 4 や Pi 5 に対しては、図3 (D) のように両端が Type-C のケーブルで電力を供給するのが良いでしょう。また、図3 (C) のように充電器に複数のポートがある場合、複数のポートを同時に使うとそれぞれのポートの電流が減ってしまいますので、Raspberry Pi に電力を供給する場合は使うポートは一つだけにするのが安全です。

図3 (C)左: マイクロUSB端子(Micro-B)、右: USB Type-C 端子、(D)USB充電対応ACアダプタとUSB Type-Cのケーブル


図ではACアダプタとケーブルが分かれていますが、これらが一体となっているものでも構いません。そのような一体型のものには、Raspberry Pi 向けに作られたアダプターもあります。 Pi 5 対応のACアダプタとしては、スイッチサイエンスの以下の商品があります。 Pi 4 まで対応のACアダプタとしては下記があります。 なお、ACアダプタを選ぶ際にはその出力に注意してください。ACアダプタを見ると、「出力」あるいは「OUTPUT」という項目が記されています。典型的には「DC5.0V、2.4A」などと書かれていることが多いでしょう。 ここで「A(アンペア)」の単位で書かれた数字はこのACアダプタが流すことの電流の最大値を表しています。2.4Aの部分が2400mA(ミリアンペア)と書かれている場合もありますが、これらの意味は同じです。この最大電流が、Raspberry Piを動作させるために必要な大きさ以上でなければなりません。

なお、上で紹介した図3 (C) のACアダプタ(充電器)は Type A ポートが 5V/2.4A、Type C ポートが 5V/3A であり、複数ポートを同時に使うとその電流は小さくなりますので注意が必要です。 また、Type C ポートに対する出力の記載は、例えば「5V/9V/12V/15V 3A、20V 2.25A」などのように、複数の電圧に対する電流が書かれていることが多く、慣れないと読み取りが難しいでしょう。5V に対する電流(ここでは 3A)を読み取るようにしてください。

本書が対象とするRaspberry Piを動作させるのに必要な電流は表2の通りです。

表2 Raspberry Piを動作させるのに必要な電源の最大電流
機種 公式による推奨最大電流
Pi 5 5A
Pi 4 B 3.0A
Pi 3 B / Pi 3 B+ / Pi 3 A+ 2.5A
Pi Zero 2 W 2A
Pi 2 B 1.8A
Pi 1 B+ 1.8A
Pi Zero W / Pi Zero WH / Pi Zero 1.2A
Pi 1 A+ 0.7A

これらは、「Raspberry Piに十分大きな負荷をかけても動作するための電流」と考えられますので、実際には、これより最大電流の小さいACアダプタを用いても動作することは多いです。

とはいえ、ACアダプタがRaspberry Piが必要とする電流を出力する能力がない場合、Raspberry Piが起動しない、あるいは起動しても途中で再起動されてしまう、という問題が起こり得ます。Wifiの接続が不安定になる、などの問題も起こりえます。その場合は最大電流の大きなACアダプタを用意しましょう。

なお、執筆時点 (2024.2) では、Raspberry Pi 5 が要求する 5.0A を USB Type-C で出力できる AC アダプタは日本では発売されていないと思います。当面は、5V/3.0A を供給できる AC アダプタか、上にリンクを示した秋月電子の 5V/3.8A を供給できる AC アダプタを利用するのが良いでしょう。いずれ Pi 5 向けの AC アダプタも発売されると思います。

また、図3(B)の左端のACアダプタの代わりにPCのUSBポートを用いることは避けてください。PCのUSBポートは規格上最大500mAの電流しか供給できないためです。

さらに、ACアダプタに十分な性能があっても、マイクロUSBケーブルの品質が低いとやはりRaspberry Piの動作が不安定になることがありますので、合わせて注意しましょう。

1.6 ディスプレイおよびケーブル

表1でも記したように、ディスプレイは「HDMI接続可能なディスプレイ」または「DVI-D接続可能なディスプレイ」の2種から選択します。最近はHDMI搭載の液晶テレビが普及していますので、そちらでも良いでしょう。 コンピュータ用ディスプレイの端子部は、たとえば図4(A)のようになります。

図4 (A)HDMI端子とDVI-D端子、(B)左:HDMIケーブルのコネクタ部、右:マイクロHDMIケーブルのコネクタ部、(C)DVI-Dケーブルのコネクタ部、(D)HDMI-マイクロHDMI変換アダプタ

このディスプレイにはHDMI端子とDVI-D端子の両方がありますので、この場合はHDMI端子を使えばよいでしょう。HDMI端子がない場合にはDVI-D端子を用います。

ディスプレイとRaspberry Piを接続するためのケーブルは、Raspberry Piのバージョンによって異なります。Pi 3 B+までのRaspberry Piには、図4(B)左側のHDMI端子で接続します。一方Pi 4 B や Pi 5 には、図4(B)右側のマイクロHDMI端子で接続します。

ディスプレイとRaspberry Piの接続を整理したのが下図です。

この図より、Pi 3 B+までのRaspberry Piをディスプレイと接続するためには下記のどちらかを用いることがわかります。
  • HDMIケーブル(図4(B)左側の端子が両側についたケーブル)
  • DVI-HDMI変換ケーブル(図4(B)左側の端子と図4(C)の端子からなるケーブル)
一方、Pi 4 B や Pi 5 の場合、ディスプレイと直接接続できるケーブルは下記のものとなります。
  • HDMI-マイクロHDMIケーブル(図4左側の端子と図4(B)右側の端子からなるケーブル)
Pi 3 B+までのバージョンで使ったディスプレイ接続ケーブルをお持ちの場合、図4(D)のようなHDMI-マイクロHDMI変換アダプタを購入すると、すでにお持ちのディスプレイ接続ケーブルをPi 4 B 以降用に再利用できます。

どのケーブルを用いるにせよ、ケーブルの長さはRaspberry Piとディスプレイの設置位置によって決めてください。本書の演習を行う場合、Raspberry Piが手元で操作できる位置にある必要があります。

1.7 Raspberry Pi用のケース

Raspberry Piは回路がむき出しになっていますので、そのまま用いるのはあまり望ましくありません。回路を保護する目的でケースがあると良いでしょう。

Raspberry Piを販売しているネットショップで様々な種類のケースが取り扱われていますので、そちらに収めるのが安心です。

ケースを購入する場合、下記の図5のようにRaspberry Piの公式カメラモジュールを取り付けることができるものを選択しましょう。カメラのケーブルを引き出すための穴が開いているものです。

なお、本書では用いませんが、Raspberry Pi のGPIOポートを用いて電子工作をしたい場合は、GPIOのピンを活用できるケースを選びましょう。蓋つきのケースであれば、蓋を外して利用するという方法でもよいでしょう。

図5 公式カメラモジュールを取り付けられるケース

なお、Raspberry Piのバージョンにより、対応しているケースが異なる場合があります。購入の際は、そのケースがお使いのバージョンのRaspberry Piに対応しているか、よく確認しましょう。

ケースが用意できない場合、プラスチックなど電流を流さないものの上にRaspberry Piを置くようにしてください。濡れた手で触らない、などの注意も必要です。

1.8 ネットワーク接続用機器

本書は、Raspberry Piをネットワークに接続することを必須としています。機械学習に用いるツールをネットワークからダウンロードしてインストールする必要があるからです。

ただし、Raspberry Piのインストールおよび設定が終わってからネットワークに接続する方針をとります。

なお、Raspberry Piをネットワークに接続するためには、皆さんの自宅などに、コンピュータ2台以上をネットワーク接続できる環境が必要です。2台のうち1台は皆さんが普段お使いのWindowsなどのPC、2台目がこれから取り扱うRaspberry Piです。

さらに、Raspberry Piをネットワークに接続するためには無線接続と有線接続の2つの選択肢があり、ネットワーク接続に必要な物品は表3のように異なります。

表3 Raspberry Piをネットワーク接続する際に必要な物品
機種 無線接続に必要な物品 有線接続に必要な物品
Pi 4 B 不要 LANケーブル
Pi 3 B / Pi 3 B+ 不要 LANケーブル
Pi 2 B 無線LAN USBアダプタ (5.参照) LANケーブル
Pi 1 B+ 無線LAN USBアダプタ (5.参照) LANケーブル
Pi Zero 2 W 不要 LANケーブル, USB LANデバイス (解説省略)
Pi Zero W / Pi Zero WH 不要 LANケーブル, USB LANデバイス (解説省略)
Pi Zero 無線LAN USBアダプタ (5.参照) LANケーブル, USB LANデバイス (解説省略)

これらについてのより詳細な解説を5.にまとめました。一度ご覧になってから、本ページの続きに進まれることをおすすめします。

無線接続には、皆さんのご家庭にすでに無線接続環境が存在する必要があります。さらに、無線LAN USBアダプタが必要な場合、どの機器を購入しても良いというわけではありません。それらについて5.で解説されています。

2. Raspberry Pi用のOSをmicroSDカードにインストール

2.1 Raspberry Pi Imagerのダウンロードとインストール

本章ではRaspberry Pi用のOSをインストールします。ここでは、2020年3月にリリースされたRaspberry Pi Imagerというアプリケーションを用いてインストールする方法を解説します。

なお、学校や職場などの環境では、ネットワークアクセスの制限によりRaspberry Pi Imagerによるインストールができない場合があります。そのような場合、 以前から用いられている以下の2つの方法をお試しください。 以上に注意しつつ、Raspberry Pi Imagerを用いたインストール法を解説していきます。この方法ではRaspberry Pi用のOSをmicroSDカードにインストールするという作業を、WindowsなどのPC上で行います。

まず、皆さんが使っているPC上で、Microsoft Edgeなどのブラウザでダウンロードページに接続してください。図6のような英語のページが表示されます。

図6 Raspberry PiのOSのダウンロードサイト


本ページではWindowsを用いたインストール法を解説しますので、「Download for Windows」をいうリンクをクリックして「imager_1.4.exe」いう名前のファイルをダウンロードします。「.exe」の部分、すなわち拡張子の部分は、お使いのPCによっては表示されませんが気にしなくて構いません。

なお、このファイルの名称は imager_(バージョン番号).exe という意味であり、今後のバージョンアップに伴い名称が変更される可能性があります。

ダウンロードされたインストール用ファイルである imager_1.4.exe (図7(A)) を実行し、 Raspberry Pi Imagerをインストールしましょう。ファイルをダブルクリックしたときに図7(B)のような警告が現れた場合、「詳細情報」と書かれたリンクをクリックすると現れる「実行」ボタンをクリックして実行しましょう。

図7 ダウンロードしたimager.exeと、実行時に現れることのある警告

すると、「このアプリがデバイスに変更を加えることを許可しますか?」という警告が現れるので「はい」ボタンをクリックしてください。 すると、Raspberry Pi Imagerのインストール画面が現れるので、「Install」ボタンをクリックしてインストールを実行してください。

終了後「Finish」ボタンを押すと、Raspberry Pi Imagerが起動しますので、その前にお使いの Windows などの PC に microSD カードを接続しましょう。必要に応じて「microSDカード対応マルチカードリーダー/ライター」などを介して接続するのでした。
起動した Raspberry Pi Imager を示したのが図8です。

図8 Raspberry Pi Imagerが起動した様子

なお、ここでは「Raspberry Pi Imagerをインストールして起動」という流れで解説しましたが、一度インストールした Raspberry Pi Imager を後にもう一度起動したい場合は、 図9のようにWindowsの検索窓で「ras」などと入力し、現れた Raspberry Pi Imager をクリックして実行してください。

図9 以後Raspberry Pi Imagerを起動する方法

図8のRaspberry Pi Imagerには下記の3つの選択肢があります。
  • Raspberry Pi デバイス
  • OS
  • ストレージ
このうち、一番左の「Raspberry Pi デバイス」は、選択することで「OS」に現れる OS の候補を(フィルタリングして)減らす効果があります。
本ページはこの「Raspberry Pi デバイス」には手を付けず、残りの「OS」と「ストレージ」のみを変更していきます。

そこで、「Operating System (OS)」の部分の「CHOOSE OS (OSを選ぶ)」ボタンをクリックし、インストールする OS を選ぶことになります。

さて、OSをインストールする場合、どのOSをインストールするかを考えねばなりません。
2024年現在、OS の選択肢として、以下の3種類の項目でのそれぞれの選択肢を決定する必要があります。
  • インストールされるソフトウェア数が Full / 通常 / Lite のどれか(書籍では Full を推奨していたが、現在は通常版を推奨)
  • 32-bit OS か 64-bit OSか (ただし、64-bit OS が動くのは主に Pi 3/4/5、Pi Zero 2 W)
  • 最新OS (Bookworkm) かひとつ前の Legacy OS (Bullseye) か
一つ目のインストールされるソフトウェア数については、これまで私の書籍では Full を推奨していましたが、Full に必要な microSDカードの容量が増大するに伴い、現在は通常版を推奨することにしています。 なお、Lite は選ばないようにしてください。Lite だと、グラフィックをもつユーザーインターフェース(GUI)を用いずに利用するコマンド操作が前提の OS となるからです。

選ぶのが難しいのは、残り2つの項目です。結論を先に述べましょう。
私の電子工作の書籍ならば、32-bit/64-bit 、最新/Legacy のどれを選んでも構いません。ただし、一般に、64-bit OSが必要になるのはメモリ量4GB以上のPC、と言われますので、Pi 5 と Pi 4 は 64-bit、それ以外は 32-bit を選ぶのが無難です。
一方、私の機械学習の書籍ならば、可能な限り最新の 64-bit OS を選んでください。

機械学習の書籍について、少し解説します。 Bookworm / Bullseye というのは、OSのメジャーバージョンについている名前で、おおむね2年程度で切り替わります。
これらの OS での機械学習の書籍の演習をどう実行するかをまとめたのが以下の表です。

Raspberry Pi OS Bookworm (最新) 64-bit機械学習の書籍1~9章の内容を実行できる。10章の内容は TensorFlow 2 をインストールすることで実行できる
Raspberry Pi OS Bookworm (最新) 32-bit機械学習の書籍1~9章の内容は実行できるが、10章の内容は実行できない。
Raspberry Pi OS Bullseye (Legacy) 64-bit機械学習の書籍の演習をすべて実行できる。さらに発展的内容で TensorFlow 2 利用可能。ただし、カメラモジュールを用いた演習の準備が 32-bit に比べ面倒
Raspberry Pi OS Bullseye (Legacy) 32-bit機械学習の書籍の演習をすべて実行できる。ただし発展的内容で TensorFlow を利用できない

この表に基づいていえば、最新の 64-bit OS ならばすべての演習を実行できます。64-bit OS が動作するのは、主に Pi 3/4/5、Pi Zero 2W です(ただし、Pi Zero 系は上級者向けなのでお勧めしません)。 それ以外の古い Raspberry Pi の場合、 64-bit OS が動作しませんので 32-bit の Legacy OS を選ばないと実行できない演習がある、というわけです。

以上をもとに、インストールする OS を選びましょう。

さて、以下では、OS として、「通常版」、「32-bit または 64-bit」、「最新」の OS を選んでインストールすることにしましょう。 さて、Raspberry Pi Imager で OS 選ぶ手順は、下図のように、「Operating System (OS)」をクリックして現れた画面で、「Raspberry Pi OS (64-bit)」か「Raspberry Pi OS (32-bit)」のどちらかをクリックします。それにより、「通常版」、「32-bit または 64-bit」、「最新」の OS が選択されたことになります。

図10 「Operating System (OS)」の部分の「CHOOSE OS (OSを選ぶ)」ボタンをクリックし、OS をを選択


なお、上図上から三番目の選択肢は、「通常版」、「32-bit」、「Legacy」 のものとなります。それ以外の選択肢を選びたい方は、「Raspberry Pi OS (other)」をクリックしてからさらにOSを選ぶことになります。 なお、Raspberry Pi Imager の起動直後に「CHOOSE OS (OSを選ぶ)」を押すと、「Raspberry Pi OS (other)」の先の選択肢が現れない傾向があるように思います。そのような場合、Raspberry Pi Imager の起動から数秒待ってから「CHOOSE OS (OSを選ぶ)」を押すと良いでしょう。

そして、図8のRaspberry Pi Imagerで、「SD Card (ストレージ)」の部分の「CHOOSE SD CARD (ストレージを選ぶ)」ボタンをクリックしましょう。microSDカードがPCに接続済であれば、図11(A)のようにmicroSDカードが選択肢として現れますので、クリックして選択します。

なお、現れた microSD カードが、図11(B)のようにエクスプローラーの「PC」の項目に現れるものと一致していることを念のため確認しておきましょう。比較するポイントは「ドライブ文字」(図11では「D:」)と「容量」(図11では 16GB 付近の値)です。ドライブ文字はPCの環境によって異なりますので注意してください。microSDカードの容量は、カードに「16GB」と書かれていても、表示は図11のように数GBずれることがありますが気にする必要はありません。

また、PCに外付けハードディスクなどが接続されていると、図11(A)の選択肢が複数現れます。このとき、正しくmicroSDカードの方を選択しないと、皆さんの大切なデータが壊れてしまいますので注意して選択しましょう。なお、選択肢が多数ある場合はマウスのホイールで選択肢をスクロールして該当するものを見つけましょう。

図11 「SD Card」の部分の「CHOOSE SD CARD」ボタンをクリックしてmicroSDカードを選択


さて、「Operating System (OS)」と「SD Card (ストレージ)」の部分をセットしたら、図8のRaspberry Pi Imagerで「次へ」ボタンをクリックしましょう。すると、下図のように「Would you like to apply OS custimization settings? (OSのカスタマイズをするか?)」と聞かれます。
「設定を編集する」を選択すると、ホスト名、ユーザ名、Wifi設定、SSH起動設定などを編集できますが、後からでも設定できますので、ここは「いいえ」ボタンでスキップしてもよいでしょう。すると、下図のように最終確認の画面が現れますので「はい」でインストールを進めましょう。
図12のようにOSのインストールが始まります。数GBのOSをインターネットからダウンロードして書き込みますので、30分以上かかることがありますのでゆっくりお待ちください。

図12 Raspberry Pi ImagerによりOSがインストールされている様子

Writingが100%になるとVerifying (確認) が始まり、それも100%になるとmicroSDカードへのOSのインストールが完了し、図13のような画面で書き込みが終了したことが知らされます。

この画面になったらPCからmicroSDカードを取り外して構いません。そして、Raspberry Pi Imager を終了しましょう。取り外したmicroSDカードを、次にRaspberry Piに接続することになります。

図13 Raspberry Pi Imagerによるインストールが完了した様子



2.3 microSDカードの再フォーマット(必要に応じて)

なお、Raspberry Pi Imagerは、過去にRaspberry Pi用のOSをインストールしたことのあるmicroSDカードに対してもOSをそのままインストールできるようです。

一方、一度Raspberry PiのOSをインストールしたmicroSDカードを、もう一度Windowsで使用したい場合、microSDカードをフォーマットする必要があります。 その方法を以下にまとめましたので、必要に応じて参照してください。

3. Raspberry Piの起動

3.1 Raspberry Piへの周辺機器の接続

microSDカードの準備が終わったら、そのmicroSDカードをPCから取り外し、図14(A)のようにRaspberry Piに押し込んでセットします。

図14 (A)microSDカードをセットした様子(B)Pi 3 B+に周辺機器を接続した様子(C)Pi 4 Bに周辺機器を接続した様子

同様にキーボード、マウス、HDMIディスプレイも接続してください。 Pi 1 B+からPi 3 B+までの場合は図14(B)を、Pi 4 Bは図14(C)を参考にしてください。 これらは電源以外はどのような順で接続しても構いません。電源は最後に接続するようにしましょう。

なお、Pi 4 B 以降への周辺機器の接続には二つ注意があります。

まず、Pi 4 B 以降にはUSB 2.0端子(黒色または白色)と USB 3.0 端子(青色)がそれぞれ二つずつあります。USB 3.0 に対応した機器をUSB 3.0端子に接続すると高速にデータ転送できるという特徴があります。ここで用いるマウスとキーボードは USB 3.0に対応していないことが多いので図14(C)のようにUSB 2.0端子に接続していますが、USB 3.0端子に接続しても高速化の恩恵を受けられないだけで問題なく動作します。

Pi 4 B 以降でもう一つの注意すべきなのは、ディスプレイへ接続するための端子です。Pi 4 B 以降には、ディスプレイと接続するためのマイクロHDMI端子が二つあります。基板上を見るとそれぞれの端子の横に「HDMI0」、「HDMI1」と記されています。ディスプレイ二つをそれぞれの端子に接続することでそれらを同時に「デュアルディスプレイ」として使うことができます。本書のようにディスプレイ一つだけを接続する場合は、図14(C)のようにUSB端子に近い「HDMI0」側に接続すると良いでしょう。

なお、図14(B)、(C)にはRaspberry Piの状態を示すLEDの位置と、Pi 3 B+とPi 4 Bの心臓部と呼ぶべきSoC(System on Chip)であるBCM2837B0およびBCM2711の位置も示しました(SoCはPi 1 B+とPi 2 BではそれぞれBCM2835とBCM2836)。LEDの位置はPi 1 B+とPi 2 Bの場合図の左上となりますので注意してください。 なお、SoCとはCPU、グラフィック用GPU、RAMなどを1つのチップに収めたものです。

また、本書では既に述べたようにインストール時にRaspberry Piをネットワークに接続しない方針を取ります。インストールが完了し、環境設定を行う時にネットワークに接続します。

なお、Pi Zeroシリーズの場合、図14は下記の図14-zeroで読み替えてください。見てわかるように、Pi 3 Bなどと異なり「バスパワーUSBハブ」、「USB OTGケーブル」、「HDMI(メス)-ミニHDMI(オス)変換アダプタ」が追加で必要になります。リンクは典型的な商品に対して張りました。

図14-zero Pi Zeroへの周辺機器の接続


3.2 Raspberry Piへの電源の接続

それでは、Raspberry Piに電源を接続しましょう。

ただし、Raspberry Piには電源スイッチがありません。図14(B)や(C)のようにマイクロUSBケーブルやUSB Type-Cケーブルを接続することで電源が入ります。電源を切る方法は後に学びます。

さて、Raspberry Piに電源をつなぐと、図14(B)に示したLEDの一つ(PWR)が赤色に点灯します。そして、microSDカードにアクセスがあったときに点灯するもう一方のLED(ACT)が緑色で点滅し、起動が始まります。

なお、Pi 5 では PWR と ACT の LED は共通であり、Pi Zeroシリーズには緑色のLED(ACT)しかありませんのでご注意ください。

このとき、いつまでもACTの点滅が起こらず起動が始まらないことがあるかもしれません。そのような場合、USB端子のうち、図3(B)の左側の端子を抜き差しすると起動が始まることが多いでしょう。

初回の起動には少し時間がかかりますが、起動すると Raspberry Piのデスクトップが開きます。

Raspberry Pi 4 を用いており、数分待ってもRaspberry Piのデスクトップが開かない場合、Raspberry Pi 4 と相性の悪いディスプレイがある、という問題に当たっているかもしれません。改善のためのヒントが「イメージファイルを使ってOSをインストールする」ページ末尾の「5. hdmi_safe=1 の設定」という章にあります。

4. インストール後の設定

4.0 セットアップウィザードの起動 (NOOBS 2.8.2 (Raspbian 2018-06-27) 以降)

現在の Raspberry Pi OS では、インストール直後の初回起動時に下図のようなセットアップウィザードが起動しますので、それに従って設定を行っていきます。 もし、NOOBS 2.8.2 (Raspbian 2018-06-27) より以前の古いOSをお使いの場合、4.1に進んで個別に設定を行ってください。

セットアップウィザードに従って設定を進めるには、まず「Next」ボタンをクリックします。

次に、「Set Country」と書かれた、国を設定する画面が現れますので、「Country」を「Japan」に設定しましょう。選択肢はアルファベット順に並んでいます。すると、「Langage」が「Japanese」に、「Timezone」が「Tokyo」に自動的に変わることが多いでしょう。
なお、環境によっては最初から下図の状態になっていることもあります。
いずれにせよ、下図の状態に設定したら「Next」をクリックします。


次の画面では、Raspberry Pi 用に新しいユーザーを作ることになります。下記の3つの入力を求められます。
  • 新しく作成するユーザー名
  • そのユーザーで用いる新しいパスワード
  • 確認のため新パスワードをもう一回入力
ここで決めなければならないユーザー名は、このRaspberry Pi上でのみ用いるものですから、他人のユーザー名とかぶることを心配する必要はありません。
アルファベットと数字からなる、シンプルなユーザー名とするのがよいでしょう。記号には、使えない文字もあるので注意が必要です。私の場合だったら「kanamaru」などとします。

2022年4月以前の古いOSでは、新たなユーザーを作成するのではなく、デフォルトユーザー pi のデフォルトパスワード ( raspberry ) の変更を促されます。
いずれの場合も、入力が終わったら「Next」をクリックします。

次に、Raspberry Pi 3 Model B+ までのシステム(正確には、Waylandではなく X11 を用いているシステム)ではスクリーンの範囲を調整する設定を行います。もし、OSのデスクトップ領域がディスプレイ全体の領域より広い場合、ここで「Reduce the size of the desktop on this monitor」にチェックを入れると、その問題が改善する可能性があります。Pi 4 以降ではこの設定は現れません。

なお、この設定は後からでも行えます。詳細は「4.8 デスクトップが液晶パネルより狭く表示される場合の対処(オプション)」をご覧ください。「Next」で次に進みます。
次に、Wifiの設定が行えます。これは後でも行えますので、「Skip」をクリックしてスキップしても構いません。
もし設定を行いたければ、「Next」をクリックします。


上の画面で「Next」をクリックした場合は、下図でWifiのパスワードの入力が求められます。入力したら「Next」をクリックします。


Wifiの設定が「Skip」かパスワードの入力かで完了すると、次はデフォルトブラウザの選択(Choose Browser)の画面になります。
Chromium か Firefox です。デフォルトの Chromium で良いと思いますが、Windows などで Firefox を使っている方は、Firefox Sync の仕組みによりブックマークなどを同期できるのが Firefox を用いるメリットです。

ブラウザの選択が終わると、最後にアップデートの確認をするかどうか問われます。ここで行うと時間がかかるので、「Skip」をクリックしてスキップしてしまっても構いません。特に、Pi Zero 系のように動作が遅かったりメモリが少ない機種ではここでは Skip するのが無難です。


以上でセットアップウィザードは終了です。「Restart」ボタンをクリックすると再起動が始まります。


以上でほとんどの設定が終わりました。4.7へ進んでRaspberryPiの電源を切る方法を学びましょう。 なお、4.1から4.6で用いる設定アプリケーションを今後用いることもありえますので、これらのセクションもざっと眺めておくことをお勧めします。

4.1 設定用アプリケーションの起動

ここからは、NOOBS 2.8.2 (Raspbian 2018-06-27) より以前のOSをお使いの場合に実行する、設定アプリケーションを用いたOSの設定方法を解説していきます。
より新しいバージョンのNOOBS (Raspbian) をお使いの場合でも、ここで紹介する設定アプリケーションを用いることはありますので、ざっと眺めておくことをお勧めします。
さて、再起動されたRaspberry Piでは、図15のようなデスクトップ環境が現れます。

図15 デスクトップ

設定用アプリケーションは、 左上のメニュー(Menu)ボタンから「設定(Preferences)」→「Raspberry Piの設定(Raspberry Pi Configuration)」をマウスで選択することで起動します。図16のような設定用アプリケーションが起動します。

図16 設定用アプリケーション

4.2 パスワードの変更

本書で用いるOSにはユーザー名とパスワードという概念があります。 2022年4月以降の OS では、OSのインストール直後に自分でユーザー名とパスワードを設定したはずです。

それ以前のOSでは、下記のデフォルトユーザーが作成されていました(現在は廃止されています)。
  • ユーザー名:pi
  • パスワード:raspberry
このパスワードを変更したい場合、図16の「パスワードを変更(Change Password)」ボタンをクリックしてください。「Enter new password(新しいパスワードの入力)」と「Confirm new password(新しいパスワードを再入力)」という入力枠が2つ現れますので、変更したいパスワードを2回入力してから「OK」ボタンをクリックしてください。それでパスワードが変更されます。

4.3 言語の変更

デスクトップ環境で日本語を表示するには、言語の変更を行います。

そのために、まず図16のアプリケーションで「ローカライゼーション(Localisation)」タブをクリックし、さらに「ロケールの設定(Set Locale)」ボタンをクリックしてください。

現れた「言語(Language)」を「Japanese (ja)」に合わせましょう。選択肢はアルファベット順に並んでいます。すると、残りの項目は「国(Country)」が「Japan (JP)」に、「文字セット(Character Set)」が「UTF-8」に自動で変わることが多いでしょう。自動で変わらなければ述べた通りに設定してください。以上を確認して「OK」ボタンをクリックします。

さらに、設定アプリケーションでもう一度「OK」ボタンをクリックすると、再起動(reboot)を英語で促されますので、「Yes」ボタンをクリックして再起動しましょう。再起動が終わると、日本語表示されたデスクトップ環境が起動します。

4.4 タイムゾーンの変更

ここではタイムゾーンを東京(標準時から+9時間)に設定します。

なお、Raspberry Piには時計を動かすための電池がついておらず、ネットワークに接続しない限りは電源を切るたびに時計がずれますので、ネットワークにつなぐまではRaspberry Piが示す時刻を信頼しない方がよいでしょう。

タイムゾーンの設定のため、まず図16の設定アプリケーションで「ローカライゼーション(Localisation)」タブをクリックし、「タイムゾーンの設定(Set Timezone)」ボタンをクリックします。

現れたウインドウで、「地域(Area)」を「Asia」に、「位置(Location)」を「Tokyo」に選択してください。その際、選択肢はアルファベット順に並んでいますので、スクロールさせて見つけてください。

そして「OK」をクリックすると、設定が完了します。

4.5 キーボードレイアウトの変更

デフォルトの状態ではRaspbianのキーボードとして英語キーボードが設定されていますので、これを日本語109キーボードに変更しましょう。
まずは、図16の設定用アプリケーションの「ローカライゼーション(Localisation)」タブの「Set Keyboard」ボタンをクリックします。

ここから先のキーボードの設定項目の外観は、NOOBS (Raspbian)のバージョンにより異なります。
まずはNOOBS 2.8.2 (Raspbian 2018-06-27) 以降の設定方法を記します。
現れたウインドウで、「Model」を「Generic 105-key (Intl) PC」に、「Layout」を「Japanese」に、「Variant」を「Japanese(OADG 109A)」にセットし、OKボタンを押してください。

それ以前の NOOBS (Raspbian)の場合、現れたウインドウで、「Country」を「日本(Japan)」に、「Variant」を「日本語(OADG 109A)(Japanese(OADG 109A))」にセットし、OKしてください。

なお、この設定をした後キーボードのテンキーを利用したい場合、キーボードにある「NumLock」キーを押してからでないとテンキーとして利用可能になりませんので注意して下さい。Raspberry Pi起動時にNumLockの状態を自動でオンにしたい場合の設定を「キーボードのテンキーを利用したい場合の注意」にまとめましたので興味のある方はご覧ください。テンキーを使わないという方は気にせず先に進んで構いません。

4.6 無線LANの国設定変更

Raspberry Pi 3 Model B+ では、「無線LANの国設定」を日本に合わせないと無線LANが有効になりません。ここでその設定を行いましょう。他のバージョンの Raspberry Pi でもこの設定を行って良いでしょう。

図16の設定用アプリケーションの「ローカライゼーション(Localisation)」タブの「無線LANの国設定(Set WiFi Country)」ボタンをクリックします。現れたウインドウで、「国(Country)」を「JP Japan」にセットします。

4.7 Raspberry Piの電源を切る方法

設定がおおむね終わったところで、Raspberry Piの電源を切る方法をここで覚えておきましょう。 デスクトップ左上のメニュー(Menu)ボタンから「Shutdown」を選択します。

「Shutdown」、「Reboot」、「Logout」の3ボタンのある画面で「Shutdown」ボタンを押すと、Raspberry Piのシャットダウンが始まります。

このとき、今後のためにRaspberry PiのLEDの状態を観察しておきましょう。図14(B)で示したLEDのうちmicroSDカードへのアクセスを示す緑色の「ACT」がしばらく点滅します。ディスプレイの表示が消え、この「ACT」というLEDの点滅が終わればシャットダウンは終了しています。この状態でRaspberry Piから電源を取り外しましょう。

なお、既に述べたように Pi 5 では PWR と ACT の LED は共通であり、Pi Zeroシリーズには緑色のLED(ACT)しかありませんのでご注意ください。

4.8 デスクトップのサイズが液晶パネルのサイズと合わない場合の対処(オプション)

デスクトップが開いたとき、下図(A)左のように、液晶パネルのサイズとデスクトップのサイズが合わないことがあります。


そのような場合、設定アプリケーションの「Display」タブ→「オーバースキャン」の設定を切り替えてRaspberry Piを再起動すると、上図(A)右のように液晶パネルとデスクトップのサイズがあった状態になることが多いでしょう。
なお、この「オーバースキャン」の設定項目は、Raspberry Pi 3 Model B+ までのシステム(正確には Wayland ではなく X11 を用いているシステム)でないと現れません。


5. ネットワークへの接続

ここまでの解説により、Raspberry Piに電源を投入してから電源を切るまでの手順がわかりました。

ここからはRaspberry Piをネットワークに手動で接続する方法を学びます。初回起動時にWifiの設定を行った方はここで改めて設定する必要はありませんが、「この方法でもWifiを設定できる」と知っておくことは役に立つでしょう。

なお、皆さんの環境によって様々な接続方式が考えられるため、Wifi接続の全てのケースを説明しつくすことはできません。ここでは、一般家庭で代表的な接続方法をいくつか解説することにします。学校や職場などではここでの解説とは異なる接続方式を用いていることが多いので、ネットワークの管理者に相談してください。

まず、1.3で仮定したように皆さんの通常のPCは既にネットワークに接続できているとします。そして、このPCとRaspberry Piを同時にネットワークに接続することを目指しましょう。

なお、Raspberry Piをネットワークに接続するには有線方式と無線(Wifi)方式とが考えられます。つないでしまえばWifiの方が便利なのですが、そのためにはWifi対応のルーター機器が必要など、利用に条件があります。

まずはWifi接続を先に紹介し、有線接続についてはそのあとに紹介します。

5.1 Wifiによる接続

Rapsberry PiをWifiによりネットワークに接続するには、まず皆さんのPCが既にWifiでネットワークに接続できている必要があります。

具体的には、図17のように無線LANルーターが存在し、それにPCやRaspberry Piが接続することになります。

図17 Wifiによるネットワークへの接続


図17のような環境がない場合、接続業者などに「PCをWifiでインターネットに接続したい」とか「スマホやタブレットをWifiに接続したい」などと相談するのがよいでしょう。

Wifi接続環境が存在する場合、さらにRaspberry Pi側にもWifi接続機能が存在する必要があります。

Pi 3 / 4 /5、Pi Zero W、Pi Zero WH、Pi Zero 2 Wをお使いの方は無線機能がRaspberry Piの基板上に標準搭載されていますので追加購入の必要はありません。

一方、Pi 2 B、Pi 1 B+、Pi Zero をお使いの方は「無線LAN USBアダプタ」という機器を購入する必要があります。無線LAN USBアダプタは、何を買っても良いというものではなく、Raspberry Piで動作するものを事前に調べておくことが重要です。筆者が動作を確認した無線LAN USBアダプタは下記のものです。
  • PLANEX GW-USNANO2A
  • IO-DATA WN-G150U
  • IO-DATA WN-G150UMK
  • LOGITEC LAN-W150NU2AB
  • BUFFALO WLI-UC-GNM
  • BUFFALO WLI-UC-GNM2
ただし、これらの無線LAN USBアダプタは現在中古でしか入手できないと思います。また、差しただけで使える無線LAN USBアダプタは減っているようにも思います。 ですので、可能な限り無線機能が Raspberry Pi の基板上に標準搭載されている機種を選ぶのが確実です。

以上の準備のもと、Raspberry PiをWifiに接続するためには、図18のようにデスクトップの右上のアイコンから皆さんのご家庭のネットワークを選択します。パスワードを入力して接続しましょう。

図18 Wifiによるネットワークへの接続

5.2 有線接続1:PCがルーター機能つき機器に接続されている場合

Raspberry Piを有線でインターネットに接続する場合の一つ目のケースとして、皆さんのPCが図19のようにルーター機能つき機器(ブロードバンドルーターやルーター機能つきモデムなど)を通してインターネットに接続されている場合について解説します。

図19 ブロードバンドルーターを介したネットワークへの接続

この機器の裏を見たときに、LANと書かれた端子が複数存在すれば、Raspberry Piの接続は簡単です。そのLAN端子の1つにLANケーブルでRaspberry Piを接続すると、ネットワークにつながります。

なお、このルーター機能つき機器がWifi親機の機能を持っているものであっても、LANケーブルでRaspberry Piを接続することができます。

5.3 有線接続2:PCがスイッチングハブに接続されている場合

Raspberry Piを有線でインターネットに接続する場合の二つ目のケースである、皆さんのPCが図20のようにスイッチングハブを通してインターネットに接続されている場合も簡単です。

図20 スイッチングハブを介したネットワークへの接続


スイッチハブの空いた端子にLANケーブルでRaspberry Piを接続すると、ネットワークにつながります。

5.4 有線接続3:どちらでもない場合

それでは、Raspberry Piを有線でインターネットに接続したいにも関わらず、皆さんのPCの接続が図19図20のどちらでもない場合はどうすればよいでしょうか。典型的には、LAN端子が一つしかない機器や壁の端子にPCが直接つながっている場合です。

この場合、ブロードバンドルーターやスイッチングハブを導入することで図19図20のような状態とする必要がありますが、どちらの機器を導入すべきかは皆さんのネットワーク接続環境に依存します。

接続環境にルーター機能がない場合は、図19のようにブロードバンドルーターを導入する必要があります。この時、無線LAN接続機能を持ったブロードバンドルーターを導入することも可能です。接続環境にルーター機能がある場合は、図20のようにスイッチングハブを導入します。

自分の接続環境がどちらかわからない場合は、接続業者などに一度相談するのがよいでしょう。「PC2台をネットワークに接続したい」と伝えると話がスムーズに進むでしょう。

5.5 接続の確認

さて、5.1から5.4のどれかの方法により、ネットワークへの接続が完了したでしょうか?

ネットワークへの接続が正常に行われているか確認するには、デスクトップアイコンからブラウザを起動し、インターネット上のページを閲覧してみるのが簡単です。例えば検索エンジンGoogleのサイトに接続してみるといいでしょう。

5.6 日本語フォントのインストール(オプション)

ネットワークへの接続が終わったら、お好みでいくつかのソフトウェアなどをインストールしてみましょう。

まず、日本語フォントです。デスクトップ上の日本語文字には、不自然な字体が含まれていることがあります。日本語フォントを追加インストールすることでこの問題を解消できます。下記の手順でインストールします。

まず、デスクトップ上部のバーにある黒い四角のアイコンをクリックし、LXTerminalというターミナルソフトウェアを起動しましょう。

デスクトップ左上のメニューから「アクセサリ」→「LXTerminal」とたどっても起動できます。

すると図21のようなアプリケーションが起動します。

図21 ターミナルソフトウェアLXTerminal

内部に下記のようなコマンド(命令)を受け付ける「コマンドプロンプト」が見えるでしょう。
pi@raspberrypi ~ $
なお、上に見える「pi」はユーザー名を表しており、ユーザー名「pi」は2022年4月以前の古いOSで用いられていたデフォルトのユーザー名です。最新のOSを用いている方ならば、「pi」の部分に自分で決めたユーザー名が表示されているでしょう。

このコマンドプロンプトに対し、下記の2つのコマンドを1つずつ順に入力して実行しましょう。
sudo apt update
sudo apt install fonts-vlgothic
コマンドの入力に自信のない方は、このページをRaspberry Pi上のブラウザで開き、上記のコマンドを一つずつコピーしてLXTerminalに貼り付けて実行しても良いでしょう。

コピーするためには、まずコピーしたいコマンドをブラウザ上でマウスでなぞって色を反転してから右クリックして「コピー」を選択します。そしてそれをLXTerminalに貼り付けるために、LXTerminalのメニューから「Edit(編集)」→「Paste(貼り付け)」を選択します。

一つ目のコマンドは、インストール可能なパッケージのリストを更新するためのもので、終了するまでに数分かかる場合があります。二つ目のコマンドが、実際にフォントをインストールするためのものです。

この際、「Do you want to continue?(続行しますか?)」や「Install these packages without verification?(検証なしにこれらのパッケージをインストールしますか?)」と聞かれることがありますので、その場合はそれぞれキーボードの[y]をタイプした後[Enter]キーを押して続行してください。やはり1分程度の時間がかかります。

インストールが終わったら、Raspberry Piを再起動しましょう。より綺麗な字体でデスクトップが表示されているはずです。

5.7 日本語入力メソッドのインストール(オプション)

ここまでの範囲では、Raspberry Piに日本語を入力することができません。典型的には、ブラウザ上で検索を行う際に、日本語が入力できないという問題が起こります。

そこで、ここでは日本語を入力するためのアプリケーションのインストール方法を解説します。

ただし、日本語入力について一点注意が必要です。本書では、プログラムファイルに修正を加えることや、プログラムの実行コマンドを入力することを行います。それらは、すべて英語文字で入力する前提となっています。書籍中で日本語の入力を求められることはありません。

そのため、日本語入力メソッドをインストールした後は、自分が日本語を入力しているのか英語を入力しているのかを常に意識し、英語文字を入力すべき際に日本語文字を入力することのないよう注意してください。これは、WindowsやmacOSを用いる際も起こりうることですね。

さて、これまで本ページでは日本語入力ソフトウェアとして、 ibus-mozc のインストールをお勧めしてきましたが、OS の更新に伴い メニューバー上での挙動がおかしい、などの不具合が増えてきましたので、 別のソフトウェアである fcitx-mozc に切り替えた方が良いかもしれません。

まず、インストール済の ibus-mozc を削除するには以下のコマンドを実行します。
sudo apt remove ibus-mozc ibus
その後 Raspberry Pi を再起動することで ibus-mozc の削除が完了します。

そして、fcitx-mozc のインストールは下記のコマンドで行います。
sudo apt update

sudo apt install fcitx-mozc
再起動後、半角/全角キーや Ctrl+スペースキーにより、日本語入力をオンオフできます。

Raspberry Pi 4 で Bookworm を使って動作が遅いと感じたら

Raspberry Pi 4 で2023年10月にリリースされた Bookworm を用いて、動作が遅いと感じたことはないでしょうか?
Bookworm では、Rasberry Pi 4 と 5(日本未発売)において、画面描画/ウインドウ管理の仕組みが、これまでの X11/mutter(またはopenbox) から Wayland/Wayfire に変更されたそうです。
なお、Pi 3 までのボードならばこれまで通り X11/mutter(またはopenbox) が使われるようです。

デスクトップ上でウインドウを複数立ち上げ、Altキーを押しながらTABキーを押したとき、ウインドウが3D空間上に配置されれば Wayland/Wayfire が使われていると考えられます。

私が気づいたところでは、Wayland/Wayfire では以下の問題があるようでした。
  • 動作が遅い(これは主観的なものですが)
  • CtrlキーとCapsキーの交換が有効にならない
  • 日本語変換 (ibus-mozc など)が正常に機能しない(ウインドウ配置の問題に見える)
  • スクリーンショットをとるアプリケーション scrot が機能しない
将来の Raspberry Pi OS のリリースでこれらの問題は改善される可能性がありますが、当面は、Wayland/Wayfire から X11/mutter(またはopenbox) に戻すことで問題を回避できるようです。 以下の手順で行えますので、自己責任でお試しください。
  1. ターミナルで「 sudo raspi-config 」コマンドを実行し、設定画面を開く
  2. キーボードの「↓」キーを五回押し、「6 Advanced Options」にフォーカスを合わせる
  3. キーボードの「Enter」キーを押し、「6 Advanced Options」に入る
  4. キーボードの「↓」キーを五回押し、「A6 Wayland」にフォーカスを合わせる
  5. キーボードの「Enter」キーを押し、「A6 Wayland」に入る
  6. 「w1 X11」にフォーカスが合っていることを確認する。会っていなければ「↑」キーで合わせる
  7. キーボードの「Enter」キーを押し、「w1 X11」を選択する
  8. キーボードの「Enter」キーを押し、「了解」を選択する
  9. キーボードの「TAB」キー二回を押し、「Finish」にフォーカスを合わせる
  10. キーボードの「Enter」キーを押すと、再起動され設定が有効になる

本書の内容を Pi Zero ~ Pi 5 で実行する方法

サンプルプログラムについて

Pi 5 対応のサンプルプログラム、付録PDFは下記のリンクからダウンロードしてください。サンプルプログラムを圧縮したファイル「 mlbb-sample-pi5.zip 」の「-pi5」の部分が「Pi 5 対応」を意味しています。

はじめに

本ページでは、金丸隆志著「カラー図解 Raspberry Piではじめる機械学習」(講談社ブルーバックス)の内容を Raspberry Pi Zero ~ Raspberry Pi 5 で動作させるための補足情報を紹介します。

本書はこれまで、「本書出版時(2018年3月)から最新の OS まで、可能な限り同じサンプルプログラムが動作する」という状態を目指し、サンプルファイルの更新を続けてきました。
しかし、2023年9月に海外で発表された Raspberry Pi 5 (以下 Pi 5) では、2023年10月にリリースされた Bookworm という OS 以降でしか動作しません。Bookworm では以前の OS とカメラを利用する仕組みが違う、Theano というライブラリを利用できなくなっている、など、過去の OS とは大きく異なります。
そのため、過去の OS と同じプログラムを動作させることが困難になってきています。

そこで、この機会にすべてのプログラムを「Pi 5 で問題なくプログラムが動作すること」を基準に一新し、このページでその動作方法を解説することにしました。
書籍とこのページだけを見れば、全ての演習を Pi Zero ~ Pi 5 で実行できるようになります。

対象とする OS は、以下のように 2023年5月にリリースされた Rsapberry Pi OS (Bullseye) の最終版と、2023年10月にリリースされた Bookworm 以降の 64-bit OS です。64-bit OS を用いないと、第10章の演習を実行することができません。

日付バージョンOSバージョン
2023/5/3Raspberry Pi OS 2023-05-03Bullseye (最終版)
2023/10/10Raspberry Pi OS 2023-10-10Bookworm
2023/12/5Raspberry Pi OS 2023-10-10

64-bit OS を利用可能な Raspberry Pi の機種は、主に、Pi 3~5 および Pi Zero 2W です(ただし、Pi Zero 系は上級者向けなのでお勧めしません)。64-bit OS が動作しない機種では、以下の古いOSに対する情報に基づき、32-bit の Legacy な Bullseye OS で第10章の演習を実行する必要がありますので、ご了承ください。

本ページで表示するコマンドの利用方法

本ページには、本書の演習を実行するために必要なコマンドを全て記し、さらに、本書への追加情報を記していきます。

コマンドを全て本ページに記すことには、二つの目的があります。

一つ目の目的は、ソフトウェアのインストールコマンドが本書刊行後に変更された場合に、最新情報を提供することです。ですから、本書のコマンドと本ページのコマンドが異なる場合は、本ページの情報が最新であるとお考え下さい。実際、書籍では Python2 用のインストールコマンドを記しましたが、本ページでは Python3 用のインスト―ルコマンドに変更しております。本ページのコマンドをコピー&貼り付けによりご利用ください

二つ目の目的は、コマンドの入力がうまくいかないときのために、コマンドをコピーできる形式で提供することです。

本ページのコマンドをコピーにより活用するためには、まずRaspberry Pi上のブラウザ(Chromium)で本ページを開きます。

そして、コピーしたいコマンドをマウスでなぞり色を反転してください。その状態からそのコマンドをコピーするには下記の二つの方法のうちどちらかを実行してください。
  • 色を反転した領域をマウスで右クリックして「コピー」を選択する
  • キーボードの「Ctrl」キーを押しながら「c」キーを押す(Ctrl-c)
そして、コピーされたコマンドをターミナルソフトウェアに貼り付けるには、下記の三つの方法のうちどれかを実行してください。
  • LXTerminalのメニューから「編集」→「貼り付け」を選択する
  • LXTerminal上でキーボードの「Ctrl」キーと「Shift」キーを押しながら「v」キーを押す(Ctrl+Shift+v)
  • LXTerminal上でマウスのホイールを押し込む(ただし、この方法は正確には「コピーされた文字を貼り付ける」のではなく「マウスで色が反転された文字を貼り付ける」という動作になります)
いずれかの方法でLXTerminalにコマンドが貼り付けられたら、そのままキーボードの「Enter」キーを押せばコマンドが実行されます。

なお、2つのコマンドが2行にわたって連続して書かれている場合、コピー、貼り付け、実行はコマンド一つごとに行ってください。

3章

p.66 圧縮されたサンプルファイルの展開に関する注意

圧縮ファイルを展開するためのソフトウェアのデフォルトの設定が書籍から変化していますので利用の際は注意が必要です。
下図(左)のように、展開先のデフォルトが「/tmp」とされ、また、展開時に自動的にフォルダが作られるようになっています。
これを、下図(右)のように
  • 展開先に「 /home/pi 」または「 /home/pi/bluebacks 」と記入。ただし、2022年4月にリリースされた OS よりデフォルトユーザー pi は廃止されているため、 この記述の pi の部分は、皆さんが作成したユーザー名で置き換変える必要があります。すなわち、「kanamaru」というユーザーを作成したのなら、「 /home/kanamaru 」や「 /home/kanamaru/bluebacks 」となる、ということです。
  • 「Ensure a containing directory」のチェックを外す
の2点を行ってから「展開」ボタンを押すようにしましょう。展開先に記す文字は、このページからコピー (Ctrl-c) して貼り付ける (Ctrl-v) と安心です。



p.68 インストールできるソフトウェアの一覧を更新するコマンド

sudo apt update

p.68 scikit-learnをインストールするためのコマンド

sudo apt install python3-sklearn

p.70:開発環境IDLEの代替としてThonny Python IDEを用いる方法

本書で解説した開発環境IDLEは既に Raspberry Pi OS に含まれていません。より簡単にPythonプログラムを実行する方法として、デフォルトでインストール済の「Thonny Python IDE」を用いる方法をここで紹介します。

Thonny Python IDEはpython3用のプログラムを実行するための環境です。本書のプログラムはPython3での実行をサポートしていますので問題なく実行できます。 本ページに記したコマンドのコピー&貼り付けにより本書の演習を行うと、自然と Python 3 で演習を行うことになります。

さて、メニューの下図に示されている「Thonny Python IDE」をマウスでクリックするとThonny Python IDEが起動します。


次図のように、「LOAD」がファイルの読み込み、「RUN」がプログラム実行、「STOP」がプログラム停止であることを理解すれば問題なく利用できるでしょう。

プログラムの停止は、「STOP」ボタンによる方法以外に、「Shell」と書かれた領域の上でキーボードの「Ctrl-c」によりプログラムを終了するという方法もあります。なお、Thonnyには「時々Ctrl-cが効かなくなる」という不具合があるようなので、そういうときは「STOP」ボタンでプログラムを停止すると良いでしょう。


Thonny Python IDEを用いると、8~10章で取り扱うOpenCVを用いたプログラムもIDEから実行できるというメリットがあります(IDLEでは画像処理プログラムのみコンソールから起動させたのでした)。

ただし、Thonny Python IDEを用いるとコマンドライン引数が必要なプログラムの実行に注意が必要になりますのでここで注意しておきます。

コマンドライン引数は、8章で初めて登場するものです。プログラム実行時のコマンドで例えば「python3 ml-08-03-learn.py result.pkl」のように、ファイル名「ml-08-03-learn.py」の後に付加する「result.pkl」の部分のことを指します。
この場合は、学習後の結果を保存するファイル名を「result.pkl」とするためにこのコマンドライン引数を与えています。 Thonny Python IDEでコマンドライン引数を用いるには下記の手順に従ってください。

  • 右上の「Switch to regular mode」というリンクをクリックすることで、ユーザーインターフェースをシンプルモードからレギュラーモードに変更する(Thonny Python IDEの再起動が必要)
    (後で元に戻したいときはTools→Option→General→UI modeを「simple」に)
  • レギュラーモードにしかないメニューが現れるので、「View」→「Program arguments」にチェックする(Program argumentsとはコマンドライン引数のことを表す)
  • 右上に現れた小窓に必要なコマンドライン引数を記入してからプログラムを実行
    (ml-08-03-learn.pyの場合は学習後の結果を保存するファイル名「result.pkl」を記す)

以上で、下図のように「python3 ml-08-03-learn.py result.pkl」というコマンドを実行したのと同じ効果がThonny Python IDEで得られます。なお、「Program arguments」の部分はコマンドライン引数が不要なプログラムでは空欄に戻して実行してください。



p.75 ml-03-01-version.pyの実行コマンド

本ページではPythonプログラムの実行コマンドも掲載しますが、本書で記したように、「TAB」キーによる補完機能をマスターすることをお勧めします。 Python3での実行コマンドはこちらです。
python3 ml-03-01-version.py

4章

p.153 ml-05-01-2feat3class-nn.pyを実行すると書籍と異なる図が現れる

ml-05-01-2feat3class-nn.pyは毎回同じ乱数系列を利用するため、常に同じ結果を返すとp.153で述べました。 そのこと自体は正しいのですが、scikit-learnのバージョンがアップデートされた影響で、書籍の図5-7と異なる図が皆さんに表示されるようになりました。

その理由は、scikit-learnのバージョンが変わり学習の終了の判定条件が変更されたからと考えられますが、これは p.153で「将来のscikit-learnのバージョンアップにより結果が変わる可能性がないとは言えません」と記した通り、 予想されていたことです(より細かく言えば、tol=0.00002 とすると、書籍の図5-7とほぼ同じ図が現れます)。

ですので、図5-7の違いについては気にせずにお読みいただいて構いません。

p.168 変更するmax_iterの値について

168ページにて、 ml-05-02-4feat3class-nn.pyで長時間実験を行うために、max_iterとtolを変更します。 このうち、max_iterにセットする値は、書籍に記したように 100000 (0が5個) ですのでご注意ください。
max_iter を 10000 (0が4個) としてしまうと、正解率100%に達しません

p.169 ml-05-02-4feat3class-nn.pyで長時間実験を行う際の警告について

ml-05-02-4feat3class-nn.pyで長時間実験を行う際、コンソールには 「Stochastic Optimizer: Maximum iterations reached and the optimization hasn't converged yet.」 という警告が現れます。
158ページに記しましたように、これは「tolの条件が満たされる前に最大エポックに達してしまった」ことを示す警告ですが、 それを意図した実験でしたので、158ページの長時間実験と同様にこの警告は無視して構いません。

6章

p.195 ImageTKのインストール用コマンド

2つの命令がありますので、1つずつ順番に実行してください。なお、現在の OS ではこのプログラムはインストール済だと言われることが多いでしょう。
sudo apt update
sudo apt install python3-pil.imagetk

8章

p.243 カメラについて

公式カメラモジュールをまだ購入しておらず、市販のウェブカメラをお持ちだという方は、まず「本書の演習をウェブカメラで実行する方法」を試してみるのも良いでしょう。

以下、Raspberry Pi のカメラモジュールの利用について解説します。 Raspberry Pi 用のカメラモジュールは、現在では下図のように バージョン 1 から バージョン 3 までの 3 バージョンがあります。
左から、バージョン1(基板が四角)、バージョン2(基板の角が丸く、レンズ周辺が黒)、バージョン3(基板の角が丸く、レンズ周辺が銀)です。基板上にもバージョンの記載がありますね。どのバージョンでも動作させることができます。

Raspberry Pi 1 から Pi 4 でしたら、カメラモジュールの Raspberry Pi 本体への取り付けは、本書記載の通り「(ケーブルの)端子面がRaspberry PiのmicroSDカードの方を向くように」取り付けます。

一方、Raspberry Pi Zero および Pi 5 の場合、カメラモジュールの取り付けにはいくつかの注意があります。

まず、カメラモジュールに取り付けられているケーブルを、Pi Zero および Pi 5 に対応したものに交換する必要があります。例えば下記のものは Pi Zero でも Pi 5 でも利用可能です。 Pi Zero 用ケーブルでRaspberry Pi Zero WH にカメラモジュールを取りつけた様子が下図です。Raspberry Pi 本体に向かってケーブルが細くなっているのがわかるでしょうか。


専用ケーブルをカメラに取り付ける際、金属が露出した端子面を緑色の基板の方を向くようにします。基板上のカバーを引き出し、ケーブルを差し込んだ後でカバーを押し込むことでケーブルが固定されます。
専用ケーブルを Raspberry Pi 本体に取り付ける際、Pi Zero の場合はやはり金属が露出した端子面を緑色の基板の方を向くようにします。
Pi 5 の場合は、下図のように「金属が露出した端子面が USB 端子側を向くように」取り付けます。これは Pi 1~Pi 5とは逆向きですので注意してください。
また、Pi 5 にはカメラを取り付けられる場所が 2 箇所ありますが、「CAM/DISP 0」と書かれた方に接続しましょう。

なお、どの Raspberry Pi を用いるにせよ、カメラのコネクタは壊れやすいので、両手で慎重に開け閉めしましょう。私は片手で雑に扱っていて壊したことがあります。

p.248 OpenCVのインストール

2つの命令がありますので、1つずつ順番に実行してください。
sudo apt update
sudo apt install python3-opencv

p.250 ml-08-01-cameracheck.pyの実行コマンド

Python3で演習を実行するためのコマンドはこちらです。
python3 ml-08-01-cameracheck.py

p.257 ml-08-02-binary.pyの実行コマンド

Python3で演習を実行するためのコマンドはこちらです。
python3 ml-08-02-binary.py

p.257 ml-08-02-binary.pyが手の形を反映していない場合

ml-08-02-binary.pyが手の形を反映していない場合、p.258「手の形が綺麗に切り出せないときの対処法」に基づいてプログラム中のパラメータhmin、hmax、sminの値を調整しなければなりません。 著者の感覚として、様々なツールが更新されるにと伴い、執筆時に比べて適切なパラメータの値が変化しているような印象があります。

典型的には、下記のパターンでの値の変更で改善されるケースが多いでしょう。書籍p.262の図8-7に基づいて述べます。
  1. 図8-7のs_binaryが手の形を含んでいる場合
    この場合、hmaxの調整のみで良いでしょう。例えば手の形が欠けている場合、hmaxをデフォルトの30から35などのように大きくすれば、手の欠けが小さくなります。
  2. 図8-7のs_binaryが手の形を全く反映していない場合
    この場合、S成分による二値化は smin =0 とすることで無効にした方が良いでしょう。その上で hmax の調整を行い、手の形が再現されるようにします。
  3. 図8-7のs_binaryがほぼ手の形を再現している場合
    この場合、hmin=-1としてH成分による認識を無効にし、S成分のみの認識してみると綺麗に手の形が現れることがあります。
なお、このようなhmin、hmax、sminの調整は、手の形の認識を含むプログラム(じゃんけんプログラムも含む)の全てで行う必要がありますのでご注意ください。

p.259 ml-08-02-binary.pyを編集するためのコマンド

mousepad ml-08-02-binary.py

p.275 ml-08-03-learn.pyの実行コマンド

Python3で演習を実行するためのコマンドはこちらです。
python3 ml-08-03-learn.py result.pkl

p.286 ml-08-04-recognition.pyの実行コマンド

Python3で演習を実行するためのコマンドはこちらです。
python3 ml-08-04-recognition.py result.pkl

9章

p.293 mpg321をインストールするためのコマンド

2つの命令がありますので、1つずつ順番に実行してください。
sudo apt update
sudo apt install mpg321

p.295 音声の出力先をピンジャックにする方法 (2023-10-10 以降の Raspberry Pi OS の場合)

2023-10-00 以降の Raspberry Pi OS では、音声の出力先をピンジャックにする方法が変わっております。 もし、デフォルトでピンジャックから音が出ていない場合、以下の指示に従ってください。なお、raspi-config コマンドを実行中は、キーボードの Esc キーが「戻る」に対応しますので、困ったら Esc キーを何度か押してみると良いでしょう。
  1. ターミナルで「 sudo raspi-config 」コマンドを実行し、設定画面を開く
  2. キーボードの「↓」キーを五回押し、「6 Advanced Options」にフォーカスを合わせる
  3. キーボードの「Enter」キーを押し、「6 Advanced Options」に入る
  4. キーボードの「↓」キーを六回押し、「A7 Audio Config」にフォーカスを合わせる
  5. キーボードの「Enter」キーを押し、「A7 Audio Config」に入る
  6. キーボードの「上」キーを一回押し、「1 PulseAudio」にフォーカスを合わせる
  7. キーボードの「Enter」キーを押し、「1 PulseAudio」を選択する
  8. キーボードの「Enter」キーを押し、「了解」を選択する
  9. キーボードの「TAB」キー二回を押し、「Finish」にフォーカスを合わせる
  10. キーボードの「Enter」キーを押すと、再起動され設定が有効になる


p.296 ml-09-01-janken.pyの実行コマンド

GUIを用いたじゃんけんシステムです。Python3で演習を実行するためのコマンドはこちらです。
python3 ml-09-01-janken.py result.pkl
このじゃんけんシステムにロボットハンドを追加し、ディスプレイないではなく現実世界でじゃんけん勝負する方法を 「人間の手を予測するじゃんけんシステムにロボットハンドを追加する」に示しましたので、電子工作に興味のある方はご覧ください。

p.300 ml-09-02-janken-shorten.pyの実行コマンド

GUIを用いたじゃんけんシステムの音声短縮版です。Python3で演習を実行するためのコマンドはこちらです。
python3 ml-09-02-janken-shorten.py result.pkl

10章

10章全般 kerasとTensorFlowの利用について

本書では、10章のディープラーニングの演習のためにkerasというライブラリとTheanoというバックエンドを組み合わせて用いました。
しかし、Theano は現在開発が終了しており、OS Bookworm ではインストールもできなくなってしまいました。

そこで、10章の演習は、kerasと組み合わせることができるバックエンドとして Thenao ではなく TensorFlow を用いることにします。 ただし、64-Bit 版 OS でしか動作しませんので、その点はご了承ください。64-Bit OS を利用可能なのは、Pi 3/4/5/Zero 2W です。 Tensorflow のインストール法は書籍に記されておりませんので、以下の解説を見てください。

TensorFlow 2 のインストール方法 (Bookworm 64-bit 版の場合)

Raspberry Pi OS Bullseye 64-bit 版で、TensorFlow 2 系のパッケージをインストールするには、以下の8個のコマンドを順に実行します。 PINTO0309 (Katsuya Hyodo) さんのビルドした TensorFlow 2.12 の 64-bit 版がインストールされます。
sudo apt install libhdf5-dev libc-ares-dev libeigen3-dev gcc gfortran libgfortran5 libatlas3-base libatlas-base-dev libopenblas-dev libblas-dev liblapack-dev cython3 libatlas-base-dev openmpi-bin libopenmpi-dev python3-dev python3-h5py

sudo pip3 install keras_applications==1.0.8 --no-deps --break-system-packages

sudo pip3 install keras_preprocessing==1.1.2 --no-deps --break-system-packages

sudo pip3 install numpy==1.24.4 --break-system-packages

sudo pip3 install pybind11==2.9.2 --break-system-packages

pip3 install -U --user six wheel mock --break-system-packages

wget https://github.com/PINTO0309/Tensorflow-bin/releases/download/v2.12.0rc0/tensorflow-2.12.0rc0-cp311-none-linux_aarch64.whl

sudo -H pip3 install tensorflow-2.12.0rc0-cp311-none-linux_aarch64.whl --break-system-packages
全てのコマンドが無事終了すれば インストールは終わりです。なお、TensorFlow 2.3 以降では keras は TensorFlow 専用となっていますので、.keras/keras.json による設定は必要ありません。

TensorFlow 2 のインストール方法 (Bullseye 64-bit 版の場合)

Raspberry Pi OS Bullseye 64-bit 版で、TensorFlow 2 系のパッケージをインストールするには、以下の11個のコマンドを順に実行します。 PINTO0309 (Katsuya Hyodo) さんのビルドした TensorFlow 2.9 の 64-bit 版がインストールされます。

なお、下記のコマンドを実行すると、numpy のバージョンが新しくなる関係で theano が動作しなくなりますのでご了承ください。
sudo apt install libc-ares-dev libeigen3-dev gfortran libopenblas-dev libopenblas-base cython3 openmpi-bin 

sudo pip3 install keras_applications==1.0.8 --no-deps

sudo pip3 install keras_preprocessing==1.1.2 --no-deps

sudo pip3 install numpy==1.22.3

sudo pip3 install h5py==3.6.0

sudo pip3 install pybind11==2.9.2

pip3 install -U --user six wheel mock

wget "https://raw.githubusercontent.com/PINTO0309/Tensorflow-bin/main/previous_versions/download_tensorflow-2.9.0-cp39-none-linux_aarch64.sh"

chmod +x download_tensorflow-2.9.0-cp39-none-linux_aarch64.sh

./download_tensorflow-2.9.0-cp39-none-linux_aarch64.sh

sudo -H pip3 install tensorflow-2.9.0-cp39-none-linux_aarch64.whl
全てのコマンドが無事終了すれば インストールは終わりです。なお、TensorFlow 2.3 以降では keras は TensorFlow 専用となっていますので、.keras/keras.json による設定は必要ありません。

10.4 アヤメの分類

p.321 ml-10-01-iris-deep-learn.pyの実行コマンド(アヤメの学習)

Python3で演習を実行するためのコマンドはこちらです。学習には時間がかかるので実行することを必ずしもお勧めしません。
python3 ml-10-01-iris-deep-learn.py result-iris.h5

p.327 ml-10-02-iris-deep-load.pyの実行コマンド(自分で作った学習済ファイルを用いる場合)

Python3で演習を実行するためのコマンドはこちらです。
python3 ml-10-02-iris-deep-load.py result-iris.h5

p.327 ml-10-02-iris-deep-load.pyの実行コマンド(配布された学習済ファイルを用いる場合)

Python3で演習を実行するためのコマンドはこちらです。
python3 ml-10-02-iris-deep-load.py ml-iris-deep.h5

10.6 手書き数字の分類

p.351 ml-10-03-digits-cnn-learn.pyの実行コマンド(手書き数字の学習)

Python3で演習を実行するためのコマンドはこちらです。学習には時間がかかるので実行することを必ずしもお勧めしません。
python3 ml-10-03-digits-cnn-learn.py result-digits.h5

p.354 ml-10-04-digits-cnn-load.pyの実行コマンド(自分で作った学習済ファイルを用いる場合)

Python3で演習を実行するためのコマンドはこちらです。正解率を表示するプログラムです。
python3 ml-10-04-digits-cnn-load.py result-digits.h5

p.354 ml-10-04-digits-cnn-load.pyの実行コマンド(配布された学習済ファイルを用いる場合)

Python3で演習を実行するためのコマンドはこちらです。正解率を表示するプログラムです。
python3 ml-10-04-digits-cnn-load.py ml-digits-cnn.h5

p.356 ml-10-05-digits-cnn-gui.pyの実行コマンド(自分で作った学習済ファイルを用いる場合)

Python3で演習を実行するためのコマンドはこちらです。マウスで描いた数字を分類するプログラムです。
python3 ml-10-05-digits-cnn-gui.py result-digits.h5

p.356 ml-10-05-digits-cnn-gui.pyの実行コマンド(配布された学習済ファイルを用いる場合)

Python3で演習を実行するためのコマンドはこちらです。マウスで描いた数字を分類するプログラムです。
python3 ml-10-05-digits-cnn-gui.py ml-digits-cnn.h5

p.357 ml-10-06-digits-cnn-gui-mod.pyの実行コマンド(自分で作った学習済ファイルを用いる場合)

Python3で演習を実行するためのコマンドはこちらです。マウスで描いた数字を分類するプログラムです。数字の位置と大きさを補正するバージョンです。
python3 ml-10-06-digits-cnn-gui-mod.py result-digits.h5

p.358 ml-10-06-digits-cnn-gui-mod.pyの実行コマンド(配布された学習済ファイルを用いる場合)

Python3で演習を実行するためのコマンドはこちらです。マウスで描いた数字を分類するプログラムです。数字の位置と大きさを補正するバージョンです。
python3 ml-10-06-digits-cnn-gui-mod.py ml-digits-cnn.h5
なお、このプログラムをTensorFlow.jsというライブラリによりブラウザで体験するデモンストレーションを作成してみました。 「手描き数字認識をTensorFlow.jsによりブラウザで実行してみよう」で解説しておりますので、興味のある方はお試しください。

10.6 じゃんけんの手の分類

p.368 ml-10-07-hand-cnn-learn.pyの実行コマンド(じゃんけんの手の学習)

Python3で演習を実行するためのコマンドはこちらです。学習には時間がかかるので実行することを必ずしもお勧めしません。
python3 ml-10-07-hand-cnn-learn.py result-hand.h5
なお、このコマンドの実行時にAttributeErrorが出る場合、学習用の手の画像が格納されているml-learnディレクトリがプログラムml-10-07-hand-cnn-learn.pyと同じ位置に存在しないためであると考えられます。 これは圧縮されたサンプルファイルを展開すると現れるディレクトリです。ご確認ください。

p.371 ml-10-08-hand-cnn-load.pyの実行コマンド(自分で作った学習済ファイルを用いる場合)

Python3で演習を実行するためのコマンドはこちらです。二値化されたカメラ映像と手の分類結果を表示するプログラムです。
python3 ml-10-08-hand-cnn-load.py result-hand.h5
二値化された映像が手の形を全く反映していない場合、本ページの「p.257 ml-08-02-binary.pyが手の形を反映していない場合」に基づき、プログラム中(この場合 ml-10-08-hand-cnn-load.py)のパラメータhmin、hmax、sminの値を調整してください。
プログラム中のhmin、hmax、sminの調整はこの後のじゃんけんプログラムでも必要になりますのでご注意ください。

ml-08-02-binary.pyが手の形を反映していない場合、p.258「手の形が綺麗に切り出せないときの対処法」に基づいてプログラム中のパラメータhmin、hmax、sminの値を調整しなければなりません。 著者の感覚として、様々なツールが更新されるにと伴い、執筆時に比べて適切なパラメータの値が変化しているような印象があります。

典型的には、下記のパターンでの値の変更で改善されるケースが多いでしょう。書籍p.262の図8-7に基づいて述べます。
  1. 図8-7のs_binaryが手の形を含んでいる場合
    この場合、hmaxの調整のみで良いでしょう。例えば手の形が欠けている場合、hmaxをデフォルトの30から35などのように大きくすれば、手の欠けが小さくなります。
  2. 図8-7のs_binaryが手の形を全く反映していない場合
    この場合、S成分による二値化は smin =0 とすることで無効にした方が良いでしょう。その上で hmax の調整を行い、手の形が再現されるようにします。
  3. 図8-7のs_binaryがほぼ手の形を再現している場合
    この場合、hmin=-1としてH成分による認識を無効にし、S成分のみの認識してみると綺麗に手の形が現れることがあります。
なお、このようなhmin、hmax、sminの調整は、手の形の認識を含むプログラム(じゃんけんプログラムも含む)の全てで行う必要がありますのでご注意ください。

p.371 ml-10-08-hand-cnn-load.pyの実行コマンド(配布された学習済ファイルを用いる場合)

Python3で演習を実行するためのコマンドはこちらです。二値化されたカメラ映像と手の分類結果を表示するプログラムです。
python3 ml-10-08-hand-cnn-load.py ml-hand-cnn.h5
二値化された映像が手の形を全く反映していない場合、本ページの「p.257 ml-08-02-binary.pyが手の形を反映していない場合」に基づき、プログラム中(この場合 ml-10-08-hand-cnn-load.py)のパラメータhmin、hmax、sminの値を調整してください。
プログラム中のhmin、hmax、sminの調整はこの後のじゃんけんプログラムでも必要になりますのでご注意ください。

p.373 ml-10-09-janken-deep.pyの実行コマンド(自分で作った学習済ファイルを用いる場合)

Python3で演習を実行するためのコマンドはこちらです。GUIによるじゃんけんシステムです。
python3 ml-10-09-janken-deep.py result-hand.h5
二値化された映像が手の形を全く反映していない場合、本ページの「p.257 ml-08-02-binary.pyが手の形を反映していない場合」に基づき、プログラム中(この場合 ml-10-09-janken-deep.py)のパラメータhmin、hmax、sminの値を調整してください。

p.373 ml-10-09-janken-deep.pyの実行コマンド(配布された学習済ファイルを用いる場合)

Python3で演習を実行するためのコマンドはこちらです。GUIによるじゃんけんシステムです。
python3 ml-10-09-janken-deep.py ml-hand-cnn.h5
二値化された映像が手の形を全く反映していない場合、本ページの「p.257 ml-08-02-binary.pyが手の形を反映していない場合」に基づき、プログラム中(この場合 ml-10-09-janken-deep.py)のパラメータhmin、hmax、sminの値を調整してください。

じゃんけんシステムは、手の画像が格納されているディレクトリml-imagesと音声が格納されているディレクトリml-soundがプログラムファイルml-10-09-janken-deep.pyと同じ位置にあることが前提となっています。 どちらも圧縮されたサンプルファイルを展開すると現れるディレクトリです。エラーが出る方はご確認ください。

なお、このじゃんけんシステムにロボットハンドを追加し、ディスプレイないではなく現実世界でじゃんけん勝負する方法を 「人間の手を予測するじゃんけんシステムにロボットハンドを追加する」に示しましたので、電子工作に興味のある方はご覧ください。

p.374 ml-10-10-janken-deep-shorten.pyの実行コマンド(自分で作った学習済ファイルを用いる場合)

Python3で演習を実行するためのコマンドはこちらです。GUIによるじゃんけんシステムの音声短縮版です。
python3 ml-10-10-janken-deep-shorten.py result-hand.h5
二値化された映像が手の形を全く反映していない場合、本ページの「p.257 ml-08-02-binary.pyが手の形を反映していない場合」に基づき、プログラム中(この場合 ml-10-10-janken-deep-shorten.py)のパラメータhmin、hmax、sminの値を調整してください。

p.374 ml-10-10-janken-deep-shorten.pyの実行コマンド(配布された学習済ファイルを用いる場合)

Python3で演習を実行するためのコマンドはこちらです。GUIによるじゃんけんシステムの音声短縮版です。
python3 ml-10-10-janken-deep-shorten.py ml-hand-cnn.h5
二値化された映像が手の形を全く反映していない場合、本ページの「p.257 ml-08-02-binary.pyが手の形を反映していない場合」に基づき、プログラム中(この場合 ml-10-10-janken-deep-shorten.py)のパラメータhmin、hmax、sminの値を調整してください。