Update OVIC README for CVPR2020 competition.
- Added Pixel 4 latency measurements for test and reference models. - Added MobileNetV3 benchmarks. PiperOrigin-RevId: 306954559 Change-Id: I67130537f73b7a2cb7639b54e51cfacc68630d6c
This commit is contained in:
parent
5d192714dd
commit
3ea7b9ec60
@ -1,32 +1,42 @@
|
|||||||
# OVIC Benchmarker for ICCV-NeurIPS 2019
|
# OVIC Benchmarker for LPCV 2020
|
||||||
|
|
||||||
This folder contains the SDK for track one of the [Low Power Computer Vision workshop at ICCV 2019.](https://rebootingcomputing.ieee.org/lpirc/)
|
This folder contains the SDK for track one of the
|
||||||
|
[Low Power Computer Vision workshop at CVPR 2020.](https://lpcv.ai/2020CVPR/ovic-track)
|
||||||
|
|
||||||
## Pre-requisite
|
## Pre-requisite
|
||||||
|
|
||||||
Follow the steps [here](https://www.tensorflow.org/lite/demo_android) to install Tensorflow, Bazel, and the Android NDK and SDK.
|
Follow the steps [here](https://www.tensorflow.org/lite/demo_android) to install
|
||||||
|
Tensorflow, Bazel, and the Android NDK and SDK.
|
||||||
|
|
||||||
## Test the benchmarker:
|
## Test the benchmarker:
|
||||||
|
|
||||||
The testing utilities helps the developers (you) to make sure that your submissions in TfLite format will be processed as expected in the competition's benchmarking system.
|
The testing utilities helps the developers (you) to make sure that your
|
||||||
|
submissions in TfLite format will be processed as expected in the competition's
|
||||||
|
benchmarking system.
|
||||||
|
|
||||||
Note: for now the tests only provides correctness checks, i.e. classifier predicts the correct category on the test image, but no on-device latency measurements. To test the latency measurement functionality, the tests will print the latency running on a desktop computer, which is not indicative of the on-device run-time.
|
Note: for now the tests only provides correctness checks, i.e. classifier
|
||||||
We are releasing an benchmarker Apk that would allow developers to measure latency on their own devices.
|
predicts the correct category on the test image, but no on-device latency
|
||||||
|
measurements. To test the latency measurement functionality, the tests will
|
||||||
|
print the latency running on a desktop computer, which is not indicative of the
|
||||||
|
on-device run-time. We are releasing an benchmarker Apk that would allow
|
||||||
|
developers to measure latency on their own devices.
|
||||||
|
|
||||||
### Obtain the sample models
|
### Obtain the sample models
|
||||||
|
|
||||||
The test data (models and images) should be downloaded automatically for you by Bazel. In case they are not, you can manually install them as below.
|
The test data (models and images) should be downloaded automatically for you by
|
||||||
|
Bazel. In case they are not, you can manually install them as below.
|
||||||
|
|
||||||
Note: all commands should be called from your tensorflow installation folder (under this folder you should find `tensorflow/lite`).
|
Note: all commands should be called from your tensorflow installation folder
|
||||||
|
(under this folder you should find `tensorflow/lite`).
|
||||||
|
|
||||||
|
* Download the
|
||||||
* Download the [testdata package](https://storage.googleapis.com/download.tensorflow.org/data/ovic_2018_10_23.zip):
|
[testdata package](https://storage.googleapis.com/download.tensorflow.org/data/ovic_2019_04_30.zip):
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
curl -L https://storage.googleapis.com/download.tensorflow.org/data/ovic_2019_04_30.zip -o /tmp/ovic.zip
|
curl -L https://storage.googleapis.com/download.tensorflow.org/data/ovic_2019_04_30.zip -o /tmp/ovic.zip
|
||||||
```
|
```
|
||||||
|
|
||||||
* Unzip the package into the testdata folder:
|
* Unzip the package into the testdata folder:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
unzip -j /tmp/ovic.zip -d tensorflow/lite/java/ovic/src/testdata/
|
unzip -j /tmp/ovic.zip -d tensorflow/lite/java/ovic/src/testdata/
|
||||||
@ -34,7 +44,8 @@ unzip -j /tmp/ovic.zip -d tensorflow/lite/java/ovic/src/testdata/
|
|||||||
|
|
||||||
### Run tests
|
### Run tests
|
||||||
|
|
||||||
You can run test with Bazel as below. This helps to ensure that the installation is correct.
|
You can run test with Bazel as below. This helps to ensure that the installation
|
||||||
|
is correct.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
bazel test //tensorflow/lite/java/ovic:OvicClassifierTest --cxxopt=-Wno-all --test_output=all
|
bazel test //tensorflow/lite/java/ovic:OvicClassifierTest --cxxopt=-Wno-all --test_output=all
|
||||||
@ -44,11 +55,16 @@ bazel test //tensorflow/lite/java/ovic:OvicDetectorTest --cxxopt=-Wno-all --test
|
|||||||
|
|
||||||
### Test your submissions
|
### Test your submissions
|
||||||
|
|
||||||
Once you have a submission that follows the instructions from the [competition site](https://gdoc.pub/doc/e/2PACX-1vSFTEMAE_N6RgtidT-4DVTje6f6HRJv7Q_zaCab5H66BFyqEiZ8PsUfD_-YmBE7_z67qDiNgk-CJqeE), you can verify it in two ways:
|
Once you have a submission that follows the instructions from the
|
||||||
|
[competition site](https://lpcv.ai/2020CVPR/ovic-track), you can verify it in
|
||||||
|
two ways:
|
||||||
|
|
||||||
#### Validate using randomly generated images
|
#### Validate using randomly generated images
|
||||||
|
|
||||||
You can call the validator binary below to verify that your model fits the format requirements. This often helps you to catch size mismatches (e.g. output for classification should be [1, 1001] instead of [1,1,1,1001]). Let say the submission file is located at `/path/to/my_model.lite`, then call:
|
You can call the validator binary below to verify that your model fits the
|
||||||
|
format requirements. This often helps you to catch size mismatches (e.g. output
|
||||||
|
for classification should be [1, 1001] instead of [1,1,1,1001]). Let say the
|
||||||
|
submission file is located at `/path/to/my_model.lite`, then call:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
bazel build //tensorflow/lite/java/ovic:ovic_validator --cxxopt=-Wno-all
|
bazel build //tensorflow/lite/java/ovic:ovic_validator --cxxopt=-Wno-all
|
||||||
@ -62,24 +78,30 @@ Successfully validated /path/to/my_model.lite.
|
|||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
To validate detection models, use the same command but provide "detect" as the second argument instead of "classify".
|
To validate detection models, use the same command but provide "detect" as the
|
||||||
|
second argument instead of "classify".
|
||||||
|
|
||||||
#### Test that the model produces sensible outcomes
|
#### Test that the model produces sensible outcomes
|
||||||
|
|
||||||
You can go a step further to verify that the model produces results as expected. This helps you catch bugs during TOCO conversion (e.g. using the wrong mean and std values).
|
You can go a step further to verify that the model produces results as expected.
|
||||||
|
This helps you catch bugs during TFLite conversion (e.g. using the wrong mean
|
||||||
|
and std values).
|
||||||
|
|
||||||
* Move your submission to the testdata folder:
|
* Move your submission to the testdata folder:
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
cp /path/to/my_model.lite tensorflow/lite/java/ovic/src/testdata/
|
cp /path/to/my_model.lite tensorflow/lite/java/ovic/src/testdata/
|
||||||
```
|
```
|
||||||
|
|
||||||
* Resize the test image to the resolutions that are expected by your submission:
|
* Resize the test image to the resolutions that are expected by your
|
||||||
|
submission:
|
||||||
|
|
||||||
The test images can be found at `tensorflow/lite/java/ovic/src/testdata/test_image_*.jpg`. You may reuse these images if your image resolutions are 128x128 or 224x224.
|
The test images can be found at
|
||||||
|
`tensorflow/lite/java/ovic/src/testdata/test_image_*.jpg`. You may reuse these
|
||||||
|
images if your image resolutions are 128x128 or 224x224.
|
||||||
|
|
||||||
* Add your model and test image to the BUILD rule at `tensorflow/lite/java/ovic/src/testdata/BUILD`:
|
* Add your model and test image to the BUILD rule at
|
||||||
|
`tensorflow/lite/java/ovic/src/testdata/BUILD`:
|
||||||
|
|
||||||
```JSON
|
```JSON
|
||||||
filegroup(
|
filegroup(
|
||||||
@ -97,33 +119,50 @@ filegroup(
|
|||||||
...
|
...
|
||||||
```
|
```
|
||||||
|
|
||||||
* For classification models, modify `OvicClassifierTest.java`:
|
* For classification models, modify `OvicClassifierTest.java`:
|
||||||
* change `TEST_IMAGE_PATH` to `my_test_image.jpg`.
|
|
||||||
|
|
||||||
* change either `FLOAT_MODEL_PATH` or `QUANTIZED_MODEL_PATH` to `my_model.lite` depending on whether your model runs inference in float or [8-bit](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/quantize).
|
* change `TEST_IMAGE_PATH` to `my_test_image.jpg`.
|
||||||
|
|
||||||
* change `TEST_IMAGE_GROUNDTRUTH` (ImageNet class ID) to be consistent with your test image.
|
* change either `FLOAT_MODEL_PATH` or `QUANTIZED_MODEL_PATH` to
|
||||||
|
`my_model.lite` depending on whether your model runs inference in float
|
||||||
|
or
|
||||||
|
[8-bit](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/quantize).
|
||||||
|
|
||||||
* For detection models, modify `OvicDetectorTest.java`:
|
* change `TEST_IMAGE_GROUNDTRUTH` (ImageNet class ID) to be consistent
|
||||||
* change `TEST_IMAGE_PATH` to `my_test_image.jpg`.
|
with your test image.
|
||||||
* change `MODEL_PATH` to `my_model.lite`.
|
|
||||||
* change `GROUNDTRUTH` (COCO class ID) to be consistent with your test image.
|
* For detection models, modify `OvicDetectorTest.java`:
|
||||||
|
|
||||||
|
* change `TEST_IMAGE_PATH` to `my_test_image.jpg`.
|
||||||
|
* change `MODEL_PATH` to `my_model.lite`.
|
||||||
|
* change `GROUNDTRUTH` (COCO class ID) to be consistent with your test
|
||||||
|
image.
|
||||||
|
|
||||||
Now you can run the bazel tests to catch any runtime issues with the submission.
|
Now you can run the bazel tests to catch any runtime issues with the submission.
|
||||||
|
|
||||||
Note: Please make sure that your submission passes the test. If a submission fails to pass the test it will not be processed by the submission server.
|
Note: Please make sure that your submission passes the test. If a submission
|
||||||
|
fails to pass the test it will not be processed by the submission server.
|
||||||
|
|
||||||
## Measure on-device latency
|
## Measure on-device latency
|
||||||
|
|
||||||
We provide two ways to measure the on-device latency of your submission. The first is through our competition server, which is reliable and repeatable, but is limited to a few trials per day. The second is through the benchmarker Apk, which requires a device and may not be as accurate as the server, but has a fast turn-around and no access limitations. We recommend that the participants use the benchmarker apk for early development, and reserve the competition server for evaluating promising submissions.
|
We provide two ways to measure the on-device latency of your submission. The
|
||||||
|
first is through our competition server, which is reliable and repeatable, but
|
||||||
|
is limited to a few trials per day. The second is through the benchmarker Apk,
|
||||||
|
which requires a device and may not be as accurate as the server, but has a fast
|
||||||
|
turn-around and no access limitations. We recommend that the participants use
|
||||||
|
the benchmarker apk for early development, and reserve the competition server
|
||||||
|
for evaluating promising submissions.
|
||||||
|
|
||||||
### Running the benchmarker app
|
### Running the benchmarker app
|
||||||
|
|
||||||
Make sure that you have followed instructions in [Test your submissions](#test-your-submissions) to add your model to the testdata folder and to the corresponding build rules.
|
Make sure that you have followed instructions in
|
||||||
|
[Test your submissions](#test-your-submissions) to add your model to the
|
||||||
|
testdata folder and to the corresponding build rules.
|
||||||
|
|
||||||
Modify `tensorflow/lite/java/ovic/demo/app/OvicBenchmarkerActivity.java`:
|
Modify `tensorflow/lite/java/ovic/demo/app/OvicBenchmarkerActivity.java`:
|
||||||
|
|
||||||
* Add your model to the benchmarker apk by changing `modelPath` and `testImagePath` to your submission and test image.
|
* Add your model to the benchmarker apk by changing `modelPath` and
|
||||||
|
`testImagePath` to your submission and test image.
|
||||||
|
|
||||||
```
|
```
|
||||||
if (benchmarkClassification) {
|
if (benchmarkClassification) {
|
||||||
@ -133,13 +172,15 @@ Modify `tensorflow/lite/java/ovic/demo/app/OvicBenchmarkerActivity.java`:
|
|||||||
} else { // Benchmarking detection.
|
} else { // Benchmarking detection.
|
||||||
...
|
...
|
||||||
```
|
```
|
||||||
If you are adding a detection model, simply modify `modelPath` and `testImagePath` in the else block above.
|
|
||||||
|
|
||||||
* Adjust the benchmark parameters when needed:
|
If you are adding a detection model, simply modify `modelPath` and
|
||||||
|
`testImagePath` in the else block above.
|
||||||
|
|
||||||
|
* Adjust the benchmark parameters when needed:
|
||||||
|
|
||||||
You can change the length of each experiment, and the processor affinity below.
|
You can change the length of each experiment, and the processor affinity below.
|
||||||
`BIG_CORE_MASK` is an integer whose binary encoding represents the set of used
|
`BIG_CORE_MASK` is an integer whose binary encoding represents the set of used
|
||||||
cores. This number is phone-specific. For example, Pixel 2 has 8 cores: the 4
|
cores. This number is phone-specific. For example, Pixel 4 has 8 cores: the 4
|
||||||
little cores are represented by the 4 less significant bits, and the 4 big cores
|
little cores are represented by the 4 less significant bits, and the 4 big cores
|
||||||
by the 4 more significant bits. Therefore a mask value of 16, or in binary
|
by the 4 more significant bits. Therefore a mask value of 16, or in binary
|
||||||
`00010000`, represents using only the first big core. The mask 32, or in binary
|
`00010000`, represents using only the first big core. The mask 32, or in binary
|
||||||
@ -151,20 +192,23 @@ mask 16 because the big cores are interchangeable.
|
|||||||
private static final double WALL_TIME = 3000;
|
private static final double WALL_TIME = 3000;
|
||||||
/** Maximum number of iterations in each benchmarking experiment. */
|
/** Maximum number of iterations in each benchmarking experiment. */
|
||||||
private static final int MAX_ITERATIONS = 100;
|
private static final int MAX_ITERATIONS = 100;
|
||||||
/** Mask for binding to a single big core. Pixel 1 (4), Pixel 2 (16). */
|
/** Mask for binding to a single big core. Pixel 1 (4), Pixel 4 (16). */
|
||||||
private static final int BIG_CORE_MASK = 16;
|
private static final int BIG_CORE_MASK = 16;
|
||||||
```
|
```
|
||||||
|
|
||||||
Note: You'll need ROOT access to the phone to change processor affinity.
|
Note: You'll need ROOT access to the phone to change processor affinity.
|
||||||
|
|
||||||
* Build and install the app.
|
* Build and install the app.
|
||||||
|
|
||||||
```
|
```
|
||||||
bazel build -c opt --cxxopt=-Wno-all //tensorflow/lite/java/ovic/demo/app:ovic_benchmarker_binary
|
bazel build -c opt --cxxopt=-Wno-all //tensorflow/lite/java/ovic/demo/app:ovic_benchmarker_binary
|
||||||
adb install -r bazel-bin/tensorflow/lite/java/ovic/demo/app/ovic_benchmarker_binary.apk
|
adb install -r bazel-bin/tensorflow/lite/java/ovic/demo/app/ovic_benchmarker_binary.apk
|
||||||
```
|
```
|
||||||
|
|
||||||
Start the app and pick a task by clicking either the `CLF` button for classification or the `DET` button for detection. The button should turn bright green, signaling that the experiment is running. The benchmarking results will be displayed after about the `WALL_TIME` you specified above. For example:
|
Start the app and pick a task by clicking either the `CLF` button for
|
||||||
|
classification or the `DET` button for detection. The button should turn bright
|
||||||
|
green, signaling that the experiment is running. The benchmarking results will
|
||||||
|
be displayed after about the `WALL_TIME` you specified above. For example:
|
||||||
|
|
||||||
```
|
```
|
||||||
my_model.lite: Average latency=158.6ms after 20 runs.
|
my_model.lite: Average latency=158.6ms after 20 runs.
|
||||||
@ -172,87 +216,106 @@ my_model.lite: Average latency=158.6ms after 20 runs.
|
|||||||
|
|
||||||
### Sample latencies
|
### Sample latencies
|
||||||
|
|
||||||
Note: the benchmarking results can be quite different depending on the background processes running on the phone. A few things that help stabilize the app's readings are placing the phone on a cooling plate, restarting the phone, and shutting down internet access.
|
Note: the benchmarking results can be quite different depending on the
|
||||||
|
background processes running on the phone. A few things that help stabilize the
|
||||||
|
app's readings are placing the phone on a cooling plate, restarting the phone,
|
||||||
|
and shutting down internet access.
|
||||||
|
|
||||||
| Classification Model | Pixel 1 latency (ms) | Pixel 2 latency (ms) |
|
Classification Model | Pixel 1 | Pixel 2 | Pixel 4
|
||||||
| -------------------- |:---------------------:| --------------------:|
|
-------------------- | :-----: | ------: | :-----:
|
||||||
| float_model.lite | 97 | 113 |
|
float_model.lite | 97 | 113 | 37
|
||||||
| quantized_model.lite | 73 | 61 |
|
quantized_model.lite | 73 | 61 | 13
|
||||||
| low_res_model.lite | 3 | 3 |
|
low_res_model.lite | 3 | 3 | 1
|
||||||
|
|
||||||
|
Detection Model | Pixel 2 | Pixel 4
|
||||||
|
---------------------- | :-----: | :-----:
|
||||||
|
detect.lite | 248 | 82
|
||||||
|
quantized_detect.lite | 59 | 17
|
||||||
|
quantized_fpnlite.lite | 96 | 29
|
||||||
|
|
||||||
| Detection Model | Pixel 2 latency (ms) |
|
All latency numbers are in milliseconds. The Pixel 1 and Pixel 2 latency numbers
|
||||||
| -------------------- |:---------------------:|
|
are measured on `Oct 17 2019` (Github commit hash
|
||||||
| detect.lite | 248 |
|
[I05def66f58fa8f2161522f318e00c1b520cf0606](https://github.com/tensorflow/tensorflow/commit/4b02bc0e0ff7a0bc02264bc87528253291b7c949#diff-4e94df4d2961961ba5f69bbd666e0552))
|
||||||
| quantized_detect.lite | 59 |
|
|
||||||
| quantized_fpnlite.lite | 96 |
|
|
||||||
|
|
||||||
|
The Pixel 4 latency numbers are measured on `Apr 14 2020` (Github commit hash
|
||||||
|
[4b2cb67756009dda843c6b56a8b320c8a54373e0](https://github.com/tensorflow/tensorflow/commit/4b2cb67756009dda843c6b56a8b320c8a54373e0)).
|
||||||
|
|
||||||
All latency numbers above are measured on `Oct 17 2019` (Github commit hash [I05def66f58fa8f2161522f318e00c1b520cf0606]( https://github.com/tensorflow/tensorflow/commit/4b02bc0e0ff7a0bc02264bc87528253291b7c949#diff-4e94df4d2961961ba5f69bbd666e0552]))
|
Since Pixel 4 has excellent support for 8-bit quantized models, we strongly
|
||||||
|
recommend you to check out the
|
||||||
Since Pixel 2 has excellent support for 8-bit quantized models, we strongly recommend you to check out the [quantization training tutorial](https://github.com/tensorflow/tensorflow/tree/master/tensorflow/contrib/quantize).
|
[Post-Training Quantization tutorial](https://www.tensorflow.org/lite/performance/post_training_quantization).
|
||||||
|
|
||||||
The detection models above are both single-shot models (i.e. no object proposal generation) using TfLite's *fast* version of Non-Max-Suppression (NMS). The fast NMS is significant faster than the regular NMS (used by the ObjectDetectionAPI in training) at the expense of about 1% mAP for the listed models.
|
|
||||||
|
|
||||||
|
The detection models above are both single-shot models (i.e. no object proposal
|
||||||
|
generation) using TfLite's *fast* version of Non-Max-Suppression (NMS). The fast
|
||||||
|
NMS is significant faster than the regular NMS (used by the ObjectDetectionAPI
|
||||||
|
in training) at the expense of about 1% mAP for the listed models.
|
||||||
|
|
||||||
### Latency table
|
### Latency table
|
||||||
|
|
||||||
We have compiled a latency table for common neural network operators such as
|
We have compiled a latency table for common neural network operators such as
|
||||||
convolutions, separable convolutions, and matrix multiplications.
|
convolutions, separable convolutions, and matrix multiplications. The table of
|
||||||
The table of results is available here:
|
results is available here:
|
||||||
|
|
||||||
* https://storage.cloud.google.com/ovic-data/latency_table.csv
|
* https://storage.cloud.google.com/ovic-data/
|
||||||
|
|
||||||
The results were generated by creating a small network containing a single
|
The results were generated by creating a small network containing a single
|
||||||
operation, and running the op under the test harness. For more details see the
|
operation, and running the op under the test harness. For more details see the
|
||||||
NetAdapt paper<sup>1</sup>. We plan to expand table regularly as we test with
|
NetAdapt paper<sup>1</sup>. We plan to expand table regularly as we test with
|
||||||
newer OS releases and updates to Tensorflow Lite.
|
newer OS releases and updates to Tensorflow Lite.
|
||||||
|
|
||||||
|
|
||||||
### Sample benchmarks
|
### Sample benchmarks
|
||||||
|
|
||||||
Below are the baseline models (8-bit quantized MobilenetV2 and floating point
|
Below are the baseline models (MobileNetV2, MnasNet, and MobileNetV3) used to
|
||||||
MnasNet) used to compute the reference accuracy for ImageNet classification. The
|
compute the reference accuracy for ImageNet classification. The naming
|
||||||
naming convention of the models are `[model class]_[resolution]_[multiplier]`.
|
convention of the models are `[precision]_[model
|
||||||
Latency (ms) is measured on a single Pixel 2 big core using the competition
|
class]_[resolution]_[multiplier]`. Pixel 2 Latency (ms) is measured on a single
|
||||||
server on `Oct 17 2019`
|
Pixel 2 big core using the competition server on `Oct 17 2019`, while Pixel 4
|
||||||
|
latency (ms) is measured on a single Pixel 4 big core using the competition
|
||||||
|
server on `Apr 14 2020`. You can find these models on TFLite's
|
||||||
|
[hosted model page](https://www.tensorflow.org/lite/guide/hosted_models#image_classification).
|
||||||
|
|
||||||
Model | Latency | Top-1 Accuracy
|
Model | Pixel 2 | Pixel 4 | Top-1 Accuracy
|
||||||
:-----------------------: | :-----: | :------------:
|
:---------------------------------: | :-----: | :-----: | :------------:
|
||||||
quant_mobilenetv2_96_35 | 4 | 0.420
|
quant_mobilenetv2_96_35 | 4 | 1 | 0.420
|
||||||
quant_mobilenetv2_96_50 | 5 | 0.478
|
quant_mobilenetv2_96_50 | 5 | 1 | 0.478
|
||||||
quant_mobilenetv2_128_35 | 6 | 0.474
|
quant_mobilenetv2_128_35 | 6 | 2 | 0.474
|
||||||
quant_mobilenetv2_128_50 | 8 | 0.546
|
quant_mobilenetv2_128_50 | 8 | 2 | 0.546
|
||||||
quant_mobilenetv2_160_35 | 9 | 0.534
|
quant_mobilenetv2_160_35 | 9 | 2 | 0.534
|
||||||
quant_mobilenetv2_96_75 | 8 | 0.560
|
quant_mobilenetv2_96_75 | 8 | 2 | 0.560
|
||||||
quant_mobilenetv2_96_100 | 10 | 0.579
|
quant_mobilenetv2_96_100 | 10 | 3 | 0.579
|
||||||
quant_mobilenetv2_160_50 | 12 | 0.583
|
quant_mobilenetv2_160_50 | 12 | 3 | 0.583
|
||||||
quant_mobilenetv2_192_35 | 12 | 0.557
|
quant_mobilenetv2_192_35 | 12 | 3 | 0.557
|
||||||
quant_mobilenetv2_128_75 | 13 | 0.611
|
quant_mobilenetv2_128_75 | 13 | 3 | 0.611
|
||||||
quant_mobilenetv2_224_35 | 17 | 0.581
|
quant_mobilenetv2_192_50 | 16 | 4 | 0.616
|
||||||
quant_mobilenetv2_192_50 | 16 | 0.616
|
quant_mobilenetv2_128_100 | 16 | 4 | 0.629
|
||||||
float_mnasnet_96_100 | 21 | 0.625
|
quant_mobilenetv2_224_35 | 17 | 5 | 0.581
|
||||||
quant_mobilenetv2_128_100 | 16 | 0.629
|
quant_mobilenetv2_160_75 | 20 | 5 | 0.646
|
||||||
quant_mobilenetv2_160_75 | 20 | 0.646
|
float_mnasnet_96_100 | 21 | 7 | 0.625
|
||||||
quant_mobilenetv2_224_50 | 22 | 0.637
|
quant_mobilenetv2_224_50 | 22 | 6 | 0.637
|
||||||
quant_mobilenetv2_160_100 | 25 | 0.674
|
quant_mobilenetv2_160_100 | 25 | 6 | 0.674
|
||||||
float_mnasnet_224_50 | 35 | 0.679
|
quant_mobilenetv2_192_75 | 29 | 7 | 0.674
|
||||||
quant_mobilenetv2_192_75 | 29 | 0.674
|
quant_mobilenetv2_192_100 | 35 | 9 | 0.695
|
||||||
float_mnasnet_160_100 | 45 | 0.706
|
float_mnasnet_224_50 | 35 | 12 | 0.679
|
||||||
quant_mobilenetv2_192_100 | 35 | 0.695
|
quant_mobilenetv2_224_75 | 39 | 10 | 0.684
|
||||||
quant_mobilenetv2_224_75 | 39 | 0.684
|
float_mnasnet_160_100 | 45 | 15 | 0.706
|
||||||
float_mnasnet_224_75 | 55 | 0.718
|
quant_mobilenetv2_224_100 | 48 | 12 | 0.704
|
||||||
float_mnasnet_192_100 | 62 | 0.724
|
float_mnasnet_224_75 | 55 | 18 | 0.718
|
||||||
quant_mobilenetv2_224_100 | 48 | 0.704
|
float_mnasnet_192_100 | 62 | 20 | 0.724
|
||||||
float_mnasnet_224_100 | 84 | 0.742
|
float_mnasnet_224_100 | 84 | 27 | 0.742
|
||||||
float_mnasnet_224_130 | 126 | 0.758
|
float_mnasnet_224_130 | 126 | 40 | 0.758
|
||||||
|
float_v3-small-minimalistic_224_100 | - | 5 | 0.620
|
||||||
|
quant_v3-small_224_100 | - | 5 | 0.641
|
||||||
|
float_v3-small_224_75 | - | 5 | 0.656
|
||||||
|
float_v3-small_224_100 | - | 7 | 0.677
|
||||||
|
quant_v3-large_224_100 | - | 12 | 0.728
|
||||||
|
float_v3-large_224_75 | - | 15 | 0.735
|
||||||
|
float_v3-large-minimalistic_224_100 | - | 17 | 0.722
|
||||||
|
float_v3-large_224_100 | - | 20 | 0.753
|
||||||
|
|
||||||
### References
|
### References
|
||||||
|
|
||||||
1. **NetAdapt: Platform-Aware Neural Network Adaptation for Mobile
|
1. **NetAdapt: Platform-Aware Neural Network Adaptation for Mobile
|
||||||
Applications**<br />
|
Applications**<br />
|
||||||
Yang, Tien-Ju, Andrew Howard, Bo Chen, Xiao Zhang, Alec Go, Mark Sandler,
|
Yang, Tien-Ju, Andrew Howard, Bo Chen, Xiao Zhang, Alec Go, Mark Sandler,
|
||||||
Vivienne Sze, and Hartwig Adam. In Proceedings of the European Conference
|
Vivienne Sze, and Hartwig Adam. In Proceedings of the European Conference
|
||||||
on Computer Vision (ECCV), pp. 285-300. 2018<br />
|
on Computer Vision (ECCV), pp. 285-300. 2018<br />
|
||||||
[[link]](https://arxiv.org/abs/1804.03230) arXiv:1804.03230, 2018.
|
[[link]](https://arxiv.org/abs/1804.03230) arXiv:1804.03230, 2018.
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user