- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 dlib 使用默认数据集(/dlib-19.0/examples/faces/training_with_face_landmarks.xml
)和默认训练样本(train_shape_predictor_ex.cpp
)。
所以我想训练形状预测器,它与默认形状预测器(shape_predictor_68_face_landmarks.dat
)完全相同,因为我使用相同的数据集和相同的训练代码。 但我遇到了一些问题。
训练后,我得到了 16.6mb 的 .dat
文件(但默认 dlib 预测器 shape_predictor_68_face_landmarks.dat
有 99.7mb)。测试我的 .dat
文件 (16.6mb) 后,精度较低,但在测试默认 .dat
文件 (shape_predictor_68_face_landmarks.dat
, 16.6mb) )我得到了很高的准确度。
我的形状预测器: shape_predictor_68_face_landmarks.dat:
培训:
#include <QCoreApplication>
#include <dlib/image_processing.h>
#include <dlib/data_io.h>
#include <iostream>
using namespace dlib;
using namespace std;
std::vector<std::vector<double> > get_interocular_distances (
const std::vector<std::vector<full_object_detection> >& objects
);
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
try
{
const std::string faces_directory = "/home/user/Documents/dlib-19.0/examples/faces/";
dlib::array<array2d<unsigned char> > images_train;
std::vector<std::vector<full_object_detection> > faces_train;
load_image_dataset(images_train, faces_train, faces_directory+"training_with_face_landmarks.xml");
shape_predictor_trainer trainer;
trainer.set_oversampling_amount(300);
trainer.set_nu(0.05);
trainer.set_tree_depth(2);
trainer.be_verbose();
shape_predictor sp = trainer.train(images_train, faces_train);
cout << "mean training error: "<<
test_shape_predictor(sp, images_train, faces_train, get_interocular_distances(faces_train)) << endl;
serialize(faces_directory+"sp_default_settings.dat") << sp;
}
catch (exception& e)
{
cout << "\nexception thrown!" << endl;
cout << e.what() << endl;
}
return a.exec();
}
double interocular_distance (
const full_object_detection& det
)
{
dlib::vector<double,2> l, r;
double cnt = 0;
// Find the center of the left eye by averaging the points around
// the eye.
for (unsigned long i = 36; i <= 41; ++i)
{
l += det.part(i);
++cnt;
}
l /= cnt;
// Find the center of the right eye by averaging the points around
// the eye.
cnt = 0;
for (unsigned long i = 42; i <= 47; ++i)
{
r += det.part(i);
++cnt;
}
r /= cnt;
// Now return the distance between the centers of the eyes
return length(l-r);
}
std::vector<std::vector<double> > get_interocular_distances (
const std::vector<std::vector<full_object_detection> >& objects
)
{
std::vector<std::vector<double> > temp(objects.size());
for (unsigned long i = 0; i < objects.size(); ++i)
{
for (unsigned long j = 0; j < objects[i].size(); ++j)
{
temp[i].push_back(interocular_distance(objects[i][j]));
}
}
return temp;
}
测试:
#include <QCoreApplication>
#include <dlib/image_processing/frontal_face_detector.h>
#include <dlib/image_processing/render_face_detections.h>
#include <dlib/image_processing.h>
#include <dlib/gui_widgets.h>
#include <dlib/image_io.h>
#include <dlib/data_io.h>
#include <iostream>
using namespace dlib;
using namespace std;
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
try
{
// We need a face detector. We will use this to get bounding boxes for
// each face in an image.
frontal_face_detector detector = get_frontal_face_detector();
// And we also need a shape_predictor. This is the tool that will predict face
// landmark positions given an image and face bounding box. Here we are just
// loading the model from the shape_predictor_68_face_landmarks.dat file you gave
// as a command line argument.
shape_predictor sp;
deserialize("/home/user/Downloads/muct-master/samples/sp_default_settings.dat") >> sp;
string srcDir = "/home/user/Downloads/muct-master/samples/selection/";
string dstDir = "/home/user/Downloads/muct-master/samples/my_results_default/";
std::vector<string> vecOfImg;
vecOfImg.push_back("i001qa-mn.jpg");
vecOfImg.push_back("i002ra-mn.jpg");
vecOfImg.push_back("i003ra-fn.jpg");
vecOfImg.push_back("i003sa-fn.jpg");
vecOfImg.push_back("i004qa-mn.jpg");
vecOfImg.push_back("i004ra-mn.jpg");
vecOfImg.push_back("i005ra-fn.jpg");
vecOfImg.push_back("i006ra-mn.jpg");
vecOfImg.push_back("i007qa-fn.jpg");
vecOfImg.push_back("i008ra-mn.jpg");
vecOfImg.push_back("i009qa-mn.jpg");
vecOfImg.push_back("i009ra-mn.jpg");
vecOfImg.push_back("i009sa-mn.jpg");
vecOfImg.push_back("i010qa-mn.jpg");
vecOfImg.push_back("i010sa-mn.jpg");
vecOfImg.push_back("i011qa-mn.jpg");
vecOfImg.push_back("i011ra-mn.jpg");
vecOfImg.push_back("i012ra-mn.jpg");
vecOfImg.push_back("i012sa-mn.jpg");
vecOfImg.push_back("i014qa-fn.jpg");
for(int imgC = 0; imgC < vecOfImg.size(); imgC++){
array2d<rgb_pixel> img;
load_image(img, srcDir + vecOfImg.at(imgC));
// Make the image larger so we can detect small faces.
pyramid_up(img);
// Now tell the face detector to give us a list of bounding boxes
// around all the faces in the image.
std::vector<rectangle> dets = detector(img);
cout << "Number of faces detected: " << dets.size() << endl;
// Now we will go ask the shape_predictor to tell us the pose of
// each face we detected.
std::vector<full_object_detection> shapes;
for (unsigned long j = 0; j < dets.size(); ++j)
{
full_object_detection shape = sp(img, dets[j]);
cout << "number of parts: "<< shape.num_parts() << endl;
cout << "pixel position of first part: " << shape.part(0) << endl;
cout << "pixel position of second part: " << shape.part(1) << endl;
for(unsigned long i = 0; i < shape.num_parts(); i++){
draw_solid_circle(img, shape.part(i), 2, rgb_pixel(100,255,100));
}
save_jpeg(img, dstDir + vecOfImg.at(imgC));
// You get the idea, you can get all the face part locations if
// you want them. Here we just store them in shapes so we can
// put them on the screen.
shapes.push_back(shape);
}
}
}
catch (exception& e)
{
cout << "\nexception thrown!" << endl;
cout << e.what() << endl;
}
return a.exec();
}
如果我使用默认数据集和示例,默认数据集和我的训练和测试之间有什么区别?如何将形状预测器训练为 shape_predictor_68_face_landmarks.dat?
最佳答案
示例数据集 (/dlib-19.0/examples/faces/training_with_face_landmarks.xml) 太小,无法训练高质量模型。这不是 dlib 附带的模型所训练的。
这些示例使用较小的数据集来使示例运行得更快。所有示例的目的是解释 dlib API,而不是成为有用的程序。它们只是文档。您可以使用 dlib API 做一些有趣的事情。
关于machine-learning - 使用默认数据集和训练的形状预测器精度较低,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40880441/
real adaboost Logit boost discrete adaboost 和 gentle adaboost in train cascade parameter 有什么区别.. -bt
我想为 book crossing 构建训练数据矩阵和测试数据矩阵数据集。但作为 ISBN 代码的图书 ID 可能包含字符。因此,我无法应用此代码(来自 tutorial ): #Create two
我找到了 JavaANPR 库,我想对其进行自定义以读取我所在国家/地区的车牌。 似乎包含的字母表与我们使用的字母表不同 ( http://en.wikipedia.org/wiki/FE-Schri
我有一个信用卡数据集,其中 98% 的交易是非欺诈交易,2% 是欺诈交易。 我一直在尝试在训练和测试拆分之前对多数类别进行欠采样,并在测试集上获得非常好的召回率和精度。 当我仅在训练集上进行欠采样并在
我打算: 在数据集上从头开始训练 NASNet 只重新训练 NASNet 的最后一层(迁移学习) 并比较它们的相对性能。从文档中我看到: keras.applications.nasnet.NASNe
我正在训练用于分割的 uNet 模型。训练模型后,输出全为零,我不明白为什么。 我看到建议我应该使用特定的损失函数,所以我使用了 dice 损失函数。这是因为黑色区域 (0) 比白色区域 (1) 大得
我想为新角色训练我现有的 tesseract 模型。我已经尝试过 上的教程 https://github.com/tesseract-ocr/tesseract/wiki/TrainingTesser
我的机器中有两个 NVidia GPU,但我没有使用它们。 我的机器上运行了三个神经网络训练。当我尝试运行第四个时,脚本出现以下错误: my_user@my_machine:~/my_project/
我想在python的tensorflow中使用稀疏张量进行训练。我找到了很多代码如何做到这一点,但没有一个有效。 这里有一个示例代码来说明我的意思,它会抛出一个错误: import numpy as
我正在训练一个 keras 模型,它的最后一层是单个 sigmoid单元: output = Dense(units=1, activation='sigmoid') 我正在用一些训练数据训练这个模型
所以我需要使用我自己的数据集重新训练 Tiny YOLO。我正在使用的模型可以在这里找到:keras-yolo3 . 我开始训练并遇到多个优化器错误,添加了错误代码以防止混淆。 我注意到即使它应该使用
将 BERT 模型中的标记化范式更改为其他东西是否有意义?也许只是一个简单的单词标记化或字符级标记化? 最佳答案 这是论文“CharacterBERT: Reconciling ELMo and BE
假设我有一个非常简单的神经网络,比如多层感知器。对于每一层,激活函数都是 sigmoid 并且网络是全连接的。 在 TensorFlow 中,这可能是这样定义的: sess = tf.Inte
有没有办法在 PyBrain 中保存和恢复经过训练的神经网络,这样我每次运行脚本时都不必重新训练它? 最佳答案 PyBrain 的神经网络可以使用 python 内置的 pickle/cPickle
我尝试使用 Keras 训练一个对手写数字进行分类的 CNN 模型,但训练的准确度很低(低于 10%)并且误差很大。我尝试了一个简单的神经网络,但没有效果。 这是我的代码。 import tensor
我在 Windows 7 64 位上使用 tesseract 3.0.1。我用一种新语言训练图书馆。 我的示例数据间隔非常好。当我为每个角色的盒子定义坐标时,盒子紧贴角色有多重要?我使用其中一个插件,
如何对由 dropout 产生的许多变薄层进行平均?在测试阶段要使用哪些权重?我真的很困惑这个。因为每个变薄的层都会学习一组不同的权重。那么反向传播是为每个细化网络单独完成的吗?这些细化网络之间的权重
我尝试训练超正方语言。我正在使用 Tess4J 进行 OCR 处理。我使用jTessBoxEditor和SerakTesseractTrainer进行训练操作。准备好训练数据后,我将其放在 Tesse
我正在构建一个 Keras 模型,将数据分类为 3000 个不同的类别,我的训练数据由大量样本组成,因此在用一种热编码对训练输出进行编码后,数据非常大(item_count * 3000 * 的大小)
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 8 年前。 Improve this ques
我是一名优秀的程序员,十分优秀!