参考代码
TensorRT安装包下的samples/sampleMNIST/sampleMNIST.cpp
1.设置使用的gpu id,如果不设置,默认使用第0块。
cudaSetDevice(3); //set device id
2.定义模型的输入输出和logger
static const int INPUT_H = 299; //输入图像高
static const int INPUT_W = 299;//输入图像宽
static const int CHANNELS = 3;//输入图像通道
static const int OUTPUT_SIZE = 1536;//输出特征维度
static Logger gLogger;
const char* INPUT_BLOB_NAME = "data";//deploy文件中定义的输入层名称
const char* OUTPUT_BLOB_NAME = "pool_8x8_s2";//deploy文件中定义的输出层名称
3.定义GIE模型,并将训练好的caffe模型转换到GIE模型
// create a GIE model from the caffe model and serialize it to a stream
IHostMemory *gieModelStream{nullptr};
caffeToGIEModel("deploy.prototxt", "inceptionv4.caffemodel", std::vector < std::string > { OUTPUT_BLOB_NAME }, 1, gieModelStream);
4.准备输入图像,可以采用opencv读取,也可用其他方式,根据情况编写与处理部分,最终存入一个float*中
float data[INPUT_H*INPUT_W*CHANNELS];
cv::Mat im = imread("gap.jpg") ;
cv::resize(im, im, cv::Size(INPUT_W, INPUT_H));
int mean_data[] = {104, 117, 123}; //均值
float *pdata = data;
for(int c = 0; c < CHANNELS; ++c)
{
for(int h = 0; h < INPUT_H; ++h)
{
for(int w = 0; w < INPUT_W; ++w)
{
*pdata++ = float(im.at<Vec3b&g