質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

受付中

物体検知SSDでの IndexErrorの対応

yokosawa123
yokosawa123

総合スコア1

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

1回答

0評価

0クリップ

248閲覧

投稿2022/01/19 05:01

編集2022/01/21 12:44

前提・実現したいこと

私は、大学の卒業研究で物体検知(SSD)を用いてリンゴの周りにある葉を検知するプログラムを作成しています。
エラー分に該当する部分は、コードの一番下の方にあります。

発生している問題・エラーメッセージ

Traceback (most recent call last): File "葉検出プログラム.py", line 110, in <module> y_A = int(img_name_split3[1]) IndexError: list index out of range

該当のソースコード

python

import glob import numpy as np from PIL import Image from keras.preprocessing import image from ssd import SSD300 from ssd_training import MultiboxLoss from ssd_utils import BBoxUtility from scipy.misc import imread from keras.applications.imagenet_utils import preprocess_input import keras from ssd_utils import BBoxUtility import matplotlib.pyplot as plt import cv2 import pickle import os #path_prefix = './VOCdevkit/VOC2007/JPEGImages/' #img_get = glob.glob('C:\\Users\\vive\\Desktop\\18ms611\\exp1\\exp15/Image/*.jpg') img_num = 'IMG_1070' alpha = 1.3 size_of_img = 3024*4032 csvfile = open('C:\\Users\\ユーザー名\\Desktop\\引継ぎ用\\葉検出システム\\葉検出に使うデータ\\葉検出結果\\'+img_num+'.csv','w') input_shape = (300, 300, 3) # 入力のサイズ NUM_CLASSES = 2 # 1クラス + その他 = 2クラス priors = pickle.load(open('C:\\Users\\ユーザー名\\Desktop\\引継ぎ用\\葉検出システム\\葉検出に使うデータ/prior_boxes_ssd300.pkl', 'rb')) # 入力画像のサイズを指定 bbox_util = BBoxUtility(NUM_CLASSES,priors) model = SSD300(input_shape, num_classes=NUM_CLASSES) menseki_list = [] beta_list = [] model.load_weights('C:\\Users\\ユーザー名\\Desktop\\引継ぎ用\\葉検出システム\\葉検出に使うデータ//weights_SSD300.hdf5', by_name=True) for beta in np.arange(0.01,1.06,0.05): All_img = Image.open('C:\\Users\\ユーザー名\\Desktop\\引継ぎ用\\検出結果\\Figure_1.jpg') #All_img = All_img.rotate(-90,expand=True) All_img = np.array(All_img) All_img2 = Image.open('C:\\Users\\ユーザー名\\Desktop\\引継ぎ用\\検出結果\\Figure_1.jpg') #All_img2 = All_img2.rotate(-90,expand=True) All_img2 = np.array(All_img2) All_img3 = Image.open('C:\\Users\\ユーザー名\\Desktop\\引継ぎ用\\検出結果\\Figure_1.jpg') #All_img3 = All_img3.rotate(-90,expand=True) All_img3 = np.array(All_img3) img_get = glob.glob('C:\\Users\\ユーザー名\\Desktop\\引継ぎ用\\検出結果\\Figure_1.jpg') #for x in range(0,7,1): #if os.path.exists('C:\\Users\\user\\Desktop\\18ms611\\result20200517\\'+img_num+'_a'+str(alpha)+'_b'+str(beta))==0: #os.makedirs('C:\\Users\\user\\Desktop\\18ms611\\result20200517\\'+img_num+'_a'+str(alpha)+'_b'+str(beta)) apple_one_array = np.zeros((All_img.shape[0],All_img.shape[1])) leef_point = [] j=0 for jjj in range(len(img_get)): inputs = [] images = [] img_path=img_get[jjj] img = image.load_img(img_path, target_size=(300, 300)) img = image.img_to_array(img) img2 = image.load_img(img_path) img2 = image.img_to_array(img2) #img2=all_img.rotate(-90,expand=True) images.append(imread(img_path)) inputs.append(img.copy()) inputs = preprocess_input(np.array(inputs)) preds = model.predict(inputs, batch_size=1, verbose=1) results = bbox_util.detection_out(preds) for i, img in enumerate(images): # Parse the outputs. det_label = results[i][:, 0] det_conf = results[i][:, 1] det_xmin = results[i][:, 2] det_ymin = results[i][:, 3] det_xmax = results[i][:, 4] det_ymax = results[i][:, 5] # Get detections with confidence higher than 0.6. top_indices = [i for i, conf in enumerate(det_conf) if conf >= 0.6] top_conf = det_conf[top_indices] top_label_indices = det_label[top_indices].tolist() top_xmin = det_xmin[top_indices] top_ymin = det_ymin[top_indices] top_xmax = det_xmax[top_indices] top_ymax = det_ymax[top_indices] colors = plt.cm.hsv(np.linspace(0, 1, NUM_CLASSES)).tolist() #plt.imshow(img / 255.) currentAxis = plt.gca() img_name_split1=img_get[jjj].split('x') img_name_split2=img_name_split1[-1].split('.jpg') img_name_split3=img_name_split2[0].split('y') y_A = int(img_name_split3[1])   ****ここがエラーの該当する部分です。**** x_A = int(img_name_split3[0]) apple_one_array[y_A:y_A+img.shape[0],x_A:x_A+img.shape[1]] = apple_one_array[y_A:y_A+img.shape[0],x_A:x_A+img.shape[1]] + 1

試したこと

[]の中の数字を変えてみましたが、うまくいきませんでした。

補足情報(FW/ツールのバージョンなど)

何の範囲がおかしくてこのようなエラーが出ているかもわかりません。
知識のある方ご教授よろしくお願いします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。