実現したいこと
Google colaboratory上でbuild_ssdをインポートしたいです。
くずし字の漢字を検出・認識するプログラムを作っています。
現在Create Pytorch Dataset for Classifying Characters
内にあるDemoModelで学習した後、torch.save(DemoModel().state_dict(),'/content/drive/MyDrive/Colab Notebooks/Kuzushiji_Visualisation/' + 'kanji' + '.pth')
で保存したモデルで物体検出を行おうとしたところ以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
ImportError Traceback (most recent call last) <ipython-input-4-087e76eed295> in <module>() 12 import glob 13 #from ssd import build_ssd ---> 14 from ssd import build_ssd 15 from matplotlib import pyplot as plt 16 ImportError: cannot import name 'build_ssd' from 'ssd' (/usr/local/lib/python3.7/dist-packages/ssd.py)
該当のソースコード
PyTorch 学習済みモデルでサクッと物体検出をしてみる
上記のサイトを参考にさせていただきました。
下記は学習済みモデルkanji.pthを使用して物体検出をするプログラムです。
ipynb
1import os 2import sys 3module_path = os.path.abspath(os.path.join('..')) 4if module_path not in sys.path: 5 sys.path.append(module_path) 6 7import torch 8import torch.nn as nn 9from torch.autograd import Variable 10import numpy as np 11import cv2 12import glob 13from ssd import build_ssd 14from matplotlib import pyplot as plt 15 16# SSDモデルを読み込み 17net = build_ssd('test', 300, 4212) 18net.load_weights('/content/drive/MyDrive/Colab Notebooks/Kuzushiji_Visualisation/kanji.pth') 19 20# 関数 detect 21def detect(image, count): 22 rgb_image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) 23 x = cv2.resize(image, (300, 300)).astype(np.float32) # 300*300にリサイズ 24 x -= (104.0, 117.0, 123.0) 25 x = x.astype(np.float32) 26 x = x[:, :, ::-1].copy() 27 x = torch.from_numpy(x).permute(2, 0, 1) # [300,300,3]→[3,300,300] 28 xx = Variable(x.unsqueeze(0)) # [3,300,300]→[1,3,300,300] 29 # 順伝播を実行し、推論結果を出力 30 y = net(xx) 31 32 from data import VOC_CLASSES as labels 33 plt.figure(figsize=(10,6)) 34 colors = plt.cm.hsv(np.linspace(0, 1, 21)).tolist() 35 plt.imshow(rgb_image) 36 currentAxis = plt.gca() 37 # 推論結果をdetectionsに格納 38 detections = y.data 39 # scale each detection back up to the image 40 scale = torch.Tensor(rgb_image.shape[1::-1]).repeat(2) 41 42 # バウンディングボックスとクラス名を表示 43 for i in range(detections.size(1)): 44 j = 0 45 # 確信度confが0.6以上のボックスを表示 46 # jは確信度上位200件のボックスのインデックス 47 # detections[0,i,j]は[conf,xmin,ymin,xmax,ymax]の形状 48 while detections[0,i,j,0] >= 0.6: 49 score = detections[0,i,j,0] 50 label_name = labels[i-1] 51 display_txt = '%s: %.2f'%(label_name, score) 52 pt = (detections[0,i,j,1:]*scale).cpu().numpy() 53 coords = (pt[0], pt[1]), pt[2]-pt[0]+1, pt[3]-pt[1]+1 54 color = colors[i] 55 currentAxis.add_patch(plt.Rectangle(*coords, fill=False, edgecolor=color, linewidth=2)) 56 currentAxis.text(pt[0], pt[1], display_txt, bbox={'facecolor':color, 'alpha':0.5}) 57 j+=1 58 plt.savefig('/content/drive/MyDrive/Colab Notebooks/Kuzushiji_Visualisation/detect_img/'+'{0:04d}'.format(count)+'.jpg') 59 plt.close() 60 61def main(): 62 files = sorted(glob.glob('/content/drive/MyDrive/Colab Notebooks/Kuzushiji_Visualisation/image_dir/*.jpg')) 63 count = 1 64 for i, file in enumerate (files): 65 image = cv2.imread(file, cv2.IMREAD_COLOR) 66 detect(image, count) 67 print(count) 68 count +=1 69 70if __name__ == '__main__': 71 main()
試したこと
!git clone https://github.com/amdegroot/ssd.pytorch/blob/master/ssd.py
を実行しクローンを試みたのですが、
--------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recent call last) <ipython-input-7-635fed793525> in <module>() 13 from google.colab import drive 14 drive.mount('/content/drive/') ---> 15 from ssd import build_ssd 16 #!git clone https://github.com/amdegroot/ssd.pytorch/blob/master/ssd.py ModuleNotFoundError: No module named 'ssd'
と出てしまいやはりssdというモジュールが見つかりませんでした。
###動作環境
Google Colaboratory
Python 3.7.11
回答1件
あなたの回答
tips
プレビュー