开源软件名称(OpenSource Name): shicai/MobileNet-Caffe开源软件地址(OpenSource Url): https://github.com/shicai/MobileNet-Caffe开源编程语言(OpenSource Language):
Python
100.0%
开源软件介绍(OpenSource Introduction): MobileNet-Caffe
Introduction
This is a Caffe implementation of Google's MobileNets (v1 and v2). For details, please read the following papers:
Pretrained Models on ImageNet
We provide pretrained MobileNet models on ImageNet, which achieve slightly better accuracy rates than the original ones reported in the paper.
The top-1/5 accuracy rates by using single center crop (crop size: 224x224, image size: 256xN):
Network
Top-1
Top-5
sha256sum
Architecture
MobileNet v1
70.81
89.85
8d6edcd3 (16.2 MB)
netscope , netron
MobileNet v2
71.90
90.49
a3124ce7 (13.5 MB)
netscope , netron
Evaluate Models with a single image
Evaluate MobileNet v1:
python eval_image.py --proto mobilenet_deploy.prototxt --model mobilenet.caffemodel --image ./cat.jpg
Expected Outputs:
0.42 - 'n02123159 tiger cat'
0.08 - 'n02119022 red fox, Vulpes vulpes'
0.07 - 'n02119789 kit fox, Vulpes macrotis'
0.06 - 'n02113023 Pembroke, Pembroke Welsh corgi'
0.06 - 'n02123045 tabby, tabby cat'
Evaluate MobileNet v2:
python eval_image.py --proto mobilenet_v2_deploy.prototxt --model mobilenet_v2.caffemodel --image ./cat.jpg
Expected Outputs:
0.26 - 'n02123159 tiger cat'
0.22 - 'n02124075 Egyptian cat'
0.15 - 'n02123045 tabby, tabby cat'
0.04 - 'n02119022 red fox, Vulpes vulpes'
0.02 - 'n02326432 hare'
Finetuning on your own data
Modify deploy.prototxt
and save it as your train.prototxt
as follows:
Remove the first 5 input
/input_dim
lines, and add Image Data
layer in the beginning like this:
layer {
name: "data"
type: "ImageData"
top: "data"
top: "label"
include {
phase: TRAIN
}
transform_param {
scale: 0.017
mirror: true
crop_size: 224
mean_value: [103.94, 116.78, 123.68]
}
image_data_param {
source: "your_list_train_txt"
batch_size: 32 # your batch size
new_height: 256
new_width: 256
root_folder: "your_path_to_training_data_folder"
}
}
Remove the last prob
layer, and add Loss
and Accuracy
layers in the end like this:
layer {
name: "loss"
type: "SoftmaxWithLoss"
bottom: "fc7"
bottom: "label"
top: "loss"
}
layer {
name: "top1/acc"
type: "Accuracy"
bottom: "fc7"
bottom: "label"
top: "top1/acc"
include {
phase: TEST
}
}
layer {
name: "top5/acc"
type: "Accuracy"
bottom: "fc7"
bottom: "label"
top: "top5/acc"
include {
phase: TEST
}
accuracy_param {
top_k: 5
}
}
Related Projects
MobileNet in this repo has been used in the following projects, we recommend you to take a look:
Updates (Feb. 5, 2018)
Add pretrained MobileNet v2 models (including deploy.prototxt and weights)
Hold pretrained weights in this repo
Add sha256sum code for pretrained weights
Add some code snippets for single image evaluation
Uncomment engine: CAFFE used in mobilenet_deploy.prototxt
Add params (lr_mult
and decay_mult
) for Scale
layers of mobilenet_deploy.prototxt
Add prob
layer for mobilenet_deploy.prototxt
请发表评论