From 773d3a1c8863aafb3b3ab8adfaae3aa286be4421 Mon Sep 17 00:00:00 2001 From: Vladimir Petrik Date: Tue, 20 Jun 2023 15:19:06 +0200 Subject: [PATCH 01/18] ci installation in conda --- .github/workflows/test.yml | 54 +++++++++++++++++++++++++++++++++----- 1 file changed, 47 insertions(+), 7 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 165c5f51..d430c3cd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -5,16 +5,56 @@ on: [push, pull_request] jobs: test: runs-on: ubuntu-latest + defaults: + run: + shell: bash -el {0} strategy: matrix: - python-version: ["3.8", "3.9", "3.10", "3.11"] + python-version: ["3.8"] steps: - uses: actions/checkout@v3 - - run: pipx install poetry - - uses: actions/setup-python@v4 + - uses: conda-incubator/setup-miniconda@v2 with: + activate-environment: happypose + environment-file: environment.yml python-version: ${{ matrix.python-version }} - cache: poetry - - run: poetry install --with dev -E render - - run: poetry run coverage run -m unittest - - uses: codecov/codecov-action@v3 + auto-activate-base: false + - run: | + conda info + conda list + cd happypose/pose_estimators/cosypose + python setup.py install + cd ../../.. + pip install -e . + +# - shell: bash -el {0} +# run: | +# pip install . +# pip install pytest +# pytest tests +# +# - run: pipx install poetry +# - uses: actions/setup-python@v4 +# with: +# python-version: ${{ matrix.python-version }} +# cache: poetry +# - run: poetry install --with dev -E render +# - run: poetry run coverage run -m unittest +# - uses: codecov/codecov-action@v3 + +#name: PyPhysX install in conda +#on: [ push ] +#jobs: +# build: +# runs-on: "ubuntu-latest" +# steps: +# - uses: actions/checkout@v2 +# - uses: conda-incubator/setup-miniconda@v2 +# with: +# auto-update-conda: true +# python-version: "3.8" +# - shell: bash -el {0} +# run: | +# pip install . +# pip install pytest +# pytest tests \ No newline at end of file From 9fa3345a4bd713de75ba8bfc78fe391210f80ecd Mon Sep 17 00:00:00 2001 From: Vladimir Petrik Date: Tue, 20 Jun 2023 15:28:34 +0200 Subject: [PATCH 02/18] fix python version to correspond to environment.yml file --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d430c3cd..bc85206c 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,7 +10,7 @@ jobs: shell: bash -el {0} strategy: matrix: - python-version: ["3.8"] + python-version: ["3.9"] steps: - uses: actions/checkout@v3 - uses: conda-incubator/setup-miniconda@v2 From fe2cda30f747d776e4fb66e15c298f940a4c1c2a Mon Sep 17 00:00:00 2001 From: Vladimir Petrik Date: Tue, 20 Jun 2023 15:57:40 +0200 Subject: [PATCH 03/18] install bop_toolkit and run tests --- .github/workflows/test.yml | 45 +++--------- .../renderer/panda3d_scene_renderer.py | 30 ++++---- tests/data/obj_000001.ply | Bin 0 -> 297699 bytes tests/{tests_cosy.py => test_cosy.py} | 0 tests/{tests_docs.py => test_docs.py} | 0 tests/test_renderer_panda3d.py | 69 ++++++++++++++++++ 6 files changed, 97 insertions(+), 47 deletions(-) create mode 100644 tests/data/obj_000001.ply rename tests/{tests_cosy.py => test_cosy.py} (100%) rename tests/{tests_docs.py => test_docs.py} (100%) create mode 100644 tests/test_renderer_panda3d.py diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index bc85206c..d9d6f1d7 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,41 +20,20 @@ jobs: python-version: ${{ matrix.python-version }} auto-activate-base: false - run: | - conda info - conda list cd happypose/pose_estimators/cosypose python setup.py install cd ../../.. pip install -e . + + - run: | + mkdir libs + cd libs + git clone https://github.com/ylabbe/bop_toolkit/ -b dataset-tools + cd bop_toolkit + sed 's/==.*$//' requirements.txt > req_nover.txt + pip install -r req_nover.txt -e . -# - shell: bash -el {0} -# run: | -# pip install . -# pip install pytest -# pytest tests -# -# - run: pipx install poetry -# - uses: actions/setup-python@v4 -# with: -# python-version: ${{ matrix.python-version }} -# cache: poetry -# - run: poetry install --with dev -E render -# - run: poetry run coverage run -m unittest -# - uses: codecov/codecov-action@v3 - -#name: PyPhysX install in conda -#on: [ push ] -#jobs: -# build: -# runs-on: "ubuntu-latest" -# steps: -# - uses: actions/checkout@v2 -# - uses: conda-incubator/setup-miniconda@v2 -# with: -# auto-update-conda: true -# python-version: "3.8" -# - shell: bash -el {0} -# run: | -# pip install . -# pip install pytest -# pytest tests \ No newline at end of file + - run: | + pip install pytest coverage + coverage run -m pytest tests + - uses: codecov/codecov-action@v3 diff --git a/happypose/toolbox/renderer/panda3d_scene_renderer.py b/happypose/toolbox/renderer/panda3d_scene_renderer.py index 98536600..f0e395e3 100644 --- a/happypose/toolbox/renderer/panda3d_scene_renderer.py +++ b/happypose/toolbox/renderer/panda3d_scene_renderer.py @@ -29,6 +29,7 @@ from typing import Dict, List, Optional, Set # Third Party +import torch import numpy as np import panda3d as p3d from direct.showbase.ShowBase import ShowBase @@ -80,20 +81,21 @@ def __init__(self) -> None: "audio-library-name null\n" "model-cache-dir\n", ) - assert "CUDA_VISIBLE_DEVICES" in os.environ - devices = os.environ["CUDA_VISIBLE_DEVICES"].split(",") - assert len(devices) == 1 - if "EGL_VISIBLE_DEVICES" not in os.environ: - out = subprocess.check_output( - ["nvidia-smi", "--id=" + str(devices[0]), "-q", "--xml-format"] - ) - tree = ET.fromstring(out) - gpu = tree.findall("gpu")[0] - assert gpu is not None - minor_number_el = gpu.find("minor_number") - assert minor_number_el is not None - dev_id = minor_number_el.text - os.environ["EGL_VISIBLE_DEVICES"] = str(dev_id) + if torch.cuda.is_available(): + assert "CUDA_VISIBLE_DEVICES" in os.environ + devices = os.environ["CUDA_VISIBLE_DEVICES"].split(",") + assert len(devices) == 1 + if "EGL_VISIBLE_DEVICES" not in os.environ: + out = subprocess.check_output( + ["nvidia-smi", "--id=" + str(devices[0]), "-q", "--xml-format"] + ) + tree = ET.fromstring(out) + gpu = tree.findall("gpu")[0] + assert gpu is not None + minor_number_el = gpu.find("minor_number") + assert minor_number_el is not None + dev_id = minor_number_el.text + os.environ["EGL_VISIBLE_DEVICES"] = str(dev_id) super().__init__(windowType="offscreen") self.render.set_shader_auto() diff --git a/tests/data/obj_000001.ply b/tests/data/obj_000001.ply new file mode 100644 index 0000000000000000000000000000000000000000..60c98f76b881c67a0d08e98e6c9184adb49bacc5 GIT binary patch literal 297699 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

X-@Qrh9n1s9oZ^ikM&<0pVI1_R}I=q~k;nf_H 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 Cbd|yY literal 0 HcmV?d00001 diff --git a/tests/tests_cosy.py b/tests/test_cosy.py similarity index 100% rename from tests/tests_cosy.py rename to tests/test_cosy.py diff --git a/tests/tests_docs.py b/tests/test_docs.py similarity index 100% rename from tests/tests_docs.py rename to tests/test_docs.py diff --git a/tests/test_renderer_panda3d.py b/tests/test_renderer_panda3d.py new file mode 100644 index 00000000..14bc0a65 --- /dev/null +++ b/tests/test_renderer_panda3d.py @@ -0,0 +1,69 @@ +import unittest +from pathlib import Path +import numpy as np +from numpy.testing import assert_equal + +from happypose.toolbox.datasets.object_dataset import RigidObjectDataset, RigidObject +from happypose.toolbox.lib3d.transform import Transform +from happypose.toolbox.renderer.panda3d_scene_renderer import Panda3dSceneRenderer +from happypose.toolbox.renderer.types import ( + Panda3dObjectData, + Panda3dCameraData, + Panda3dLightData, +) + + +class TestRendererPanda3D(unittest.TestCase): + def test_simple_render(self): + renderer = Panda3dSceneRenderer( + asset_dataset=RigidObjectDataset( + objects=[ + RigidObject( + label="obj", + mesh_path=Path(__file__).parent.joinpath("data/obj_000001.ply"), + mesh_units="mm", + ) + ] + ) + ) + + object_datas = [ + Panda3dObjectData( + label="obj", TWO=Transform((0, 0, 0, 1), (0, 0, 1)), color=(1, 0, 0, 1) + ) + ] + camera_datas = [ + Panda3dCameraData( + K=np.array( + [ + [600.0, 0.0, 160.0], + [0.0, 600.0, 160.0], + [0.0, 0.0, 1.0], + ] + ), + resolution=(320, 320), + ) + ] + + light_datas = [ + Panda3dLightData( + light_type="ambient", + color=(1.0, 1, 1, 1), + ), + ] + + renderings = renderer.render_scene(object_datas, camera_datas, light_datas) + # import matplotlib.pyplot as plt + # fig, ax = plt.subplots(1, 1, squeeze=True) # type: plt.Figure, plt.Axes + # ax.imshow(renderings[0].rgb) + # plt.show() + + self.assertEqual(len(renderings), 1) + rgb = renderings[0].rgb + + assert_equal(rgb[rgb.shape[0] // 2, rgb.shape[1] // 2], (255, 0, 0)) + assert_equal(rgb[0, 0], (0, 0, 0)) + + +if __name__ == "__main__": + unittest.main() From 63b2880e7235e8de2f666ff15a03894bce309c74 Mon Sep 17 00:00:00 2001 From: Vladimir Petrik Date: Tue, 20 Jun 2023 16:17:10 +0200 Subject: [PATCH 04/18] install egl mesa --- .github/workflows/test.yml | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index d9d6f1d7..b61c2fea 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -13,19 +13,25 @@ jobs: python-version: ["3.9"] steps: - uses: actions/checkout@v3 + - name: Install EGL mesa - required for Panda3D renderer + run: | + sudo apt-get update -y -qq + sudo apt-get install -y -qq libegl1-mesa libegl1-mesa-dev - uses: conda-incubator/setup-miniconda@v2 with: activate-environment: happypose environment-file: environment.yml python-version: ${{ matrix.python-version }} auto-activate-base: false - - run: | + - name: Install happypose + run: | cd happypose/pose_estimators/cosypose python setup.py install cd ../../.. pip install -e . - - run: | + - name: Install bop toolkit (temporal fix) + run: | mkdir libs cd libs git clone https://github.com/ylabbe/bop_toolkit/ -b dataset-tools @@ -33,7 +39,8 @@ jobs: sed 's/==.*$//' requirements.txt > req_nover.txt pip install -r req_nover.txt -e . - - run: | + - name: Run tests + run: | pip install pytest coverage coverage run -m pytest tests - uses: codecov/codecov-action@v3 From 7b3e11944195d5a876a4960461e46de1fa1035ff Mon Sep 17 00:00:00 2001 From: Vladimir Petrik Date: Tue, 20 Jun 2023 16:52:26 +0200 Subject: [PATCH 05/18] overwrite headless window destroying --- .github/workflows/test.yml | 1 + happypose/toolbox/renderer/panda3d_scene_renderer.py | 7 +++++++ tests/test_renderer_panda3d.py | 5 ++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index b61c2fea..91a063cd 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -42,5 +42,6 @@ jobs: - name: Run tests run: | pip install pytest coverage + python tests/test_renderer_panda3d.py coverage run -m pytest tests - uses: codecov/codecov-action@v3 diff --git a/happypose/toolbox/renderer/panda3d_scene_renderer.py b/happypose/toolbox/renderer/panda3d_scene_renderer.py index f0e395e3..fa3107ea 100644 --- a/happypose/toolbox/renderer/panda3d_scene_renderer.py +++ b/happypose/toolbox/renderer/panda3d_scene_renderer.py @@ -102,6 +102,10 @@ def __init__(self) -> None: self.render.set_antialias(p3d.core.AntialiasAttrib.MAuto) self.render.set_two_sided(True) + def finalizeExit(self): + """Overwrite to not call sys.exit()""" + pass + def make_scene_lights( ambient_light_color: RgbaColor = (0.1, 0.1, 0.1, 1.0), @@ -171,6 +175,9 @@ def __init__( for label in tqdm(preload_labels, disable=not verbose): self.get_object_node(label) + def __del__(self): + self._app.destroy() + def create_new_camera(self, resolution: Resolution) -> Panda3dCamera: idx = sum([len(x) for x in self._cameras_pool.values()]) cam = Panda3dCamera.create(f"camera={idx}", resolution=resolution, app=self._app) diff --git a/tests/test_renderer_panda3d.py b/tests/test_renderer_panda3d.py index 14bc0a65..cd95c0f8 100644 --- a/tests/test_renderer_panda3d.py +++ b/tests/test_renderer_panda3d.py @@ -51,18 +51,21 @@ def test_simple_render(self): color=(1.0, 1, 1, 1), ), ] - + print('rendering start') renderings = renderer.render_scene(object_datas, camera_datas, light_datas) # import matplotlib.pyplot as plt # fig, ax = plt.subplots(1, 1, squeeze=True) # type: plt.Figure, plt.Axes # ax.imshow(renderings[0].rgb) # plt.show() + print('rendering done') self.assertEqual(len(renderings), 1) rgb = renderings[0].rgb assert_equal(rgb[rgb.shape[0] // 2, rgb.shape[1] // 2], (255, 0, 0)) assert_equal(rgb[0, 0], (0, 0, 0)) + print('test done') + if __name__ == "__main__": From 0c6030bcb946ea85abc7b0d6008b24fefaab2766 Mon Sep 17 00:00:00 2001 From: Vladimir Petrik Date: Thu, 22 Jun 2023 14:53:46 +0200 Subject: [PATCH 06/18] environment caching added --- .github/workflows/test.yml | 69 ++++++++++++++++++++++++++++++++------ 1 file changed, 59 insertions(+), 10 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 91a063cd..ff59fa00 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,19 +17,42 @@ jobs: run: | sudo apt-get update -y -qq sudo apt-get install -y -qq libegl1-mesa libegl1-mesa-dev - - uses: conda-incubator/setup-miniconda@v2 + + - name: Setup conda + uses: conda-incubator/setup-miniconda@v2 with: activate-environment: happypose - environment-file: environment.yml python-version: ${{ matrix.python-version }} - auto-activate-base: false + + - name: Get date for caching, reset cache every day + id: get-date + run: echo "::set-output name=today::$(/bin/date -u '+%Y%m%d')" + shell: bash + + - name: Cashing of the happypose installation + uses: actions/cache@v2 + with: + path: ${{ env.CONDA }}/envs + key: + conda-${{ runner.os }}--${{ runner.arch }}--${{steps.get-date.outputs.today }}-${{hashFiles('environment.yml') }}-${{env.CACHE_NUMBER }} + env: + # Increase this value to reset cache if environment.yml has not changed + CACHE_NUMBER: 0 + id: cache + + - name: Update conda environment with happypose dependencies + run: + conda env update -n happypose -f environment.yml + if: steps.cache.outputs.cache-hit != 'true' + - name: Install happypose run: | cd happypose/pose_estimators/cosypose python setup.py install cd ../../.. pip install -e . - + if: steps.cache.outputs.cache-hit != 'true' + - name: Install bop toolkit (temporal fix) run: | mkdir libs @@ -38,10 +61,36 @@ jobs: cd bop_toolkit sed 's/==.*$//' requirements.txt > req_nover.txt pip install -r req_nover.txt -e . + if: steps.cache.outputs.cache-hit != 'true' + + +# - uses: conda-incubator/setup-miniconda@v2 +# with: +# activate-environment: happypose +# environment-file: environment.yml +# python-version: ${{ matrix.python-version }} +# auto-activate-base: false +# miniconda-version: 'latest' +# - name: Install happypose +# run: | +# cd happypose/pose_estimators/cosypose +# python setup.py install +# cd ../../.. +# pip install -e . +# +# - name: Install bop toolkit (temporal fix) +# run: | +# mkdir libs +# cd libs +# git clone https://github.com/ylabbe/bop_toolkit/ -b dataset-tools +# cd bop_toolkit +# sed 's/==.*$//' requirements.txt > req_nover.txt +# pip install -r req_nover.txt -e . + +# - name: Run tests +# run: | +# pip install pytest coverage +# python tests/test_renderer_panda3d.py +# coverage run -m pytest tests +# - uses: codecov/codecov-action@v3 - - name: Run tests - run: | - pip install pytest coverage - python tests/test_renderer_panda3d.py - coverage run -m pytest tests - - uses: codecov/codecov-action@v3 From 69e02de115d3315143a966ccb497793084a71004 Mon Sep 17 00:00:00 2001 From: Vladimir Petrik Date: Fri, 23 Jun 2023 08:15:54 +0200 Subject: [PATCH 07/18] switch to mamba --- .github/workflows/test.yml | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ff59fa00..421aa46e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,6 +23,9 @@ jobs: with: activate-environment: happypose python-version: ${{ matrix.python-version }} + miniforge-variant: Mambaforge + miniforge-version: latest + use-mamba: true - name: Get date for caching, reset cache every day id: get-date @@ -36,21 +39,13 @@ jobs: key: conda-${{ runner.os }}--${{ runner.arch }}--${{steps.get-date.outputs.today }}-${{hashFiles('environment.yml') }}-${{env.CACHE_NUMBER }} env: - # Increase this value to reset cache if environment.yml has not changed + # Increase this value to reset cache manually CACHE_NUMBER: 0 id: cache - name: Update conda environment with happypose dependencies run: - conda env update -n happypose -f environment.yml - if: steps.cache.outputs.cache-hit != 'true' - - - name: Install happypose - run: | - cd happypose/pose_estimators/cosypose - python setup.py install - cd ../../.. - pip install -e . + mamba env update -n happypose -f environment.yml if: steps.cache.outputs.cache-hit != 'true' - name: Install bop toolkit (temporal fix) @@ -63,6 +58,12 @@ jobs: pip install -r req_nover.txt -e . if: steps.cache.outputs.cache-hit != 'true' + - name: Install happypose + run: | + cd happypose/pose_estimators/cosypose + python setup.py install + cd ../../.. + pip install -e . # - uses: conda-incubator/setup-miniconda@v2 # with: From 4aaf9b42b1aa45b739e5bde41f1bb5d25e4d6731 Mon Sep 17 00:00:00 2001 From: Vladimir Petrik Date: Fri, 23 Jun 2023 08:32:58 +0200 Subject: [PATCH 08/18] run test --- .github/workflows/test.yml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 421aa46e..e6489be6 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -64,6 +64,12 @@ jobs: python setup.py install cd ../../.. pip install -e . + - name: Run tests + run: | + pip install pytest coverage + python tests/test_renderer_panda3d.py + coverage run -m pytest tests + - uses: codecov/codecov-action@v3 # - uses: conda-incubator/setup-miniconda@v2 # with: From 7aa60f8c3088e2d5b9c7372f801d096bfddfcd6c Mon Sep 17 00:00:00 2001 From: Vladimir Petrik Date: Fri, 23 Jun 2023 18:21:53 +0200 Subject: [PATCH 09/18] fix cache; specify gl version to resolve seg fault for github action --- .github/workflows/test.yml | 34 +------------------ .../renderer/panda3d_scene_renderer.py | 8 +---- tests/test_renderer_panda3d.py | 4 --- 3 files changed, 2 insertions(+), 44 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e6489be6..ba7a593d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -33,7 +33,7 @@ jobs: shell: bash - name: Cashing of the happypose installation - uses: actions/cache@v2 + uses: actions/cache@v3 with: path: ${{ env.CONDA }}/envs key: @@ -67,37 +67,5 @@ jobs: - name: Run tests run: | pip install pytest coverage - python tests/test_renderer_panda3d.py coverage run -m pytest tests - uses: codecov/codecov-action@v3 - -# - uses: conda-incubator/setup-miniconda@v2 -# with: -# activate-environment: happypose -# environment-file: environment.yml -# python-version: ${{ matrix.python-version }} -# auto-activate-base: false -# miniconda-version: 'latest' -# - name: Install happypose -# run: | -# cd happypose/pose_estimators/cosypose -# python setup.py install -# cd ../../.. -# pip install -e . -# -# - name: Install bop toolkit (temporal fix) -# run: | -# mkdir libs -# cd libs -# git clone https://github.com/ylabbe/bop_toolkit/ -b dataset-tools -# cd bop_toolkit -# sed 's/==.*$//' requirements.txt > req_nover.txt -# pip install -r req_nover.txt -e . - -# - name: Run tests -# run: | -# pip install pytest coverage -# python tests/test_renderer_panda3d.py -# coverage run -m pytest tests -# - uses: codecov/codecov-action@v3 - diff --git a/happypose/toolbox/renderer/panda3d_scene_renderer.py b/happypose/toolbox/renderer/panda3d_scene_renderer.py index fa3107ea..bcde01cb 100644 --- a/happypose/toolbox/renderer/panda3d_scene_renderer.py +++ b/happypose/toolbox/renderer/panda3d_scene_renderer.py @@ -63,6 +63,7 @@ def __init__(self) -> None: p3d.core.load_prc_file_data( __file__, "load-display pandagl\n" + "gl-version 3 2\n" "notify-level-assimp fatal\n" "notify-level-egldisplay fatal\n" "notify-level-glgsg fatal\n" @@ -102,10 +103,6 @@ def __init__(self) -> None: self.render.set_antialias(p3d.core.AntialiasAttrib.MAuto) self.render.set_two_sided(True) - def finalizeExit(self): - """Overwrite to not call sys.exit()""" - pass - def make_scene_lights( ambient_light_color: RgbaColor = (0.1, 0.1, 0.1, 1.0), @@ -175,9 +172,6 @@ def __init__( for label in tqdm(preload_labels, disable=not verbose): self.get_object_node(label) - def __del__(self): - self._app.destroy() - def create_new_camera(self, resolution: Resolution) -> Panda3dCamera: idx = sum([len(x) for x in self._cameras_pool.values()]) cam = Panda3dCamera.create(f"camera={idx}", resolution=resolution, app=self._app) diff --git a/tests/test_renderer_panda3d.py b/tests/test_renderer_panda3d.py index cd95c0f8..848d6a7d 100644 --- a/tests/test_renderer_panda3d.py +++ b/tests/test_renderer_panda3d.py @@ -51,21 +51,17 @@ def test_simple_render(self): color=(1.0, 1, 1, 1), ), ] - print('rendering start') renderings = renderer.render_scene(object_datas, camera_datas, light_datas) # import matplotlib.pyplot as plt # fig, ax = plt.subplots(1, 1, squeeze=True) # type: plt.Figure, plt.Axes # ax.imshow(renderings[0].rgb) # plt.show() - print('rendering done') self.assertEqual(len(renderings), 1) rgb = renderings[0].rgb assert_equal(rgb[rgb.shape[0] // 2, rgb.shape[1] // 2], (255, 0, 0)) assert_equal(rgb[0, 0], (0, 0, 0)) - print('test done') - if __name__ == "__main__": From 63fd7627bfa95b855e3cd86f5714e669e9d2088b Mon Sep 17 00:00:00 2001 From: Vladimir Petrik Date: Sat, 24 Jun 2023 00:17:12 +0200 Subject: [PATCH 10/18] add documentation to panda3d test --- tests/test_renderer_panda3d.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/test_renderer_panda3d.py b/tests/test_renderer_panda3d.py index 848d6a7d..82a1ba09 100644 --- a/tests/test_renderer_panda3d.py +++ b/tests/test_renderer_panda3d.py @@ -1,3 +1,4 @@ +"""Set of unit tests for Panda3D renderer.""" import unittest from pathlib import Path import numpy as np @@ -14,7 +15,10 @@ class TestRendererPanda3D(unittest.TestCase): + """Unit tests for Panda3D renderer.""" + def test_simple_render(self): + """Render an example object and check that output image match expectation.""" renderer = Panda3dSceneRenderer( asset_dataset=RigidObjectDataset( objects=[ From d027220975d4ff218c1b2f2d777e58321f2b8ba4 Mon Sep 17 00:00:00 2001 From: Vladimir Petrik Date: Sat, 24 Jun 2023 00:19:19 +0200 Subject: [PATCH 11/18] vscode json fix --- .vscode/settings.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.vscode/settings.json b/.vscode/settings.json index 19055a87..cb32fdad 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -8,5 +8,5 @@ }, "python.linting.enabled": true, "python.linting.flake8Enabled": true, - "python.linting.mypyEnabled": true, -} \ No newline at end of file + "python.linting.mypyEnabled": true +} From 78f62151a81f74f7ae85a47668e041b5d657d764 Mon Sep 17 00:00:00 2001 From: Vladimir Petrik Date: Wed, 13 Sep 2023 20:50:37 +0200 Subject: [PATCH 12/18] disabling jupyter and fix installation based on readme --- .github/workflows/test.yml | 16 ++++++++++------ environment.yml | 6 +++--- 2 files changed, 13 insertions(+), 9 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index ba7a593d..436d388d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -12,7 +12,9 @@ jobs: matrix: python-version: ["3.9"] steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 + with: + submodules: 'recursive' - name: Install EGL mesa - required for Panda3D renderer run: | sudo apt-get update -y -qq @@ -50,10 +52,11 @@ jobs: - name: Install bop toolkit (temporal fix) run: | - mkdir libs - cd libs - git clone https://github.com/ylabbe/bop_toolkit/ -b dataset-tools - cd bop_toolkit + cd happypose/pose_estimators/megapose/deps/bop_toolkit_challenge/ +# mkdir libs +# cd libs +# git clone https://github.com/ylabbe/bop_toolkit/ -b dataset-tools +# cd bop_toolkit sed 's/==.*$//' requirements.txt > req_nover.txt pip install -r req_nover.txt -e . if: steps.cache.outputs.cache-hit != 'true' @@ -61,7 +64,8 @@ jobs: - name: Install happypose run: | cd happypose/pose_estimators/cosypose - python setup.py install +# python setup.py install + pip install . cd ../../.. pip install -e . - name: Run tests diff --git a/environment.yml b/environment.yml index dd8fec7f..c6e08482 100644 --- a/environment.yml +++ b/environment.yml @@ -16,9 +16,9 @@ dependencies: - ipython - ipykernel - jupyterlab - - notebook - - nb_conda_kernels - - jupyter_contrib_nbextensions +# - notebook +# - nb_conda_kernels +# - jupyter_contrib_nbextensions - pinocchio - rclone - pillow From a74fc168f0d530c1fd8aad718183548100b15b4e Mon Sep 17 00:00:00 2001 From: Vladimir Petrik Date: Wed, 13 Sep 2023 20:55:11 +0200 Subject: [PATCH 13/18] test recursive checkout --- .github/workflows/packaging.yml | 16 ----- .github/workflows/test.yml | 112 +++++++++++++++----------------- 2 files changed, 54 insertions(+), 74 deletions(-) delete mode 100644 .github/workflows/packaging.yml diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml deleted file mode 100644 index 9b9aae1e..00000000 --- a/.github/workflows/packaging.yml +++ /dev/null @@ -1,16 +0,0 @@ -name: Check Packaging - -on: [push, pull_request] - -jobs: - test: - runs-on: ubuntu-latest - strategy: - matrix: - python-version: ["3.8", "3.9", "3.10", "3.11"] - steps: - - uses: actions/checkout@v3 - - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - - run: python -m pip install . diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 436d388d..5322468d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,61 +15,57 @@ jobs: - uses: actions/checkout@v4 with: submodules: 'recursive' - - name: Install EGL mesa - required for Panda3D renderer - run: | - sudo apt-get update -y -qq - sudo apt-get install -y -qq libegl1-mesa libegl1-mesa-dev - - - name: Setup conda - uses: conda-incubator/setup-miniconda@v2 - with: - activate-environment: happypose - python-version: ${{ matrix.python-version }} - miniforge-variant: Mambaforge - miniforge-version: latest - use-mamba: true - - - name: Get date for caching, reset cache every day - id: get-date - run: echo "::set-output name=today::$(/bin/date -u '+%Y%m%d')" - shell: bash - - - name: Cashing of the happypose installation - uses: actions/cache@v3 - with: - path: ${{ env.CONDA }}/envs - key: - conda-${{ runner.os }}--${{ runner.arch }}--${{steps.get-date.outputs.today }}-${{hashFiles('environment.yml') }}-${{env.CACHE_NUMBER }} - env: - # Increase this value to reset cache manually - CACHE_NUMBER: 0 - id: cache - - - name: Update conda environment with happypose dependencies - run: - mamba env update -n happypose -f environment.yml - if: steps.cache.outputs.cache-hit != 'true' - - - name: Install bop toolkit (temporal fix) - run: | - cd happypose/pose_estimators/megapose/deps/bop_toolkit_challenge/ -# mkdir libs -# cd libs -# git clone https://github.com/ylabbe/bop_toolkit/ -b dataset-tools -# cd bop_toolkit - sed 's/==.*$//' requirements.txt > req_nover.txt - pip install -r req_nover.txt -e . - if: steps.cache.outputs.cache-hit != 'true' - - - name: Install happypose - run: | - cd happypose/pose_estimators/cosypose -# python setup.py install - pip install . - cd ../../.. - pip install -e . - - name: Run tests - run: | - pip install pytest coverage - coverage run -m pytest tests - - uses: codecov/codecov-action@v3 +# - name: Install EGL mesa - required for Panda3D renderer +# run: | +# sudo apt-get update -y -qq +# sudo apt-get install -y -qq libegl1-mesa libegl1-mesa-dev +# +# - name: Setup conda +# uses: conda-incubator/setup-miniconda@v2 +# with: +# activate-environment: happypose +# python-version: ${{ matrix.python-version }} +# miniforge-variant: Mambaforge +# miniforge-version: latest +# use-mamba: true +# +# - name: Get date for caching, reset cache every day +# id: get-date +# run: echo "::set-output name=today::$(/bin/date -u '+%Y%m%d')" +# shell: bash +# +# - name: Cashing of the happypose installation +# uses: actions/cache@v3 +# with: +# path: ${{ env.CONDA }}/envs +# key: +# conda-${{ runner.os }}--${{ runner.arch }}--${{steps.get-date.outputs.today }}-${{hashFiles('environment.yml') }}-${{env.CACHE_NUMBER }} +# env: +# # Increase this value to reset cache manually +# CACHE_NUMBER: 0 +# id: cache +# +# - name: Update conda environment with happypose dependencies +# run: +# mamba env update -n happypose -f environment.yml +# if: steps.cache.outputs.cache-hit != 'true' +# +# - name: Install bop toolkit (temporal fix) +# run: | +# cd happypose/pose_estimators/megapose/deps/bop_toolkit_challenge/ +# sed 's/==.*$//' requirements.txt > req_nover.txt +# pip install -r req_nover.txt -e . +# if: steps.cache.outputs.cache-hit != 'true' +# +# - name: Install happypose +# run: | +# cd happypose/pose_estimators/cosypose +# pip install . +# cd ../../.. +# pip install -e . +# +# - name: Run tests +# run: | +# pip install pytest coverage +# coverage run -m pytest tests +# - uses: codecov/codecov-action@v3 From 6abaa8f7fec425fb8da2276278978b99ee69b24b Mon Sep 17 00:00:00 2001 From: Vladimir Petrik Date: Wed, 13 Sep 2023 20:56:52 +0200 Subject: [PATCH 14/18] installation added --- .github/workflows/test.yml | 82 +++++++++++++++++++------------------- 1 file changed, 41 insertions(+), 41 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 5322468d..6f03632d 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -15,47 +15,47 @@ jobs: - uses: actions/checkout@v4 with: submodules: 'recursive' -# - name: Install EGL mesa - required for Panda3D renderer -# run: | -# sudo apt-get update -y -qq -# sudo apt-get install -y -qq libegl1-mesa libegl1-mesa-dev -# -# - name: Setup conda -# uses: conda-incubator/setup-miniconda@v2 -# with: -# activate-environment: happypose -# python-version: ${{ matrix.python-version }} -# miniforge-variant: Mambaforge -# miniforge-version: latest -# use-mamba: true -# -# - name: Get date for caching, reset cache every day -# id: get-date -# run: echo "::set-output name=today::$(/bin/date -u '+%Y%m%d')" -# shell: bash -# -# - name: Cashing of the happypose installation -# uses: actions/cache@v3 -# with: -# path: ${{ env.CONDA }}/envs -# key: -# conda-${{ runner.os }}--${{ runner.arch }}--${{steps.get-date.outputs.today }}-${{hashFiles('environment.yml') }}-${{env.CACHE_NUMBER }} -# env: -# # Increase this value to reset cache manually -# CACHE_NUMBER: 0 -# id: cache -# -# - name: Update conda environment with happypose dependencies -# run: -# mamba env update -n happypose -f environment.yml -# if: steps.cache.outputs.cache-hit != 'true' -# -# - name: Install bop toolkit (temporal fix) -# run: | -# cd happypose/pose_estimators/megapose/deps/bop_toolkit_challenge/ -# sed 's/==.*$//' requirements.txt > req_nover.txt -# pip install -r req_nover.txt -e . -# if: steps.cache.outputs.cache-hit != 'true' + - name: Install EGL mesa - required for Panda3D renderer + run: | + sudo apt-get update -y -qq + sudo apt-get install -y -qq libegl1-mesa libegl1-mesa-dev + + - name: Setup conda + uses: conda-incubator/setup-miniconda@v2 + with: + activate-environment: happypose + python-version: ${{ matrix.python-version }} + miniforge-variant: Mambaforge + miniforge-version: latest + use-mamba: true + + - name: Get date for caching, reset cache every day + id: get-date + run: echo "::set-output name=today::$(/bin/date -u '+%Y%m%d')" + shell: bash + + - name: Cashing of the happypose installation + uses: actions/cache@v3 + with: + path: ${{ env.CONDA }}/envs + key: + conda-${{ runner.os }}--${{ runner.arch }}--${{steps.get-date.outputs.today }}-${{hashFiles('environment.yml') }}-${{env.CACHE_NUMBER }} + env: + # Increase this value to reset cache manually + CACHE_NUMBER: 0 + id: cache + + - name: Update conda environment with happypose dependencies + run: + mamba env update -n happypose -f environment.yml + if: steps.cache.outputs.cache-hit != 'true' + + - name: Install bop toolkit (temporal fix) + run: | + cd happypose/pose_estimators/megapose/deps/bop_toolkit_challenge/ + sed 's/==.*$//' requirements.txt > req_nover.txt + pip install -r req_nover.txt -e . + if: steps.cache.outputs.cache-hit != 'true' # # - name: Install happypose # run: | From 6feff7d383ebe6cd384105f881f05553d7718bfa Mon Sep 17 00:00:00 2001 From: Vladimir Petrik Date: Wed, 13 Sep 2023 21:05:57 +0200 Subject: [PATCH 15/18] install happypose and run tests --- .github/workflows/test.yml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6f03632d..f621ee78 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -56,16 +56,16 @@ jobs: sed 's/==.*$//' requirements.txt > req_nover.txt pip install -r req_nover.txt -e . if: steps.cache.outputs.cache-hit != 'true' -# -# - name: Install happypose -# run: | -# cd happypose/pose_estimators/cosypose -# pip install . -# cd ../../.. -# pip install -e . -# -# - name: Run tests -# run: | -# pip install pytest coverage -# coverage run -m pytest tests -# - uses: codecov/codecov-action@v3 + + - name: Install happypose + run: | + cd happypose/pose_estimators/cosypose + pip install . + cd ../../.. + pip install -e . + + - name: Run tests + run: | + pip install pytest coverage + coverage run -m pytest tests + - uses: codecov/codecov-action@v3 From 56cb44ec056af4a73bff3f85d9eb56051a9d18b2 Mon Sep 17 00:00:00 2001 From: Vladimir Petrik Date: Wed, 13 Sep 2023 21:13:55 +0200 Subject: [PATCH 16/18] packaging returned and codecov --- .github/workflows/packaging.yml | 16 ++++++++++++++++ .github/workflows/test.yml | 4 +++- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/packaging.yml diff --git a/.github/workflows/packaging.yml b/.github/workflows/packaging.yml new file mode 100644 index 00000000..9b9aae1e --- /dev/null +++ b/.github/workflows/packaging.yml @@ -0,0 +1,16 @@ +name: Check Packaging + +on: [push, pull_request] + +jobs: + test: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.8", "3.9", "3.10", "3.11"] + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - run: python -m pip install . diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index f621ee78..91315ded 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -34,7 +34,7 @@ jobs: run: echo "::set-output name=today::$(/bin/date -u '+%Y%m%d')" shell: bash - - name: Cashing of the happypose installation + - name: Caching of the happypose installation uses: actions/cache@v3 with: path: ${{ env.CONDA }}/envs @@ -69,3 +69,5 @@ jobs: pip install pytest coverage coverage run -m pytest tests - uses: codecov/codecov-action@v3 + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} From 08dd8113c5891fcd95efd9f62b1b72951c2e2457 Mon Sep 17 00:00:00 2001 From: Vladimir Petrik Date: Wed, 13 Sep 2023 21:24:52 +0200 Subject: [PATCH 17/18] create coverage xml after test --- .github/workflows/test.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 91315ded..baab1579 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -68,6 +68,7 @@ jobs: run: | pip install pytest coverage coverage run -m pytest tests + coverage xml - uses: codecov/codecov-action@v3 env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} From 19ddff9549d967846b52b4de79d437402ee6cfe0 Mon Sep 17 00:00:00 2001 From: Vladimir Petrik Date: Wed, 13 Sep 2023 21:32:48 +0200 Subject: [PATCH 18/18] defined source path for coverage --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index baab1579..006b761e 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -67,7 +67,7 @@ jobs: - name: Run tests run: | pip install pytest coverage - coverage run -m pytest tests + coverage run --source=happypose -m pytest tests coverage xml - uses: codecov/codecov-action@v3 env: