🖼

ラズパイでPyTorchを使い、画像を音声で教えてもらうよ

31 min read

ラズパイでPyTorchを使う機会があったため、
環境構築とカメラ画像を識別する方法について紹介します。
カメラ画像を識別モデル(Resnet)で判定し、音声で教えてくれます。

https://twitter.com/tw_kotatu/status/1457223320311533572

学習などについては触れません。

⚙概要

動作の流れ

以下の流れです。

Image from Gyazo

  1. カメラモジュールより、画像を撮影する
  2. 学習済みモデルで、画像を推論する
  3. 推論の結果から、判定した素材をスピーカーから出力する

🔧パーツ一覧

no 部品名 個数 備考
1 ラズベリーパイ 1 今回は4Bで確認
2 カメラモジュール V2 1 Amazon
3 サンワサプライ コンパクトPCスピーカー MM-SPU8BK 1 Amazon

💻環境

開発環境

  • ラズベリーパイ
    • Linux raspberrypi 5.10.17-v7l+ #1414 SMP Fri Apr 30 13:20:47 BST 2021 armv7l GNU/Linux
  • Python
    • Python 3.7.3 (default, Jan 22 2021, 20:04:44)

PyTorchのインストール

PyTorchとは、Pythonのオープンソース機械学習ライブラリ(Deep Learningライブラリ)です。
PyTorchをラズベリーパイ上で、ビルドすると時間がかかります。
Kashu7100さんのリポジトリにビルド済みのモノが公開されています。
それを利用させていただきます。

https://github.com/Kashu7100/pytorch-armv7l

apt

$ sudo apt update
$ sudo apt upgrade
$ sudo apt install libopenblas-dev libblas-dev m4 cmake cython python3-dev python3-yaml python3-setuptools
$ sudo apt install libatlas-base-dev

pip

下記のバージョンをインストールします。

  • PyTorch - 1.7.0
  • Torchvision - 0.8.0
$ python3 -m venv env
$ source env/bin/activate
(env) $ git clone https://github.com/Kashu7100/pytorch-armv7l.git
(env) $ cd pytorch-armv7l/
(env) $ pip install torch-1.7.0a0-cp37-cp37m-linux_armv7l.whl
(env) $ pip install torchvision-0.8.0a0+45f960c-cp37-cp37m-linux_armv7l.whl

エラーがでないことを確認します。

$ python
>>> import torch
>>> import torchvision
>>> torch.__version__
'1.7.0a0+e85d494'
>>> torchvision.__version__
'0.8.0a0+45f960c'
>>> exit()

自前でビルドしたい方は、レポジトリに公開されているReadmeの手順で実施してください。
以前、私がビルドした際の作業記録は、↓のスクラップに記載してあります。
4~5時間ほどかかった記憶があります。

https://zenn.dev/link/comments/3132178c75a450

カメラの接続/セットアップ

詳細は、↓にまとめてあります。

https://zenn.dev/kotaproj/books/raspberrypi-tips/viewer/400_kiso_camera

現時点(2021.11)に、"pip install opencv-python"とすると、
opencv-python-4.5.4.58.tar.gzがインストールされます。
しかし、インストールが完了しないため、古いバージョン(4.5.1.48)で確認しています。↓

(env) $ pip install opencv-python==4.5.1.48

USBスピーカ/OpenJTalkの接続/セットアップ

音声合成には、OpenJTalkを使用します。
詳細は、↓にまとめてあります。

https://zenn.dev/kotaproj/books/raspberrypi-tips/viewer/038_kiso_openj

📝手順

  • Resnetを動かす
  • 判定装置をつくる

Resnetを動かす

Resnetとは???

CNN(畳み込みニューラルネットワーク)を使用した画像認識のモデルです。
画像認識精度を競うImageNet - 2015年度の優勝アルゴリズムです。

理論の詳細は、下記のサイトを参考にしてください

https://qiita.com/kenmaro/items/008051dae0bf0ad718cb

https://aizine.ai/cnn-0801/

画像の判定

犬の画像をダウンロードし、Resnet18で何の画像か判定します。
確信度が高いtop5を表示します。

入力する画像

コード

sample_resnet.py
import torch
import torchvision
import urllib
from PIL import Image
from torchvision import transforms

# 学習済みモデルをロード
model = torch.hub.load('pytorch/vision:v0.8.0', 'resnet18', pretrained=True)

# 推論モードへ設定
model.eval()

# 犬の画像のダウンロード
url, filename = ("https://github.com/pytorch/hub/raw/master/images/dog.jpg", "dog.jpg")
try:
    urllib.URLopener().retrieve(url, filename)
except:
    urllib.request.urlretrieve(url, filename)

# 入力画像のロード
input_image = Image.open(filename)

# 入力画像の前処理
preprocess = transforms.Compose([
    transforms.Resize(256),
    transforms.CenterCrop(224),
    transforms.ToTensor(),
    transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
])

# 前処理後→Tensorへ変換
input_tensor = preprocess(input_image)
# Resnetの入力形式へ変換(バッチサイズ1)
input_batch = input_tensor.unsqueeze(0) # create a mini-batch as expected by the model
# >>> input_batch.size()
# torch.Size([1, 3, 224, 224])

# 推論の実施
with torch.no_grad():
    output = model(input_batch)
probabilities = torch.nn.functional.softmax(output[0], dim=0)

# Download ImageNet labels
txt_url, txt_filename = ("https://raw.githubusercontent.com/pytorch/hub/master/imagenet_classes.txt", "imagenet_classes.txt")
urllib.request.urlretrieve(txt_url, txt_filename)
# ('imagenet_classes.txt', <http.client.HTTPMessage object at 0xa1a6e6b0>)
# Read the categories
with open("imagenet_classes.txt", "r") as f:
    categories = [s.strip() for s in f.readlines()]

# Show top categories per image
top5_prob, top5_catid = torch.topk(probabilities, 5)
for i in range(top5_prob.size(0)):
    print(categories[top5_catid[i]], top5_prob[i].item())

実行結果

 $ python sample_resnet.py 
Using cache found in /home/pi/.cache/torch/hub/pytorch_vision_v0.8.0
Samoyed 0.8846226930618286
Arctic fox 0.04580509662628174
white wolf 0.04427633434534073
Pomeranian 0.005621347110718489
Great Pyrenees 0.004651992116123438
判定 確信度 参考
Samoyed 0.884 ロシアのシベリアを原産地とする犬の品種のひとつ
Arctic fox 0.045 ホッキョクギツネ
white wolf 0.044 シロオオカミ
Pomeranian 0.005 ポメラニアン
Great Pyrenees 0.004 グレート・ピレニーズ、大型犬の一種

いい感じで判定されいます。

判定装置をつくる

各要素を組み合わせてつくります。
内容はコメントと後述するパラメータを参照ください。

コード

2つのファイルに分けて作成します。
各ファイルの役割は以下となります。

ファイル名 役割 備考
main.py 推論/キャプチャ/音声出力の実施 -
classes_jp.txt クラスの定義 翻訳はGoogle翻訳を使用しています

classes_jp.txtは、長いので最後に記載してあります。

main.py
# pytorch関連
import torch
import torchvision
from torchvision import transforms

# 判定閾値
THRESHOLD_VAL = 0.5

# カメラ関連
import cv2

# /dev/video0を指定
DEV_ID = 0

# パラメータ
WIDTH = 256
HEIGHT = 256

# 音声関連
import subprocess

## openjtalk
X_DIC = '/var/lib/mecab/dic/open-jtalk/naist-jdic'
M_VOICE = '/usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice'
# M_VOICE = '/usr/share/hts-voice/mei/mei_normal.htsvoice'
R_SPEED = '1.0'
OW_WAVFILE = '/tmp/tmp.wav'

## aplay
CARD_NO = 1
DEVICE_NO = 0

def main():

    # resnet準備
    model = torch.hub.load('pytorch/vision:v0.8.0', 'resnet18', pretrained=True)
    model.eval()
    # 入力画像の前処理
    preprocess = transforms.Compose([
        transforms.ToPILImage(), # numpy.ndarray -> pillow
        transforms.CenterCrop(224),
        transforms.ToTensor(),
        transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]),
    ])

    # カテゴリのテキストの作成(読み上げデータ)
    with open("classes_jp.txt", "r") as f:
        categories = [s.strip() for s in f.readlines()]
    categories_jp = [s.split(',')[1] for s in categories]
    finded_class = (-1)

    # /dev/video0を指定
    cap = cv2.VideoCapture(DEV_ID)

    # 解像度の指定
    cap.set(cv2.CAP_PROP_FRAME_WIDTH, WIDTH)
    cap.set(cv2.CAP_PROP_FRAME_HEIGHT, HEIGHT)

    # bufferを最小
    # cap.set(cv2.CAP_PROP_BUFFERSIZE, 0)
    cap.set(cv2.CAP_PROP_BUFFERSIZE, 1)

    try:
        while True:
            # キャプチャの実施
            ret, frame = read_frame(cap)
            if ret:
                input_image = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
                input_tensor = preprocess(input_image)
                input_batch = input_tensor.unsqueeze(0) # create a mini-batch as expected by the model

                # 推論の実施
                with torch.no_grad():
                    output = model(input_batch)
                probabilities = torch.nn.functional.softmax(output[0], dim=0)

                # Show top categories per image
                top5_prob, top5_catid = torch.topk(probabilities, 5)
                print("top5_prob.size(0) : ", top5_prob.size(0))
                for i in range(top5_prob.size(0)):
                    print(top5_catid[i], " : ", categories_jp[top5_catid[i]], top5_prob[i].item())

                # 異なる認識を見つけたとき、音声でお知らせ
                if finded_class != top5_catid[0] and  top5_prob[0].item() > THRESHOLD_VAL:
                    talk_text((categories_jp[top5_catid[0]] + "をみつけました"))
                    finded_class = top5_catid[0]
    except KeyboardInterrupt:
        print('中断')

    # 後片付け
    cap.release()
    cv2.destroyAllWindows()

    return


def read_frame(cap):
    # キャプチャの実施
    for _ in range(5):
        ret, frame = cap.read()
        if ret == False:
            break

    # 最後の画像を取得する
    for _ in range(10):
        ret, frame = cap.read()
        if ret:
            return ret, frame
        time.sleep(0.01)

    return ret, None


def talk_text(t):
    open_jtalk = ['open_jtalk']
    xdic = ['-x', X_DIC]
    mvoice = ['-m', M_VOICE]
    rspeed = ['-r', R_SPEED]
    owoutwav = ['-ow',OW_WAVFILE]
    cmd = open_jtalk + xdic + mvoice + rspeed + owoutwav
    c = subprocess.Popen(cmd, stdin=subprocess.PIPE)
    c.stdin.write(t.encode('utf-8'))
    c.stdin.close()
    c.wait()
    aplay = ['aplay', '-q', OW_WAVFILE, ('-Dplughw:'+str(CARD_NO)+','+str(DEVICE_NO))]
    wr = subprocess.Popen(aplay)
    wr.wait()



if __name__ == "__main__":
    main()

実行結果

デモの結果となります。

 $ python main.py
略
top5_prob.size(0) :  5
tensor(954)  :  バナナ 0.9285563826560974
tensor(942)  :  バターナッツスカッシュ 0.021728843450546265
tensor(940)  :  スパゲッティスカッシュ 0.010262432508170605
tensor(725)  :  ピッチャー 0.0043582068756222725
tensor(941)  :  どんぐりかぼちゃ 0.0038810872938483953

# "バナナが見つかりました"と音声出力

補足

判定の閾値

  • THRESHOLD_VALが確信度の閾値になっています
  • 判定状況によって調整してください

音声種別

  • M_VOICEにて音声を指定できます。
    • 男性声 : '/usr/share/hts-voice/nitech-jp-atr503-m001/nitech_jp_atr503_m001.htsvoice'
    • 女性声 : '/usr/share/hts-voice/mei/mei_normal.htsvoice'

判定の遅延

  • 推論の実行および音声出力にてブロッキングされています
  • そのため、カメラにバッファにたまるため、
  • バッファを吐き出すようにしています

精度

  • 画面全体に対し、判定しているため背景などに大きく影響します
  • 精度よくしたいのであれば、YoloやSSDなどの物体検出モデルを使用することをオススメします

さいごに

個人的には、PyTorchを使うのが目的でしたが、
ちょっと組み合わせるだけでいろいろなサービスが作れそうです。

ラズパイの活用方法を

https://zenn.dev/kotaproj/books/raspberrypi-tips

としてまとめ中です。

classes_jp.txt のテキスト

classes_jp.txt
tench,テンチ,
goldfish,金魚,
great white shark,ホオジロザメ,
tiger shark,イタチザメ,
hammerhead,シュモクザメ,
electric ray,シビレエイ,
stingray,アカエイ,
cock,コック,
hen,,
ostrich,ダチョウ,
brambling,アトリ,
goldfinch,ゴシキヒワ,
house finch,メキシコマシコ,
junco,ユキヒメドリ,
indigo bunting,ルリノジコ,
robin,ロビン,
bulbul,ヒヨドリ,
jay,ジェイ,
magpie,マグパイ,
chickadee,チカディー,
water ouzel,ウォーターオウゼル,
kite,,
bald eagle,白頭ワシ,
vulture,ハゲタカ,
great grey owl,カラフトフクロウ,
European fire salamander,ヨーロッパのファイアサラマンダー,
common newt,一般的なイモリ,
eft,eft,
spotted salamander,キボシサンショウウオ,
axolotl,アホロートル,
bullfrog,ウシガエル,
tree frog,アマガエル,
tailed frog,尾のカエル,
loggerhead,アカウミガメ,
leatherback turtle,オサガメ,
mud turtle,ドロガメ,
terrapin,テラピン,
box turtle,アメリカハコガメ,
banded gecko,縞模様のヤモリ,
common iguana,一般的なイグアナ,
American chameleon,アメリカのカメレオン,
whiptail,ホイップテール,
agama,アガマ,
frilled lizard,エリマキトカゲ,
alligator lizard,ワニのトカゲ,
Gila monster,アメリカドクトカゲ,
green lizard,緑のトカゲ,
African chameleon,アフリカのカメレオン,
Komodo dragon,コモドドラゴン,
African crocodile,アフリカのワニ,
American alligator,アメリカアリゲーター,
triceratops,トリケラトプス,
thunder snake,サンダースネーク,
ringneck snake,クビワヘビ,
hognose snake,セイブシシバヘビ,
green snake,緑のヘビ,
king snake,キングスネーク,
garter snake,ガーターヘビ,
water snake,ミズベヘビ,
vine snake,つるヘビ,
night snake,夜のヘビ,
boa constrictor,ボアコンストリクター,
rock python,ロックパイソン,
Indian cobra,インドコブラ,
green mamba,グリーンマンバ,
sea snake,ウミヘビ,
horned viper,サハラツノクサリヘビ,
diamondback,ダイヤモンドバック,
sidewinder,サイドワインダー,
trilobite,三葉虫,
harvestman,ザトウムシ,
scorpion,サソリ,
black and gold garden spider,黒と金の庭のクモ,
barn spider,納屋のクモ,
garden spider,キマダラコガモ,
black widow,ブラックウィドウ,
tarantula,タランチュラ,
wolf spider,コモリグモ,
tick,ダニ,
centipede,ムカデ,
black grouse,クロライチョウ,
ptarmigan,雷鳥,
ruffed grouse,エリマキライチョウ,
prairie chicken,ソウゲンライチョウ,
peacock,孔雀,
quail,ウズラ,
partridge,パートリッジ,
African grey,ヨウム,
macaw,コンゴウインコ,
sulphur-crested cockatoo,キバタン,
lorikeet,ゴシキセイガイインコ,
coucal,バンケン,
bee eater,ハチクイ,
hornbill,サイチョウ,
hummingbird,ハチドリ,
jacamar,キリハシ,
toucan,オオハシ,
drake,ドレイク,
red-breasted merganser,ウミアイサ,
goose,ガチョウ,
black swan,黒い白鳥,
tusker,tusker,
echidna,ハリモグラ,
platypus,カモノハシ,
wallaby,ワラビー,
koala,コアラ,
wombat,ウォンバット,
jellyfish,クラゲ,
sea anemone,イソギンチャク,
brain coral,脳サンゴ,
flatworm,扁形動物,
nematode,線虫,
conch,巻き貝,
snail,カタツムリ,
slug,ナメクジ,
sea slug,ウミウシ,
chiton,キトン,
chambered nautilus,オウムガイ,
Dungeness crab,アメリカイチョウガニ,
rock crab,カニ,
fiddler crab,シオマネキ,
king crab,タラバガニ,
American lobster,アメリカンロブスター,
spiny lobster,イセエビ,
crayfish,ザリガニ,
hermit crab,ヤドカリ,
isopod,等脚類,
white stork,シュバシコウ,
black stork,ナベコウ,
spoonbill,ヘラサギ,
flamingo,フラミンゴ,
little blue heron,ヒメアカクロサギ,
American egret,アメリカの白鷺,
bittern,にがり,
crane,クレーン,
limpkin,ツルモドキ,
European gallinule,ヨーロッパのガリニュール,
American coot,アメリカオオバン,
bustard,ノガン,
ruddy turnstone,キョウジョシギ,
red-backed sandpiper,赤い背中のシギ,
redshank,アカアシシギ,
dowitcher,オオハシシギ,
oystercatcher,ミヤコドリ,
pelican,ペリカン,
king penguin,キングペンギン,
albatross,アルバトロス,
grey whale,コククジラ,
killer whale,シャチ,
dugong,ジュゴン,
sea lion,アシカ,
Chihuahua,チワワ,
Japanese spaniel,,
Maltese dog,マルチーズ犬,
Pekinese,,
Shih-Tzu,シー・ズー,
Blenheim spaniel,ブレナムスパニエル,
papillon,パピヨン,
toy terrier,トイテリア,
Rhodesian ridgeback,ローデシアンリッジバック,
Afghan hound,アフガンハウンド,
basset,バセット,
beagle,ビーグル,
bloodhound,ブラッドハウンド,
bluetick,ブルーティック,
black-and-tan coonhound,黒と黄褐色のクーンハウンド,
Walker hound,ウォーカーハウンド,
English foxhound,イングリッシュフォックスハウンド,
redbone,レッドボーン,
borzoi,ボルゾイ,
Irish wolfhound,アイリッシュウルフハウンド,
Italian greyhound,イタリアン・グレイハウンド,
whippet,ウィペット,
Ibizan hound,イビザンハウンド,
Norwegian elkhound,ノルウェジアンエルクハウンド,
otterhound,オッターハウンド,
Saluki,サルーキ,
Scottish deerhound,スコティッシュ・ディアハウンド,
Weimaraner,ワイマラナー,
Staffordshire bullterrier,スタッフォードシャーブルテリア,
American Staffordshire terrier,アメリカンスタッフォードシャーテリア,
Bedlington terrier,ベドリントンテリア,
Border terrier,ボーダーテリア,
Kerry blue terrier,ケリーブルーテリア,
Irish terrier,アイリッシュテリア,
Norfolk terrier,ノーフォークテリア,
Norwich terrier,ノーリッチテリア,
Yorkshire terrier,ヨークシャーテリア,
wire-haired fox terrier,ワイアー・フォックス・テリア,
Lakeland terrier,レークランドテリア,
Sealyham terrier,シーリハムテリア,
Airedale,エアデール,
cairn,ケルン,
Australian terrier,オーストラリアンテリア,
Dandie Dinmont,ダンディ・ディンモント,
Boston bull,ボストンブル,
miniature schnauzer,ミニチュアシュナウザー,
giant schnauzer,ジャイアントシュナウザー,
standard schnauzer,スタンダードシュナウザー,
Scotch terrier,スコッチテリア,
Tibetan terrier,チベタンテリア,
silky terrier,シルキーテリア,
soft-coated wheaten terrier,ソフトコーテッドウィーテンテリア,
West Highland white terrier,ウエストハイランドホワイトテリア,
Lhasa,ラサ,
flat-coated retriever,フラットコーテッドレトリーバー,
curly-coated retriever,カーリーコーテッドレトリーバー,
golden retriever,ゴールデンレトリバー,
Labrador retriever,ラブラドール・レトリバー,
Chesapeake Bay retriever,チェサピークベイレトリーバー,
German short-haired pointer,ジャーマンショートヘアードポインター,
vizsla,ビズラ,
English setter,イングリッシュセッター,
Irish setter,アイリッシュセッター,
Gordon setter,ゴードンセッター,
Brittany spaniel,ブリタニースパニエル,
clumber,クランバー,
English springer,イングリッシュスプリンガー,
Welsh springer spaniel,ウェルシュスプリンガースパニエル,
cocker spaniel,コッカースパニエル,
Sussex spaniel,サセックススパニエル,
Irish water spaniel,アイリッシュウォータースパニエル,
kuvasz,kuvasz,
schipperke,スキッパーキ,
groenendael,groenendael,
malinois,マリノア,
briard,ブリアード,
kelpie,ケルピー,
komondor,コモンドール,
Old English sheepdog,オールドイングリッシュシープドッグ,
Shetland sheepdog,シェットランドシープドッグ,
collie,コリー,
Border collie,ボーダーコリー,
Bouvier des Flandres,ブービエデフランドル,
Rottweiler,ロットワイラー,
German shepherd,ジャーマンシェパード,
Doberman,ドーベルマン,
miniature pinscher,ミニチュアピンシャー,
Greater Swiss Mountain dog,グレータースイスマウンテンドッグ,
Bernese mountain dog,バーニーズ・マウンテン・ドッグ,
Appenzeller,アッペンツェラー,
EntleBucher,EntleBucher,
boxer,ボクサー,
bull mastiff,ブルマスティフ,
Tibetan mastiff,チベタン・マスティフ,
French bulldog,フレンチ・ブルドッグ,
Great Dane,グレートデーン,
Saint Bernard,セントバーナード,
Eskimo dog,エスキモー犬,
malamute,マラミュート,
Siberian husky,シベリアンハスキー,
dalmatian,ダルメシアン,
affenpinscher,アーフェンピンシャー,
basenji,バセンジー,
pug,パグ,
Leonberg,レオンベルク,
Newfoundland,ニューファンドランド,
Great Pyrenees,グレートピレネー山脈,
Samoyed,サモエド,
Pomeranian,ポメラニアン,
chow,食事,
keeshond,キースホンド,
Brabancon griffon,ブラバンコングリフォン,
Pembroke,ペンブローク,
Cardigan,カーディガン,
toy poodle,トイプードル,
miniature poodle,ミニチュアプードル,
standard poodle,スタンダードプードル,
Mexican hairless,メキシコの無毛,
timber wolf,材木オオカミ,
white wolf,白いオオカミ,
red wolf,レッドウルフ,
coyote,コヨーテ,
dingo,ディンゴ,
dhole,ドール,
African hunting dog,リカオン,
hyena,ハイエナ,
red fox,赤狐,
kit fox,キットギツネ,
Arctic fox,ホッキョクギツネ,
grey fox,ハイイロギツネ,
tabby,タビー,
tiger cat,トラ猫,
Persian cat,ペルシャ猫,
Siamese cat,シャム猫,
Egyptian cat,エジプトの猫,
cougar,クーガー,
lynx,リンクス,
leopard,ヒョウ,
snow leopard,ユキヒョウ,
jaguar,ジャガー,
lion,ライオン,
tiger,,
cheetah,チーター,
brown bear,ヒグマ,
American black bear,アメリカクロクマ,
ice bear,氷のクマ,
sloth bear,ナマケグマ,
mongoose,マングース,
meerkat,ミーアキャット,
tiger beetle,ハンミョウ,
ladybug,てんとう虫,
ground beetle,オサムシ,
long-horned beetle,カミキリムシ,
leaf beetle,ハムシ,
dung beetle,フンコロガシ,
rhinoceros beetle,カブトムシ,
weevil,ゾウムシ,
fly,飛ぶ,
bee,,
ant,,
grasshopper,バッタ,
cricket,クリケット,
walking stick,,
cockroach,ゴキブリ,
mantis,カマキリ,
cicada,,
leafhopper,ヨコバイ,
lacewing,アミメカゲロウ,
dragonfly,トンボ,
damselfly,イトトンボ,
admiral,提督,
ringlet,リングレット,
monarch,君主,
cabbage butterfly,モンシロチョウ,
sulphur butterfly,硫黄蝶,
lycaenid,シジミチョウ,
starfish,ヒトデ,
sea urchin,うに,
sea cucumber,ナマコ,
wood rabbit,ウッドラビット,
hare,野ウサギ,
Angora,アンゴラ,
hamster,ハムスター,
porcupine,ヤマアラシ,
fox squirrel,キツネリス,
marmot,マーモット,
beaver,ビーバー,
guinea pig,モルモット,
sorrel,栗色,
zebra,シマウマ,
hog,,
wild boar,イノシシ,
warthog,ケープイボイノシ,
hippopotamus,カバ,
ox,,
water buffalo,水牛,
bison,バイソン,
ram,RAM,
bighorn,ビッグホーン,
ibex,アイベックス,
hartebeest,ハーテビースト,
impala,インパラ,
gazelle,ガゼル,
Arabian camel,アラビアのラクダ,
llama,ラマ,
weasel,イタチ,
mink,ミンク,
polecat,ケナガイタチ,
black-footed ferret,クロアシイタチ,
otter,カワウソ,
skunk,スカンク,
badger,,
armadillo,アルマジロ,
three-toed sloth,ミユビナマケモノ,
orangutan,オランウータン,
gorilla,ゴリラ,
chimpanzee,チンパンジー,
gibbon,テナガザル,
siamang,フクロテナガザル,
guenon,グエノン,
patas,パタス,
baboon,ヒヒ,
macaque,マカク,
langur,ラングール,
colobus,コロブス,
proboscis monkey,テングザル,
marmoset,マーモセット,
capuchin,オマキザル,
howler monkey,ホエザル,
titi,ティティ,
spider monkey,クモザル,
squirrel monkey,リスザル,
Madagascar cat,マダガスカル猫,
indri,インドリ,
Indian elephant,インドゾウ,
African elephant,アフリカゾウ,
lesser panda,レッサーパンダ,
giant panda,ジャイアントパンダ,
barracouta,バラクータ,
eel,ウナギ,
coho,ギンザケ,
rock beauty,ロックビューティー,
anemone fish,クマノミ,
sturgeon,チョウザメ,
gar,ガー,
lionfish,ミノカサゴ,
puffer,フグ,
abacus,そろばん,
abaya,アバヤ,
academic gown,アカデミックドレス,
accordion,アコーディオン,
acoustic guitar,アコースティックギター,
aircraft carrier,空母,
airliner,旅客機,
airship,飛行船,
altar,祭壇,
ambulance,救急車,
amphibian,両生類,
analog clock,アナログ時計,
apiary,養蜂場,
apron,エプロン,
ashcan,アシュカン,
assault rifle,アサルトライフル,
backpack,バックパック,
bakery,ベーカリー,
balance beam,平均台,
balloon,バルーン,
ballpoint,ボールペン,
Band Aid,バンドエイド,
banjo,バンジョー,
bannister,バニスター,
barbell,バーベル,
barber chair,床屋の椅子,
barbershop,理髪店,
barn,納屋,
barometer,バロメーター,
barrel,たる,
barrow,手押し車,
baseball,野球,
basketball,バスケットボール,
bassinet,バシネット,
bassoon,ファゴット,
bathing cap,水泳帽,
bath towel,バスタオル,
bathtub,バスタブ,
beach wagon,ビーチワゴン,
beacon,ビーコン,
beaker,ビーカー,
bearskin,ベアスキン,
beer bottle,ビール瓶,
beer glass,ビアグラス,
bell cote,ベルコート,
bib,よだれかけ,
bicycle-built-for-two,二人用自転車,
bikini,ビキニ,
binder,バインダー,
binoculars,双眼鏡,
birdhouse,巣箱,
boathouse,ボートハウス,
bobsled,ボブスレー,
bolo tie,ボロネクタイ,
bonnet,ボンネット,
bookcase,本棚,
bookshop,書店,
bottlecap,瓶のキャップ,
bow,,
bow tie,ちょうネクタイ,
brass,真鍮,
brassiere,ブラジャー,
breakwater,防波堤,
breastplate,胸当て,
broom,ほうき,
bucket,バケツ,
buckle,バックル,
bulletproof vest,防弾チョッキ,
bullet train,新幹線,
butcher shop,精肉店,
cab,タクシー,
caldron,大釜,
candle,キャンドル,
cannon,大砲,
canoe,カヌー,
can opener,缶切り,
cardigan,カーディガン,
car mirror,車のミラー,
carousel,カルーセル,
carpenter_s kit,大工のキット,
carton,カートン,
car wheel,車のホイール,
cash machine,現金自動預け払い機,
cassette,カセット,
cassette player,カセット・プレーヤー,
castle,,
catamaran,カタマラン,
CD player,CDプレーヤー,
cello,チェロ,
cellular telephone,携帯電話,
chain,,
chainlink fence,金網柵,
chain mail,チェーンメール,
chain saw,チェーンソー,
chest,,
chiffonier,シフォニエ,
chime,チャイム,
china cabinet,陶磁器のキャビネット,
Christmas stocking,クリスマスの靴下,
church,教会,
cinema,シネマ,
cleaver,包丁,
cliff dwelling,崖の住居,
cloak,マント,
clog,下駄,
cocktail shaker,カクテルシェーカー,
coffee mug,コーヒーマグカップ,
coffeepot,コーヒーポット,
coil,コイル,
combination lock,ダイヤル錠,
computer keyboard,キーボード,
confectionery,お菓子,
container ship,コンテナ船,
convertible,コンバーチブル,
corkscrew,コルク栓抜き,
cornet,コルネット,
cowboy boot,カウボーイブーツ,
cowboy hat,カウボーイハット,
cradle,ゆりかご,
crane,クレーン,
crash helmet,クラッシュヘルメット,
crate,クレート,
crib,ベビーベッド,
Crock Pot,壷鍋,
croquet ball,クロケットボール,
crutch,松葉杖,
cuirass,キュイラス,
dam,ダム,
desk,,
desktop computer,デスクトップコンピューター,
dial telephone,電話をかける,
diaper,おむつ,
digital clock,デジタル時計,
digital watch,デジタル腕時計,
dining table,ダイニングテーブル,
dishrag,ディッシュラグ,
dishwasher,食器洗い機,
disk brake,ディスクブレーキ,
dock,ドック,
dogsled,犬ぞり,
dome,ドーム,
doormat,玄関マット,
drilling platform,掘削プラットフォーム,
drum,ドラム,
drumstick,ドラムスティック,
dumbbell,ダンベル,
Dutch oven,ダッチオーブン,
electric fan,扇風機,
electric guitar,エレキギター,
electric locomotive,電気機関車,
entertainment center,エンターテインメントセンター,
envelope,封筒,
espresso maker,エスプレッソメーカー,
face powder,フェースパウダー,
feather boa,羽毛製の襟巻,
file,ファイル,
fireboat,消防艇,
fire engine,消防車,
fire screen,ファイアスクリーン,
flagpole,旗竿,
flute,フルート,
folding chair,折りたたみ椅子,
football helmet,フットボール用ヘルメット,
forklift,フォークリフト,
fountain,噴水,
fountain pen,万年筆,
four-poster,四柱式,
freight car,貨車,
French horn,フレンチホルン,
frying pan,フライパン,
fur coat,毛皮のコート,
garbage truck,ごみ収集車,
gasmask,ガスマスク,
gas pump,ガスポンプ,
goblet,ゴブレット,
go-kart,ゴーカート,
golf ball,ゴルフボール,
golfcart,ゴルフカート,
gondola,ゴンドラ,
gong,ゴング,
gown,ガウン,
grand piano,グランドピアノ,
greenhouse,温室,
grille,グリル,
grocery store,食料品店,
guillotine,ギロチン,
hair slide,ヘアスライド,
hair spray,ヘアスプレー,
half track,ハーフトラック,
hammer,ハンマー,
hamper,妨げる,
hand blower,ハンドブロワー,
hand-held computer,携帯情報端末,
handkerchief,ハンカチ,
hard disc,ハードディスク,
harmonica,ハーモニカ,
harp,ハープ,
harvester,ハーベスター,
hatchet,ハチェット,
holster,ホルスター,
home theater,ホームシアター,
honeycomb,ハニカム,
hook,,
hoopskirt,フープスカート,
horizontal bar,水平バー,
horse cart,馬車,
hourglass,砂時計,
iPod,iPod,
iron,,
jack-o_-lantern,ジャック・オー・ランタン,
jean,ジーンズ,
jeep,ジープ,
jersey,ジャージー,
jigsaw puzzle,ジグソーパズル,
jinrikisha,人力車,
joystick,ジョイスティック,
kimono,着物,
knee pad,膝パッド,
knot,結び目,
lab coat,白衣,
ladle,取鍋,
lampshade,ランプシェード,
laptop,ラップトップ,
lawn mower,芝刈り機,
lens cap,レンズキャップ,
letter opener,レターオープナー,
library,図書館,
lifeboat,救命ボート,
lighter,ライター,
limousine,リムジン,
liner,ライナー,
lipstick,口紅,
Loafer,ローファー,
lotion,ローション,
loudspeaker,スピーカー,
loupe,ルーペ,
lumbermill,製材所,
magnetic compass,方位磁針,
mailbag,郵袋,
mailbox,メールボックス,
maillot,マイヨ,
maillot,マイヨ,
manhole cover,マンホールの蓋,
maraca,マラカス,
marimba,マリンバ,
mask,マスク,
matchstick,マッチ棒,
maypole,メイポール,
maze,迷路,
measuring cup,計量カップ,
medicine chest,薬箱,
megalith,巨石,
microphone,マイクロフォン,
microwave,電子レンジ,
military uniform,軍服,
milk can,ミルク缶,
minibus,ミニバス,
miniskirt,ミニスカート,
minivan,ミニバン,
missile,ミサイル,
mitten,ミトン,
mixing bowl,ミキシングボウル,
mobile home,移動住宅,
Model T,モデルT,
modem,モデム,
monastery,修道院,
monitor,モニター,
moped,原付,
mortar,モルタル,
mortarboard,モルタルボード,
mosque,モスク,
mosquito net,蚊帳,
motor scooter,スクーター,
mountain bike,マウンテンバイク,
mountain tent,マウンテンテント,
mouse,マウス,
mousetrap,ネズミ捕り,
moving van,移動バン,
muzzle,銃口,
nail,ネイル,
neck brace,ネックブレース,
necklace,ネックレス,
nipple,乳首,
notebook,ノート,
obelisk,オベリスク,
oboe,オーボエ,
ocarina,オカリナ,
odometer,オドメーター,
oil filter,オイルフィルター,
organ,器官,
oscilloscope,オシロスコープ,
overskirt,オーバースカート,
oxcart,牛車,
oxygen mask,酸素マスク,
packet,パケット,
paddle,パドル,
paddlewheel,パドルホイール,
padlock,南京錠,
paintbrush,絵筆,
pajama,パジャマ,
palace,,
panpipe,パンパイプ,
paper towel,ペーパータオル,
parachute,パラシュート,
parallel bars,平行棒,
park bench,公園のベンチ,
parking meter,パーキングメーター,
passenger car,乗用車,
patio,パティオ,
pay-phone,有料電話,
pedestal,台座,
pencil box,筆箱,
pencil sharpener,鉛筆削り,
perfume,香水,
Petri dish,ペトリ皿,
photocopier,コピー機,
pick,選ぶ,
pickelhaube,ピッケルハウベ,
picket fence,杭柵,
pickup,選び出す,
pier,橋脚,
piggy bank,貯金箱,
pill bottle,錠剤瓶,
pillow,まくら,
ping-pong ball,ピンポンボール,
pinwheel,風車,
pirate,海賊,
pitcher,ピッチャー,
plane,飛行機,
planetarium,プラネタリウム,
plastic bag,ビニール袋,
plate rack,プレートラック,
plow,すき,
plunger,プランジャー,
Polaroid camera,ポラロイドカメラ,
pole,ポール,
police van,警察のバン,
poncho,ポンチョ,
pool table,ビリヤード台,
pop bottle,ポップボトル,
pot,ポット,
potter_s wheel,ろくろ,
power drill,電動ドリル,
prayer rug,祈りの敷物,
printer,プリンター,
prison,刑務所,
projectile,発射物,
projector,プロジェクター,
puck,パック,
punching bag,サンドバッグ,
purse,財布,
quill,羽ペン,
quilt,キルト,
racer,レーサー,
racket,ラケット,
radiator,ラジエーター,
radio,無線,
radio telescope,電波望遠鏡,
rain barrel,レインバレル,
recreational vehicle,RV車,
reel,リール,
reflex camera,リフレックスカメラ,
refrigerator,冷蔵庫,
remote control,リモコン,
restaurant,レストラン,
revolver,リボルバー,
rifle,ライフル,
rocking chair,ロッキングチェア,
rotisserie,ロティサリー,
rubber eraser,ゴム消しゴム,
rugby ball,ラグビーボール,
rule,ルール,
running shoe,ランニングシューズ,
safe,安全な,
safety pin,安全ピン,
saltshaker,ソルトシェーカー,
sandal,サンダル,
sarong,サロン,
sax,サックス,
scabbard,,
scale,規模,
school bus,スクールバス,
schooner,スクーナー,
scoreboard,スコアボード,
screen,画面,
screw,スクリュー,
screwdriver,ドライバー,
seat belt,シートベルト,
sewing machine,ミシン,
shield,シールド,
shoe shop,靴屋,
shoji,障子,
shopping basket,買い物カゴ,
shopping cart,ショッピングカート,
shovel,シャベル,
shower cap,シャワーキャップ,
shower curtain,シャワーカーテン,
ski,スキー,
ski mask,目出し帽,
sleeping bag,寝袋,
slide rule,計算尺,
sliding door,引き戸,
slot,スロット,
snorkel,スノーケル,
snowmobile,スノーモービル,
snowplow,除雪機,
soap dispenser,石鹸ディスペンサー,
soccer ball,サッカーボール,
sock,靴下,
solar dish,ソーラーディッシュ,
sombrero,ソンブレロ,
soup bowl,スープボウル,
space bar,スペースキー,
space heater,スペースヒーター,
space shuttle,スペースシャトル,
spatula,へら,
speedboat,スピードボート,
spider web,蜘蛛の巣,
spindle,スピンドル,
sports car,スポーツカー,
spotlight,スポットライト,
stage,ステージ,
steam locomotive,蒸気機関車,
steel arch bridge,鋼のアーチ橋,
steel drum,スチールドラム,
stethoscope,聴診器,
stole,ストール,
stone wall,石垣,
stopwatch,ストップウォッチ,
stove,ストーブ,
strainer,ストレーナー,
streetcar,路面電車,
stretcher,ストレッチャー,
studio couch,スタジオソファ,
stupa,仏舎利塔,
submarine,潜水艦,
suit,スーツ,
sundial,日時計,
sunglass,サングラス,
sunglasses,サングラス,
sunscreen,日焼け止め,
suspension bridge,吊橋,
swab,綿棒,
sweatshirt,トレーナー,
swimming trunks,海パン,
swing,スイング,
switch,スイッチ,
syringe,注射器,
table lamp,電気スタンド,
tank,タンク,
tape player,テーププレーヤー,
teapot,ティーポット,
teddy,テディ,
television,テレビ,
tennis ball,テニスボール,
thatch,わらぶき,
theater curtain,劇場のカーテン,
thimble,指ぬき,
thresher,脱穀機,
throne,王位,
tile roof,瓦屋根,
toaster,トースター,
tobacco shop,たばこ屋,
toilet seat,便座,
torch,松明,
totem pole,トーテムポール,
tow truck,レッカー車,
toyshop,玩具屋,
tractor,トラクター,
trailer truck,トレーラートラック,
tray,トレイ,
trench coat,トレンチコート,
tricycle,三輪車,
trimaran,トリマラン,
tripod,三脚,
triumphal arch,凱旋門,
trolleybus,トロリーバス,
trombone,トロンボーン,
tub,浴槽,
turnstile,ターンスタイル,
typewriter keyboard,タイプライターキーボード,
umbrella,,
unicycle,一輪車,
upright,直立,
vacuum,真空,
vase,花瓶,
vault,ボールト,
velvet,ベルベット,
vending machine,自動販売機,
vestment,祭服,
viaduct,高架橋,
violin,バイオリン,
volleyball,バレーボール,
waffle iron,ワッフル焼き型,
wall clock,壁時計,
wallet,財布,
wardrobe,ワードローブ,
warplane,ウォープレーン,
washbasin,洗面台,
washer,ワッシャー,
water bottle,ウォーターボトル,
water jug,水差し,
water tower,給水塔,
whiskey jug,ウイスキーの水差し,
whistle,ホイッスル,
wig,かつら,
window screen,ウインドウスクリーン,
window shade,ブラインド,
Windsor tie,ウィンザーネクタイ,
wine bottle,ワインボトル,
wing,,
wok,中華鍋,
wooden spoon,木製スプーン,
wool,ウール,
worm fence,ワームフェンス,
wreck,難破船,
yawl,ヨール,
yurt,パオ,
web site,Webサイト,
comic book,コミックブック,
crossword puzzle,クロスワードパズル,
street sign,道路標識,
traffic light,信号機,
book jacket,ブックカバー,
menu,メニュー,
plate,,
guacamole,グアカモーレ,
consomme,コンソメ,
hot pot,,
trifle,ささいなこと,
ice cream,アイスクリーム,
ice lolly,アイスキャンデー,
French loaf,フレンチローフ,
bagel,ベーグル,
pretzel,プレッツェル,
cheeseburger,チーズバーガー,
hotdog,ホットドッグ,
mashed potato,マッシュポテト,
head cabbage,頭キャベツ,
broccoli,ブロッコリ,
cauliflower,カリフラワー,
zucchini,ズッキーニ,
spaghetti squash,スパゲッティスカッシュ,
acorn squash,どんぐりかぼちゃ,
butternut squash,バターナッツスカッシュ,
cucumber,キュウリ,
artichoke,アーティチョーク,
bell pepper,ピーマン,
cardoon,カルドン,
mushroom,キノコ,
Granny Smith,リンゴ,
strawberry,いちご,
orange,オレンジ,
lemon,レモン,
fig,,
pineapple,パイナップル,
banana,バナナ,
jackfruit,ジャックフルーツ,
custard apple,カスタードアップル,
pomegranate,ザクロ,
hay,干し草,
carbonara,カルボナーラ,
chocolate sauce,チョコレートソース,
dough,生地,
meat loaf,ミートローフ,
pizza,ピザ,
potpie,ポットパイ,
burrito,ブリトー,
red wine,赤ワイン,
espresso,エスプレッソ,
cup,カップ,
eggnog,エッグノッグ,
alp,alp,
bubble,バブル,
cliff,,
coral reef,サンゴ礁,
geyser,間欠泉,
lakeside,湖畔,
promontory,,
sandbar,砂州,
seashore,海岸,
valley,,
volcano,火山,
ballplayer,ボールプレーヤー,
groom,新郎,
scuba diver,スキューバダイバー,
rapeseed,菜種,
daisy,デイジー,
yellow lady_s slipper,黄色い女性のスリッパ,
corn,コーン,
acorn,どんぐり,
hip,ヒップ,
buckeye,バックアイ,
coral fungus,サンゴ菌,
agaric,寒天,
gyromitra,シャグマアミガ,
stinkhorn,スッポンタケ,
earthstar,ヒメツチグリ,
hen-of-the-woods,マイタケ,
bolete,bolete,
ear,,
toilet tissue,トイレットペーパー,
GitHubで編集を提案

Discussion

ログインするとコメントできます