【发布时间】:2017-02-18 14:35:58
【问题描述】:
我正在尝试训练 train_shape_predictor_ex 以检测印度钞票中的以下图像。我正在使用 34 个不同的图像,点击和扫描。 使用
成功训练模型taining error = 0
testing error = 0.35468-6
我尝试将过采样参数从 300 更改为 12000 但仍然是相同的结果。 我做错了什么?
绘图代码 - 从图像加载到绘图步骤:
image_window win;
frontal_face_detector detector = get_frontal_face_detector();
shape_predictor pose_model;
deserialize("sp.dat") >> pose_model;
while (!win.is_closed())
{
cv::Mat temp;
cap >> temp;
cv_image<bgr_pixel> cimg(temp);
std::vector<rectangle> faces = detector(cimg);
std::vector<full_object_detection> shapes;
for (unsigned long i = 0; i < faces.size(); ++i)
{
full_object_detection shape = pose_model(cimg, faces[i]);
std::vector<rectangle> dets = detector(cimg);
shapes.push_back(pose_model(cimg, faces[i]));
win.clear_overlay();
win.set_image(cimg);
win.add_overlay(dets, rgb_pixel(255, 0, 0));
win.add_overlay(render_face_detections(shapes));
}
}
【问题讨论】:
-
请改进您的问题来回答这个问题:正确的样本图像是来自训练数据集的一张吗?训练数据集中的每个图像样本都给出不正确的结果?正确样本上的人脸边界框在哪里?有多少地标点?每个样本上的每个点是否具有相同的含义?正确样本上的耳朵在哪里?什么是 shape_predictor 训练参数?
-
一共有14个点。所有带有训练集的图像在检测中都给出了相同的错误。点被标记为正确我已经交叉检查了几次,甚至 0 训练错误可能意味着点是正确的。当我通过 face_landmark_detection 检测到图片之外时,边界框实际上没有出现某些点像素位置,即图像中实际存在的像素更多
-
耳朵在上传的图片中不可见。但该图像实际上是一张完整的扫描账单。只是两张图片都太大了,无法同时显示在屏幕上,所以我就这样剪了
-
您有什么建议吗?我都试试。我之前曾在几个数据集上进行过培训,并且一直运行良好。但是有些问题可能会少点?还是更少的样本?还是需要更改三个训练参数中的任何一个?训练中可能出现的眼间距部分问题?
-
你的训练数据集应该有面部边界框。你是怎么得到它们的?手绘?当您尝试测试形状预测器时,如何获得人脸边界框?通过 frontal_face 检测器?
标签: dlib