提交 667fa578 编写于 作者: B Bin Li

Add quantized mobilenet for android demo

上级 028b4ab3
......@@ -12,3 +12,7 @@ cd mace/exampls/android
Pre-built APK
--------------
Pre-built Android APK can be downloaded [here](https://cnbj1.fds.api.xiaomi.com/mace/demo/mace_android_demo.apk).
Note
--------------
We use two big cores for CPU inference.
......@@ -180,11 +180,23 @@ public class CameraActivity extends Activity implements View.OnClickListener, Ap
public void onCLickItem(String content) {
mSelectMode.setText(content);
initData.setModel(content);
handleOnlyCpuSupportByModel(content);
AppModel.instance.maceMobilenetCreateEngine(initData, CameraActivity.this);
}
});
}
private void handleOnlyCpuSupportByModel(String model) {
if (InitData.isOnlySupportCpuByModel(model)) {
String device = InitData.getCpuDevice();
mSelectPhoneType.setText(device);
mSelectPhoneType.setEnabled(false);
initData.setDevice(device);
} else {
mSelectPhoneType.setEnabled(true);
}
}
@Override
public void onCreateEngineFail(final boolean quit) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
......
......@@ -21,7 +21,8 @@ import java.io.File;
public class InitData {
public static final String[] DEVICES = new String[]{"CPU", "GPU"};
public static final String[] MODELS = new String[]{"mobilenet_v1", "mobilenet_v2"};
public static final String[] MODELS = new String[]{"mobilenet_v1", "mobilenet_v2", "mobilenet_v1_quant", "mobilenet_v2_quant"};
private static final String[] ONLY_CPU_MODELS = new String[]{"mobilenet_v1_quant", "mobilenet_v2_quant"};
private String model;
private String device = "";
......@@ -34,7 +35,7 @@ public class InitData {
public InitData() {
model = MODELS[0];
ompNumThreads = 2;
cpuAffinityPolicy = 0;
cpuAffinityPolicy = 1;
gpuPerfHint = 3;
gpuPriorityHint = 3;
device = DEVICES[0];
......@@ -101,4 +102,17 @@ public class InitData {
public void setStoragePath(String storagePath) {
this.storagePath = storagePath;
}
public static String getCpuDevice() {
return DEVICES[0];
}
public static boolean isOnlySupportCpuByModel(String model) {
for (String m : ONLY_CPU_MODELS) {
if (m.equals(model)) {
return true;
}
}
return false;
}
}
......@@ -46,6 +46,10 @@ struct MaceContext {
{"mobilenet_v1", {"input", "MobilenetV1/Predictions/Reshape_1",
{1, 224, 224, 3}, {1, 1001}}},
{"mobilenet_v2", {"input", "MobilenetV2/Predictions/Reshape_1",
{1, 224, 224, 3}, {1, 1001}}},
{"mobilenet_v1_quant", {"input", "MobilenetV1/Predictions/Softmax:0",
{1, 224, 224, 3}, {1, 1001}}},
{"mobilenet_v2_quant", {"input", "output",
{1, 224, 224, 3}, {1, 1001}}}
};
};
......@@ -107,7 +111,8 @@ Java_com_xiaomi_mace_JniMaceUtils_maceMobilenetCreateEngine(
mace::MaceEngineConfig config(mace_context.device_type);
status = config.SetCPUThreadPolicy(
omp_num_threads,
static_cast<mace::CPUAffinityPolicy>(cpu_affinity_policy));
static_cast<mace::CPUAffinityPolicy>(cpu_affinity_policy),
true);
if (status != mace::MACE_SUCCESS) {
__android_log_print(ANDROID_LOG_ERROR,
"image_classify attrs",
......
......@@ -39,3 +39,45 @@ models:
nnlib_graph_mode: 0
obfuscate: 0
winograd: 0
mobilenet_v1_quant:
platform: tensorflow
model_file_path: http://cnbj1.fds.api.xiaomi.com/mace/miai-models/mobilenet-v1/mobilenet_v1_1.0_224_quant_retrain.pb
model_sha256_checksum: c3faa9bd790310eb3dec411d2f2e2dd8802394e31ccb47daaa5e3b6369fadfa3
subgraphs:
- input_tensors:
- input
input_shapes:
- 1,224,224,3
input_ranges:
- -1.0,1.0
output_tensors:
- MobilenetV1/Predictions/Softmax:0
output_shapes:
- 1,1001
runtime: cpu
limit_opencl_kernel_time: 0
nnlib_graph_mode: 0
obfuscate: 0
winograd: 0
quantize: 1
mobilenet_v2_quant:
platform: tensorflow
model_file_path: https://cnbj1.fds.api.xiaomi.com/mace/miai-models/mobilenet-v2/mobilenet_v2_1.0_224_quant_retrain.pb
model_sha256_checksum: 1429c8e2a91b251c9fa0dae43dfa5817c5a798bd30284f8c0690e7569a8817f1
subgraphs:
- input_tensors:
- input
input_shapes:
- 1,224,224,3
input_ranges:
- -1.0,1.0
output_tensors:
- output
output_shapes:
- 1,1001
runtime: cpu
limit_opencl_kernel_time: 0
nnlib_graph_mode: 0
obfuscate: 0
winograd: 0
quantize: 1
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册