{"id":21693552,"url":"https://github.com/kleinyuan/doppia","last_synced_at":"2025-04-12T10:41:03.447Z","repository":{"id":87912018,"uuid":"103033256","full_name":"KleinYuan/doppia","owner":"KleinYuan","description":"Github version of rodrigob/doppia with some fixes and documentations","archived":false,"fork":false,"pushed_at":"2017-09-11T08:49:20.000Z","size":21889,"stargazers_count":6,"open_issues_count":0,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-03-26T05:33:14.110Z","etag":null,"topics":["computer-vision","doppia","ground-estimation","object-detection"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KleinYuan.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"license.text","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-09-10T13:55:06.000Z","updated_at":"2020-11-23T22:13:37.000Z","dependencies_parsed_at":null,"dependency_job_id":"1fb5b56d-c386-4d8a-b2e8-1c8514cd5b27","html_url":"https://github.com/KleinYuan/doppia","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KleinYuan%2Fdoppia","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KleinYuan%2Fdoppia/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KleinYuan%2Fdoppia/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KleinYuan%2Fdoppia/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KleinYuan","download_url":"https://codeload.github.com/KleinYuan/doppia/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248556722,"owners_count":21124156,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["computer-vision","doppia","ground-estimation","object-detection"],"created_at":"2024-11-25T18:20:48.559Z","updated_at":"2025-04-12T10:41:03.438Z","avatar_url":"https://github.com/KleinYuan.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Intro\n\nDoppia is a collection of several research publications and original [repo](https://bitbucket.org/rodrigob/doppia) is hosted on bitbucket. \n\n# Docker Run\n\nWell, if you are too lazy to read this whole readme, going through all the deatils of setting up the machine, compile the C++ applications and run demo with various flags, fine, I made a docker version for you to just execute 2 lines of code doing everything for you:\n\n```\n# First of all, git clone this repo and in here we assume, you navigated to the root of this repo\n# Then, just simply build the docker image by running\n\nmake build\n\n# Then, it will take a while and build a docker image at around 8 GB, thanks for opencv, then you just simply run it\n\nmake run\n\n```\n\nAnd then, it will spin up a container with ground_estimation app compiled. You can run the demo by:\n\n\n```\n./ground_estimation -c test.config.ini --gui.disable true\n\n```\n\nThen you are supposed to see logs below:\n\n```\nGround estimation. Rodrigo Benenson @ KULeuven. 2010-2011.\nParsed the configuration file test.config.ini\nCreating new log file stixel_world.out.txt\nUsing stereo camera calibration file: ../../video_input/calibration/stereo_calibration_bahnhof.proto.txt\n2017-09-11 08:46:07 {7f388f16f800} [ StereoCameraCalibration ] : stereo_calibration_data name: Andreas Ess Bahnhofstrasse sequence stereo calibration\nReading files:\n../../../data/sample_test_images/bahnhof/image_00000000_0.png\n../../../data/sample_test_images/bahnhof/image_00000000_1.png\nAverage iteration speed  39.3800 [Hz]  (in the last 10 iterations)\nRequested frame number 11 but frames should be in range (0, 10)\nProcessed a total of 10 input frames\nEnd of game, have a nice day.\n```\n\nIt means you are successfully running the demo.\n\nIf you wanna do more, then continue within this docker container and I strongly suggest you also read rest of the readme to get a better idea.\n\n\n# Machine Setup\n\n- [X] Ubuntu (preferred)\n\n- [X] GPU hardware\n\n- [X] CUDA with capacity to be higher than 2.0\n\n- [X] All boost libraries\n\n- [X] Google protocol buffer\n\n- [X] OpenCV 2.4 (3.0 is not supported yet)\n\n- [X] libjpeg, libpng\n\n- [X] libSDL\n\n- [X] CMAKE \u003e= 2.4.3\n\n\nDependencies | Version | Installation |\n--- | --- | --- \nCUDA | 8.0 | Follow this [procedures](https://github.com/KleinYuan/easy-yolo#b-environment-gpu) |\nOpenCV | 2.4.13 | Run this [script](https://github.com/KleinYuan/doppia/blob/master/dependencies/opencv_install.sh)\nProtobuf | latest | Run this [script](https://github.com/KleinYuan/doppia/blob/master/dependencies/protobuf_install.sh)\nAll boost libraries | latest | `sudo apt-get install libboost-all-dev`  \nlibjpeg | latest | `sudo apt-get install libjpeg-dev`\nlibpng | latest | `sudo apt-get install libpng-dev`\nlibSDL | latest | `sudo apt-get install libSDL-dev`\n\n\n\n# Compile and Run Demo\n\n\nThe code includes many applications and they all locate under `src/applications`.\n\nBefore doing everything, you need to modify this [line](https://github.com/KleinYuan/doppia/blob/master/common_settings.cmake#L342) in `common_settings.cmake` to replace the placeholder with your machine name.\n\nThen run following script to ensure the protocol buffer files match the version installed in your system.\n\n```\ngenerate_protocol_buffer_files.sh\n```\n\n### 0. Summary\n\n\nBasically, this is a project based on C++, meaning, how it works is that you need to 1) compile the code and obtain an executable, 2) config parameters and run executable against input.\n\nTherefore, we describe compile (ground_estimation/stixel_world as CPU only example and objects_detection as GPU example) first then how to run the demo.\n\n\n### 1. Compile\n\n\n#### 1.1 CPU Only Compile\n\n\nExample for ground_estimation app\n\n```\n# Navigate to the path\ncd doppia/src/applications/ground_estimation\n\n# Compile\ncmake -D CMAKE_BUILD_TYPE=RelWithDebInfo . \u0026\u0026 make -j2\n```\n\nExample for stixel_world\n\n```\ncd doppia/src/applications/stixel_world\ncmake . \u0026\u0026 make -j2 \n```\n\n#### 1.2 GPU Compile\n\n\nobjects_detection is build in a way to work with GPU\n\n```\ncd doppia/src/applications/objects_detection\ncmake -D CMAKE_BUILD_TYPE=RelWithDebInfo -D USE_GPU=ON . \u0026\u0026 make -j2\n```\n\n\n### 2. Run Demo\n\n\n\n#### 2.1 Run Ground Estimation Demos\n\n\n```\n./ground_estimation -c test.config.ini\n```\n\n\n#### 2.2 Run Stixel World Demos\n\n\n```\n# Demo 1\nOMP_NUM_THREADS=4 ./stixel_world -c fast.config.ini --gui.disable false\n```\n\n```\n# Demo 2\nOMP_NUM_THREADS=4 ./stixel_world -c fast_uv.config.ini --gui.disable false\n```\n\n\n#### 2.3 Run Object Detection Demos\n\n\n```\n# Demo 1\nOMP_NUM_THREADS=4 ./objects_detection -c cvpr2012_very_fast_over_bahnhof.config.ini --gui.disable false\n```\n\n```\n# Demo 2\nOMP_NUM_THREADS=4 ./objects_detection -c cvpr2012_inria_pedestrians.config.ini --gui.disable false\n```\n\n```\n# Demo 3\nOMP_NUM_THREADS=4 ./objects_detection -c cvpr2012_chnftrs_over_bahnhof.config.ini --gui.disable false\n```\n\n```\n# Demo 4\n./objects_detection -c eccv2014_face_detection_pascal.config.ini --gui.disable false\n```\n\n\n#### 2.4 Summary\n\n\nSo basically, after compile an app, you just need to define a config file with format like `*.config.ini` and use `objects_detection` executable to run against it.\n\nFor example, `pedestrians detection` has an example config [file](https://github.com/KleinYuan/doppia/blob/master/src/applications/objects_detection/cvpr2012_inria_pedestrians.config.ini) and in this file, you can define whether you wanna input from directory or camera, scales, stride, mask, ...etc. For the example config of pedestrians detection, the input is sourced from [directory](https://github.com/KleinYuan/doppia/tree/master/data/sample_test_images/inria), which you can also easily define your own ones.\n\nFor more details, you can run `./objects_detection --help` to see all the options.\n\nFor example, if you want to save the detections and save screenshots into local folder then you can use `--save_detections and --gui.save_all_screenshots` flags:\n\n```\n./objects_detection -c ***.ini --save_detection=1 --gui.disable=false --gui.save_all_screenshots=1\n\n```\n\nYou can find the detailed info by running `./objects_detection --help`\n\n\n### 3. Modifications\n\n\n\n#### 3.1 OpenCV issues\n\nDue to some OpenCV linking issues originally potentially from wrong order of linking lib, we have a fix for compiling apps by commenting out following in all `CMakeLists.txt`. (Original issue discussion can be found [here](https://bitbucket.org/rodrigob/doppia/issues/135/ground_estimation-linking-problems)).\n\n```\n#set(opencv_LIBRARIES\n#    opencv_core opencv_imgproc opencv_highgui opencv_ml\n#    opencv_video opencv_features2d\n#    opencv_calib3d\n#    opencv_objdetect opencv_contrib\n#    opencv_legacy opencv_flann\n#    opencv_gpu\n#   ) # quick hack for opencv2.4 support\n```\n\nExample changes:\n\nName | Line | \n--- | --- \nground_estimation | [line_40](https://github.com/KleinYuan/doppia/blob/master/src/applications/ground_estimation/CMakeLists.txt#L40)\nstixel_world | [line_40](https://github.com/KleinYuan/doppia/blob/master/src/applications/stixel_world/CMakeLists.txt#L40)\nobjects_detection | [line_42](https://github.com/KleinYuan/doppia/blob/master/src/applications/objects_detection/CMakeLists.txt#L42)\n\n\n\n#### 3.2 CUDA modifications\n\nYou need to modify the cuda path with correct version on your machine and in here, the changes are below and original discussions can be found [here](https://bitbucket.org/rodrigob/doppia/issues/80/gpuveryfastintegralchannelsdetector):\n\n- [X] Replacing all `cuda-5.5` with `cuda-8.0` since that's what I tested (you may have a different version and check by `ls /usr/local | grep cuda`)\n\n- [X] Replacing all `cuda-5.5` in all related CMakeList.txt, for example in [objects_detection](https://github.com/KleinYuan/doppia/blob/master/src/applications/objects_detection/CMakeLists.txt#L78)\n\n- [X] Adding `USE_GPU` flag in objects_detection [CMakeList.txt](https://github.com/KleinYuan/doppia/blob/master/src/applications/objects_detection/CMakeLists.txt#L32)\n\n- [X] Indexing CUDA arch specifically in objects_detection [CMakeList.txt](https://github.com/KleinYuan/doppia/blob/master/src/applications/objects_detection/CMakeLists.txt#L59) and make sure that the arch is the one your host machine is compatible, otherwise you may still be able to compile but throw errors\n\n- [X] Enforce objects_detection to be build with GPU ON by adding flag in cmake [command](https://github.com/KleinYuan/doppia#gpu-code)\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkleinyuan%2Fdoppia","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkleinyuan%2Fdoppia","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkleinyuan%2Fdoppia/lists"}