caffe_cpp_api

本文介绍如何利用C++API在Caffe中实现图像分类应用,包括简单的C++代码示例、编译步骤、使用预训练模型进行分类的方法及性能提升建议。

Classifying ImageNet: using the C++ API

Caffe, at its core, is written in C++. It is possible to use the C++API of Caffe to implement an image classification application similarto the Python code presented in one of the Notebook example. To lookat a more general-purpose example of the Caffe C++ API, you shouldstudy the source code of the command line tool caffe in tools/caffe.cpp.

Presentation

A simple C++ code is proposed inexamples/cpp_classification/classification.cpp. For the sake ofsimplicity, this example does not support oversampling of a singlesample nor batching of multiple independant samples. This example isnot trying to reach the maximum possible classification throughput ona system, but special care was given to avoid unnecessarypessimization while keeping the code readable.

Compiling

The C++ example is built automatically when compiling Caffe. Tocompile Caffe you should follow the documented instructions. Theclassification example will be built as examples/classification.binin your build directory.

Usage

To use the pre-trained CaffeNet model with the classification example,you need to download it from the "Model Zoo" using the followingscript:

./scripts/download_model_binary.py models/bvlc_reference_caffenet

The ImageNet labels file (also called the synset file) is alsorequired in order to map a prediction to the name of the class:

./data/ilsvrc12/get_ilsvrc_aux.sh.

Using the files that were downloaded, we can classify the provided catimage (examples/images/cat.jpg) using this command:

./build/examples/cpp_classification/classification.bin \
  models/bvlc_reference_caffenet/deploy.prototxt \
  models/bvlc_reference_caffenet/bvlc_reference_caffenet.caffemodel \
  data/ilsvrc12/imagenet_mean.binaryproto \
  data/ilsvrc12/synset_words.txt \
  examples/images/cat.jpg

The output should look like this:

---------- Prediction for examples/images/cat.jpg ----------
0.3134 - "n02123045 tabby, tabby cat"
0.2380 - "n02123159 tiger cat"
0.1235 - "n02124075 Egyptian cat"
0.1003 - "n02119022 red fox, Vulpes vulpes"
0.0715 - "n02127052 lynx, catamount"

Improving Performance

To further improve performance, you will need to leverage the GPUmore, here are some guidelines:

  • Move the data on the GPU early and perform all preprocessingoperations there.
  • If you have many images to classify simultaneously, you should usebatching (independent images are classified in a single forward pass).
  • Use multiple classification threads to ensure the GPU is always fullyutilized and not waiting for an I/O blocked CPU thread.
演示了为无线无人机电池充电设计的感应电力传输(IPT)系统 Dynamic Wireless Charging for (UAV) using Inductive Coupling 模拟了为无人机(UAV)量身定制的无线电力传输(WPT)系统。该模型演示了直流电到高频交流电的转换,通过磁共振在气隙中无线传输能量,以及整流回直流电用于电池充电。 系统拓扑包括: 输入级:使用IGBT/二极管开关连接到全桥逆变器的直流电压源(12V)。 开关控制:脉冲发生器以85 kHz(周期:1/85000秒)的开关频率运行,这是SAE J2954无线充电标准的标准频率。 耦合级:使用互感和线性变压器块来模拟具有特定耦合系数的发射(Tx)和接收(Rx)线圈。 补偿:包括串联RLC分支,用于模拟谐振补偿网络(将线圈调谐到谐振频率)。 输出级:桥式整流器(基于二极管),用于将高频交流电转换回直流电,以供负载使用。 仪器:使用示波器块进行全面的电压和电流测量,用于分析输入/输出波形和效率。 模拟详细信息: 求解器:离散Tustin/向后Euler(通过powergui)。 采样时间:50e-6秒。 4.主要特点 高频逆变:模拟85 kHz下IGBT的开关瞬态。 磁耦合:模拟无人机着陆垫和机载接收器之间的松耦合行为。 Power GUI集成:用于专用电力系统离散仿真的设置。 波形分析:预配置的范围,用于查看逆变器输出电压、初级/次级电流和整流直流电压。 5.安装与使用 确保您已安装MATLAB和Simulink。 所需工具箱:必须安装Simscape Electrical(以前称为SimPowerSystems)工具箱才能运行sps_lib块。 打开文件并运行模拟。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值