ParseError: 172:3 : Message type "object_detection.protos.TrainConfig" has no field named "fine_tune_checkpoint_version"
@JT-Studios Could you please make sure that you are using the latest version of OD api and try to remove the "fine_tune_checkpoint_version" field from your configuration file ?
In order to expedite the trouble-shooting process, please provide a code snippet to reproduce the issue reported here. 

Thank you! I have resolved the issue @JT-Studios Thank you for the update!
Could you please move this issue to closed status if it is resolved ?
Thank you! Are you satisfied with the resolution of your issue?
<a href="https://docs.google.com/forms/d/e/1FAIpQLSfaP12TRhd9xSxjXZjcZFNXPGk4kc1-qMdv3gc6bEP90vY1ew/viewform?entry.85265664=Yes&entry.2137816233=https://github.com/tensorflow/tensorflow/issues/62396">Yes</a>
<a href="https://docs.google.com/forms/d/e/1FAIpQLSfaP12TRhd9xSxjXZjcZFNXPGk4kc1-qMdv3gc6bEP90vY1ew/viewform?entry.85265664=No&entry.2137816233=https://github.com/tensorflow/tensorflow/issues/62396">No</a>
 @sushreebarsa 

Thanks for the help! Did a few things and this error is appearing again. Same error. I had to reinstalling my virtual environment due to other errors. I tried to update OB api but now my protobuf is broken. Ok I solved this. same solution as last time I'm such and idiot. Thanks for the advice again Are you satisfied with the resolution of your issue?
<a href="https://docs.google.com/forms/d/e/1FAIpQLSfaP12TRhd9xSxjXZjcZFNXPGk4kc1-qMdv3gc6bEP90vY1ew/viewform?entry.85265664=Yes&entry.2137816233=https://github.com/tensorflow/tensorflow/issues/62396">Yes</a>
<a href="https://docs.google.com/forms/d/e/1FAIpQLSfaP12TRhd9xSxjXZjcZFNXPGk4kc1-qMdv3gc6bEP90vY1ew/viewform?entry.85265664=No&entry.2137816233=https://github.com/tensorflow/tensorflow/issues/62396">No</a>
 > I have resolved the issue

can you please share your solution , since i am facing the same issue
 @shravani1115  Yeah Could you please share the code that you are using as well as a shortned version of the error > @shravani1115 Yeah Could you please share the code that you are using as well as a shortned version of the error

Yes Sure!

**This is the error I am facing**

ParseError                                Traceback (most recent call last)
Cell In[23], line 1
----> 1 config = config_util.get_configs_from_pipeline_file(CONFIG_PATH)

File ~\AppData\Local\Programs\Python\Python310\lib\site-packages\object_detection\utils\config_util.py:98, in get_configs_from_pipeline_file(pipeline_config_path, config_override)
     96 with tf.io.gfile.GFile(pipeline_config_path, "r") as f:
     97   proto_str = f.read()
---> 98   text_format.Merge(proto_str, pipeline_config)
     99 if config_override:
    100   text_format.Merge(config_override, pipeline_config)

File ~\AppData\Local\Programs\Python\Python310\lib\site-packages\google\protobuf\text_format.py:719, in Merge(text, message, allow_unknown_extension, allow_field_number, descriptor_pool, allow_unknown_field)
    690 def Merge(text,
    691           message,
    692           allow_unknown_extension=False,
    693           allow_field_number=False,
    694           descriptor_pool=None,
    695           allow_unknown_field=False):
    696   """Parses a text representation of a protocol message into a message.
    697 
    698   Like Parse(), but allows repeated values for a non-repeated field, and uses
   (...)
    717     ParseError: On text parsing problems.
    718   """
--> 719   return MergeLines(
    720       text.split(b'\n' if isinstance(text, bytes) else u'\n'),
    721       message,
    722       allow_unknown_extension,
    723       allow_field_number,
    724       descriptor_pool=descriptor_pool,
    725       allow_unknown_field=allow_unknown_field)

File ~\AppData\Local\Programs\Python\Python310\lib\site-packages\google\protobuf\text_format.py:793, in MergeLines(lines, message, allow_unknown_extension, allow_field_number, descriptor_pool, allow_unknown_field)
    768 """Parses a text representation of a protocol message into a message.
    769 
    770 See Merge() for more details.
   (...)
    787   ParseError: On text parsing problems.
    788 """
    789 parser = _Parser(allow_unknown_extension,
    790                  allow_field_number,
    791                  descriptor_pool=descriptor_pool,
    792                  allow_unknown_field=allow_unknown_field)
--> 793 return parser.MergeLines(lines, message)

File ~\AppData\Local\Programs\Python\Python310\lib\site-packages\google\protobuf\text_format.py:818, in _Parser.MergeLines(self, lines, message)
    816 """Merges a text representation of a protocol message into a message."""
    817 self._allow_multiple_scalars = True
--> 818 self._ParseOrMerge(lines, message)
    819 return message

File ~\AppData\Local\Programs\Python\Python310\lib\site-packages\google\protobuf\text_format.py:837, in _Parser._ParseOrMerge(self, lines, message)
    835 tokenizer = Tokenizer(str_lines)
    836 while not tokenizer.AtEnd():
--> 837   self._MergeField(tokenizer, message)

File ~\AppData\Local\Programs\Python\Python310\lib\site-packages\google\protobuf\text_format.py:967, in _Parser._MergeField(self, tokenizer, message)
    964         tokenizer.Consume(',')
    966   else:
--> 967     merger(tokenizer, message, field)
    969 else:  # Proto field is unknown.
    970   assert (self.allow_unknown_extension or self.allow_unknown_field)

File ~\AppData\Local\Programs\Python\Python310\lib\site-packages\google\protobuf\text_format.py:1042, in _Parser._MergeMessageField(self, tokenizer, message, field)
   1040   if tokenizer.AtEnd():
   1041     raise tokenizer.ParseErrorPreviousToken('Expected "%s".' % (end_token,))
-> 1042   self._MergeField(tokenizer, sub_message)
   1044 if is_map_entry:
   1045   value_cpptype = field.message_type.fields_by_name['value'].cpp_type

File ~\AppData\Local\Programs\Python\Python310\lib\site-packages\google\protobuf\text_format.py:932, in _Parser._MergeField(self, tokenizer, message)
    929       field = None
    931   if not field and not self.allow_unknown_field:
--> 932     raise tokenizer.ParseErrorPreviousToken(
    933         'Message type "%s" has no field named "%s".' %
    934         (message_descriptor.full_name, name))
    936 if field:
    937   if not self._allow_multiple_scalars and field.containing_oneof:
    938     # Check if there's a different field set in this oneof.
    939     # Note that we ignore the case if the same field was set before, and we
    940     # apply _allow_multiple_scalars to non-scalar fields as well.

ParseError: 172:3 : Message type "object_detection.protos.TrainConfig" has no field named "fine_tune_checkpoint_version".


**this is the code** 

import tensorflow as tf
from object_detection.utils import config_util
from object_detection.protos import pipeline_pb2
from google.protobuf import text_format

CONFIG_PATH = MODEL_PATH+'/'+CUSTOM_MODEL_NAME+'/pipeline.config'

config = config_util.get_configs_from_pipeline_file(CONFIG_PATH)

please help me out



 @shravani1115  Okay, find your pipeline.config and deleate the line that says fine_tune_checkpoint_version v2 or something along those lines. If this dosn't fix the issue make sure you have the right pipeline.config open as something there can be muytiple. By the where did this code come from? Thank you error solved!!  I am referring the youtube  video 
 > Thank you error solved!! I am referring the youtube video

can you tell me how to solve this problem please

### Issue type

Others

### Have you reproduced the bug with TensorFlow Nightly?

No

### Source

source

### TensorFlow version

v2.15.0-rc0-8-g2a4ec940bac 2.15.0-rc1

### Custom code

Yes

### OS platform and distribution

MacOS 14

### Mobile device

_No response_

### Python version

Python 3.9.12

### Bazel version

_No response_

### GCC/compiler version

_No response_

### CUDA/cuDNN version

_No response_

### GPU model and memory

_No response_

### Current behavior?

I tyr to run this script on Jupyter notebook to set my training model:
config = config_util.get_configs_from_pipeline_file(files['PIPELINE_CONFIG'])


### Standalone code to reproduce the issue

```shell
I am using the popular tensor flow object detection course in 5 hours

when I try to run 
config = config_util.get_configs_from_pipeline_file(files['PIPELINE_CONFIG'])
```


### Relevant log output

```shell
---------------------------------------------------------------------------
ParseError                                Traceback (most recent call last)
Cell In[11], line 1
----> 1 config = config_util.get_configs_from_pipeline_file(files['PIPELINE_CONFIG'])

File ~/Desktop/Jupyter/TFODCourse/tfod/lib/python3.11/site-packages/object_detection/utils/config_util.py:98, in get_configs_from_pipeline_file(pipeline_config_path, config_override)
     96 with tf.io.gfile.GFile(pipeline_config_path, "r") as f:
     97   proto_str = f.read()
---> 98   text_format.Merge(proto_str, pipeline_config)
     99 if config_override:
    100   text_format.Merge(config_override, pipeline_config)

File ~/Desktop/Jupyter/TFODCourse/tfod/lib/python3.11/site-packages/google/protobuf/text_format.py:719, in Merge(text, message, allow_unknown_extension, allow_field_number, descriptor_pool, allow_unknown_field)
    690 def Merge(text,
    691           message,
    692           allow_unknown_extension=False,
    693           allow_field_number=False,
    694           descriptor_pool=None,
    695           allow_unknown_field=False):
    696   """Parses a text representation of a protocol message into a message.
    697 
    698   Like Parse(), but allows repeated values for a non-repeated field, and uses
   (...)
    717     ParseError: On text parsing problems.
    718   """
--> 719   return MergeLines(
    720       text.split(b'\n' if isinstance(text, bytes) else u'\n'),
    721       message,
    722       allow_unknown_extension,
    723       allow_field_number,
    724       descriptor_pool=descriptor_pool,
    725       allow_unknown_field=allow_unknown_field)

File ~/Desktop/Jupyter/TFODCourse/tfod/lib/python3.11/site-packages/google/protobuf/text_format.py:793, in MergeLines(lines, message, allow_unknown_extension, allow_field_number, descriptor_pool, allow_unknown_field)
    768 """Parses a text representation of a protocol message into a message.
    769 
    770 See Merge() for more details.
   (...)
    787   ParseError: On text parsing problems.
    788 """
    789 parser = _Parser(allow_unknown_extension,
    790                  allow_field_number,
    791                  descriptor_pool=descriptor_pool,
    792                  allow_unknown_field=allow_unknown_field)
--> 793 return parser.MergeLines(lines, message)

File ~/Desktop/Jupyter/TFODCourse/tfod/lib/python3.11/site-packages/google/protobuf/text_format.py:818, in _Parser.MergeLines(self, lines, message)
    816 """Merges a text representation of a protocol message into a message."""
    817 self._allow_multiple_scalars = True
--> 818 self._ParseOrMerge(lines, message)
    819 return message

File ~/Desktop/Jupyter/TFODCourse/tfod/lib/python3.11/site-packages/google/protobuf/text_format.py:837, in _Parser._ParseOrMerge(self, lines, message)
    835 tokenizer = Tokenizer(str_lines)
    836 while not tokenizer.AtEnd():
--> 837   self._MergeField(tokenizer, message)

File ~/Desktop/Jupyter/TFODCourse/tfod/lib/python3.11/site-packages/google/protobuf/text_format.py:967, in _Parser._MergeField(self, tokenizer, message)
    964         tokenizer.Consume(',')
    966   else:
--> 967     merger(tokenizer, message, field)
    969 else:  # Proto field is unknown.
    970   assert (self.allow_unknown_extension or self.allow_unknown_field)

File ~/Desktop/Jupyter/TFODCourse/tfod/lib/python3.11/site-packages/google/protobuf/text_format.py:1042, in _Parser._MergeMessageField(self, tokenizer, message, field)
   1040   if tokenizer.AtEnd():
   1041     raise tokenizer.ParseErrorPreviousToken('Expected "%s".' % (end_token,))
-> 1042   self._MergeField(tokenizer, sub_message)
   1044 if is_map_entry:
   1045   value_cpptype = field.message_type.fields_by_name['value'].cpp_type

File ~/Desktop/Jupyter/TFODCourse/tfod/lib/python3.11/site-packages/google/protobuf/text_format.py:932, in _Parser._MergeField(self, tokenizer, message)
    929       field = None
    931   if not field and not self.allow_unknown_field:
--> 932     raise tokenizer.ParseErrorPreviousToken(
    933         'Message type "%s" has no field named "%s".' %
    934         (message_descriptor.full_name, name))
    936 if field:
    937   if not self._allow_multiple_scalars and field.containing_oneof:
    938     # Check if there's a different field set in this oneof.
    939     # Note that we ignore the case if the same field was set before, and we
    940     # apply _allow_multiple_scalars to non-scalar fields as well.

ParseError: 172:3 : Message type "object_detection.protos.TrainConfig" has no field named "fine_tune_checkpoint_version".
```
