我正在尝试训练一个分类器来识别我自己的签名。这就是我构建分类器的方式
我是如何收集数据的?
在一张纸上签名 50 次,并从中创建了 50 张图像。
对于负面测试用例,我下载了IAM Handwriting database。其中包含大约 600MB 的手写数据。这是为了否定其他可能的匹配。
我是怎么做特征工程的?
第 1 步:读取和转换灰度图像。执行中值模糊。
img = cv2.imread(image,0)
img = cv2.medianBlur(img,5)
步骤2:执行自适应阈值,然后进行形态学开放以减少图像中的噪声。
edges = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY_INV,11,2)
kernel = np.ones((2,2),np.uint8)
dilation = cv2.morphologyEx(edges, cv2.MORPH_OPEN, kernel)
我是如何进行模型训练的?
- 从所有样本图像中提取 ORB 特征进行训练(矩阵大小 RX32)并用于
RandomForestClassifier训练。
问题
我的分类器的准确度高达 0.9874066374996978,但它几乎无法识别我在相同光照条件下在同一张纸上签名的几乎所有新签名样本。我是应用 ML 的新手。你们专家认为我应该检查什么?