前提・実現したいこと
学生の研究でSSDを用いた物体検知を行っています。
そこで自作のxmlファイルをpklファイルにまとめる作業でエラーが出てしまいます。
知識のある方ご教授よろしくお願いします。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "pklファイル作成プログラム.py", line 56, in <module> data = XML_preprocessor('C:\Users\ユーザー名\Desktop\引継ぎ用\リンゴ検出システム\リンゴ検出に使うデータ\お試しアノテーション').data File "pklファイル作成プログラム.py", line 11, in __init__ self._preprocess_XML() File "pklファイル作成プログラム.py", line 16, in _preprocess_XML tree = ElementTree.parse(self.path_prefix + filename) File "C:\Users\ユーザー名\anaconda3\envs\new_keras\lib\xml\etree\ElementTree.py", line 1195, in parse tree.parse(source, parser) File "C:\Users\ユーザー名\anaconda3\envs\new_keras\lib\xml\etree\ElementTree.py", line 585, in parse source = open(source, "rb") FileNotFoundError: [Errno 2] No such file or directory: 'C:\Users\ユーザー名\Desktop\引継ぎ用\リンゴ検出システム\リンゴ検出に使うデータ\お試しアノテーションLINE_ALBUM_%25E3%2582%258A%25E3%2582%2593%25E3%2581%2594_211011_53.xml' ### 該当のソースコード
以下、実行したプログラムです
import numpy as np import os from xml.etree import ElementTree class XML_preprocessor(object): def __init__(self, data_path): self.path_prefix = data_path self.num_classes = 1 #検出したいラベルの数 self.data = dict() self._preprocess_XML() def _preprocess_XML(self): filenames = os.listdir(self.path_prefix) for filename in filenames: tree = ElementTree.parse(self.path_prefix + filename) root = tree.getroot() bounding_boxes = [] one_hot_classes = [] size_tree = root.find('size') width = float(size_tree.find('width').text) height = float(size_tree.find('height').text) for object_tree in root.findall('object'): for bounding_box in object_tree.iter('bndbox'): xmin = float(bounding_box.find('xmin').text)/width ymin = float(bounding_box.find('ymin').text)/height xmax = float(bounding_box.find('xmax').text)/width ymax = float(bounding_box.find('ymax').text)/height bounding_box = [xmin,ymin,xmax,ymax] bounding_boxes.append(bounding_box) class_name = object_tree.find('name').text one_hot_class = self._to_one_hot(class_name) one_hot_classes.append(one_hot_class) image_name = root.find('filename').text bounding_boxes = np.asarray(bounding_boxes) one_hot_classes = np.asarray(one_hot_classes) image_data = np.hstack((bounding_boxes, one_hot_classes)) self.data[image_name] = image_data def _to_one_hot(self,name): one_hot_vector = [0] * self.num_classes if name == 'apple': one_hot_vector[0] = 1 else: print('unknown label: %s' %name) return one_hot_vector ## example on how to use it # import pickle # data = XML_preprocessor('VOC2007/Annotations/').data # pickle.dump(data,open('VOC2007.pkl','wb')) import pickle data = XML_preprocessor('C:\Users\ユーザー名\Desktop\引継ぎ用\リンゴ検出システム\リンゴ検出に使うデータ\お試しアノテーション').data pickle.dump(data,open('apple1000.pkl','wb')) #名前を指定してpklファイルとして保存
python
試したこと
パスの手打ち、パスの変更、自作xmlファイルの作り直し
補足情報(FW/ツールのバージョンなど)
xmlファイルのあるディレクトリはあっているはずなのに、ファイルがないというエラーが出てしまいます。完全に手詰まりです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/08 02:23
2021/11/08 06:55
2021/11/09 01:17