Skip to content

Instantly share code, notes, and snippets.

@gaving
Created November 5, 2017 09:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save gaving/751add7887a464476a98d0e70a51d94c to your computer and use it in GitHub Desktop.
Save gaving/751add7887a464476a98d0e70a51d94c to your computer and use it in GitHub Desktop.
curl -X PUT "http://192.168.99.100:8080/services/face" -d ' 8:52
{
"mllib":"caffe",
"description":"face recognition service",
"type":"supervised",
"parameters":{
"input":{
"connector":"image",
"width":224,
"height":224
},
"mllib":{
"nclasses":1000
}
},
"model":{
"templates":"../templates/caffe/",
"repository":"/opt/models/vgg_face_caffe"
}
}'
curl -X POST "http://192.168.99.100:8080/train" -d '{ ツ 8:58
"service":"face",
"async":false,
"parameters":{
"mllib":{
"gpu":false,
"net":{
"batch_size":32
},
"solver":{
"test_interval":500,
"iterations":30000,
"base_lr":0.001,
"stepsize":1000,
"gamma":0.9
}
},
"input":{
"connector":
"image",
"test_split":0.1,
"shuffle":true,
"width":224,
"height":224
},
"output":{
"measure":["acc","mcll","f1"]
}
},
"data":["/opt/models/train"]
}'
mbp:~/Sandbox/dd% ls -R train 8:58
train:
0/
train/0:
1.jpg 2.jpg
INFO - 08:59:36 - A total of 1 images.
ERROR - 08:59:36 - service face training call failed
{"status":{"code":500,"msg":"InternalError","dd_code":1007,"dd_msg":"./include/caffe/util/db_lmdb.hpp:15 / Check failed (custom): (mdb_status) == (0)"}}
'train.lmdb' called but only has a 8k 'lock.mdb' file in.
/opt/models/train/0/1.jpg 1
/opt/models/train/0/2.jpg 2
name: "VGG_ILSVRC_19_layer"
layer {
name: "data"
type: "ImageData"
include {
phase: TRAIN
}
transform_param {
crop_size: 224
mean_value: 104
mean_value: 117
mean_value: 123
mirror: true
}
image_data_param {
source: "/opt/models/vgg_face_caffe/train.txt"
batch_size: 16
new_height: 256
new_width: 256
shuffle:true
}
top: "data"
top: "label"
}
layer {
name: "data"
type: "ImageData"
include {
phase: TEST
}
transform_param {
crop_size: 224
mean_value: 104
mean_value: 117
mean_value: 123
mirror: false
}
image_data_param {
source: "/opt/models/vgg_face_caffe/val.txt"
batch_size: 16
new_height: 256
new_width: 256
shuffle:true
}
top: "data"
top: "label"
}
layer {
bottom: "data"
top: "conv1_1"
name: "conv1_1"
type: "Convolution"
convolution_param {
num_output: 64
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv1_1"
top: "conv1_1"
name: "ReLU1_1"
type: "ReLU"
}
layer {
bottom: "conv1_1"
top: "conv1_2"
name: "conv1_2"
type: "Convolution"
convolution_param {
num_output: 64
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv1_2"
top: "conv1_2"
name: "ReLU1_2"
type: "ReLU"
}
layer {
bottom: "conv1_2"
top: "pool1"
name: "pool1"
type: "Pooling"
pooling_param {
pool: MAX
kernel_size: 2
stride: 2
}
}
layer {
bottom: "pool1"
top: "conv2_1"
name: "conv2_1"
type: "Convolution"
convolution_param {
num_output: 128
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv2_1"
top: "conv2_1"
name: "ReLU2_1"
type: "ReLU"
}
layer {
bottom: "conv2_1"
top: "conv2_2"
name: "conv2_2"
type: "Convolution"
convolution_param {
num_output: 128
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv2_2"
top: "conv2_2"
name: "ReLU2_2"
type: "ReLU"
}
layer {
bottom: "conv2_2"
top: "pool2"
name: "pool2"
type: "Pooling"
pooling_param {
pool: MAX
kernel_size: 2
stride: 2
}
}
layer {
bottom: "pool2"
top: "conv3_1"
name: "conv3_1"
type: "Convolution"
convolution_param {
num_output: 256
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv3_1"
top: "conv3_1"
name: "ReLU3_1"
type: "ReLU"
}
layer {
bottom: "conv3_1"
top: "conv3_2"
name: "conv3_2"
type: "Convolution"
convolution_param {
num_output: 256
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv3_2"
top: "conv3_2"
name: "ReLU3_2"
type: "ReLU"
}
layer {
bottom: "conv3_2"
top: "conv3_3"
name: "conv3_3"
type: "Convolution"
convolution_param {
num_output: 256
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv3_3"
top: "conv3_3"
name: "ReLU3_3"
type: "ReLU"
}
layer {
bottom: "conv3_3"
top: "conv3_4"
name: "conv3_4"
type: "Convolution"
convolution_param {
num_output: 256
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv3_4"
top: "conv3_4"
name: "ReLU3_4"
type: "ReLU"
}
layer {
bottom: "conv3_4"
top: "pool3"
name: "pool3"
type: "Pooling"
pooling_param {
pool: MAX
kernel_size: 2
stride: 2
}
}
layer {
bottom: "pool3"
top: "conv4_1"
name: "conv4_1"
type: "Convolution"
convolution_param {
num_output: 512
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv4_1"
top: "conv4_1"
name: "ReLU4_1"
type: "ReLU"
}
layer {
bottom: "conv4_1"
top: "conv4_2"
name: "conv4_2"
type: "Convolution"
convolution_param {
num_output: 512
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv4_2"
top: "conv4_2"
name: "ReLU4_2"
type: "ReLU"
}
layer {
bottom: "conv4_2"
top: "conv4_3"
name: "conv4_3"
type: "Convolution"
convolution_param {
num_output: 512
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv4_3"
top: "conv4_3"
name: "ReLU4_3"
type: "ReLU"
}
layer {
bottom: "conv4_3"
top: "conv4_4"
name: "conv4_4"
type: "Convolution"
convolution_param {
num_output: 512
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv4_4"
top: "conv4_4"
name: "ReLU4_4"
type: "ReLU"
}
layer {
bottom: "conv4_4"
top: "pool4"
name: "pool4"
type: "Pooling"
pooling_param {
pool: MAX
kernel_size: 2
stride: 2
}
}
layer {
bottom: "pool4"
top: "conv5_1"
name: "conv5_1"
type: "Convolution"
convolution_param {
num_output: 512
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv5_1"
top: "conv5_1"
name: "ReLU5_1"
type: "ReLU"
}
layer {
bottom: "conv5_1"
top: "conv5_2"
name: "conv5_2"
type: "Convolution"
convolution_param {
num_output: 512
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv5_2"
top: "conv5_2"
name: "ReLU5_2"
type: "ReLU"
}
layer {
bottom: "conv5_2"
top: "conv5_3"
name: "conv5_3"
type: "Convolution"
convolution_param {
num_output: 512
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv5_3"
top: "conv5_3"
name: "ReLU5_3"
type: "ReLU"
}
layer {
bottom: "conv5_3"
top: "conv5_4"
name: "conv5_4"
type: "Convolution"
convolution_param {
num_output: 512
pad: 1
kernel_size: 3
}
}
layer {
bottom: "conv5_4"
top: "conv5_4"
name: "ReLU5_4"
type: "ReLU"
}
layer {
bottom: "conv5_4"
top: "pool5"
name: "pool5"
type: "Pooling"
pooling_param {
pool: MAX
kernel_size: 2
stride: 2
}
}
layer {
bottom: "pool5"
top: "fc6"
name: "fc6"
type: "InnerProduct"
inner_product_param {
num_output: 4096
}
}
layer {
bottom: "fc6"
top: "fc6"
name: "ReLU6"
type: "ReLU"
}
layer {
bottom: "fc6"
top: "fc6"
name: "drop6"
type: "Dropout"
dropout_param {
dropout_ratio: 0.5
}
}
layer {
bottom: "fc6"
top: "fc7"
name: "fc7"
type: "InnerProduct"
inner_product_param {
num_output: 4096
}
}
layer {
bottom: "fc7"
top: "fc7"
name: "ReLU7"
type: "ReLU"
}
layer {
bottom: "fc7"
top: "fc7"
name: "drop7"
type: "Dropout"
dropout_param {
dropout_ratio: 0.5
}
}
layer {
name: "fc8_foodCAT"
bottom: "fc7"
top: "fc8_foodCAT"
type: "InnerProduct"
inner_product_param {
num_output: 218
}
}
layer {
name: "loss"
type: "SoftmaxWithLoss"
bottom: "fc8_foodCAT"
bottom: "label"
top: "loss/loss"
}
layer {
name: "accuracy/top1"
type: "Accuracy"
bottom: "fc8_foodCAT"
bottom: "label"
top: "accuracy@1"
include: { phase: TEST }
accuracy_param {
top_k: 1
}
}
layer {
name: "accuracy/top5"
type: "Accuracy"
bottom: "fc8_foodCAT"
bottom: "label"
top: "accuracy@5"
include: { phase: TEST }
accuracy_param {
top_k: 5
}
}
/opt/models/train/0/1.jpg 1
/opt/models/train/0/2.jpg 2
net: "/opt/models/vgg_face_caffe/train_val.prototxt"
test_iter: 1000
test_interval: 2500
base_lr: 0.001
lr_policy: "step"
gamma: 0.1
stepsize: 50000
display: 20
max_iter: 200000
momentum: 0.9
weight_decay: 0.0005
snapshot: 10000
snapshot_prefix: "/opt/models/vgg_face_caffe/train_vgg_face"
solver_mode: CPU
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment