Hi All, I am looking at generating some detection proposals, see Hosang, Jan, et al. "What makes for effective detection proposals?." /arXiv preprint arXiv:1502.05082/ (2015), http://arxiv.org/pdf/1502.05082.pdf Starting with the Selective Search algorithm, Section 3 of Uijlings, Jasper RR, et al. "Selective search for object recognition." /International journal of computer vision/ 104.2 (2013): 154-171, https://staff.fnwi.uva.nl/th.gevers/pub/GeversIJCV2013.pdf The basic idea is the performing a hierarchical merging of the image, where each new merge get added to the list of regions suspected to contain an object, you can capture objects at all scales. This reduces the search space significantly than say compared to floating window. The output is NOT a image segmentaiton, rather a list of regions (bounding boxes) of potential objects (deteciton proposals). I have looked in the gallery at RAG Merging http://scikit-image.org/docs/dev/auto_examples/plot_rag_merge.html, fairly confident I can setup the callback methods to provided the similarity measure. I am naively hoping that future.graph.hierarchical(), even though it seems to output a segmentation (labels), can be easily adapted to the task. What would be the best way to have future.graph.merge_hierarchica() merge regions with the "highest" similarity measure, rather thana threshold? What would be the best way future.graph.merge_hierarchica() save each merged region? Tried setting "in_place" to false, but didn't notice any difference. Any help appreciated, Brickle. --
Hello At each step, the edge with the least weight is merged. The code uses a min heap for that. You could take an inverse of your measure such that similar nodes have lesser values. 'in_place' just decides whether a new node is created for a merge or not, it most likely won't do what you need in this case. I hope I was clear. Thanks Vighnesh On Tuesday, September 1, 2015 at 7:24:31 PM UTC-4, bricklemacho wrote:
Hi All,
I am looking at generating some detection proposals, see Hosang, Jan, et al. "What makes for effective detection proposals?." *arXiv preprint arXiv:1502.05082* (2015), http://arxiv.org/pdf/1502.05082.pdf Starting with the Selective Search algorithm, Section 3 of Uijlings, Jasper RR, et al. "Selective search for object recognition." *International journal of computer vision* 104.2 (2013): 154-171, https://staff.fnwi.uva.nl/th.gevers/pub/GeversIJCV2013.pdf
The basic idea is the performing a hierarchical merging of the image, where each new merge get added to the list of regions suspected to contain an object, you can capture objects at all scales. This reduces the search space significantly than say compared to floating window. The output is NOT a image segmentaiton, rather a list of regions (bounding boxes) of potential objects (deteciton proposals).
I have looked in the gallery at RAG Merging http://scikit-image.org/docs/dev/auto_examples/plot_rag_merge.html, fairly confident I can setup the callback methods to provided the similarity measure. I am naively hoping that future.graph.hierarchical(), even though it seems to output a segmentation (labels), can be easily adapted to the task. What would be the best way to have future.graph.merge_hierarchica() merge regions with the "highest" similarity measure, rather thana threshold? What would be the best way future.graph.merge_hierarchica() save each merged region? Tried setting "in_place" to false, but didn't notice any difference.
Any help appreciated,
Brickle. --
Hi, Been away for a few days. Thanks for that, clears a few things up. I am looking at modifying the RAG code from the furture.graph. Regards, Brickle. On 3/09/2015 11:26 pm, Vighnesh Birodkar wrote:
Hello
At each step, the edge with the least weight is merged. The code uses a min heap for that. You could take an inverse of your measure such that similar nodes have lesser values. 'in_place' just decides whether a new node is created for a merge or not, it most likely won't do what you need in this case.
I hope I was clear.
Thanks Vighnesh
On Tuesday, September 1, 2015 at 7:24:31 PM UTC-4, bricklemacho wrote:
Hi All,
I am looking at generating some detection proposals, see Hosang, Jan, et al. "What makes for effective detection proposals?." /arXiv preprint arXiv:1502.05082/ (2015), http://arxiv.org/pdf/1502.05082.pdf <http://arxiv.org/pdf/1502.05082.pdf> Starting with the Selective Search algorithm, Section 3 of Uijlings, Jasper RR, et al. "Selective search for object recognition." /International journal of computer vision/ 104.2 (2013): 154-171, https://staff.fnwi.uva.nl/th.gevers/pub/GeversIJCV2013.pdf <https://staff.fnwi.uva.nl/th.gevers/pub/GeversIJCV2013.pdf>
The basic idea is the performing a hierarchical merging of the image, where each new merge get added to the list of regions suspected to contain an object, you can capture objects at all scales. This reduces the search space significantly than say compared to floating window. The output is NOT a image segmentaiton, rather a list of regions (bounding boxes) of potential objects (deteciton proposals).
I have looked in the gallery at RAG Merging http://scikit-image.org/docs/dev/auto_examples/plot_rag_merge.html <http://scikit-image.org/docs/dev/auto_examples/plot_rag_merge.html>, fairly confident I can setup the callback methods to provided the similarity measure. I am naively hoping that future.graph.hierarchical(), even though it seems to output a segmentation (labels), can be easily adapted to the task. What would be the best way to have future.graph.merge_hierarchica() merge regions with the "highest" similarity measure, rather thana threshold? What would be the best way future.graph.merge_hierarchica() save each merged region? Tried setting "in_place" to false, but didn't notice any difference.
Any help appreciated,
Brickle. --
-- You received this message because you are subscribed to the Google Groups "scikit-image" group. To unsubscribe from this group and stop receiving emails from it, send an email to scikit-image+unsubscribe@googlegroups.com <mailto:scikit-image+unsubscribe@googlegroups.com>. For more options, visit https://groups.google.com/d/optout.
Hey Brickle, This is a very cool application! Feel free to ask for more guidance about this. The RAG is in future because we weren't sure whether the API would provide enough for all use cases, so if it needs extending, this is exactly the kind of feedback we're looking for! If you've made any interesting changes to the code, but want help, you can submit them as a pull request on GitHub. Just start the PR title with "[WIP]" for "work in progress". Thanks! Juan. On Wed, Sep 9, 2015 at 11:23 PM, bricklemacho@gmail.com <bricklemacho@gmail.com> wrote:
Hi, Been away for a few days. Thanks for that, clears a few things up. I am looking at modifying the RAG code from the furture.graph. Regards, Brickle. On 3/09/2015 11:26 pm, Vighnesh Birodkar wrote:
Hello
At each step, the edge with the least weight is merged. The code uses a min heap for that. You could take an inverse of your measure such that similar nodes have lesser values. 'in_place' just decides whether a new node is created for a merge or not, it most likely won't do what you need in this case.
I hope I was clear.
Thanks Vighnesh
On Tuesday, September 1, 2015 at 7:24:31 PM UTC-4, bricklemacho wrote:
Hi All,
I am looking at generating some detection proposals, see Hosang, Jan, et al. "What makes for effective detection proposals?." /arXiv preprint arXiv:1502.05082/ (2015), http://arxiv.org/pdf/1502.05082.pdf <http://arxiv.org/pdf/1502.05082.pdf> Starting with the Selective Search algorithm, Section 3 of Uijlings, Jasper RR, et al. "Selective search for object recognition." /International journal of computer vision/ 104.2 (2013): 154-171, https://staff.fnwi.uva.nl/th.gevers/pub/GeversIJCV2013.pdf <https://staff.fnwi.uva.nl/th.gevers/pub/GeversIJCV2013.pdf>
The basic idea is the performing a hierarchical merging of the image, where each new merge get added to the list of regions suspected to contain an object, you can capture objects at all scales. This reduces the search space significantly than say compared to floating window. The output is NOT a image segmentaiton, rather a list of regions (bounding boxes) of potential objects (deteciton proposals).
I have looked in the gallery at RAG Merging http://scikit-image.org/docs/dev/auto_examples/plot_rag_merge.html <http://scikit-image.org/docs/dev/auto_examples/plot_rag_merge.html>, fairly confident I can setup the callback methods to provided the similarity measure. I am naively hoping that future.graph.hierarchical(), even though it seems to output a segmentation (labels), can be easily adapted to the task. What would be the best way to have future.graph.merge_hierarchica() merge regions with the "highest" similarity measure, rather thana threshold? What would be the best way future.graph.merge_hierarchica() save each merged region? Tried setting "in_place" to false, but didn't notice any difference.
Any help appreciated,
Brickle. --
-- You received this message because you are subscribed to the Google Groups "scikit-image" group. To unsubscribe from this group and stop receiving emails from it, send an email to scikit-image+unsubscribe@googlegroups.com <mailto:scikit-image+unsubscribe@googlegroups.com>. For more options, visit https://groups.google.com/d/optout. -- You received this message because you are subscribed to the Google Groups "scikit-image" group. To unsubscribe from this group and stop receiving emails from it, send an email to scikit-image+unsubscribe@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Hi Juan, I am working on this in slow time. At the moment I am writing a generic function to create the RAG. It is similar to rag_mean_colour() but takes two callbacks, one to describe the nodes and another to compute the edge weight. Based on Vighnesh advice below, I my use case I will ensure the "least" weight implies the most similar. Theh first step will be to have the rag_generic() duplicate rag_mean_colour(). Once I am happy with rag_generic(), I will need to an create alternative merging process. The alternative method wont use a threshold but rather at each step will select the "most" similar nodes for merging. This merge process will terminate once there is a single node in the graph. The final output will be the initial regions, plus each of the single merge (hope that make sense). Anyway, I have created a fork and when basic functionally is working will submit a PR. Regards, Michael. -- On 16/09/2015 5:34 pm, Juan Nunez-Iglesias wrote:
Hey Brickle,
This is a very cool application! Feel free to ask for more guidance about this. The RAG is in future because we weren't sure whether the API would provide enough for all use cases, so if it needs extending, this is exactly the kind of feedback we're looking for!
If you've made any interesting changes to the code, but want help, you can submit them as a pull request on GitHub. Just start the PR title with "[WIP]" for "work in progress".
Thanks!
Juan.
On Wed, Sep 9, 2015 at 11:23 PM, bricklemacho@gmail.com <bricklemacho@gmail.com <mailto:bricklemacho@gmail.com>> wrote:
Hi,
Been away for a few days. Thanks for that, clears a few things up. I am looking at modifying the RAG code from the furture.graph.
Regards,
Brickle.
On 3/09/2015 11:26 pm, Vighnesh Birodkar wrote:
Hello
At each step, the edge with the least weight is merged. The code uses a min heap for that. You could take an inverse of your measure such that similar nodes have lesser values. 'in_place' just decides whether a new node is created for a merge or not, it most likely won't do what you need in this case.
I hope I was clear.
Thanks Vighnesh
On Tuesday, September 1, 2015 at 7:24:31 PM UTC-4, bricklemacho wrote:
Hi All,
I am looking at generating some detection proposals, see Hosang, Jan, et al. "What makes for effective detection proposals?." /arXiv preprint arXiv:1502.05082/ (2015), http://arxiv.org/pdf/1502.05082.pdf Starting with the Selective Search algorithm, Section 3 of Uijlings, Jasper RR, et al. "Selective search for object recognition." /International journal of computer vision/ 104.2 (2013): 154-171, https://staff.fnwi.uva.nl/th.gevers/pub/GeversIJCV2013.pdf
The basic idea is the performing a hierarchical merging of the image, where each new merge get added to the list of regions suspected to contain an object, you can capture objects at all scales. This reduces the search space significantly than say compared to floating window. The output is NOT a image segmentaiton, rather a list of regions (bounding boxes) of potential objects (deteciton proposals).
I have looked in the gallery at RAG Merging http://scikit-image.org/docs/dev/auto_examples/plot_rag_merge.html, fairly confident I can setup the callback methods to provided the similarity measure. I am naively hoping that future.graph.hierarchical(), even though it seems to output a segmentation (labels), can be easily adapted to the task. What would be the best way to have future.graph.merge_hierarchica() merge regions with the "highest" similarity measure, rather thana threshold? What would be the best way future.graph.merge_hierarchica() save each merged region? Tried setting "in_place" to false, but didn't notice any difference.
Any help appreciated,
Brickle. --
-- You received this message because you are subscribed to the Google Groups "scikit-image" group. To unsubscribe from this group and stop receiving emails from it, send an email to scikit-image+unsubscribe@googlegroups.com <mailto:scikit-image+unsubscribe@googlegroups.com>. For more options, visit https://groups.google.com/d/optout.
-- You received this message because you are subscribed to the Google Groups "scikit-image" group. To unsubscribe from this group and stop receiving emails from it, send an email to scikit-image+unsubscribe@googlegroups.com <mailto:scikit-image+unsubscribe@googlegroups.com>. For more options, visit https://groups.google.com/d/optout.
-- You received this message because you are subscribed to the Google Groups "scikit-image" group. To unsubscribe from this group and stop receiving emails from it, send an email to scikit-image+unsubscribe@googlegroups.com <mailto:scikit-image+unsubscribe@googlegroups.com>. For more options, visit https://groups.google.com/d/optout.
Hello Rather than creating an alternative method, you could always set the threshold to infinity. Won't that work in your case ? Thanks Vighnesh
Setting the threshold to infinity will merge everything, but in what order are the nodes merged? Assuming setting threshold to infinity works, I still need to save a copy of each merge. Any suggestions? Regards, Michael. -- On 17/09/2015 11:23 pm, Vighnesh Birodkar wrote:
Hello
Rather than creating an alternative method, you could always set the threshold to infinity. Won't that work in your case ?
Thanks Vighnesh
Hi Using in _ place = False, couldn't you get the entire sequence of merging from the root node ? On 17 Sep 2015 12:59, "bricklemacho@gmail.com" <bricklemacho@gmail.com> wrote:
Setting the threshold to infinity will merge everything, but in what order are the nodes merged?
Assuming setting threshold to infinity works, I still need to save a copy of each merge. Any suggestions?
Regards,
Michael. --
On 17/09/2015 11:23 pm, Vighnesh Birodkar wrote:
Hello
Rather than creating an alternative method, you could always set the threshold to infinity. Won't that work in your case ?
Thanks Vighnesh
-- You received this message because you are subscribed to a topic in the Google Groups "scikit-image" group. To unsubscribe from this topic, visit https://groups.google.com/d/topic/scikit-image/rnsVLQ-tFJM/unsubscribe. To unsubscribe from this group and all its topics, send an email to scikit-image+unsubscribe@googlegroups.com. For more options, visit https://groups.google.com/d/optout.
Hello Sorry for the repost, I accidentally submitted incomplete code in the last one. For the demo videos in that post I was traversing the graph at each iteration to obtain the segmentation, see 118 of graph_merge.py https://github.com/vighneshbirodkar/scikit-image/compare/vighneshbirodkar:ha... This was because I needed the entire segmentation at each step to display it. Juan, I think you mean I traverse it only once in the code on master ? For the video I was indeed traversing it each time. The nodes are merged here https://github.com/scikit-image/scikit-image/blob/master/skimage/future/grap... On line 127 you can inject your logic. So if I understand correctly, you want [src + dst](the regions being merged at that point of time) as one region and the rest of the graph as other ? label_map = np.arange(labels.max() + 1) label_map[:] = 2 # Label the rest of the graph as one region # Label src as one region for l in rag.node[src]['labels']: label_map[l] = 1 for l in rag.node[dst]['labels']: label_map[l] = 1 seg_list.append(labels[label_map]) Thanks Vighnesh On Tuesday, September 1, 2015 at 7:24:31 PM UTC-4, bricklemacho wrote:
Hi All,
I am looking at generating some detection proposals, see Hosang, Jan, et al. "What makes for effective detection proposals?." *arXiv preprint arXiv:1502.05082* (2015), http://arxiv.org/pdf/1502.05082.pdf Starting with the Selective Search algorithm, Section 3 of Uijlings, Jasper RR, et al. "Selective search for object recognition." *International journal of computer vision* 104.2 (2013): 154-171, https://staff.fnwi.uva.nl/th.gevers/pub/GeversIJCV2013.pdf
The basic idea is the performing a hierarchical merging of the image, where each new merge get added to the list of regions suspected to contain an object, you can capture objects at all scales. This reduces the search space significantly than say compared to floating window. The output is NOT a image segmentaiton, rather a list of regions (bounding boxes) of potential objects (deteciton proposals).
I have looked in the gallery at RAG Merging http://scikit-image.org/docs/dev/auto_examples/plot_rag_merge.html, fairly confident I can setup the callback methods to provided the similarity measure. I am naively hoping that future.graph.hierarchical(), even though it seems to output a segmentation (labels), can be easily adapted to the task. What would be the best way to have future.graph.merge_hierarchica() merge regions with the "highest" similarity measure, rather thana threshold? What would be the best way future.graph.merge_hierarchica() save each merged region? Tried setting "in_place" to false, but didn't notice any difference.
Any help appreciated,
Brickle. --
Hi Vighnesh, That basically what I am after. If I inject the code at line 130 after the merger then I only need use [dst] to create the label map, correct? I just submitted a [WIP] pull request, but will update code to reflect these changes. Thanks for your help. Michael. -- On 21/09/2015 11:13 am, Vighnesh Birodkar wrote:
Hello
Sorry for the repost, I accidentally submitted incomplete code in the last one.
For the demo videos in that post I was traversing the graph at each iteration to obtain the segmentation, see 118 of graph_merge.py https://github.com/vighneshbirodkar/scikit-image/compare/vighneshbirodkar:ha... <https://github.com/vighneshbirodkar/scikit-image/compare/vighneshbirodkar:ha...>
This was because I needed the entire segmentation at each step to display it. Juan, I think you mean I traverse it only once in the code on master ? For the video I was indeed traversing it each time.
The nodes are merged here https://github.com/scikit-image/scikit-image/blob/master/skimage/future/grap... <https://github.com/scikit-image/scikit-image/blob/master/skimage/future/grap...>
On line 127 you can inject your logic.
So if I understand correctly, you want [src + dst](the regions being merged at that point of time) as one region and the rest of the graph as other ?
| label_map = np.arange(labels.max() + 1) label_map[:] = 2 # Label the rest of the graph as one region
# Label src as one region for l in rag.node[src]['labels']: label_map[l] = 1
for l in rag.node[dst]['labels']: label_map[l] = 1
seg_list.append(labels[label_map]) |
Thanks Vighnesh
On Tuesday, September 1, 2015 at 7:24:31 PM UTC-4, bricklemacho wrote:
Hi All,
I am looking at generating some detection proposals, see Hosang, Jan, et al. "What makes for effective detection proposals?." /arXiv preprint arXiv:1502.05082/ (2015), http://arxiv.org/pdf/1502.05082.pdf <http://arxiv.org/pdf/1502.05082.pdf> Starting with the Selective Search algorithm, Section 3 of Uijlings, Jasper RR, et al. "Selective search for object recognition." /International journal of computer vision/ 104.2 (2013): 154-171, https://staff.fnwi.uva.nl/th.gevers/pub/GeversIJCV2013.pdf <https://staff.fnwi.uva.nl/th.gevers/pub/GeversIJCV2013.pdf>
The basic idea is the performing a hierarchical merging of the image, where each new merge get added to the list of regions suspected to contain an object, you can capture objects at all scales. This reduces the search space significantly than say compared to floating window. The output is NOT a image segmentaiton, rather a list of regions (bounding boxes) of potential objects (deteciton proposals).
I have looked in the gallery at RAG Merging http://scikit-image.org/docs/dev/auto_examples/plot_rag_merge.html <http://scikit-image.org/docs/dev/auto_examples/plot_rag_merge.html>, fairly confident I can setup the callback methods to provided the similarity measure. I am naively hoping that future.graph.hierarchical(), even though it seems to output a segmentation (labels), can be easily adapted to the task. What would be the best way to have future.graph.merge_hierarchica() merge regions with the "highest" similarity measure, rather thana threshold? What would be the best way future.graph.merge_hierarchica() save each merged region? Tried setting "in_place" to false, but didn't notice any difference.
Any help appreciated,
Brickle. --
Hello Only if in_place = True. If not, the new node could be something entirely different. The new_id is the safer bet. Thanks Vighnesh On Sunday, September 20, 2015 at 11:26:12 PM UTC-4, bricklemacho wrote:
Hi Vighnesh,
That basically what I am after. If I inject the code at line 130 after the merger then I only need use [dst] to create the label map, correct?
I just submitted a [WIP] pull request, but will update code to reflect these changes.
Thanks for your help.
Michael. --
On 21/09/2015 11:13 am, Vighnesh Birodkar wrote:
Hello
Sorry for the repost, I accidentally submitted incomplete code in the last one.
For the demo videos in that post I was traversing the graph at each iteration to obtain the segmentation, see 118 of graph_merge.py
https://github.com/vighneshbirodkar/scikit-image/compare/vighneshbirodkar:ha...
This was because I needed the entire segmentation at each step to display it. Juan, I think you mean I traverse it only once in the code on master ? For the video I was indeed traversing it each time.
The nodes are merged here
https://github.com/scikit-image/scikit-image/blob/master/skimage/future/grap...
On line 127 you can inject your logic.
So if I understand correctly, you want [src + dst](the regions being merged at that point of time) as one region and the rest of the graph as other ?
label_map = np.arange(labels.max() + 1) label_map[:] = 2 # Label the rest of the graph as one region
# Label src as one region for l in rag.node[src]['labels']: label_map[l] = 1
for l in rag.node[dst]['labels']: label_map[l] = 1
seg_list.append(labels[label_map])
Thanks Vighnesh
On Tuesday, September 1, 2015 at 7:24:31 PM UTC-4, bricklemacho wrote:
Hi All,
I am looking at generating some detection proposals, see Hosang, Jan, et al. "What makes for effective detection proposals?." *arXiv preprint arXiv:1502.05082* (2015), http://arxiv.org/pdf/1502.05082.pdf Starting with the Selective Search algorithm, Section 3 of Uijlings, Jasper RR, et al. "Selective search for object recognition." *International journal of computer vision* 104.2 (2013): 154-171, https://staff.fnwi.uva.nl/th.gevers/pub/GeversIJCV2013.pdf
The basic idea is the performing a hierarchical merging of the image, where each new merge get added to the list of regions suspected to contain an object, you can capture objects at all scales. This reduces the search space significantly than say compared to floating window. The output is NOT a image segmentaiton, rather a list of regions (bounding boxes) of potential objects (deteciton proposals).
I have looked in the gallery at RAG Merging <http://scikit-image.org/docs/dev/auto_examples/plot_rag_merge.html> http://scikit-image.org/docs/dev/auto_examples/plot_rag_merge.html, fairly confident I can setup the callback methods to provided the similarity measure. I am naively hoping that future.graph.hierarchical(), even though it seems to output a segmentation (labels), can be easily adapted to the task. What would be the best way to have future.graph.merge_hierarchica() merge regions with the "highest" similarity measure, rather thana threshold? What would be the best way future.graph.merge_hierarchica() save each merged region? Tried setting "in_place" to false, but didn't notice any difference.
Any help appreciated,
Brickle. --
participants (3)
-
bricklemacho@gmail.com
-
Juan Nunez-Iglesias
-
Vighnesh Birodkar