2017-05-29 16 views
-2

私はPythonのファイルを実行しようとしているが、私はこのエラーを取得していません:はAttributeError:「NoneType」オブジェクトが属性「下」

File "/home/hadi/Software/tensorflow/TEST_FRCN_ROOT/tools/../lib/datasets/pascal_voc.py", line 212, in _load_pascal_annotation 
    cls = self._class_to_ind[obj.find('name').text.lower().strip()] 
AttributeError: 'NoneType' object has no attribute 'lower' 

これはエラーになりますコードの一部です:

%% Load object bounding boxes into a data frame. 
     for ix, obj in enumerate(objs): 
      bbox = obj.find('bndbox') 
      # Make pixel indexes 0-based 
      x1 = float(bbox.find('xmin').text) - 1 
      y1 = float(bbox.find('ymin').text) - 1 
      x2 = float(bbox.find('xmax').text) - 1 
      y2 = float(bbox.find('ymax').text) - 1 
      cls = self._class_to_ind[obj.find('name').text.lower().strip()] 
      boxes[ix, :] = [x1, y1, x2, y2] 
      gt_classes[ix] = cls 
      overlaps[ix, cls] = 1.0 
      seg_areas[ix] = (x2 - x1 + 1) * (y2 - y1 + 1) 

は、私がここになしオブジェクトに対処するための条件を追加することはできますか?

+1

のように使用することができますか?確かに条件を追加できますが、条件が一致しない場合はどうなりますか? –

+0

名前属性が見つからないオブジェクトがあるかどうかをすべてのファイルで確認する必要がありますか? 1200ファイルがあります。他の方法はありますか? –

+0

それは私が言ったことではない、あなたは私の質問に答えていない。 –

答えて

1

はい、あなたは `obj.find(「名前」)`には内容がないのであれば、何が、代わりに起こるべきこの

for ix, obj in enumerate(objs): 
      bbox = obj.find('bndbox') 
      # Make pixel indexes 0-based 
      x1 = float(bbox.find('xmin').text) - 1 
      y1 = float(bbox.find('ymin').text) - 1 
      x2 = float(bbox.find('xmax').text) - 1 
      y2 = float(bbox.find('ymax').text) - 1 
      if obj.find('name').text != None: 
       cls = self._class_to_ind[obj.find('name').text.lower().strip()] 
       boxes[ix, :] = [x1, y1, x2, y2] 
       gt_classes[ix] = cls 
       overlaps[ix, cls] = 1.0 
       seg_areas[ix] = (x2 - x1 + 1) * (y2 - y1 + 1) 
+0

'if cls is None:'を使うと、slowオプションを使う必要はありません。 –

+0

そして '.text'属性は'なし 'であり、' find() 'の戻り値ではなく、トレースバックに従っています。 –

+0

'.text'が' None'で、コードを更新しました –

関連する問題