prittt / yacclab Goto Github PK
View Code? Open in Web Editor NEWYACCLAB: Yet Another Connected Components Labeling Benchmark
License: BSD 3-Clause "New" or "Revised" License
YACCLAB: Yet Another Connected Components Labeling Benchmark
License: BSD 3-Clause "New" or "Revised" License
do you know the fastest method for computing the CCs on a binary image of text? (Like à binarized pdf page of a research paper),
Hello Federico,
very nice project about CCL.
When I tried to follow your step, I could not use the example code(BBDT_UFPC) correctly.
Maybe the section of "How to include a YACCLAB algorithm into your own project?" is not complete?
First, I found that I have to add more source files than you described
E.g. file_manager.cc, volume_util.cc, yacclab_tensor.cc, gpu_mat3.cu
Second, I got the error from "labeling_grana_2010.cc", which shows some Gnuplot error as follows:
Error LNK2019 unresolved external symbol "class std::basic_string<char,struct std::char_traits,class std::allocator > __cdecl GetGnuplotTitle(void)" (?GetGnuplotTitle@@ya?AV?$basic_string@DU?$char_traits@D@std@@v?$allocator@D@2@@std@@xz) referenced in function "public: virtual class std::basic_string<char,struct std::char_traits,class std::allocator > __cdecl Labeling::GetTitle(void)const "
Maybe this is about some dll of gnuplot, which I do not know should I add some cc files or dll?
Hi,
do you also have an implementation of this algorithm (HCS):
https://link.springer.com/article/10.1007/s11554-015-0499-1
Best regards
Martin
Both cuda/src/labeling_oliveira_2010.cu
and include/labels_solver.h
define class UF
in the global namespace. I'm seeing a crash where cuda/src/labeling_oliveira_2010.cu
's Alloc
appears to call include/labels_solver.h
. Renaming Alloc
inside cuda/src/labeling_oliveira_2010.cu
fixes it. It is probably best to rename UF inside cuda/src/labeling_oliveira_2010.cu
.
Dear @prittt ,
I am currently working on a project where I need to extract objects from an image stream that is continuously acquired line-by-line with the use of line scan cameras. So my image fixed in x-direction, but basically "endless" in y. After doing a bit of research, I think I need to implement a so called single Pass CCA/Blob Extractor, that can process my image line-by-line and continuously extracts blobs. Can you tell me which of the implemented algorithms would be suitable and how I could modify it so it can accept a continuous stream of data? Help is greatly appreciated. Thank you and kind regards.
Philipp
I'm sorry if this is rude. I'm quite new to github so that I don't know what I'm supposed to do here.
I want to share a new algorithm I found.
You can find them in my github page, especially in this folder.
My algorithms are available with the names of BRTS, BMRS. (They require to specify a labels solver.)
See also the results I got on my computer here.
Each algorithm is explained in detail in my github page.
I have no degree or qualification in computer science area.
I came up with these ideas while optimizing an AI for my own game which is still in progress.
I want to let you know and get advice from you if possible.
Thank you.
Hello! Is there any solutions for Connected Components Analysys on CUDA? I need to get coordinates and size of labeled componets on cpu side to be sent by TCP network. All the algorithms I can find are CPU based, GPU based line opencv cuda::connectedComponents, does not have WithStats version. Cpu bases algorithms are too slow to be used for 90fps on jetson nano.
Line 83 in 56f8e73
There's essentially no reason to do this. It would be considered bad practice and broke my build for a good 45 minutes when it failed to compile against my (non-multi-lib headers) and then after I fixed that failed to link to my (non-multilib) toolchain.
If there's nothing specified, then it should default to nothing specified, which means "use the default for the current toolchain". The default for the current system should obviously be the default, and users can manually add it if they need in the CXX_FLAGS config on their own. In addition, there's no way the default should be -m32
, because there's a vanishingly small number of 32-bit toolchains in the wild, especially by default.
The best thing to do here is to just delete lines 83-91 entirely. OR at the very least, default to nothing, which is the correct behavior most of the time.
Could you share about synthetic image dataset generating code,such as granularity dataset.
I try to generate my own dataset, but it's difficult to make sure specific density and granularity at the same time.
Hi, thanks for this great resource.
I'm wondering if, in the spirit of making this even more accessible, you plan to add the possibility to create torch CUDA extensions (https://pytorch.org/tutorials/advanced/cpp_extension.html).
Many thanks
Getting the following error during the GPU run:
+----------------------------------------------------------------------------+
| Checking Correctness of 'PerformLabelingWithSteps()' |
+----------------------------------------------------------------------------+
| check: |
free(): double free detected in tcache 2 ] 0% |
Aborted (core dumped)
config.yaml.txt
log.txt
CMakeCache.txt
Hello,
first thank you for the benchmark.
The issue:
Please repair CMakeLists.txt, because project cannot be build. It took me time to figure this out.
Your headers included in .cu files use C++14 features. (std::make_unique namely)
On my system: Debian 10, CUDA 10.1, gcc 8.3, I got error make_unique not in namespace std.
I find out CUDA standard is set separatly from C++ host compiler standard:
https://cmake.org/cmake/help/v3.14/prop_tgt/CUDA_STANDARD.html
By providing CMAKE_CUDA_STANDARD 14, compilation did not raise any errors.
I figured I will post it here, even if I doesn't get fixed, others can see how to repair it.
Thank you for your work.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.