【发布时间】:2019-05-05 05:14:47
【问题描述】:
我有一组几千张图片(我从 40 张图片开始进行测试),我想构建一个分类器来判断图片中的对象。就像,这是我的狗的照片,我邻居狗的照片还是我兄弟狗的照片。我知道如何比较两张图片及其关键点,但我不确定是否使用在 ML 模型中提取的特征。
所以我开始使用 OpenCV 并使用 ORB 来检测 150 个关键点。据我了解,描述符具有来自每个关键点的信息,并且是我将用作特征的内容。所以现在我对每张图片都有 150 个特征,每个特征数组有 32 个。(150,32)。我想把它放到一个 RandomForestClassifer 中,但是当我这样做时,我得到了错误 >>>>
ValueError: 使用序列设置数组元素。
这里是一些代码:
dogs 是数据框
# Init ORB
orb = cv2.ORB_create(nfeatures=150)
# Extract descriptors and put them in df
with tqdm(total=len(list(dogs.iterrows()))) as pbar:
for index, row in dogs.iterrows():
pbar.update(1)
im = dogs.at[index, 'filtered']
kp1, des1 = orb.detectAndCompute(im,None)
dogs.at[index, 'kp'] = kp1
dogs.at[index, 'des'] = des1
os.system('spd-say "Processing complete"')
X = dogs['des']
y = dogs['Id']
features = pd.DataFrame.from_records(X)
features['Id'] = dogs['Id']
X = features.drop('Id',1)
y = features['Id']
查看第一张图片的第一个特征
X[1][1]
array([ 0, 201, 130, 153, 84, 131, 172, 71, 22, 1, 90, 2, 168, 202、32、64、121、42、34、144、82、186、65、215、52、38、 154, 64, 149, 10, 176, 136], dtype=uint8)
clf = RandomForestClassifier(n_jobs=-1)
clf.fit(X,y)
我从未将数组用作 ML 模型中的特征,因此它可能只是一个简单的错误。如果我因为一些误解而完全错了,请告诉我。
【问题讨论】:
标签: python opencv machine-learning data-science