Open 1sa014kawa opened 10 months ago
同様のエラーが出た者です.
from numpy import random
より,random.choice
はnumpy.random.choice
ですので,random.choice
の引数self.sample_options
をNumPy配列に変換したらうまく行きました.
(公式ドキュメントを読みましたが,このあたりの細かい理由については分かりませんでした)
つまり,data-augumentation.py
のclass RandomSampleCrop(object):
def __init__(self):
以下を
# 変更前
self.sample_options = (
# using entire original input image
None,
# sample a patch s.t. MIN jaccard w/ obj in .1,.3,.4,.7,.9
(0.1, None),
(0.3, None),
(0.7, None),
(0.9, None),
# randomly sample a patch
(None, None),
)
# 変更後
self.sample_options = np.array([
# using entire original input image
None,
# sample a patch s.t. MIN jaccard w/ obj in .1,.3,.4,.7,.9
(0.1, None),
(0.3, None),
(0.7, None),
(0.9, None),
# randomly sample a patch
(None, None)
], dtype=object)
とすることで解決しました.
@1sa014kawa 様が原因箇所を特定してくださっていたおかげで解決に至りました.ありがとうございます.
使用バージョン Python 3.8.10 Numpy 1.24.4
2-2-3においてDataTransformの動作確認時に下に示すようなエラーが発生するようになりました。 utilsにあるdata-augumentation.pyにおいてnumpyのrandom.choiceに型の異なる値の入ったタプルを代入しているのが原因のようです。 このあたりはpythonが適切に判断して動作してくれていたのだと思うのですが、仕様が少し変わったのかもしれません(私には詳しいことはわかりませんでした)。 ひとまず、data-augumentation.pyの最初に
from random import choice as random_choice
を書き加え、RandomSampleCrop.__call__(self, image, boxes, labels)
内のmode=random.choice(self.sample_option)
をmode=random_choice(self.sample_option)
と変えることで対処しています。