-
Notifications
You must be signed in to change notification settings - Fork 312
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Edge queue runs out of edges #7
Comments
Hi @SorteKanin , Thanks for letting me know. So first of all, may I ask, are you trying to learn classification or segmentation? So currently the default configuration collapses the input mesh to
try passing:
for example. The number of edges you can collapse is related to a few things: In general, another tip I suggest is to simplify the meshes beforehand, to make the network capacity smaller (sort of like resizing images). If you don't have scripts to do that, I hope to add them here soon, but it will take me another couple weeks or so. |
Hi @ranahanocka, I got the same issue trying to use MeshCNN as classifier, over a dataset where the meshes have different number of faces (and therefore of edges) over the different classes. Even if I avoided this error, it is still failing. So I was wandering if could be possible to run the classification in this case? Differences between the meshes are very big (something like 10k faces in a certain class, while 300 faces in another one). Is it possible? |
Hi @SaraCasti , The first option is to process the data: add some more faces to the small resolution meshes, and simplify the larger ones, and get the shapes to be roughly the same size (or at least in a closer range). I recommend this route (at least, I expect this approach to work well). The second option is leaving your meshes as is, and trying to modify the hyper-params of meshCNN to get it to work with your data. Note that 300 faces is 450 edges (if there are no boundaries), and 10k faces is 15k edges. So the current default Also, make sure you modify Let me know how it goes :) |
Hello |
Hi @sana-aroua , Thanks for letting me know. I mentioned that I would like to find some time to clean & run shapenet in this issue, but I have been busy and still didn't find the time to try it yet, I hope I can find some time to try it soon. |
I see, thanks for the screenshot. |
hi @ranahanocka this can be due to points that are not connected to the mesh ? |
Hi @sana-aroua , That is weird. First of all, please delete the meshes in the cache folder (or simply rename the mesh) and re-try. If that still doesn't work try increasing the -Rana |
Hi |
I managed to repair the meshes I had using https://github.com/davidstutz/mesh-fusion. With this solution, there is still a possibility that the meshes have a some unconnected component. To solve that issue, I simply ran meshlabserver with a script that Remove Isolated pieces w.r.t face num |
Hi @SorteKanin, @SaraCasti, I am also getting the same error, it would be helpful to know the steps you have taken to solve it. |
I never solved it - only used workarounds, like what ranahanocka suggested above or by simply decimating the model files I was using to be less big. Ultimately I moved away from this approach entirely, so sorry, I have no solution. |
For other ones' reference, let me share my experience. I encountered the same problem of "index out of range" while Instead, the problem seems to be because that the edge pooling makes the input mesh non-manifold (or turn to include other unexpected edge connectivity). Since the edge pooling depends on the edge features and they seems rather random particularly when the training just started. Although I did not solve this problem thoroughly, increasing the target number of edges after pooling can be a tentative workaround for this problem. Also, I think we need to make the network to give a sort of "uniform" features at the initial state and to train the network to slowly adapt to give the purpose-specific features. |
So I'm trying to use MeshCNN on some quite large meshes, around ~10000 faces, ~16000 edges. When running the train script however, I get the following error:
It seems that the queue of edges runs out of edges before it has reached the number of edges required by the pool_res argument? Is this correct?
I'm also guessing this is happening because __pool_edge in the same file returns false for too many of the edges in my mesh.
Does anyone have any idea how I might rectify this? Is there a way to make sure that the queue does not run out of edges so that I can continue removing edges, regardless of how many edges I started with?
The text was updated successfully, but these errors were encountered: