Skip to content
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

Ros2 synthetic facial generation #288

Merged
merged 88 commits into from
Nov 8, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
88 commits
Select commit Hold shift + click to select a range
6788fab
opendr_ws_ros2 synthetic facial image generation
ekakalet Aug 24, 2022
24da6cb
Delete projects/opendr_ws_2/src/ros2_bridge directory
ekakalet Aug 24, 2022
b0d8907
delete unneccesary directory
ekakalet Aug 24, 2022
fdab81b
delete unncessary folder
ekakalet Aug 24, 2022
f686457
Update README.md
ekakalet Aug 24, 2022
f15053b
Update package.xml
ekakalet Aug 24, 2022
75340c3
Update setup.py
ekakalet Aug 24, 2022
139fee0
Update package.xml
ekakalet Aug 24, 2022
0b779d2
Update package.xml
ekakalet Aug 24, 2022
7edafb9
prepared with test
ekakalet Aug 25, 2022
df62298
Merge branch 'ros2_synthetic_facial_generation' of https://github.com…
ekakalet Aug 25, 2022
e5cde56
Merge branch 'ros2' into ros2_synthetic_facial_generation
ekakalet Aug 25, 2022
e1d2d88
Update synthetic_facial_generation.py
ekakalet Aug 29, 2022
03e3355
Update synthetic_facial_generation.py
ekakalet Aug 29, 2022
1a2fa94
Update synthetic_facial_generation.py
ekakalet Aug 30, 2022
33e51cd
Update setup.py
ekakalet Aug 30, 2022
25227e9
Update test_pep257.py
ekakalet Aug 30, 2022
7424a97
Update test_flake8.py
ekakalet Aug 30, 2022
47f0ef7
Update test_copyright.py
ekakalet Aug 30, 2022
7fb5095
Update mesh_util.py
ekakalet Aug 30, 2022
0e11bef
Update Dockerfile-cuda
ekakalet Sep 12, 2022
706384d
Update .github/workflows/tests_suite_develop.yml
ekakalet Sep 12, 2022
044b403
Update .github/workflows/tests_suite_develop.yml
ekakalet Sep 12, 2022
0c08275
Update projects/opendr_ws_2/src/data_generation/package.xml
ekakalet Sep 12, 2022
46c232e
Update test_copyright.py
ekakalet Sep 12, 2022
a088943
Update test_flake8.py
ekakalet Sep 12, 2022
e197dc0
Update test_pep257.py
ekakalet Sep 12, 2022
bb45147
Update test_license.py
ekakalet Sep 12, 2022
b04006e
Update projects/opendr_ws_2/src/data_generation/setup.py
ekakalet Sep 12, 2022
fb9437a
Update projects/opendr_ws_2/src/data_generation/setup.py
ekakalet Sep 12, 2022
fff56e6
Update projects/opendr_ws_2/src/data_generation/data_generation/synth…
ekakalet Sep 12, 2022
5f3789f
Update projects/opendr_ws_2/src/data_generation/data_generation/synth…
ekakalet Sep 12, 2022
d2b78bb
Update projects/opendr_ws_2/src/data_generation/data_generation/synth…
ekakalet Sep 12, 2022
fcf25fe
Update projects/opendr_ws_2/src/data_generation/data_generation/synth…
ekakalet Sep 12, 2022
e29bab2
Update projects/opendr_ws_2/src/data_generation/data_generation/synth…
ekakalet Sep 12, 2022
1d2fd74
Update projects/opendr_ws_2/src/data_generation/data_generation/synth…
ekakalet Sep 12, 2022
edf4ebf
Update projects/opendr_ws_2/src/data_generation/data_generation/synth…
ekakalet Sep 12, 2022
6e7478e
Update package.xml
ekakalet Sep 12, 2022
35d0d33
Update synthetic_facial_generation.py
ekakalet Sep 12, 2022
fb6ce7a
Update .github/workflows/tests_suite_develop.yml
ekakalet Sep 13, 2022
9ae937b
Update synthetic_facial_generation.py
ekakalet Sep 13, 2022
b453f7f
Update synthetic_facial_generation.py
ekakalet Sep 15, 2022
37471a4
ros2
ekakalet Sep 29, 2022
aaf479e
Merge remote-tracking branch 'origin/ros2_synthetic_facial_generation…
ekakalet Sep 29, 2022
97aab4b
ros2
ekakalet Sep 29, 2022
b96f58d
ros2
ekakalet Sep 29, 2022
d10312e
Update README.md
ekakalet Oct 11, 2022
f3a4db7
Update synthetic_facial_generation.py
ekakalet Oct 11, 2022
59bd683
Update synthetic_facial_generation.py
ekakalet Oct 11, 2022
ee7d9b6
Update synthetic_facial_generation.py
ekakalet Oct 11, 2022
e769e97
Update synthetic_facial_generation.py
ekakalet Oct 11, 2022
fca0a27
Update test_copyright.py
ekakalet Oct 11, 2022
f161407
Update test_flake8.py
ekakalet Oct 11, 2022
4a59ebf
Update test_pep257.py
ekakalet Oct 11, 2022
2457806
Update test_license.py
ekakalet Oct 17, 2022
6524656
Merge branch 'ros2' into ros2_synthetic_facial_generation
ekakalet Oct 18, 2022
3354d35
Update test_license.py
ekakalet Oct 19, 2022
814abf0
Update Dockerfile-cuda
ekakalet Oct 25, 2022
eec3279
Update projects/opendr_ws_2/src/data_generation/data_generation/synth…
ekakalet Oct 25, 2022
6fff4c6
Update projects/opendr_ws_2/src/data_generation/data_generation/synth…
ekakalet Oct 25, 2022
b98cfe8
Update projects/opendr_ws_2/src/data_generation/data_generation/synth…
ekakalet Oct 25, 2022
94126be
Update projects/opendr_ws_2/src/data_generation/data_generation/synth…
ekakalet Oct 25, 2022
91d2604
Update projects/opendr_ws_2/src/data_generation/data_generation/synth…
ekakalet Oct 25, 2022
74d7850
Update projects/opendr_ws_2/src/data_generation/test/test_copyright.py
ekakalet Oct 25, 2022
b4b4dc2
Update projects/opendr_ws_2/src/data_generation/test/test_flake8.py
ekakalet Oct 25, 2022
4c4149e
Update projects/opendr_ws_2/src/data_generation/test/test_pep257.py
ekakalet Oct 25, 2022
265189f
Update tests/test_license.py
ekakalet Oct 25, 2022
b8151d6
Update projects/opendr_ws_2/src/data_generation/data_generation/synth…
ekakalet Oct 25, 2022
d62400d
Update projects/opendr_ws_2/src/data_generation/data_generation/synth…
ekakalet Oct 25, 2022
6f5508b
Update projects/opendr_ws_2/src/data_generation/data_generation/synth…
ekakalet Oct 25, 2022
b71001d
Update projects/opendr_ws_2/src/data_generation/data_generation/synth…
ekakalet Oct 25, 2022
778daa9
Update projects/opendr_ws_2/src/data_generation/data_generation/synth…
ekakalet Oct 25, 2022
ec514f2
Update projects/opendr_ws_2/src/data_generation/data_generation/synth…
ekakalet Oct 25, 2022
f6e6761
Update projects/opendr_ws_2/src/data_generation/data_generation/synth…
ekakalet Oct 25, 2022
86b0567
Update projects/opendr_ws_2/src/data_generation/data_generation/synth…
ekakalet Oct 25, 2022
2f2ea69
Update projects/opendr_ws_2/src/data_generation/data_generation/synth…
ekakalet Oct 25, 2022
cca077a
Update synthetic_facial_generation.py
ekakalet Oct 25, 2022
fafe063
Update synthetic_facial_generation.py
ekakalet Oct 25, 2022
f1cd8f6
Update synthetic_facial_generation.py
ekakalet Oct 25, 2022
849d1dc
new updates
ekakalet Nov 3, 2022
ce4530d
updates
ekakalet Nov 3, 2022
fe68d01
Merge branch 'ros2' into ros2_synthetic_facial_generation
ekakalet Nov 3, 2022
09cbcde
Update bridge.py
ekakalet Nov 3, 2022
a18b0ce
Update README.md
ekakalet Nov 3, 2022
da744e3
Update data.py
ekakalet Nov 3, 2022
43fad6e
Update projects/opendr_ws_2/src/opendr_ros2_bridge/opendr_ros2_bridge…
ekakalet Nov 7, 2022
e5a4d67
Update projects/opendr_ws_2/src/opendr_ros2_bridge/opendr_ros2_bridge…
ekakalet Nov 7, 2022
c2c1f0e
Update projects/opendr_ws_2/src/data_generation/data_generation/synth…
ekakalet Nov 7, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file.
Original file line number Diff line number Diff line change
@@ -0,0 +1,173 @@
#!/usr/bin/env python3.6
# Copyright 2020-2022 OpenDR European Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import cv2
ekakalet marked this conversation as resolved.
Show resolved Hide resolved
import os
import argparse
import numpy as np

import rclpy
from rclpy.node import Node

from sensor_msgs.msg import Image as ROS_Image
from cv_bridge import CvBridge

from opendr.projects.python.simulation.synthetic_multi_view_facial_image_generation.algorithm.DDFA.utils.ddfa \
import str2bool
from opendr.src.opendr.engine.data import Image
ekakalet marked this conversation as resolved.
Show resolved Hide resolved
from opendr.projects.python.simulation.synthetic_multi_view_facial_image_generation.SyntheticDataGeneration \
import MultiviewDataGeneration


class SyntheticDataGenerator(Node):

def __init__(self, args, input_rgb_image_topic="/image_raw",
output_rgb_image_topic="/opendr/synthetic_facial_images"):
"""
Creates a ROS Node for SyntheticDataGeneration
:param input_rgb_image_topic: Topic from which we are reading the input image
:type input_rgb_image_topic: str
:param output_rgb_image_topic: Topic to which we are publishing the synthetic facial image (if None, no image
is published)
:type output_rgb_image_topic: str
"""
super().__init__('synthetic_facial_image_generation_node')
self.image_publisher = self.create_publisher(ROS_Image, output_rgb_image_topic, 10)
self.create_subscription(ROS_Image, input_rgb_image_topic, self.callback, 1)
self._cv_bridge = CvBridge()
self.ID = 0
self.args = args
self.path_in = args.path_in
self.key = str(args.path_3ddfa + "/example/Images/")
self.key1 = str(args.path_3ddfa + "/example/")
self.key2 = str(args.path_3ddfa + "/results/")
self.save_path = args.save_path
self.val_yaw = args.val_yaw
self.val_pitch = args.val_pitch
self.device = args.device

# Initialize the SyntheticDataGeneration
self.synthetic = MultiviewDataGeneration(self.args)

def callback(self, data):
"""
Callback that process the input data and publishes to the corresponding topics
:param data: input message
:type data: sensor_msgs.msg.Image
"""

# Convert sensor_msgs.msg.Image into OpenDR Image

cv_image = self._cv_bridge.imgmsg_to_cv2(data, desired_encoding="rgb8")
image = Image(np.asarray(cv_image, dtype=np.uint8))
self.ID = self.ID + 1
# Get an OpenCV image back
image = cv2.cvtColor(image.opencv(), cv2.COLOR_RGBA2BGR)
name = str(f"{self.ID:02d}" + "_single.jpg")
cv2.imwrite(os.path.join(self.path_in, name), image)

if self.ID == 10:
# Run SyntheticDataGeneration
self.synthetic.eval()
self.ID = 0
# Annotate image and publish results
current_directory_path = os.path.join(self.save_path, str("/Documents_orig/"))
for file in os.listdir(current_directory_path):
name, ext = os.path.splitext(file)
if ext == ".jpg":
image_file_savepath = os.path.join(current_directory_path, file)
cv_image = cv2.imread(image_file_savepath)
cv_image = cv2.cvtColor(cv_image, cv2.COLOR_BGR2RGB)
if self.image_publisher is not None:
image = Image(np.array(cv_image, dtype=np.uint8))
message = self.bridge.to_ros_image(image, encoding="rgb8")
self.image_publisher.publish(message)
for f in os.listdir(self.path_in):
os.remove(os.path.join(self.path_in, f))


def main(args=None):
rclpy.init(args=args)
parser = argparse.ArgumentParser()
parser.add_argument("-i", "--input_rgb_image_topic", help="Topic name for input rgb image",
type=str, default="/image_raw")
parser.add_argument("-o", "--output_rgb_image_topic", help="Topic name for output annotated rgb image",
type=str, default="/opendr/synthetic_facial_images")
parser.add_argument("--path_in", default=os.path.join("opendr", "projects",
"data_generation",
"synthetic_multi_view_facial_image_generation",
"demos", "imgs_input"),
type=str, help='Give the path of image folder')
parser.add_argument('--path_3ddfa', default=os.path.join("opendr", "projects",
"data_generation",
"synthetic_multi_view_facial_image_generation",
"algorithm", "DDFA"),
type=str, help='Give the path of DDFA folder')
parser.add_argument('--save_path', default=os.path.join("opendr", "projects",
"data_generation",
"synthetic_multi_view_facial_image_generation",
"results"),
type=str, help='Give the path of results folder')
parser.add_argument('--val_yaw', default="10 20", nargs='+', type=str, help='yaw poses list between [-90,90]')
parser.add_argument('--val_pitch', default="30 40", nargs='+', type=str, help='pitch poses list between [-90,90]')
parser.add_argument("--device", default="cuda", type=str, help="choose between cuda or cpu ")
parser.add_argument('-f', '--files', nargs='+',
help='image files paths fed into network, single or multiple images')
parser.add_argument('--show_flg', default='false', type=str2bool, help='whether show the visualization result')
parser.add_argument('--dump_res', default='true', type=str2bool,
help='whether write out the visualization image')
parser.add_argument('--dump_vertex', default='false', type=str2bool,
help='whether write out the dense face vertices to mat')
parser.add_argument('--dump_ply', default='true', type=str2bool)
parser.add_argument('--dump_pts', default='true', type=str2bool)
parser.add_argument('--dump_roi_box', default='false', type=str2bool)
parser.add_argument('--dump_pose', default='true', type=str2bool)
parser.add_argument('--dump_depth', default='true', type=str2bool)
parser.add_argument('--dump_pncc', default='true', type=str2bool)
parser.add_argument('--dump_paf', default='true', type=str2bool)
parser.add_argument('--paf_size', default=3, type=int, help='PAF feature kernel size')
parser.add_argument('--dump_obj', default='true', type=str2bool)
parser.add_argument('--dlib_bbox', default='true', type=str2bool, help='whether use dlib to predict bbox')
parser.add_argument('--dlib_landmark', default='true', type=str2bool,
help='whether use dlib landmark to crop image')
parser.add_argument('-m', '--mode', default='gpu', type=str, help='gpu or cpu mode')
parser.add_argument('--bbox_init', default='two', type=str,
help='one|two: one-step bbox initialization or two-step')
parser.add_argument('--dump_2d_img', default='true', type=str2bool, help='whether to save 3d rendered image')
parser.add_argument('--dump_param', default='true', type=str2bool, help='whether to save param')
parser.add_argument('--dump_lmk', default='true', type=str2bool, help='whether to save landmarks')
parser.add_argument('--save_dir', default='./algorithm/DDFA/results', type=str, help='dir to save result')
parser.add_argument('--save_lmk_dir', default='./example', type=str, help='dir to save landmark result')
parser.add_argument('--img_list', default='./txt_name_batch.txt', type=str, help='test image list file')
parser.add_argument('--rank', default=0, type=int, help='used when parallel run')
parser.add_argument('--world_size', default=1, type=int, help='used when parallel run')
parser.add_argument('--resume_idx', default=0, type=int)
args = parser.parse_args()

synthetic_data_generation_node = SyntheticDataGenerator(args=args,
input_rgb_image_topic=args.input_rgb_image_topic,
output_rgb_image_topic=args.output_rgb_image_topic)

rclpy.spin(synthetic_data_generation_node)

# Destroy the node explicitly
# (optional - otherwise it will be done automatically
# when the garbage collector destroys the node object)
synthetic_data_generation_node.destroy_node()
rclpy.shutdown()

ekakalet marked this conversation as resolved.
Show resolved Hide resolved

if __name__ == '__main__':
main()
26 changes: 26 additions & 0 deletions projects/opendr_ws_2/src/data_generation/package.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?xml version="1.0"?>
<?xml-model href="http://download.ros.org/schema/package_format3.xsd" schematypens="http://www.w3.org/2001/XMLSchema"?>
<package format="3">
<name>data_generation</name>
<version>1.0.0</version>
<description>OpenDR ROS2 node for synthetic multiview facial image generation</description>
<maintainer email="tefas@csd.auth.gr">tefas</maintainer>
<license>Apache License v2.0</license>

<depend>rclcpp></depend>
<depend>sensor_msgs</depend>

<exec_depend>rclpy</exec_depend>
<exec_depend>opendr_ros2_bridge</exec_depend>

<buildtool_depend>ament_cmake</buildtool_depend>

<test_depend>ament_copyright</test_depend>
<test_depend>ament_flake8</test_depend>
<test_depend>ament_pep257</test_depend>
<test_depend>python3-pytest</test_depend>

<export>
<build_type>ament_python</build_type>
</export>
</package>
Empty file.
4 changes: 4 additions & 0 deletions projects/opendr_ws_2/src/data_generation/setup.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
[develop]
script-dir=$base/lib/data_generation
[install]
install-scripts=$base/lib/data_generation
40 changes: 40 additions & 0 deletions projects/opendr_ws_2/src/data_generation/setup.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# Copyright 2020-2022 OpenDR European Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from setuptools import setup

package_name = 'data_generation'

setup(
name=package_name,
version='1.0.0',
packages=[package_name],
data_files=[
('share/ament_index/resource_index/packages',
['resource/' + package_name]),
('share/' + package_name, ['package.xml']),
],
install_requires=['setuptools'],
zip_safe=True,
maintainer='OpenDR Project Coordinator',
maintainer_email='tefas@csd.auth.gr',
description='OpenDR ROS2 node for synthetic multiview facial image generation',
license='Apache License v2.0',
tests_require=['pytest'],
entry_points={
'console_scripts': [
'synthetic_facial_generation = data_generation.synthetic_facial_generation:main'
],
},
)
23 changes: 23 additions & 0 deletions projects/opendr_ws_2/src/data_generation/test/test_copyright.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Copyright 2015 Open Source Robotics Foundation, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from ament_copyright.main import main
import pytest


@pytest.mark.copyright
@pytest.mark.linter
def test_copyright():
rc = main(argv=['.', 'test'])
assert rc == 0, 'Found errors'
25 changes: 25 additions & 0 deletions projects/opendr_ws_2/src/data_generation/test/test_flake8.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Copyright 2015 Open Source Robotics Foundation, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from ament_flake8.main import main_with_errors
import pytest


@pytest.mark.flake8
@pytest.mark.linter
def test_flake8():
rc, errors = main_with_errors(argv=[])
assert rc == 0, \
'Found %d code style errors / warnings:\n' % len(errors) + \
'\n'.join(errors)
23 changes: 23 additions & 0 deletions projects/opendr_ws_2/src/data_generation/test/test_pep257.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
# Copyright 2015 Open Source Robotics Foundation, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

from ament_pep257.main import main
import pytest


@pytest.mark.linter
@pytest.mark.pep257
def test_pep257():
rc = main(argv=['.', 'test'])
assert rc == 0, 'Found code style errors / warnings'
Original file line number Diff line number Diff line change
Expand Up @@ -40,9 +40,9 @@
from shutil import copyfile
import cv2
import os
from algorithm.DDFA import preprocessing_1
from algorithm.DDFA import preprocessing_2
from algorithm.Rotate_and_Render import test_multipose
from .algorithm.DDFA import preprocessing_1
from .algorithm.DDFA import preprocessing_2
from .algorithm.Rotate_and_Render import test_multipose


class MultiviewDataGeneration():
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,18 @@
import torch
from algorithm.Rotate_and_Render.models.networks.base_network import BaseNetwork
from algorithm.Rotate_and_Render.models.networks import loss
from algorithm.Rotate_and_Render.models.networks import discriminator
from algorithm.Rotate_and_Render.models.networks import generator
from algorithm.Rotate_and_Render.models.networks import encoder
from algorithm.Rotate_and_Render.models.networks.render import Render
import algorithm.Rotate_and_Render.util.util as util
from .base_network import BaseNetwork
from . import loss
from . import discriminator
from . import generator
from . import encoder
from .render import Render
from ...util.util import find_class_in_module
__all__ = ['loss', 'discriminator', 'generator', 'encoder', 'Render']


def find_network_using_name(target_network_name, filename):
target_class_name = target_network_name + filename
module_name = 'algorithm.Rotate_and_Render.models.networks.' + filename
network = util.find_class_in_module(target_class_name, module_name)
network = find_class_in_module(target_class_name, module_name)

assert issubclass(network, BaseNetwork), \
"Class %s should be a subclass of BaseNetwork" % network
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@
import os
from ..util import util
import torch
from algorithm.Rotate_and_Render import models
from algorithm.Rotate_and_Render import data
from .. import models
from .. import data
import pickle
__all__ = ['math']

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import torch
import math
from .models.networks.rotate_render import TestRender
from algorithm.Rotate_and_Render.data import dataset_info
from .data import dataset_info
multiprocessing.set_start_method('spawn', force=True)
__all__ = ['dataset_info']

Expand Down
2 changes: 2 additions & 0 deletions tests/test_license.py
100755 → 100644
Original file line number Diff line number Diff line change
Expand Up @@ -108,6 +108,7 @@ def setUp(self):
'src/opendr/perception/facial_expression_recognition/landmark_based_facial_expression_recognition',
'projects/opendr_ws_2/src/opendr_perception/test',
'projects/opendr_ws_2/src/opendr_ros2_bridge/test',
'projects/opendr_ws_2/src/data_generation/test',
'projects/opendr_ws_2/src/opendr_simulation/test',
]

Expand All @@ -123,6 +124,7 @@ def setUp(self):
'src/opendr/perception/multimodal_human_centric/audiovisual_emotion_learner/algorithm/utils.py',
'projects/opendr_ws_2/src/opendr_perception/setup.py',
'projects/opendr_ws_2/src/opendr_ros2_bridge/setup.py',
'projects/opendr_ws_2/src/data_generation/setup.py',
'projects/opendr_ws_2/src/opendr_simulation/setup.py',
]

Expand Down