1

I am using TF2 for teeth classification using panoramic X-ray images. The images have been reduced to 640x640 and the annotations scaled accordingly.

The original image looks like this: Sample image in data set

The test run went successful, confirming that the installation process is okay. Then the pre-built model was loaded to restore checkpoint as follows.

Then, the config file changed accordingly as follows:

When executing the training script, I get this error:

...
W0115 08:34:06.106962 139783846991616 deprecation.py:350] From /usr/local/lib/python3.8/dist-packages/tensorflow/python/util/dispatch.py:1176: softmax_cross_entropy_with_logits (from tensorflow.python.ops.nn_ops) is deprecated and will be removed in a future version.
Instructions for updating:

Future major versions of TensorFlow will allow gradients to flow
into the labels input on backprop by default.

See `tf.nn.softmax_cross_entropy_with_logits_v2`.

Traceback (most recent call last):
  File "/content/tensorflow-models/research/object_detection/model_main_tf2.py", line 114, in <module>
    tf.compat.v1.app.run()
  File "/usr/local/lib/python3.8/dist-packages/tensorflow/python/platform/app.py", line 36, in run
    _run(main=main, argv=argv, flags_parser=_parse_flags_tolerate_undef)
  File "/usr/local/lib/python3.8/dist-packages/absl/app.py", line 308, in run
    _run_main(main, args)
  File "/usr/local/lib/python3.8/dist-packages/absl/app.py", line 254, in _run_main
    sys.exit(main(argv))
  File "/content/tensorflow-models/research/object_detection/model_main_tf2.py", line 105, in main
    model_lib_v2.train_loop(
  File "/usr/local/lib/python3.8/dist-packages/object_detection/model_lib_v2.py", line 605, in train_loop
    load_fine_tune_checkpoint(
  File "/usr/local/lib/python3.8/dist-packages/object_detection/model_lib_v2.py", line 407, in load_fine_tune_checkpoint
    ckpt.restore(
  File "/usr/local/lib/python3.8/dist-packages/tensorflow/python/checkpoint/checkpoint.py", line 852, in assert_existing_objects_matched
    raise AssertionError(
AssertionError: Found 265 Python objects that were not bound to checkpointed values, likely due to changes in the Python program. Showing 10 of 265 unmatched objects: [SyncOnReadVariable:{
  0: <tf.Variable 'conv2_block1_3_bn/moving_variance:0' shape=(256,) dtype=float32, numpy=
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
       1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
       1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
       1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
       1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
       1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
       1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
       1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
       1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
       1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
       1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
       1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
       1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
       1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
       1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
       1.], dtype=float32)>
}, MirroredVariable:{
  0: <tf.Variable 'conv4_block2_1_bn/gamma:0' shape=(256,) dtype=float32, numpy=
array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
...

List of libraries and their versions: hdfs-2.7.0; keras-2.11.0; pyyaml-5.4.1; tensorboard-2.11.2; tensorflow-2.11.0

I tried this on Colab, the sequence of code looks something like:

!python object_detection/builders/model_builder_tf2_test.py
!python generate_tfrecord.py --csv_input=images/train/annotation.txt --image_dir=images/train --output_path=train.record
!python generate_tfrecord.py --csv_input=images/test/annotation.txt --image_dir=images/test --output_path=test.record
model_name = faster_rcnn_resnet50
!wget http://download.tensorflow.org/models/object_detection/tf2/20200711/frcnn-resnet152-640
!tar -xf faster_rcnn_resnet50_v1_640x640_coco17_tpu-8.tar.tg

The config file:

num_classes = 6
batch_size = 8
num_steps = 100
num_eval_steps = 100
min_dimension, max_dimension = WIDTH, WIDTH
first_stage_nms_iou_threshold = 0.4
model_name = 'frcnn-resnet152-640'
base_pipeline_file = 'faster_rcnn_resnet50_v1_640x640_coco17_tpu-8.config'

pipeline_filename = '/content/tensorflow-models/research/object_detection/configs/tf2/' + base_pipeline_file
fine_tune_checkpoint = '/content/tensorflow-models/research/object_detection/' + model_name + '/checkpoint/ckpt-0'

# Read a sample config
with open(pipeline_filename) as f:
    config = f.read()

with open('model_config.config', 'w') as f:
    # Set labelmap path
    config = re.sub('label_map_path: ".*?"', 
                    'label_map_path: "labelmap.txt"', config)

    # Set checkpoint path
    config = re.sub('fine_tune_checkpoint: ".*?"',
                    'fine_tune_checkpoint: "{}"'.format(fine_tune_checkpoint), config)  
    # Set fine-tune checkpoint type to detection
    #config = re.sub('fine_tune_checkpoint_type: "classification"', 
    #            'fine_tune_checkpoint_type: "{}"'.format('detection'), config)
    config = re.sub('fine_tune_checkpoint_type: "detection"', 
                'fine_tune_checkpoint_type: "{}"'.format('classification'), config)
    # Set train tf-record file path
    config = re.sub('(input_path: ".*?)(PATH_TO_BE_CONFIGURED/train)(.*?")', 
                    'input_path: "train.record"', config)
    # Set test tf-record file path
    config = re.sub('(input_path: ".*?)(PATH_TO_BE_CONFIGURED/val)(.*?")', 
                    'input_path: "test.record"', config)
    # Set number of classes.
    config = re.sub('num_classes: [0-9]+', 
                    'num_classes: {}'.format(num_classes), config)
    # Set batch size
    config = re.sub('batch_size: [0-9]+',
                    'batch_size: {}'.format(batch_size), config)
    # Set training steps
    config = re.sub('num_steps: [0-9]+',
                    'num_steps: {}'.format(num_steps), config)  
    # Set dimensions
    config = re.sub('min_dimension: [0-9]+',
                    'min_dimension: {}'.format(max_dimension), config)
    config = re.sub('max_dimension: [0-9]+',
                    'max_dimension: {}'.format(min_dimension), config)

    # Set training steps
    config = re.sub('first_stage_nms_iou_threshold: [0-9](.)[0-9]+',
                    'first_stage_nms_iou_threshold: {}'.format(first_stage_nms_iou_threshold), config)  

    f.write(config)

Training command:

model_dir = 'training/'
pipeline_config_path = 'model_config.config'
!python /content/tensorflow-models/research/object_detection/model_main_tf2.py \
    --pipeline_config_path={pipeline_config_path} \
    --model_dir={model_dir} \
    --alsologtostderr \
    --num_train_steps={num_steps} \
    --sample_1_of_n_eval_examples=1 \
    --num_eval_steps={num_eval_steps}

Can somebody help?

seekme_94
  • 162
  • 1
  • 4
  • 17

0 Answers0