Coder Social home page Coder Social logo

faceboxes-tensorflow's People

Contributors

tropcomplique avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

faceboxes-tensorflow's Issues

Is it applicable to add landmark detection in this network

According to the paper, Faceboxes seems a good replacement of MTCNN in Face Detection Area. But MTCNN has a built in landmark detection, I wonder it is applicable to change faceboxes into a joint multi task network just like MTCNN?

Also Any idea about filling the performance gap between this implementation and the caffe one?

Thanks

Check whether your GraphDef-interpreting binary is up to date with your GraphDef-generating binary.

I used tf with version 1.4 before,but when I run the try_detector.py, it raised the error:
ValueError: No op named NonMaxSuppressionV3 in defined operations.
Then I updated my tf version from 1.4 to 1.8, but it raises another error:
ValueError: NodeDef mentions attr 'Truncate' not in Op<name=Cast; signature=x:SrcT -> y:DstT; attr=SrcT:type; attr=DstT:type>; NodeDef: import/anchor_generator/ToFloat_34 = CastDstT=DT_FLOAT, SrcT=DT_INT32, Truncate=false.
Some people with the some issue suggest that the lower version of tf 1.10 can resolve the problem.But it will bring the issue before. How can i reslove the issue? Is it related with the system? I use win and the model was created on linux?

Transfer Learning.

Would it be possible to do transfer learning to detect cars with this model ?
How much data would be necessary to do so?

Inference Problem

I am trying to train the model on new data, after training I save the model into .pb file using save.py and create_pb.py but I am facing a problem, whenever I use the new .pb file I get this error

InvalidArgumentError: Graph execution error:

Op type not registered 'nms_map_while_cond_2048' in binary running on 3cece289dc39. Make sure the Op and Kernel are registered in the binary running in this process. Note that if you are loading a saved graph which used ops from tf.contrib, accessing (e.g.) tf.contrib.resampler should be done before importing the graph, as contrib ops are lazily registered when the module is first accessed. while building NodeDef 'import/nms/map/while/cond/_0'

Note that I am not using tf.contrib as it's deprecated so I use tf.slim instead
Can you please help me with this error? I don't understand the cause of it or how to solve it

Tensorflow question

Hellol,.i have some qusetion about the file evaluation_utils.py
You use py_func API to write your own metric, but i don't see any global variable to contain the history information about the evaluation, which can be used to calculate the accuracy on the whole evaluation set.
So is the evaluation output only refer to one random image in the evaluation set?
Please help me, thank you.

Speed of detected

Hello, can you say me please, i've detected a face. but it's to slow about 0,6-1.1 secs. If is it the a general problem of faceboxes or just my code is wrong?

Understanding inference

Currently I am trying to understand the inference part of the Faceboxes. I actually tried visualizing it using Tensorboard as well as the frozen graph. But I was only able to get the overall picture, but not the entire scenario. So I am trying to understand this with some print statements that output the tensor values. I am feeding images from the wider face dataset as prescribed while training. For the inference to happen, I have changed def get_input_fn(is_training=True): to def get_input_fn(is_training=False): . But in both the cases all the nodes are getting executed. I am not able to differentiate between the training and evaluation nodes. How to do that?

Any help would be appreciated!!!!

Question about training

Hi there! Thanks for this repo! I'm trying to reimplement everything from scratch in my own repository (https://github.com/96imranahmed/faceboxes_tf) but I've been running into some difficulties and was wondering if you had come across any of these errors before?

Essentially, my main problem is that the model seems to train normally for the first 2000 iterations (with similar magnitudes to the plot that you have in the repo README). However, after a certain point, the regression losses explode - with the model predicting very large values for bounding box offsets + heights/widths (i.e. with values in the 1000s). This causes the model's loss to effectively spiral out of control and the model requires another few thousand iterations to 'reset' back to the same point (before the same problem re-occurs).

I was wondering whether you had experienced this while training your version of Faceboxes? The occurrence of this issue is really stumping me, as the model does seem to be learning relatively well until this failure occurs. It'd be great to hear if you've run into this before/how you got around it!

Thanks! :)

Understanding ops under reshaping scope

Under reshaping scope:

with tf.name_scope('reshaping'):

Why is 2 reshapes is needed here:

y = tf.reshape(y, tf.stack([batch_size, height_i, width_i, num_predictions_per_location, 4]))

And why list is stacked via tf.stack?

y = tf.reshape(y, tf.stack([batch_size, height_i, width_i, num_predictions_per_location, 4]))

And here:

y = tf.reshape(y, [batch_size, height_i, width_i, num_predictions_per_location, 2])

Order of with tf.stack and without is different.

Converting to tf-coreml

I'm trying to find out endpoints of model like is done here:
https://github.com/tf-coreml/tf-coreml/blob/master/examples/ssd_example.ipynb

Cause using default input/output node names produce error:

input_tensor_shapes {'image_tensor:0': [1, 256, 256, 3]}
output_tensor_names ['boxes:0', 'scores:0', 'num_boxes:0']

Loading the TF graph...
Graph Loaded.
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-15-3268ebb54f92> in <module>
     18         mlmodel_path=coreml_model_file,
     19         input_name_shape_dict=input_tensor_shapes,
---> 20         output_feature_names=output_tensor_names)

/usr/local/lib/python3.6/site-packages/tfcoreml/_tf_coreml_converter.py in convert(tf_model_path, mlmodel_path, output_feature_names, input_name_shape_dict, image_input_names, is_bgr, red_bias, green_bias, blue_bias, gray_bias, image_scale, class_labels, predicted_feature_name, predicted_probabilities_output, add_custom_layers, custom_conversion_functions)
    584       predicted_probabilities_output=predicted_probabilities_output,
    585       add_custom_layers=add_custom_layers,
--> 586       custom_conversion_functions=custom_conversion_functions)

/usr/local/lib/python3.6/site-packages/tfcoreml/_tf_coreml_converter.py in _convert_pb_to_mlmodel(tf_model_path, mlmodel_path, output_feature_names, input_name_shape_dict, image_input_names, is_bgr, red_bias, green_bias, blue_bias, gray_bias, image_scale, class_labels, predicted_feature_name, predicted_probabilities_output, add_custom_layers, custom_conversion_functions)
    165   print('Graph Loaded.')
    166   # Sort the ops in topological order and check whether the graph has cycles, if yes, error out
--> 167   OPS = _topological_sort_ops(OPS)
    168 
    169   SHAPE_DICT = {} #Tensor name --> shape ({str: list})

/usr/local/lib/python3.6/site-packages/tfcoreml/_tf_graph_transform.py in _topological_sort_ops(ops)
    192       node = _get_unvisited_child(G, stack[-1], not_visited)
    193       if node != -1:
--> 194         _push_stack(stack, node, in_stack)
    195       else:
    196         node = stack.pop()

/usr/local/lib/python3.6/site-packages/tfcoreml/_tf_graph_transform.py in _push_stack(stack, node, in_stack)
     36   stack.append(node)
     37   if node in in_stack:
---> 38     raise ValueError('Graph has cycles.')
     39   else:
     40     in_stack[node] = True

ValueError: Graph has cycles.

Screenshot 2019-03-14 at 14 39 35

On graph last block before nms is preprocessing, but I'm not sure what is output_tensor_names should be used.

I have tried to print node dimensions:

with tf.Graph().as_default() as graph:
    tf.import_graph_def(original_gdef, name='')
    for op in graph.get_operations():
        if 'postprocessing' in op.name:
            print('-'*60)
            print('str(op.name)', str(op.name))
            print('len(op.values())', len(op.values()))
            try:
                for i in range(len(op.values())):
                    print('op.values()[i].get_shape().as_list()', op.values()[i].get_shape().as_list())
            except:
                for i in range(len(op.values())):
                    print('op.values()[i].get_shape()', op.values()[i].get_shape())

Output:

------------------------------------------------------------
str(op.name) postprocessing/Shape
len(op.values()) 1
op.values()[i].get_shape().as_list() [3]
------------------------------------------------------------
str(op.name) postprocessing/strided_slice/stack
len(op.values()) 1
op.values()[i].get_shape().as_list() [1]
------------------------------------------------------------
str(op.name) postprocessing/strided_slice/stack_1
len(op.values()) 1
op.values()[i].get_shape().as_list() [1]
------------------------------------------------------------
str(op.name) postprocessing/strided_slice/stack_2
len(op.values()) 1
op.values()[i].get_shape().as_list() [1]
------------------------------------------------------------
str(op.name) postprocessing/strided_slice
len(op.values()) 1
op.values()[i].get_shape().as_list() []
------------------------------------------------------------
str(op.name) postprocessing/Shape_1
len(op.values()) 1
op.values()[i].get_shape().as_list() [3]
------------------------------------------------------------
str(op.name) postprocessing/strided_slice_1/stack
len(op.values()) 1
op.values()[i].get_shape().as_list() [1]
------------------------------------------------------------
str(op.name) postprocessing/strided_slice_1/stack_1
len(op.values()) 1
op.values()[i].get_shape().as_list() [1]
------------------------------------------------------------
str(op.name) postprocessing/strided_slice_1/stack_2
len(op.values()) 1
op.values()[i].get_shape().as_list() [1]
------------------------------------------------------------
str(op.name) postprocessing/strided_slice_1
len(op.values()) 1
op.values()[i].get_shape().as_list() []
------------------------------------------------------------
str(op.name) postprocessing/ExpandDims/dim
len(op.values()) 1
op.values()[i].get_shape().as_list() []
------------------------------------------------------------
str(op.name) postprocessing/ExpandDims
len(op.values()) 1
op.values()[i].get_shape().as_list() [1, 1364, 4]
------------------------------------------------------------
str(op.name) postprocessing/Tile/multiples/1
len(op.values()) 1
op.values()[i].get_shape().as_list() []
------------------------------------------------------------
str(op.name) postprocessing/Tile/multiples/2
len(op.values()) 1
op.values()[i].get_shape().as_list() []
------------------------------------------------------------
str(op.name) postprocessing/Tile/multiples
len(op.values()) 1
op.values()[i].get_shape().as_list() [3]
------------------------------------------------------------
str(op.name) postprocessing/Tile
len(op.values()) 1
op.values()[i].get_shape().as_list() [None, 1364, 4]
------------------------------------------------------------
str(op.name) postprocessing/Reshape/shape
len(op.values()) 1
op.values()[i].get_shape().as_list() [2]
------------------------------------------------------------
str(op.name) postprocessing/Reshape
len(op.values()) 1
op.values()[i].get_shape().as_list() [None, 4]
------------------------------------------------------------
str(op.name) postprocessing/Reshape_1/shape
len(op.values()) 1
op.values()[i].get_shape().as_list() [2]
------------------------------------------------------------
str(op.name) postprocessing/Reshape_1
len(op.values()) 1
op.values()[i].get_shape().as_list() [None, 4]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/unstack
len(op.values()) 4
op.values()[i].get_shape().as_list() [None]
op.values()[i].get_shape().as_list() [None]
op.values()[i].get_shape().as_list() [None]
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/to_center_coordinates/sub
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/to_center_coordinates/sub_1
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/to_center_coordinates/mul/x
len(op.values()) 1
op.values()[i].get_shape().as_list() []
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/to_center_coordinates/mul
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/to_center_coordinates/add
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/to_center_coordinates/mul_1/x
len(op.values()) 1
op.values()[i].get_shape().as_list() []
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/to_center_coordinates/mul_1
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/to_center_coordinates/add_1
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/unstack_1
len(op.values()) 4
op.values()[i].get_shape().as_list() [None]
op.values()[i].get_shape().as_list() [None]
op.values()[i].get_shape().as_list() [None]
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/truediv/y
len(op.values()) 1
op.values()[i].get_shape().as_list() []
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/truediv
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/truediv_1/y
len(op.values()) 1
op.values()[i].get_shape().as_list() []
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/truediv_1
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/truediv_2/y
len(op.values()) 1
op.values()[i].get_shape().as_list() []
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/truediv_2
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/truediv_3/y
len(op.values()) 1
op.values()[i].get_shape().as_list() []
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/truediv_3
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/Exp
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/mul
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/Exp_1
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/mul_1
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/mul_2
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/add
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/mul_3
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/add_1
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/to_minmax_coordinates/mul/x
len(op.values()) 1
op.values()[i].get_shape().as_list() []
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/to_minmax_coordinates/mul
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/to_minmax_coordinates/sub
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/to_minmax_coordinates/mul_1/x
len(op.values()) 1
op.values()[i].get_shape().as_list() []
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/to_minmax_coordinates/mul_1
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/to_minmax_coordinates/sub_1
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/to_minmax_coordinates/mul_2/x
len(op.values()) 1
op.values()[i].get_shape().as_list() []
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/to_minmax_coordinates/mul_2
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/to_minmax_coordinates/add
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/to_minmax_coordinates/mul_3/x
len(op.values()) 1
op.values()[i].get_shape().as_list() []
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/to_minmax_coordinates/mul_3
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/to_minmax_coordinates/add_1
len(op.values()) 1
op.values()[i].get_shape().as_list() [None]
------------------------------------------------------------
str(op.name) postprocessing/decode_predictions/stack
len(op.values()) 1
op.values()[i].get_shape().as_list() [None, 4]
------------------------------------------------------------
str(op.name) postprocessing/Reshape_2/shape/2
len(op.values()) 1
op.values()[i].get_shape().as_list() []
------------------------------------------------------------
str(op.name) postprocessing/Reshape_2/shape
len(op.values()) 1
op.values()[i].get_shape().as_list() [3]
------------------------------------------------------------
str(op.name) postprocessing/Reshape_2
len(op.values()) 1
op.values()[i].get_shape().as_list() [None, None, 4]
------------------------------------------------------------
str(op.name) postprocessing/clip_by_value/Minimum/y
len(op.values()) 1
op.values()[i].get_shape().as_list() []
------------------------------------------------------------
str(op.name) postprocessing/clip_by_value/Minimum
len(op.values()) 1
op.values()[i].get_shape().as_list() [None, None, 4]
------------------------------------------------------------
str(op.name) postprocessing/clip_by_value/y
len(op.values()) 1
op.values()[i].get_shape().as_list() []
------------------------------------------------------------
str(op.name) postprocessing/clip_by_value
len(op.values()) 1
op.values()[i].get_shape().as_list() [None, None, 4]
------------------------------------------------------------
str(op.name) postprocessing/truediv
len(op.values()) 1
op.values()[i].get_shape().as_list() [None, None, 4]
------------------------------------------------------------
str(op.name) postprocessing/clip_by_value_1/Minimum/y
len(op.values()) 1
op.values()[i].get_shape().as_list() []
------------------------------------------------------------
str(op.name) postprocessing/clip_by_value_1/Minimum
len(op.values()) 1
op.values()[i].get_shape().as_list() [None, None, 4]
------------------------------------------------------------
str(op.name) postprocessing/clip_by_value_1/y
len(op.values()) 1
op.values()[i].get_shape().as_list() []
------------------------------------------------------------
str(op.name) postprocessing/clip_by_value_1
len(op.values()) 1
op.values()[i].get_shape().as_list() [None, None, 4]
------------------------------------------------------------
str(op.name) postprocessing/Softmax
len(op.values()) 1
op.values()[i].get_shape().as_list() [None, None, 2]
------------------------------------------------------------
str(op.name) postprocessing/strided_slice_2/stack
len(op.values()) 1
op.values()[i].get_shape().as_list() [3]
------------------------------------------------------------
str(op.name) postprocessing/strided_slice_2/stack_1
len(op.values()) 1
op.values()[i].get_shape().as_list() [3]
------------------------------------------------------------
str(op.name) postprocessing/strided_slice_2/stack_2
len(op.values()) 1
op.values()[i].get_shape().as_list() [3]
------------------------------------------------------------
str(op.name) postprocessing/strided_slice_2
len(op.values()) 1
op.values()[i].get_shape().as_list() [None, None]

But I can't find out any meaningfull node name:

These looks like bboxes:

str(op.name) postprocessing/Tile
len(op.values()) 1
op.values()[i].get_shape().as_list() [None, 1364, 4]

str(op.name) postprocessing/ExpandDims
len(op.values()) 1
op.values()[i].get_shape().as_list() [1, 1364, 4]

Is it true that for 256x256 image we have 1364 bboxes?

With same approach I found node:

------------------------------------------------------------
str(op.name) postprocessing/Softmax
len(op.values()) 1
op.values()[i].get_shape().as_list() [None, None, 2]

But not sure why it have shape [None, None, 2]?

Also here is postprocessing scope:

with tf.name_scope('postprocessing'):

It should have output boxes with [batch_size, num_anchors, 4] shape and scores with [batch_size, num_anchors] shape.

加载模型失败

File "main.py", line 11, in
face_detector = FaceDetector(MODEL_PATH, gpu_memory_fraction=0.6, visible_device_list='0')
File "F:\FaceBoxes-tensorflow\face_detector.py", line 19, in init
graph_def.ParseFromString(f.read())
File "D:\Anaconda3\envs\tensorflow1.1\lib\site-packages\tensorflow\python\lib\io\file_io.py", line 125, in read
self._preread_check()
File "D:\Anaconda3\envs\tensorflow1.1\lib\site-packages\tensorflow\python\lib\io\file_io.py", line 85, in _preread_check
compat.as_bytes(self.__name), 1024 * 512, status)
File "D:\Anaconda3\envs\tensorflow1.1\lib\site-packages\tensorflow\python\framework\errors_impl.py", line 519, in exit
c_api.TF_GetCode(self.status.status))
tensorflow.python.framework.errors_impl.NotFoundError: NewRandomAccessFile failed to Create/Open: model/model.pb : \u03f5\u0373\udcd5\u04b2\udcbb\udcb5\udcbd\u05b8\udcb6\udca8\udcb5\udcc4·\udcbe\udcb6\udca1\udca3
; No such process

why cannot obtain right pb file by save.py and the create_pb.py?

I can obtain the pb file by save.py and the create_pb.py with the model.ckpt-240000 (downloading).
But, I can not get the right prediction results by try_detector.ipynb and face_detector.py with the pb file.
However, I can get the right prediction results with the model-step-240000.pb (downloading).
So, when obtain the pb file by save.py and the create_pb.py, any tricks or special operations need to be paid attention to?
Thanks!

Question about training

In pipeline.py / def _augmentation_fn(self, image, boxes):

The function random_image_crop() outputs the cropped image and boxes, then you resize the image without adjust the boxes. I think the resize op leads to mismatch.

NMS after inference

HI,
Why its not needed to perform NMS after getting bounding?
How the model is performing so well?
Thanks!!

Understanding NMS from the frozen graph

In model.pb NMS used is different from that of the conventional one. Usually, we choose a score threshold of 0.5 to select the boxes and then will perform NMS to get rid of the redundant boxes with some predefined NMS threshold. But here we will be doing NMS first and then will select the boxes with scores greater than 0.5. Why it is done like that?. Also how are you selecting 200 boxes after NMS? Can you please enlighten us about the process being followed for the NMS. What is the importance of the Tensorarray with 149 values like 10,44,47 and so on? How it affects the NMS?

Any help would be appreciated!!!

problem of running train.py

After running create_tfrecords.py,I tried to run train.py,but its speed was very slow,just 40000+ steps for three days,was there something that i didn't realize?

Issues running the save.py file

Hi I get the following error:

TypeError: Values passed to parameter 'x' has a DataType of int32 not in the list of allowed values: bfloat16, float16, float32, float64

Anyone else faced a similar issue? Any pointers will really help.

Regards,
Harsh

Quantize the model

Hi @TropComplique ,

Have you ever tried to quantize the model by Quantization-aware training? If so, how is the result?

I am trying to create_training_graph in model.py at line 72 like this.
assert mode == tf.estimator.ModeKeys.TRAIN tf.contrib.quantize.create_training_graph(quant_delay=100000)
Since I am not familiar with tf.estimator. I don't quite know where to add
tf.contrib.quantize.create_eval_graph()
to export a quantized graph before a savedmodel.

Or do I need to rewrite the project without tf.estimator.

If you get any ideas, please let me know.

Thanks a lot.

Logical question from paper

Hi,
I have been working on the implementation of faceboxes in pytorch.
The most confusing part is the densification part for me.
So output of first layer is 21 anchors.
So for 32 scale they have 16 anchors, but how is each anchor steps defined?

like for 32 its written 32 steps between each anchor, but that makes density low, so they densify it 4 (or 16?) times but at what steps?

about the advice of small face

thanks for your jobs! the faceboxes doesn't work well on small face as you warning in Notes 1, it's kind of you for advice of 'But you can improve its performance if you upscale images before feeding them to the network.For example, resize an image keeping its aspect ratio so its smaller dimension is 768.', I can't understand well about this, do you have some Literature or code about this? thank you very much

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.