Comments (7)
Hi rush,
The jump in the classification and regression loss is strange but the mAP is still near 1.0, so the 2D detection task is still doing well and I think this shouldn't be the main problem here (classification and regression losses are from the 2D detection part and the mAP is a metric for it).
The transformation loss (which is for the 6D pose estimation part) instead is decreasing but when looking at the 6D pose estimation metrics like ADD, they start to increase very slowly.
From my experience the absolute value of the transformation loss should be much higher (factor 100x - 1000x) and I could imagine that your dataset unit is different from Linemod which uses mm.
If this is the case, you need to change the translation_scale_norm parameter in the generator according to the unit of your dataset and probably the transformation loss weight (in train.py) from 0.02 to something greater because the transformation loss becomes otherwise too small relative to the other losses.
EfficientPose works internally with meter but the output is scaled with the translation_scale_norm parameter. For example when using Linemod which is in mm, the translation_scale_norm parameter is set to 1000 (which is also the default).
But that's just a guess and hard to say if this is really the problem without more information about your dataset and training parameters.
Did you use the debug.py script to check wheter the images and annotations of your custom dataset are loaded as expected? This also can help a lot in such scenarios.
I hope this helps you.
Sincerely,
Yannick
from efficientpose.
from efficientpose.
Hi, I also train my own data, but the loss seems strange either.
BTW, my data is in meter, so I set the translation_scale_norm to 1, and the loss weight is still 0.02, and I find that the scale of loss between the 2D detect and pose estimating is not that large. I also use the debug.py to show the data, the result seems ok, except for that the 3D points order I used is different from the origin code. I random set the 3D points order, but I think this should not be an issue, because I find that the result saved in training process can plot the point correctly, it is just the pose estimate is not accurate. So any advice for my training? Thanks a lot!
from efficientpose.
@ghoshaw My previous problem was caused by extrinsic matrix error. If debug.py shows that your 3D bounding box is normal, it indicates that your extrinsic matrix should have no problem. But I changed 0.02 to 5.
from efficientpose.
@rush9838465 , in your case, the loss of transformation is smaller than the 2d detect loss, but in my case, my transformation loss is larger than 2d detect loss, So I think I should change 0.02 t0 0.002?
from efficientpose.
@ghoshaw I think it can be left unchanged, your loss is pretty low. Have you tried inference?
from efficientpose.
I did not try inference, but the image saved in training process is not that good.
And I just find a bug, I accidentally freeze the backbone, and I will try to do a new experiment. Thanks for your answer!
from efficientpose.
Related Issues (20)
- Inference on LineMOD dataset doesn't work HOT 4
- Not able to install requirements.txt
- Model not getting trained HOT 1
- ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject HOT 1
- /home/mona/anaconda3/envs/EfficientPose/compiler_compat/ld: warning: /home/mona/anaconda3/envs/EfficientPose/lib/libgcc_s.so.1: unsupported GNU_PROPERTY_TYPE (5) type: 0xc0010002 HOT 1
- Epoch 00162: ADD did not improve from 0.00000 -- is this an expected result for training using object 8 of LINEMOD?
- 关于多个物体预测的问题
- NAN loss using your conda env and data and command after 500 epochs HOT 11
- Procedure to train on custom dataset
- evaluation phase for object 8 of linemod -- raise ValueError('Unexpectedly found an instance of type `' + str(type(x)) + ValueError: Unexpectedly found an instance of type `<class 'keras.src.engine.keras_tensor.KerasTensor'>`. Expected a symbolic tensor instance.
- training using COCO pretrained weights for object 9 of linemod -- ValueError: Unexpectedly found an instance of type `<class 'keras.src.engine.keras_tensor.KerasTensor'>`. Expected a symbolic tensor instance.
- File "utils/compute_overlap.pyx", line 1, in init utils.compute_overlap """ ImportError: numpy.core.multiarray failed to import (auto-generated because you didn't call 'numpy.import_array()' after cimporting numpy; use '<void>numpy._import_array' to disable if you are certain you don't need it).
- using your versions of packages -- File "/home/mona/anaconda3/envs/effpose/lib/python3.8/site-packages/numpy/__init__.py", line 305, in __getattr__ raise AttributeError(__former_attrs__[attr]) AttributeError: module 'numpy' has no attribute 'object'. `np.object` was a deprecated alias for the builtin `object`. To avoid this error in existing code, use `object` by itself. Doing this will not modify any behavior and is safe. The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at: https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
- File "/home/mona/anaconda3/envs/effpose/lib/python3.8/site-packages/skimage/__init__.py", line 122, in <module> from ._shared import geometry File "geometry.pyx", line 1, in init skimage._shared.geometry ValueError: numpy.ndarray size changed, may indicate binary incompatibility. Expected 88 from C header, got 80 from PyObject
- node_def.attr[k].CopyFrom(v) File "/home/mona/anaconda3/envs/effpose/lib/python3.8/site-packages/google/protobuf/internal/containers.py", line 70, in __getitem__ return self._values[key] TypeError: list indices must be integers or slices, not str
- Data projecion problem HOT 3
- Rotation Error in Predictions HOT 6
- File "/home/mona/anaconda3/envs/EfficientPose/lib/python3.7/site-packages/tensorflow_core/python/keras/saving/hdf5_format.py", line 712, in load_weights_from_hdf5_group_by_name original_keras_version = f.attrs['keras_version'].decode('utf8') AttributeError: 'str' object has no attribute 'decode' HOT 1
- train -- File "/home/mona/effpose/EfficientPose/custom_load_weights.py", line 69, in load_weights_from_hdf5_group_by_name original_keras_version = f.attrs['keras_version'].decode('utf8') AttributeError: 'str' object has no attribute 'decode' HOT 1
- Transitioning EfficientPose to New GPUs Post-GTX Discontinuation (Important)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from efficientpose.