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

feat: #376 annotationless support perception class #377

Merged
merged 49 commits into from
Mar 21, 2024

Conversation

hayato-m126
Copy link
Collaborator

@hayato-m126 hayato-m126 commented Mar 11, 2024

Types of PR

  • New Features

Description

  • support object classification

How to review this PR

Need to update cli before testing locally

git clone https://github.com/tier4/driving_log_replayer.git -b feat/#376-annotationless-support-perception-class
cd driving_log_replayer
pipx install . -f

Others

colcon test fails because of pytest version 8.1
ros2/launch#765

The test is working in my local environment with pytest version 6.25.

~/ros_ws/awf main* ⇣
❯ pip3 show pytest
Name: pytest
Version: 6.2.5
Summary: pytest: simple powerful testing with Python
Home-page: https://docs.pytest.org/en/latest/
Author: Holger Krekel, Bruno Oliveira, Ronny Pfannschmidt, Floris Bruynooghe, Brianna Laugher, Florian Bruhin and others
Author-email: 
License: MIT
Location: /usr/lib/python3/dist-packages
Requires: 
Required-by: colcon-core

~/ros_ws/awf main* ⇣ 8s
❯ colcon test --packages-select driving_log_replayer
Starting >>> driving_log_replayer
Finished <<< driving_log_replayer [5.91s]          

Summary: 1 package finished [7.81s]

~/ros_ws/awf main* ⇣ 8s
❯ colcon test-result
Summary: 173 tests, 0 errors, 0 failures, 0 skipped

@hayato-m126 hayato-m126 marked this pull request as ready for review March 15, 2024 08:11
docs/use_case/annotationless_perception.en.md Outdated Show resolved Hide resolved
docs/use_case/annotationless_perception.en.md Outdated Show resolved Hide resolved
docs/use_case/annotationless_perception.ja.md Outdated Show resolved Hide resolved
docs/use_case/annotationless_perception.ja.md Outdated Show resolved Hide resolved
@kosuke55
Copy link
Contributor

クラスごとにrange書き換え可能なこと確認できました!

dlr simulation run -p annotationless_perception  -l 'annotationless_threshold_file:=/home/kosuke55/driving_log_replayer_output/annotationless_perception/2024-0318-134244/sample/result.jsonl,annotationless_pass_range:={"CAR":"0.9-1.2","BUS":"0.8-1.1"}'

[annotationless_perception_evaluator_node.py-66] set_pass_range: {'CAR': ClassConditionValue(Threshold={'lateral_deviation': DiagValue(min=0.001599397106109325, max=0.017246680064308677, mean=0.007563688102893884), 'yaw_deviation': DiagValue(min=0.15102161736334405, max=2.1719591768488753, mean=0.9836237572347273), 'predicted_path_deviation_5.00': DiagValue(min=0.0, max=4.786836704180061, mean=0.8795299678456593), 'predicted_path_deviation_3.00': DiagValue(min=0.0, max=2.475492971061092, mean=0.47171195659163956), 'predicted_path_deviation_2.00': DiagValue(min=0.0, max=1.4816662443729904, mean=0.29863015273311877), 'predicted_path_deviation_1.00': DiagValue(min=0.0, max=0.660359517684888, mean=0.1477774726688104)}, PassRange=(0.9, 1.2)), 'BUS': ClassConditionValue(Threshold={'lateral_deviation': DiagValue(min=None, max=0.0018947277676951005, mean=None)}, PassRange=(0.8, 1.1))}

TestResult: Passed
Passed: CAR (Success) BUS (Success) TRUCK (Success)

シナリオに書かれたクラスのみ評価だと思うので、Trcukはsummaryには出てくるけど評価していないで合ってますか?

@hayato-m126
Copy link
Collaborator Author

hayato-m126 commented Mar 18, 2024

@kosuke55
はい。TRUCKは条件に記載がないので評価はしてないです。Diagで出てきてるので、メトリクス計算のために集計はしています。
テストはすべてのクラスで成功判定したらPassなので、条件指定されてないものは、必ずPassにしてテスト判定には影響しないようにしています。
Passedが、評価して成功なのか、評価に使ってなくて成功なのかわからないということでしたら、メッセージの方を工夫したほうが良さそうですね。

Passed: 評価して成功
NotTested: 評価していない(クラスの評価としては成功)

こんな感じかな。

Comment on lines +227 to +230
if self.__container.get(class_name) is None:
self.__container[class_name] = Deviation(
name=class_name,
condition=ClassConditionValue.get_default_condition(),
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

はい。TRUCKは条件に記載がないので評価はしてないです。Diagで出てきてるので、メトリクス計算のために集計はしています。

なるほどです!ここで追加する必要あるのかなと思ったのですが、メトリクス計算集計のために必要なのですね!

@kosuke55
Copy link
Contributor

kosuke55 commented Mar 18, 2024

テストはすべてのクラスで成功判定したらPassなので、条件指定されてないものは、必ずPassにしてテスト判定には影響しないようにしています。
Passedが、評価して成功なのか、評価に使ってなくて成功なのかわからないということでしたら、メッセージの方を工夫したほうが良さそうですね。

Passed: 評価して成功
NotTested: 評価していない(クラスの評価としては成功)

こんな感じかな。

良さそうですね!
欲をいうと追々

TestResult: Failed
Failed: CAR (Fail) BUS (Fail)

BUSのどのメトリクスでfailしたのか見れると良いなと思いました

Copy link
Contributor

@kosuke55 kosuke55 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@kosuke55
Copy link
Contributor

動作確認できたのでapproveしました!

@hayato-m126
Copy link
Collaborator Author

@kosuke55
approveもらっていますが、ここでの指摘事項を追加でコミットいれます。
もうちょいログのメッセージをわかりやすくします

@hayato-m126
Copy link
Collaborator Author

hayato-m126 commented Mar 18, 2024

ログのメッセージの更新
d841689

@kosuke55
Copy link
Contributor

ありがとうございます!

min,max,meanごとにpassrange設定できること確認しました。

dlr simulation run -p annotationless_perception  -l 'annotationless_threshold_file:=/home/kosuke55/driving_log_replayer_output/annotationless_perception/2024-0321-213448/sample/result.jsonl,annotationless_pass_range:={"CAR":{"min":"0.0-1.1","max":"0.0-1.2","mean":"0.5-1.3"},"BUS":{"min":"0.0-1.1","max":"0.0-1.2","mean":"0.5-1.3"}}'

--------------------------------------------------
TestResult: Passed
Passed: CAR (Success) BUS (Success)

失敗したときのメトリクスの詳細も見れました。

"Failed: CAR (Success) BUS (Fail, lateral_deviation)"

Copy link
Contributor

@kosuke55 kosuke55 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

もう一度approveです!

@hayato-m126 hayato-m126 merged commit 29f8ab5 into develop Mar 21, 2024
3 of 4 checks passed
@hayato-m126 hayato-m126 deleted the feat/#376-annotationless-support-perception-class branch March 21, 2024 13:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants