Fix accidentally included R classes in the android lib

PR removes R.class and R$*.class from the final Android library .aar distribution because as per Android library publishing guidelines libraries must not include R classes — they're generated at the consumer side, otherwise consumer will get  Type X is defined multiple times error during their build preventing them from using the Enovy Mobile as a .aar library!
Verified content before and after:
diff -r ~/Desktop/before ~/Desktop/after
Only in Desktop/before/io/envoyproxy/envoymobile: R$attr.class
Only in Desktop/before/io/envoyproxy/envoymobile: R$color.class
Only in Desktop/before/io/envoyproxy/envoymobile: R$dimen.class
Only in Desktop/before/io/envoyproxy/envoymobile: R$drawable.class
Only in Desktop/before/io/envoyproxy/envoymobile: R$id.class
Only in Desktop/before/io/envoyproxy/envoymobile: R$integer.class
Only in Desktop/before/io/envoyproxy/envoymobile: R$layout.class
Only in Desktop/before/io/envoyproxy/envoymobile: R$string.class
Only in Desktop/before/io/envoyproxy/envoymobile: R$style.class
Only in Desktop/before/io/envoyproxy/envoymobile: R$styleable.class
Only in Desktop/before/io/envoyproxy/envoymobile: R.class
Only in Desktop/before/io/envoyproxy/envoymobile/engine: R$attr.class
Only in Desktop/before/io/envoyproxy/envoymobile/engine: R$color.class
Only in Desktop/before/io/envoyproxy/envoymobile/engine: R$dimen.class
Only in Desktop/before/io/envoyproxy/envoymobile/engine: R$drawable.class
Only in Desktop/before/io/envoyproxy/envoymobile/engine: R$id.class
Only in Desktop/before/io/envoyproxy/envoymobile/engine: R$integer.class
Only in Desktop/before/io/envoyproxy/envoymobile/engine: R$layout.class
Only in Desktop/before/io/envoyproxy/envoymobile/engine: R$string.class
Only in Desktop/before/io/envoyproxy/envoymobile/engine: R$style.class
Only in Desktop/before/io/envoyproxy/envoymobile/engine: R$styleable.class
Only in Desktop/before/io/envoyproxy/envoymobile/engine: R.class

co-authored with @codeman9 and @davidkurkov as requested from @jpsim with a repro build failure from @arunj-kp https://github.com/arunj-kp/envoybuild
Execution failed for task ':app:mergeDexRelease'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.DexMergingTaskDelegate
   > There was a failure while executing work items
      > A failure occurred while executing com.android.build.gradle.internal.tasks.DexMergingWorkAction
         > com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
           Type io.envoyproxy.envoymobile.R is defined multiple times: <user_directory>/envoybuild/app/build/intermediates/project_dex_archive/release/out/e17d2b7d3b3cd38559814e5bf3bad06f88686caea0b21925ac792110a6c8e56d_1.jar:classes.dex, <user_directory>/envoybuild/app/build/intermediates/external_libs_dex/release/mergeExtDexRelease/classes.dex
           Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.

You'll need to fix DCO:
https://github.com/envoyproxy/envoy/pull/25650/checks?check_run_id=11431718611

Singed-off the commit and re-pushed


Fix result elastic entry id building

Hi guys,
I still have a bug with the cache. In my tests, I have no real usage of result cache. Each time a new result will be produce and overwrite the previous one.
bug
The orchestrator use a different id for getting the result from cache then putting the new result.
Characterize.v4_4_0_stable14.c194ZBEYk2 the first time then Characterize.v4_4_0_.14c194ZBEYk2
suggestion
Add the removing of stable directly in the Result.help_build_key function, to ensure that we always have the same id
in tasking_client.py
 service.version = service.version.replace('stable', '')
...
# in get_task
result_key = Result.help_build_key(sha256=task.fileinfo.sha256,
                                           service_name=service_name,
                                           service_version=service_version,
                                           service_tool_version=service_tool_version,
                                           is_empty=False,
                                           task=task)

# in handle result
result_key = result.build_key(service_tool_version=result.response.service_tool_version, task=task)

the second time the stable part is here.
# build_key code:
def build_key(self, service_tool_version=None, task=None):
        return self.help_build_key(
            self.sha256,
            self.response.service_name,
            self.response.service_version,
            self.is_empty(),
            service_tool_version=service_tool_version,
            task=task

Investigation
To pinpoint the error, I've done some network captures.
The communication between service and service server
GET /api/v1/task/ HTTP/1.1
Host: service-server:5003
service_name: Characterize
service_version: 4.4.0.stable14
timeout: 30

GET /api/v1/file/004331f3855ee6a3bcd22e7b956251397571025ecb9d170c762988c3fc0ec7fb/ HTTP/1.1
Host: service-server:5003
service_name: Characterize
service_version: 4.4.0.stable14
timeout: 30

POST /api/v1/task/ HTTP/1.1
Host: service-server:5003
service_name: Characterize
service_version: 4.4.0.stable14
timeout: 30

GET /api/v1/task/ HTTP/1.1
Host: service-server:5003
service_name: Characterize
service_version: 4.4.0.stable14
timeout: 30

GET /api/v1/file/004331f3855ee6a3bcd22e7b956251397571025ecb9d170c762988c3fc0ec7fb/ HTTP/1.1
Host: service-server:5003
service_name: Characterize
service_version: 4.4.0.stable14
timeout: 30

POST /api/v1/task/ HTTP/1.1
Host: service-server:5003
service_name: Characterize
service_version: 4.4.0.stable14
timeout: 30

The same capture on the elastic interface

GET /result/_doc/004331f3855ee6a3bcd22e7b956251397571025ecb9d170c762988c3fc0ec7fb.Characterize.v4_4_0_stable14.c194ZBEYk2AF HTTP/1.1
Host: elasticsearch:9200

HTTP/1.1 404 Not Found

GET /emptyresult/_doc/004331f3855ee6a3bcd22e7b956251397571025ecb9d170c762988c3fc0ec7fb.Characterize.v4_4_0_stable14.c194ZBEYk2AF.e HTTP/1.1
Host: elasticsearch:9200

HTTP/1.1 404 Not Found

PUT /result/_doc/004331f3855ee6a3bcd22e7b956251397571025ecb9d170c762988c3fc0ec7fb.Characterize.v4_4_0_14.c194ZBEYk2AF?if_primary_term=1&if_seq_no=11&op_type=index HTTP/1.1
Host: elasticsearch:9200
{...
"milestones": {
  "service_started": "2023-10-17T10:00:48.636715Z",
  "service_completed": "2023-10-17T10:00:48.737719Z"
},
...}

HTTP/1.1 200 OK

GET /result/_doc/004331f3855ee6a3bcd22e7b956251397571025ecb9d170c762988c3fc0ec7fb.Characterize.v4_4_0_stable14.c194ZBEYk2AF HTTP/1.1
Host: elasticsearch:9200

HTTP/1.1 404 Not Found

GET /emptyresult/_doc/004331f3855ee6a3bcd22e7b956251397571025ecb9d170c762988c3fc0ec7fb.Characterize.v4_4_0_stable14.c194ZBEYk2AF.e HTTP/1.1
Host: elasticsearch:9200

HTTP/1.1 404 Not Found

PUT /result/_doc/004331f3855ee6a3bcd22e7b956251397571025ecb9d170c762988c3fc0ec7fb.Characterize.v4_4_0_14.c194ZBEYk2AF?if_primary_term=1&if_seq_no=12&op_type=index HTTP/1.1
Host: elasticsearch:9200

{...
"milestones": {
  "service_started": "2023-10-17T10:03:24.437794Z",
  "service_completed": "2023-10-17T10:03:24.542633Z"
},
...}

HTTP/1.1 200 OK

In the capture, we can see that the orchestrator use a different id for getting the result from cache then putting the new result.
Characterize.v4_4_0_stable14.c194ZBEYk2 the first time then Characterize.v4_4_0_.c194ZBEYk2

Closing in favour of https://github.com/CybercentreCanada/assemblyline-core/commit/e6fcd216a99ee2deb92389fe0ed6ec6171e91ca1 which should resolve the issue of results being overwritten by services.


How to use your trained model

Hello, I am very interested in your work. Can you give me an example of using your trained model to achieve hallucination labeling?

Thank you for your interest and apologize for the late reply.
We recommend you use the more advanced annotator ANAH-v2. We have provided a prompt for hallucination annotation and you can find it here.
To perform hallucination annotation, you need to prepare three things: the question, the response to be annotated, and the corresponding reference document. Our annotation is done at sentence granularity, so you need to cut the responses into sentences and annotate them sentence by sentence.
Once you have this initial corpus ready, for each sentence, you need to construct a three-round dialogue (in most cases):

In the first round of dialogue, using fact_check_prompt, the model will return whether there is a judgeable fact for this sentence. If not, the label is ‘no fact’, and if there is one, the process continues to the next round.
In the second round of dialogue, using reference_check_prompt, the model will return some key reference point.
In the third round of dialogue, using reference_check_prompt, the model will return the final hallucination label. Note that the references used here are key reference points from the previous round.

Thank you for sharing your wonderful work!
I've also had a hard time to understand how to use it.
Thus, I prepared one of my example instances to annotate the response.
question: Based on the context provided, what was the exchange rate of 1 Bahraini Dinar to Swiss Franc on June 10, 2021?
response: On June 10, 2021, the exchange rate of 1 Bahraini Dinar (BHD) to Swiss Franc (CHF) was approximately [2.374] CHF.
reference document: |Monday 14 June 2021||1 BHD = 2.3862 CHF|\\n|Sunday 13 June 2021||1 BHD = 2.3828 CHF|\\n|Saturday 12 June 2021||1 BHD = 2.3835 CHF|\\n|Friday 11 June 2021||1 BHD = 2.3815 CHF|\\n|Thursday 10 June 2021||1 BHD = 2.374 CHF|\\n|Wednesday 9 June 2021||1 BHD = 2.3759 CHF|\\n|Tuesday 8 June 2021||1 BHD = 2.3791 CHF|
How could it be applied to the format of the suggested template protocol with prompt
suggested template protocol
dict(role='user', begin='<|im_start|>user\n', end='<|im_end|>\n'),
dict(role='assistant', begin='<|im_start|>assistant\n', end='<|im_end|>\n'),

prompt
hall_type_prompt = f"You will act as a ’Hallucination’ annotator. I will provide you with a question, a partial answer to that question, and related reference points. You need to determine whether the provided answer contains any hallucinatory content and annotate the type of hallucination. \
        ’Hallucination’ refers to content that contradicts the reference points or is unsupported by them. \
        ## Judgment Criteria: \
        1. No Hallucination: If the answer is completely consistent with the reference points and does not introduce any contradictory information, output: <No Hallucination>. \
        2. Contradiction: If the answer clearly contradicts the reference points, output: <Contradictory>. \
        3. Unverifiable: If the answer contains information not mentioned in the reference points and cannot be supported or verified by them, output: <Unverifiable>. \
        ## Task Process: \
        1. Carefully read the question, which is as follows: {question} \
        2. Carefully read the partial answer, which is as follows: {answer} \
        3. Carefully read the reference points, which are as follows: {reference} \
        4. Conduct the analysis: Based on the above judgment criteria, determine if the answer contains hallucinations and output the type of hallucination."
        5. ```

@minstar Thank you for your interest.
In order to allow users to use the annotator in some frameworks that require a conversation template (e.g. lagent), we provide a dialog template. If you are using the transformers framework provided by huggingface, you can ignore this template.
For the example you provided, since the reference document is relatively short and factual information exists, you can just populate the corresponding fields into hallucination_check_prompt. You can refer to this code:
    hallucination_check = hallucination_check_prompt(question, reference, sentence, language)
    messages.append({"role": "user", "content": hallucination_check})
    response, _ = model.chat(tokenizer, messages)

    response = response.strip().replace(" ", "").lower()
    if "noreferenceinformation" in response or "无参考信息" in response:
        return "unverifiable"
    if "nohallucination" in response or "无幻觉" in response:
        return "ok"
    if "contradictory" in response or "矛盾" in response:
        return "contradictory"

If you have a long document and are unsure of the presence of factual information, we recommend that you use the version of the three rounds of dialog mentioned in the response above.

We have provided some examples of using the ANAH-v2 annotator, which you can refer to for annotating your content.


Compilation error

Hi,
I am having some problems compiling, I get this error:
Error using mex
LINK : fatal error LNK1104: cannot open file 'libboost_filesystem-vc100-mt-1_62.lib'
I am using pylon 4 and Windows 7 .
Do you have any idea what can be the problem here?
Many thanks,
Mihai

Hi, it says it can't find the Boost library. Have you compiled them manually, or did you use pre-compiled libraries as suggested in this tutorial? If you follow the tutorial closely, it should work.

In the end I have managed to solve the problem, it was indeed a problem with the Boost library :)
Offtopic: I am barely getting a framerate of 2 fps, any idea of what can be the problem...


Fixes #301 and some other issues

in pygam.GAM._modelmat added selection of features, edge_knots and dtypes by term so only the necessary features are checked and features for factor terms can be set to 0 or 1 if another term is being checked
in pygam.GAM._flatten_mesh added two lines that set by feature to 1 if not None. This fixes issue of partial dependence of tensor terms being 0 everywhere if by feature is present
in pygam.GAM.partial_dependence removed check_X as right after it is checked in self._modelmat
updated docstring of pygam.GAM._linear_predictor
removed line that does nothing in terms.SplineTerm.build_column

This should fix the problem in #301 and some others that #302 might not, e.g. I believe it might break due to factor feature being set to 1.0 if it is a by feature in another term. Along the way found that by feature in tensor term is not set to 1 anywhere so partial dependence returns all 0. As _meshgrid seems to be written specifically for partial_dependence and generate_X_grid made it set by feature to 1 if not None.

looks good to me


How to add custom font in the rtd project (no local)?

Details

Project URL: https://readthedocs.org/projects/1ra-manual-dentrenament-basic-de-combat/
Build URL (if applicable): https://readthedocs.org/projects/1ra-manual-dentrenament-basic-de-combat/
Read the Docs username (if applicable): Legolasindar

Sorry, i search in the oficial web, in google, in reddit, and others, but i cant found the solution for my problem, and i cant find any oficial way to contact with a support of readthedocs web.
My knowledge of html, css, github and others thinks are poor.
I created a project in the RTD web (https://readthedocs.io), and linked to Github repository (https://github.com/CavallersDelCel/1RA_EBC).
For my project, i need to add custom font LinBiolinum_Kah.ttf.
I cant found the system for do adding custom fonts (and others things)
Some information speak about conf.py files, and others, but the RTD web no create this files and directories in my github project.
What am I doing wrong?
Thanks

Maybe with this https://docs.readthedocs.io/en/latest/guides/adding-custom-css.html? So you can add a css with the custom font (from the _static folder or from the internet)

Thanks but, the RTD creates conf.py, but not in my git repository. I cant found this file in anyway.
All documentation of RTD speak about local linux install RTD, but never about uses RTD web.
I not understand how extrat the conf.py and other to put in my git project.

@Legolasindar when you create a sphinx project the conf.py file is created automatically, then RTD uses that file and add additional information. You can read https://docs.readthedocs.io/en/latest/getting_started.html#in-restructuredtext

But im not have linux. I not uses commands $ pip install sphinx sphinx-autobuild or something.
Im only creates .rst files (index and pages) in the Github.

@Legolasindar when you don't do a sphinx project RTD install it before building your docs, RTD uses sphinx to build your rst docs. So, to be able to use the custom font, you need to init a sphinxs project so you are able to configure it. Sphinx is multiplatform, you can run that command on Windows' cmd too, you can try this python -m pip install ... if the other command doesn't work.

Ok i maked all, but the text no get custom font. I set in the conf.py
def setup(app):
    app.add_stylesheet('css/custom.css')

I created custom.css with:
@font-face {
    font-family: "Linux Biolinum Keyboard";
    src: url("../fonts/LinBiolinum_Kah.ttf");
}

.keys
{
  font-family: "Linux Biolinum Keyboard", sans-serif;
}

And in a one rst page i put:
F 0 M
Buts this code appear in flat text.
What im doing wrong?

Can you provide a link to the full file?

This is the index.rst, you can see the code below the image.
https://github.com/CavallersDelCel/1RA_EBC/blob/master/docs/index.rst

I can see that your css and font are on the server and on the page

http://1ra-manual-dentrenament-basic-de-combat.readthedocs.io/ca/master/_static/fonts/LinBiolinum_Kah.ttf
http://1ra-manual-dentrenament-basic-de-combat.readthedocs.io/ca/master/_static/css/custom.css

So, probably there is something wrong with the css code.

Reviewing the code it seems that everything is fine.
But it's like RTD is not able to read HTML tags.

@Legolasindar here is the error
src: url(../fonts/LinBiolinum_Kah.ttf);

The url should be inside quotes
src: url("../fonts/LinBiolinum_Kah.ttf");

At first I had it with quotes, but it did not work either, I just removed the quotes in the last build.
I have this stackoferflow opened. The first answer work, but i need this work betwen text, not alone.

I didn't note that you were using FM, yeah you should use the raw directive.
I just answered your question on stackoverflow so other people can see it. You need to use a custom role http://docutils.sourceforge.net/docs/ref/rst/roles.html#raw
So, this isn't a RTD problem.

@Legolasindar thanks for letting us know. I'm closing this issue then.


Concierge message shows two times for receiver on create new chat

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

from userA, click on + icon
select new chat option
type userB email with whom you don't have chat history
click on that user to create new chat
from userB, go to that chat

Expected Result:
only one Concierge message should show
Actual Result:
two same Concierge message shows
Workaround:
Can the user still use Expensify without this being fixed? Have you informed them of the workaround?
Platforms:

Which of our officially supported platforms is this issue occurring on?

[x] Android / native
[x] Android / Chrome
[x] iOS / native
[x] iOS / Safari
[x] MacOS / Chrome / Safari
[x] MacOS / Desktop

Version Number: 1.2.30-0
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/43996225/e3831c46-320f-41ab-96bc-5c1256c9452f
https://github.com/Expensify/App/assets/43996225/eb53d6c2-6607-4f41-80dd-3aefa2f2aa3e
Expensify/Expensify Issue URL:
Issue reported by: @gadhiyamanan
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1687335137360469
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01145e9111646d975c
Upwork Job ID:<PHONE_NUMBER>193943552
Last Price Increase: 2023-06-21

Ahh I think this is just pusher sending the event to everyone. It is just that PR hasn't been merged yet to filter who we send it to, I was working on it.

This fix is on the back-end so no need for a C+ to review the PR.

This is done.

reporting bonus is pending
cc: @puneetlath @pecanoro

My apologies @gadhiyamanan. Sent you an offer: https://www.upwork.com/nx/wm/offer/25348941

@gadhiyamanan bump on accepting the Upwork offer.

Paid, thanks!


Ability to Disable Sanitize of data

I'm submitting a ...  (check one with "x")
[ ] bug report => search github for a similar issue or PR before submitting
[x ] feature request
[ ] support request => Please do not submit support request here, post on Stackoverflow or Gitter

Current behavior
Trying to display data in the datatable, but its being sanitized
WARNING: sanitizing HTML stripped some content (see http://g.co/ng/security#xss).
I can't find any documentation about how to bypass security and trust this data.
Expected behavior
Display data by enabling trust similar to DomSanitizer
bypassSecurityTrustHtml
Reproduction of the problem

What is the motivation / use case for changing the behavior?
Need to display information that contains tags
Please tell us about your environment:

Table version: 0.8.x
10.3.0

Angular version: 2.0.x
Angular 4.4.4

Browser: [all | Chrome XX | Firefox XX | IE XX | Safari XX | Mobile Chrome XX | Android X.X Web Browser | iOS XX Safari | iOS XX UIWebView | iOS XX WKWebView ]
All

Language: [all | TypeScript X.X | ES6/7 | ES5]
ES6

@amcdnl Is there a solution for this ? I am also facing this issue. I want to pass cell template inside a string and render it through *ngFor.

I am facing same issue with;
"@swimlane/ngx-datatable": "^14.0.0", and Angular 7.x In my case, I am not able to trigger tableContextmenu


Allow the server platform to build on linux again.

Fixed a logic error in platform/server/detect.py that prevented building
the server platform on linux.

Small mistake in #23279 limited the server build to OSX only.
Since Python's os.name should be "posix" on linux and OSX, the darwin check is no longer needed here.

Thanks!


Expose author information about packagerevisions through the API

Currently Porch doesn't expose any information about audit information about edits and approvals of packagerevisions through the API. We should capture who edited/proposed/approved a packagerevision and when it happened and expose it as part of the packagerevision API.
The data needs to be captured when it happens, so it must be included in the commit information. Commits do have timestamps so we can leverage those for determining when something happened. In order to keep track of who did something, we need to either make commits on behalf of someone (is using the email address in the commit enough?) or include it in the commit message itself. I think we can leverage the UserInfoProvider for this.

So Porch already captures the author of each task (i.e. commit) in git. Porch gets this information from the kubernetes apiserver, so the author of each commit will be set to the current user in kubernetes. Porch sets itself as the committer.
This information is currently not surfaced through the API. We have a couple of options of how we can do it:

Arguably it is not all that interesting to look at the author of every single change to a draft package revision, but we do want to surface the author and timing of the keep events in the lifecycle of a package revision. The key event here is when the package revision is published. We can add approvedBy and approvedTimestamp fields to the packagerevision resource. These would be empty until the package is published. We could add similar fields to for creation of a packagerevision, but unclear if that is useful.
This is a simpler solution that exposing author and timestamp for every change to a package.

We can add additional fields to the task struct to include the author and timestamp for each task. As mentioned above, we already do capture this information as part of the git commits, although the timestamps are reset whenever a package is approved, since it involves recreating the commits on the main branch (not sure if there is a way in git to move the commits without updating the timestamps).
Adding these fields to the task struct used in the the spec doesn't feel quite right, as it can't be set by the clients, but it set by the server as a result of running the tasks.

We can provide author and timestamp information for each task through the status object of the packagerevision resource. It would mean creating a taskStatuses list containing taskStatus entries. These would have author and timestamp fields that will be set by the apiserver based on the information from git/oci. The taskStatuses would mirror the order from the task list in the spec.
This approach does create a better separation between the fields that can be set by the client and the ones that are determined by the apiserver. However, the two mirrored lists which requires clients to match entries based on their index feels awkward.

Since approvals are not captured as a task in each packagerevision, we probably need option 1 regardless. I suggest we punt on implementing 2/3 until we know whether this is information that are actually useful to users. Open to input on this.
@justinsb @johnbelamaric


Cannot create native executable for application with JPA on Windows

Native executable build on Windows doesn't work with JPA
Environment Details

Helidon Version: 3.0.2
Helidon MP
JDK version: 17
GraalVM version: 22.3.0 Java 17 CE
OS: Windows 10
Docker version (if applicable): 20.10.11

Problem Description
Hello, I created Helidon MP application for CRUD functionality using JPA 3.0 Jakarta integration with Hibernate. Everything works fine during standard building with helidon dev  and mvn clean package. The problem occurs while trying to build application as a native executable using GraalVM.
Steps to reproduce:

Application is available here https://github.com/szachmati/product-api/tree/master/helidon
Run mvn clean package -DskipTests -Pnative-image command in x64 Native Tools Command Prompt(Windows)
See logs

Output from Maven:
`[INFO] Copying slf4j-api-1.7.32.jar to E:\studia\WIT\sem4\magisterka\shop\helidon\target\libs\slf4j-api-1.7.32.jar
[INFO] Copying helidon-mp-graal-native-image-extension-3.0.2.jar to E:\studia\WIT\sem4\magisterka\shop\helidon\target\libs\helidon-mp-graal-native-image-extension-3.0.2.jar
[INFO] Copying helidon-graal-native-image-extension-3.0.2.jar to E:\studia\WIT\sem4\magisterka\shop\helidon\target\libs\helidon-graal-native-image-extension-3.0.2.jar
[INFO]
[INFO] --- helidon-maven-plugin:3.0.0:report (third-party-license-report) @ shop ---
[INFO] Scanning shop
[INFO] Reading input from HELIDON_THIRD_PARTY_LICENSES.xml on classpath
[INFO] Writing output to E:\studia\WIT\sem4\magisterka\shop\helidon\target\HELIDON_THIRD_PARTY_LICENSES.txt
[INFO]
[INFO] --- maven-jar-plugin:3.0.2:jar (default-jar) @ shop ---
[INFO] Building jar: E:\studia\WIT\sem4\magisterka\shop\helidon\target\shop.jar
[INFO]
[INFO] --- helidon-maven-plugin:3.0.0:native-image (native-image) @ shop ---
[INFO] Building native image :E:\studia\WIT\sem4\magisterka\shop\helidon\target\shop
[WARNING] Warning: Ignoring server-mode native-image argument --no-server.
[WARNING] Warning: Using a deprecated option --allow-incomplete-classpath from 'META-INF\native-image\io.helidon.webserver\helidon-webserver\native-image.properties' in 'file:///E:/studia/WIT/sem4/magisterka/shop/helidon/target/libs/helidon-webserver-3.0.2.jar'. Allowing an incomplete classpath is now the default. Use --link-at-build-time to report linking errors at image build time for a class or package.
[WARNING] Warning: Option 'EnableAllSecurityServices' is deprecated and might be removed from future versions
[INFO] ========================================================================================================================
[INFO] GraalVM Native Image: Generating 'shop' (executable)...
[INFO] ========================================================================================================================
[WARNING] --initialize-at-build-time without arguments has been deprecated when not using --diagnostics-mode. With GraalVM 22.0.0 --initialize-at-build-time will only work with --diagnostics-mode for debugging purposes.
[WARNING] The reason for deprecation is that --initalize-at-build-time does not compose, i.e., a single library can make assumptions that the whole classpath can be safely initialized at build time; that assumption is often incorrect.
[INFO] 2022.11.01 23:33:25 INFO io.helidon.common.LogConfig Thread[main,5,main]: Logging at initialization configured using classpath: /logging.properties
[INFO] 2022.11.01 23:33:25 INFO org.hibernate.validator.internal.util.Version Thread[main,5,main]: HV000001: Hibernate Validator 7.0.2.Final
[INFO] Warning: Feature class io.helidon.integrations.graal.mp.nativeimage.extension.WeldFeature is annotated with the deprecated annotation @AutomaticFeature. Support for this annotation will be removed in a future version of GraalVM. Applications should register a feature using the option --features=io.helidon.integrations.graal.mp.nativeimage.extension.WeldFeature
[WARNING] Warning: Could not resolve org.hibernate.annotations.common.util.impl.Log_$logger for reflection configuration. Reason: java.lang.ClassNotFoundException: org.hibernate.annotations.common.util.impl.Log_$logger.
[WARNING] Warning: Could not resolve org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory for reflection configuration. Reason: java.lang.ClassNotFoundException: org.hibernate.id.factory.internal.DefaultIdentifierGeneratorFactory.
[WARNING] Warning: Could not resolve org.hibernate.jmx.internal.DisabledJmxServiceImpl for reflection configuration. Reason: java.lang.ClassNotFoundException: org.hibernate.jmx.internal.DisabledJmxServiceImpl.
[WARNING] Warning: Could not resolve org.hibernate.tool.hbm2ddl.SingleLineSqlCommandExtractor for reflection configuration. Reason: java.lang.ClassNotFoundException: org.hibernate.tool.hbm2ddl.SingleLineSqlCommandExtractor.
[WARNING] Warning: Could not resolve org.hibernate.tuple.entity.PojoEntityTuplizer for reflection configuration. Reason: java.lang.ClassNotFoundException: org.hibernate.tuple.entity.PojoEntityTuplizer.
[INFO] [1/7] Initializing...                                                                                (23,2s @ 0,52GB)
[INFO]  Version info: 'GraalVM 22.3.0 Java 17 CE'
[INFO]  Java version info: '17.0.5+8-jvmci-22.3-b08'
[INFO]  C compiler: cl.exe (microsoft, x64, 19.33.31629)
[INFO]  Garbage collector: Serial GC
[INFO]  2 user-specific feature(s)
[INFO]  - io.helidon.integrations.graal.mp.nativeimage.extension.WeldFeature
[INFO]  - io.helidon.integrations.graal.nativeimage.extension.HelidonReflectionFeature
[INFO] 2022.11.01 23:33:37 WARNING io.helidon.common.HelidonFeatures Thread[main,5,main]: Feature 'Hibernate' for path 'JPA/Hibernate' has limited support in native image: Experimental support, tested on limited use cases
[INFO] 2022.11.01 23:33:37 WARNING io.helidon.common.HelidonFeatures Thread[main,5,main]: Feature 'JTA' for path 'JTA' has limited support in native image: Experimental support, tested on limited use cases
[INFO]
[WARNING] Fatal error: java.lang.IllegalAccessError: class io.helidon.integrations.graal.nativeimage.extension.HelidonReflectionFeature (in unnamed module @0x4116f66a) cannot access class com.oracle.svm.core.jdk.Resources (in module org.graalvm.nativeimage.builder) because module org.graalvm.nativeimage.builder does not export com.oracle.svm.core.jdk to unnamed module @0x4116f66a
[INFO] ------------------------------------------------------------------------------------------------------------------------
[WARNING]       at io.helidon.integrations.graal.nativeimage.extension.HelidonReflectionFeature.lambda$processEntity$32(HelidonReflectionFeature.java:283)
[WARNING]       at java.base/java.lang.Iterable.forEach(Iterable.java:75)
[INFO]                         0,8s (2,1% of total time) in 13 GCs | Peak RSS: 1,30GB | CPU load: 1,38
[WARNING]       at io.helidon.integrations.graal.nativeimage.extension.HelidonReflectionFeature.processEntity(HelidonReflectionFeature.java:279)
[INFO] ========================================================================================================================
[WARNING]       at io.helidon.integrations.graal.nativeimage.extension.HelidonReflectionFeature.beforeAnalysis(HelidonReflectionFeature.java:114)
[INFO] Failed generating 'shop' after 25,3s.
[WARNING]       at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.lambda$runPointsToAnalysis$9(NativeImageGenerator.java:736)
[WARNING]       at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.FeatureHandler.forEachFeature(FeatureHandler.java:85)
[WARNING]       at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.runPointsToAnalysis(NativeImageGenerator.java:736)
[WARNING]       at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.doRun(NativeImageGenerator.java:578)
[WARNING]       at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGenerator.run(NativeImageGenerator.java:535)
[WARNING]       at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.buildImage(NativeImageGeneratorRunner.java:403)
[WARNING]       at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.build(NativeImageGeneratorRunner.java:580)
[WARNING]       at org.graalvm.nativeimage.builder/com.oracle.svm.hosted.NativeImageGeneratorRunner.main(NativeImageGeneratorRunner.java:128)
[WARNING] Error: Image build request failed with exit status 1
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time:  46.603 s
[INFO] Finished at: 2022-11-01T23:33:40+01:00
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal io.helidon.build-tools:helidon-maven-plugin:3.0.0:native-image (native-image) on project shop: Image generation failed, exit code: 1 -> [Help 1]
[ERROR]`

I also tried to build native executable with JPA for Helidon 2.5.4 from scratch(https://helidon.io/starter/2.5.4), but it didn't work for Hibernate and EclipseLink
Should this issue also be sent to GrallVM team?
Regards

Hello, Helidon 3 does not (yet) support GraalVM 22.3, please use 21.x
We are now working on supporting it: https://github.com/helidon-io/helidon/pull/5308
There are multiple issues that you would encounter - one of them is the module accessibility, then we use --initialize-at-build-time by default.
To fix your problem, you can add --add-exports=org.graalvm.nativeimage.builder/com.oracle.svm.core.configure=ALL-UNNAMED to native image arguments

I will close this issue, as the version you use is not supported now. When we release next version of 3.x, 22.3.0 will be the minimal required version.

Hi @tomas-langer sorry for so late response, I forgot to answer.  In case someone else occurs such error here is workaround.
mvn clean package -DskipTests
and after creating jar file in target
native-image -jar target/app.jar
now it works  😄
Regards


Construction End Conditions

Related Issue: #112
Changes

[x] Fix end condition error: https://community.rosetta-api.org/t/rosetta-cli-check-data-unable-to-lookup-live-balance/198
[x] Fix coin storage duplicate check: https://github.com/coinbase/rosetta-sdk-go/pull/123
[x] Allow ending after some # of workflows

Pull Request Test Coverage Report for Build 4372

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 84.043%

Totals

Change from base Build 4360:
0.0%

Covered Lines:
158

Relevant Lines:
188

💛  - Coveralls


[Bug]: The order of CSS imports is not respected

Version
System:
    OS: macOS 14.5
    CPU: (12) x64 Intel(R) Core(TM) i7-9750H CPU @ 2.60GHz
    Memory: 59.99 MB / 16.00 GB
    Shell: 5.9 - /bin/zsh
  Browsers:
    Chrome: 126.0.6478.127
    Safari: 17.5
  npmPackages:
    @rsbuild/core: ^0.7.10 => 0.7.10
    @rsbuild/plugin-less: 0.7.10 => 0.7.10
    @rsbuild/plugin-react: ^0.7.10 => 0.7.10

Details
CSS priority is not in accordance with the import order
My expectation is: tea.css > main.less

Reproduce link
https://github.com/wanqing19954/rsbuild-css-order
Reproduce Steps
pnpm dev

I have tested this in webpack and got the same result.
The CSS order changed because tea.css was split into a separate chunk:

You can configure chunk splitting rules to resolve it, for example, put main.less and tea.css to a single CSS chunk:
// rsbuild.config.ts
export default defineConfig({
  performance: {
    chunkSplit: {
      override: {
        cacheGroups: {
          baseStyle: {
            test: /main\.less|tea\.css/,
          },
        },
      },
    },
  },
});

Is there any way to adjust the CSS loading order? I would like to load index.css at the end.

It is recommended to adjust the CSS import order and selector specificity instead of adjust the CSS link tags order.
See Deep Dive Into Webpack CSS Order Issue to learn more about CSS order issues.


update ABI and call verifyTx sample

due to https://github.com/ethereum/btcrelay/commit/637c80c8e8a252627d1042f9f4c1d4c60cde9cdf

fixed in 911befc


S3 crt does not recognise AWS_GLOBAL region

Confirm by changing [ ] to [x] below to ensure that it's a bug:

[x] I've gone though Developer Guide and API reference
[x] I've searched for previous similar issues and didn't find any solution

Describe the bug
S3 crt does not recognise AWS_GLOBAL region
SDK version number
v1.9.105
Platform/OS/Hardware/Device
Ubuntu 18.04
To Reproduce (observed behavior)
Create a S3 crt client with global region:
	Aws::S3Crt::ClientConfiguration client_conf;
	client_conf.region = Aws::Region::AWS_GLOBAL;
	static std::shared_ptr<Aws::S3Crt::S3CrtClient> AWS_S3_CLIENT = Aws::MakeShared<Aws::S3Crt::S3CrtClient>("S3CrtClient", client_conf);

Expected behavior
The global region is not recognised. It defaults to 'us-east-1'

Hi @NatxoM ,
I am not able to reproduce this, for me the AWS_GLOBAL works just fine, could you try activating the trace logs and (after sanitizing them off any credentials info) post them here? There might be something else going on.

This is the error I get when using the code shown above:
AuthorizationHeaderMalformedUnable to parse ExceptionName: AuthorizationHeaderMalformed Message: The authorization header is malformed; the region 'us-east-1' is wrong; expecting 'eu-west-1'"

Hi @NatxoM ,
Sorry for the lack of response here... It kind of went over my head honestly, but regarding your problem.
The short answer is: aws-global is a bit of a hacky value for the SDK and the response you are getting is kind of expected.
Basically, the region aws-global is only valid for requests where the region is not really required, think s3's ListBuckets(). But as you can see it will not be accepted for things that do required the region, like GetObject().
I know it is not super intuitive but yea, aws-global is not meant to be an "all regions" or "detect and use the correct region" but more of a token value to get past the region requirement of certain api models where it shouldn't matter.
Hope that makes sense and sorry again for the slow response.


Kafka PubSub offset loss in dapr 1.12

Starting with dapr 1.12 if all consumers leave the group, the offsets will be lost after a short duration of time (couple of minutes) which is very bad.
dapr 1.11.0 - 1.11.5 do NOT have this issue and work ok.
looks like this can be fixed by upgrading Sarama client, by this fix in Sarama 1.42.0
https://github.com/IBM/sarama/pull/2700

Fixed with https://github.com/dapr/components-contrib/pull/3235

@yaron2 @berndverst I've validated the fix works as expected in 1.12.2-rc.2


Complete Book's Labs

Complete Book's Labs (ch1,ch2,ch3,ch4,ch5,ch6,ch8 and ch9).

Added all Labs to current repository.


Four free python resources

Added four additional free resources. Three courses focused on Python for data science, one course focused on python programming.
Thank you for the resource.

Thanks for adding a PR! The curriculum is an exclusive list of single best resources on each topic. Please let me know if you believe these are better than the existing resources, and why. Thanks!

No problem. I think these resources are better/more appropriate for the following reasons:
(i) All the resources I added are free. lowering the barrier to entry. This is not true for all of the resources mentioned on the current list.
(ii) The resources I added focus on a combination of short online videos and interactive in-browser coding exercises. This is of course subjective, but I think this leads to a more engaging learning experience, certainly since on top of that the learning experience is supplemented with elements of gamification.
(iii) Continuous improvement: The added courses are taken by 100 thousands of students to date, and all providers have build-in feedback systems. This makes sure these courses are well tested with very few errors.
Hope this helps. Let me know in case you have any further questions.


Compound log improved

Compound log improved; made profit shows something like '1.25e-6' for BTC and this has been changed to the 'normal' digital notation.
CoinMarketCap script has been extended with BNB as allowed coin to compare 'percent change' to.

@amargedon Hi mate. Sorry to bother you as I see that you are more active tweaking the code and I can't send you a pm, you may see in the future of a tweak on altrank, gala, botassist... scripts putting a setting "between values". I mean like a "minaltrank" and "maxaltrank" or "mingalaxyscore" and "maxgalaxyscore" that you can run the bot between the given values :)


Cannot extend types on inheriting classes

I have a class that extends EventEmitter. I have added type support on that event emitter and everything works pretty well:
// BaseClass.ts
import EventEmitter from "eventemitter3";

type EventTypes = {
  foo: () => void;
  bar: (error: Error) => void;
};

export default class extends EventEmitter<EventTypes> {
  constructor() {
    super();
    this.emit("foo");
    this.emit("bar", new Error("bar"));
  }
}

Problems start when I try to extend that class, and the child class needs to emit some extra events. To support that type of functionality I had to add generics on my previous class
// BaseClass.ts
import EventEmitter from "eventemitter3";

type EventTypes = {
  foo: () => void;
  bar: (error: Error) => void;
};

export default class<T extends object> extends EventEmitter<EventTypes & T> {
  constructor() {
    super();
    this.emit("foo");
    this.emit("bar", new Error("bar"));
  }
}

and my ChildClass:
// ChildClass.ts
import BaseClass from "./BaseClass";

type ExtraTypes = {
  baz: () => void;
};

export default class extends BaseClass<ExtraTypes> {
  constructor() {
    super();
    this.emit("foo");
    this.emit("bar", new Error("bar"));
    this.emit("baz");
  }
}

While ChildClass is OK, TS compiler starts complaining on BaseClass on every emit generating the following error:

Argument of type '"foo"' is not assignable to parameter of type 'EventNames<EventTypes & T>'

I am not sure if this is a weakness in TS, eventemitter3's type system or something wrong in my code but how can I bypass the problem?
Codesanbox link: https://codesandbox.io/s/pedantic-drake-d73tv

Hey @antoniom, I’m having the same issue. Did you find a solution?

@alexryd I actually ended up implementing my own on* callbacks and using different instances of EventEmitter on each class. It turned out that I never had to emit a parent event from my child class.
Something like this:
// BaseClass.ts
import EventEmitter from "eventemitter3";

type EventTypes = {
  foo: () => void;
  bar: (error: Error) => void;
};

export default class {
  private _ee: EventEmitter<EventTypes> = new EventEmitter();
  constructor() {
    super();
    this.emit("foo");
    this.emit("bar", new Error("bar"));
  }

  public onFoo = (func: EventTypes["foo"]) => this._ee.on("foo", func)
  public onBar = (func: EventTypes["foo"]) => this._ee.on("bar", func)
}

// ChildClass.ts
import BaseClass from "./BaseClass";

type ExtraTypes = {
  baz: () => void;
};

export default class extends BaseClass {
  private _ee: EventEmitter<ExtraTypes> = new EventEmitter();
  constructor() {
    super();
  }
}

I'm in exactly the same position. Not sure if it's a limitation of TypeScript or of this library.

Same here, still trying some workarounds

I wish I would have discovered this issue reported a while ago, but then I may not have discovered my final (for-now) resolution.
The 2 remaining issues I have:

Emitting from within the class that extends EventEmitter
An interface extending EventEmitter does not properly restrict to MyTypes event names

Both issues are detailed here.
Hopefully it helps!
Cheers!

Anyone found a solution to this?

This worked for me:
// BaseClass.ts

import EventEmitter from "eventemitter3";

export interface EventTypes {
  foo: () => void;
  bar: (error: Error) => void;
}

export class BaseClass<T extends EventTypes> extends EventEmitter<EventTypes | T> {
  constructor() {
    super();
    this.emit("foo");
    this.emit("bar", new Error("bar"));
  }
}

// ChildClass.ts

import { BaseClass, EventTypes } from "./BaseClass";

interface ExtraTypes extends EventTypes {
  baz: () => void;
}

export class ChildClass extends BaseClass<ExtraTypes> {
  constructor() {
    super();
    this.emit("foo");
    this.emit("bar", new Error("bar"));
    this.emit("baz");
  }
}

But it feels like a hack. My changes were:

I changed the types to interfaces so that I could extend from one another
T extends EventType instead of T extends object so that I could use EventType | T, instead of &. This works since T extends EventType, but it feels hackish.

This worked for me:
// BaseClass.ts

import EventEmitter from "eventemitter3";

export interface EventTypes {
  foo: () => void;
  bar: (error: Error) => void;
}

export class BaseClass<T extends EventTypes> extends EventEmitter<EventTypes | T> {
  constructor() {
    super();
    this.emit("foo");
    this.emit("bar", new Error("bar"));
  }
}

// ChildClass.ts

import { BaseClass, EventTypes } from "./BaseClass";

interface ExtraTypes extends EventTypes {
  baz: () => void;
}

export class ChildClass extends BaseClass<ExtraTypes> {
  constructor() {
    super();
    this.emit("foo");
    this.emit("bar", new Error("bar"));
    this.emit("baz");
  }
}

Summary of changes:

I changed the types to interfaces so that I could extend from one another
T extends EventType instead of T extends object so that I could use EventType | T, instead of &. This works since T extends EventType, but it feels a bit hackish.

This solution works.!
But further, how to implement multi-level inheritance.
Does anyone have an idea?


Allow passing ref to api._show_versions

Bare minimum needed for https://github.com/iterative/mlem/issues/665
- [ ] Allow passing `refs`, getting right version
- [ ] Add tests

Overall, feels like GTO codebase needs a refactoring... While working on this I started with #361, and it's tough to add anything like that without rewriting big chunks of GTO now. There are many things each stepping on other's toes... Plus many implementation decisions were made taking annotations into account, which is no longer a thing in GTO, except for some API for Studio to enable backward compatibility while making updates easier. They should be thrown away to make it easier to contribute new features 🪣

Codecov Report
Patch coverage: 84.21% and project coverage change: -0.34 :warning:

Comparison is base (27c2355) 85.15% compared to head (78b4149) 84.81%.

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #362      +/-   ##
==========================================
- Coverage   85.15%   84.81%   -0.34%
==========================================
  Files          18       18
  Lines        2115     2088      -27
==========================================
- Hits         1801     1771      -30
- Misses        314      317       +3

Impacted Files
Coverage Δ

gto/api.py
88.11% <84.21%> (-1.29%)
:arrow_down:

... and 8 files with indirect coverage changes

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Korean UI images.

Please merge this after #27 is merged, and #19 is closed.

merging this for 0.5.0 and further testing


Moving this resolver to the sceptre org?

Hi Luke,
Thanks for making this useful resolver.  Would you support moving this resolver to the sceptre org?

Hi Craig,
I'm glad you've found it useful. I've moved the resolver into the Sceptre org now 👍

Thanks Luke. Will the sceptre org also have the ability to publish to the existing pypi module name or will they have to publish under a different module name?

Hi @lukeplausin do you think you can give ownership of the module on pypi to one of the maintainers of sceptre?
https://pypi.org/help/#request-ownership

Hi @craighurley, yes I'd be happy to invite yourself and @zaro0508  as owners. What are your usernames on PyPI?

Thanks Luke; it's probably better to add the sceptre user on pypi rather than a named individual:
https://pypi.org/user/sceptre/
@zaro0508 let us know if you agree?

@lukeplausin It would be helpful if you could add me so i can test initial deployments with my own account.  https://pypi.org/user/zaro0508/
thanks.

I've invited both users as owners


[FEATURE] Add Links on Save in Home Panel

Add Links on Save in Home Panel
Overview
You have to implement add social link box functionality for Home panel which should create social link box whenever Save button is called.

Requirements

After adding some links in Edit panel, whenever user clicks Save button, it should create link containers of those links in Home panel.
It should only create link containers of those links which are completed.

A link is completed, when there's no bottom line present below the link in Edit panel.
2nd link shown in first image is completed link, others are invalid/incompleted links.
You can use isValidURL() function from index.js to check whether a link is valid or not.
Or you can check for CSS styling too, both should work.

It should create social link box same as provided in 2nd image.
For creating the social link box in home panel, you can use createSocialLink(key, value) function from index.js, where key can be retrieve from socialLinks object and value should be same as the provided link in input element of link-box in Edit panel.
Must follow the Code Guidelines provided.
To test the code, setup the extension by following these steps.
All the functionality should be implemented in index.js only.

If you have any suggestion or idea, you're welcome to share.
Let's implement SocialRepo's save button functionality! 🙌

Hey @Param302, I would like to work on this issue. please assign this to me.

Sure @CodexRaunak !
Assigning you the issue.

Hey @Param302 I want to ask when the user adds a valid URL in the edit section, then the link box will be created in the Home Panel. But if he adds the same URL again within the edit box, then what will happen? I have made the functionality till he adds and it gets saved in the home panel, but if he adds it again, then one more list box is created with the same key and value.
Below is the image of the added code, please do let me know if there is any issue.

oh oky, @CodexRaunak  so it's a bug :sweat_smile: , we actually want all the links to be unique.
Right now, don't worry about it, as creating the home links will depends upon creating link in edit container, I will fix it.
Thanks for pointing out this bug!


how to parametrize mmdetection for a specific solov2 dataset

Hi I want to train my own dataset in COCO format with only one category ("spore") with the config file "configs/solov2/solov2_x101-dcn_fpn_ms-3x_coco.py", it is unclear what I must change in the default configuration files. Could you, with this specific configuration, tell me the modifications I must do please ?
Thank you
Kind regards

@SylvainArd im also looking for same, no clear documentations for this

akashAD98 : it seems that there are very few answers in this forum isnt'it ?

@SylvainArd yes no any proper guidance

akashAD98 : I tried other repositories but they are too old for work now, I am very needing solov2, how to make it works please ?

I succeeded for do this you must change certain files :
in the directory "datasets" add a file called "my_dataset.py"
put it in :
# the new config inherits the base configs to highlight the necessary modification
#_base_ = '../configs/rtmdet/rtmdet-ins_x_8xb16-300e_coco.py'
_base_ = '../configs/solov2/solov2_r50_fpn_1x_coco.py'#change to the dolov2 model you want
# 1. dataset settings
dataset_type = 'CocoDataset'
classes = ('feuille','petiole') #put here your classes
data_root='datasets/'#put here the folder containing images and annotations

train_dataloader = dict(
    batch_size=2,
    num_workers=2,
    dataset=dict(
        type=dataset_type,
        # explicitly add your class names to the field `metainfo`
        metainfo=dict(classes=classes),
        data_root=data_root,
        ann_file='trainval.json',#change this to your training COCO formatted annotation  file
        data_prefix=dict(img='trainval')~#change trainval to your training images directory
        )
    )
#do the same for test and val
val_dataloader = dict(
    batch_size=1,
    num_workers=2,
    dataset=dict(
        type=dataset_type,
        test_mode=True,
        # explicitly add your class names to the field `metainfo`
        metainfo=dict(classes=classes),
        data_root=data_root,
        ann_file='trainval.json',
        data_prefix=dict(img='trainval')
        )
    )

test_dataloader = dict(
    batch_size=1,
    num_workers=2,
    dataset=dict(
        type=dataset_type,
        test_mode=True,
        # explicitly add your class names to the field `metainfo`
        metainfo=dict(classes=classes),
        data_root=data_root,
        ann_file='trainval.json',
        data_prefix=dict(img='trainval')
        )
    )

# 2. model settings

next change the \configs_base_\datasets\coco_instance.py file
put the data-root and directories and JSON for yours
mine is like this :
# dataset settings
dataset_type = 'CocoDataset'
data_root = 'datasets/'

# Example to use different file client
# Method 1: simply set the data root and let the file I/O module
# automatically infer from prefix (not support LMDB and Memcache yet)

# data_root = 's3://openmmlab/datasets/detection/coco/'

# Method 2: Use `backend_args`, `file_client_args` in versions before 3.0.0rc6
# backend_args = dict(
#     backend='petrel',
#     path_mapping=dict({
#         './data/': 's3://openmmlab/datasets/detection/',
#         'data/': 's3://openmmlab/datasets/detection/'
#     }))
backend_args = None

train_pipeline = [
    dict(type='LoadImageFromFile', backend_args=backend_args),
    dict(type='LoadAnnotations', with_bbox=True, with_mask=True),
    dict(type='Resize', scale=(1333, 800), keep_ratio=True),
    dict(type='RandomFlip', prob=0.5),
    dict(type='PackDetInputs')
]
test_pipeline = [
    dict(type='LoadImageFromFile', backend_args=backend_args),
    dict(type='Resize', scale=(1333, 800), keep_ratio=True),
    # If you don't have a gt annotation, delete the pipeline
    dict(type='LoadAnnotations', with_bbox=True, with_mask=True),
    dict(
        type='PackDetInputs',
        meta_keys=('img_id', 'img_path', 'ori_shape', 'img_shape',
                   'scale_factor'))
]
train_dataloader = dict(
    batch_size=2,
    num_workers=2,
    persistent_workers=True,
    sampler=dict(type='DefaultSampler', shuffle=True),
    batch_sampler=dict(type='AspectRatioBatchSampler'),
    dataset=dict(
        type=dataset_type,
        data_root=data_root,
        ann_file='trainval.json',
        data_prefix=dict(img='trainval/'),
        filter_cfg=dict(filter_empty_gt=True, min_size=32),
        pipeline=train_pipeline,
        backend_args=backend_args))
val_dataloader = dict(
    batch_size=1,
    num_workers=2,
    persistent_workers=True,
    drop_last=False,
    sampler=dict(type='DefaultSampler', shuffle=False),
    dataset=dict(
        type=dataset_type,
        data_root=data_root,
        ann_file='trainval.json',
        data_prefix=dict(img='trainval/'),
        test_mode=True,
        pipeline=test_pipeline,
        backend_args=backend_args))
test_dataloader = val_dataloader

val_evaluator = dict(
    type='CocoMetric',
    ann_file=data_root + 'trainval.json',
    metric=['bbox', 'segm'],
    format_only=False,
    backend_args=backend_args)
test_evaluator = val_evaluator

# inference on test dataset and
# format the output results for submission.
# test_dataloader = dict(
#     batch_size=1,
#     num_workers=2,
#     persistent_workers=True,
#     drop_last=False,
#     sampler=dict(type='DefaultSampler', shuffle=False),
#     dataset=dict(
#         type=dataset_type,
#         data_root=data_root,
#         ann_file=data_root + 'annotations/image_info_test-dev2017.json',
#         data_prefix=dict(img='test2017/'),
#         test_mode=True,
#         pipeline=test_pipeline))
# test_evaluator = dict(
#     type='CocoMetric',
#     metric=['bbox', 'segm'],
#     format_only=True,
#     ann_file=data_root + 'annotations/image_info_test-dev2017.json',
#     outfile_prefix='./work_dirs/coco_instance/test')

change the configs/solov2/solov2_r50_fpn_1x_coco.py file
_base_ = [
    '../_base_/datasets/coco_instance.py',
    '../_base_/schedules/schedule_1x.py', '../_base_/default_runtime.py'
]

# model settings
model = dict(
    type='SOLOv2',
    data_preprocessor=dict(
        type='DetDataPreprocessor',
        mean=[123.675, 116.28, 103.53],
        std=[58.395, 57.12, 57.375],
        bgr_to_rgb=True,
        pad_mask=True,
        pad_size_divisor=32),
    backbone=dict(
        type='ResNet',
        depth=50,
        num_stages=4,
        out_indices=(0, 1, 2, 3),
        frozen_stages=1,
        init_cfg=dict(type='Pretrained', checkpoint='torchvision://resnet50'),
        style='pytorch'),
    neck=dict(
        type='FPN',
        in_channels=[256, 512, 1024, 2048],
        out_channels=256,
        start_level=0,
        num_outs=5),
    mask_head=dict(
        type='SOLOV2Head',
        num_classes=2,   #put here your number of classes
        in_channels=256,
        feat_channels=512,
        stacked_convs=4,
        strides=[8, 8, 16, 32, 32],
        scale_ranges=((1, 96), (48, 192), (96, 384), (192, 768), (384, 2048)),
        pos_scale=0.2,
        num_grids=[40, 36, 24, 16, 12],
        cls_down_index=0,
        mask_feature_head=dict(
            feat_channels=128,
            start_level=0,
            end_level=3,
            out_channels=256,
            mask_stride=4,
            norm_cfg=dict(type='GN', num_groups=32, requires_grad=True)),
        loss_mask=dict(type='DiceLoss', use_sigmoid=True, loss_weight=3.0),
        loss_cls=dict(
            type='FocalLoss',
            use_sigmoid=True,
            gamma=2.0,
            alpha=0.25,
            loss_weight=1.0)),
    # model training and testing settings
    test_cfg=dict(
        nms_pre=500,
        score_thr=0.1,
        mask_thr=0.5,
        filter_thr=0.05,
        kernel='gaussian',  # gaussian/linear
        sigma=2.0,
        max_per_img=100)) # change here the max number of instances to be detected

# optimizer
optim_wrapper = dict(
    optimizer=dict(lr=0.01), clip_grad=dict(max_norm=35, norm_type=2))

val_evaluator = dict(metric='segm')
test_evaluator = val_evaluator

finally change the configs_base_\schedules\schedule_1x.py file
# training schedule for 1x
train_cfg = dict(type='EpochBasedTrainLoop', max_epochs=12, val_interval=1)
val_cfg = dict(type='ValLoop')
test_cfg = dict(type='TestLoop')

# learning rate
param_scheduler = [
    dict(
        type='LinearLR', start_factor=0.001, by_epoch=False, begin=0, end=500),
    dict(
        type='MultiStepLR',
        begin=0,
        end=12000, #put here your number of epochs
        by_epoch=True,
        milestones=[8, 11],
        gamma=0.1)
]

# optimizer
optim_wrapper = dict(
    type='OptimWrapper',
    optimizer=dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001))

# Default setting for scaling LR automatically
#   - `enable` means enable scaling LR automatically
#       or not by default.
#   - `base_batch_size` = (8 GPUs) x (2 samples per GPU).
auto_scale_lr = dict(enable=False, base_batch_size=16)

note that for me we can't get good results under 200 epochs minimum

for training do :
 conda activate solov2
python tools/train.py datasets/my_dataset.py

for resume do :
 conda activate solov2
python tools/train.py datasets/my_dataset.py --resume=work_dirs/my_dataset/epoch_12.pth

if you don't precise the resume parameter the checkpoint is the last in the directory work_dirs/my_dataset
for testing do :
python demo/image_demo.py in.jpg datasets/my_dataset.py  --weights epoch_12.pth --out-dir res
where in.jpg is the image to test, you can also specify a directory of images and res is the output directory for predictions

I said 200 epochs but it is always not enough, how to speed it, pass the initial  learning rate from 0.02 to 0.1 ?

you can change the val_interval in the configs_base_\schedules\schedule_1x.py file to speed up the training, put it for example at 100 because the validation take a lot of time

@SylvainArd thank you so much for this,im going to try it

I make a mistake : in
# learning rate
param_scheduler = [
    dict(
        type='LinearLR', start_factor=0.001, by_epoch=False, begin=0, end=500),
    dict(
        type='MultiStepLR',
        begin=0,
        end=12,
        by_epoch=True,
        milestones=[8, 11],
        gamma=0.1)
]

let 12 and not 12000 !important

im not able to train it,getting errors,
this dataset is int base/datasets ?
datasets/my_dataset.py
where should i need to add all my dataset?

why to do in both my_dataset.py &  \configs_base_\datasets\coco_instance.py file image & annotion files path update?

I explained how to set the datasets and JSON files path, don't forget the data_root = 'datasets/' which is the directory which contain both
why to do in both my_dataset.py & \configs_base_\datasets\coco_instance.py file image & annotion files path update? >> I don't know, I do it because I had no help and it works for me
I am using a pretrained model which is downloaded at training
My directories are :
datasets/trainval >> folder of photos
datasets/trainval.json >> annotation file
I used the same for val, test and train but you can use different
which is your error message ?
no my dataset and my_dataset.py  are not in config/base/datasets but in the directory datasets at the root directory

I said where set num_classes read again

if you face new problems please post your code with dataset in github so I can look at

@SylvainArdyes sure, currently im using mask rcnn & here i have 2 classes, my accuracy is always more than 92-99% from 2 epochs onwards, did you notice the same while doing model training? any idea why its like this?

I am using a pre-trained model which is downloaded at training

which solov2 model pretrained model your using & how your assigning this in train.py?

I don't assign it, it is automatically downloaded in training, you have nothing to do

if you use maskrcnn I advise you to use detectron2 better and with more help

@SylvainArd thank you so much,bdw im using branch 2 fro training, are you getting good results with solov2?
after sometime ill try solov2 again & will tell you the error im getting

no I'm getting less good results with solov2 than maskrcnn detectron2 on almost all my datasets but the prediction time is less in solov2 and for now the client want a small prediction time

I can share you a detectron2 directory with all configured for maskrcnn with resnet 101 if you send me your email because I don't want to share it for everyone

another thing to mention is that solov2  with mmdetection require a very longer training than detectron2 maskrcnn to have good results

no it is is absolutely not normal that the accuracy is 99% after 2 epochs, there is a problem with configuration or you use the default COCO dataset and use a pretrained model which has already learned this dataset, by default the pretrained model is the COCO dataset model

@SylvainArd thanks for your kind help im really greatful to you, actully i tried yolov7,yolov8 instance segmentation) -there accuracy is not good so I was exploring mmdetection -but here documentations are not clear & also not getting good results.
ill try detectron2 later, if you can provide me guidance for this repo it would be really good
can you share me mask rcnn best model for instance segmentation? & what changes i need to do.. seems im already doing it but im getting many false detection ,my manager believes that we will not get false predictions,maybe my training pipeline is wrong.
<EMAIL_ADDRESS>is my mail

yolo are for object detection (so rectangles) so there are less precise than instance segmentation (real contours)

I know very good detectron2, I can help you, I suggest that we continue discussion by personal mail

below is my code for training custom masking instance segmentation model, may i know whats wrong here? or what parameters can i add
# Check Pytorch installation
import torch, torchvision
print(torch.__version__, torch.cuda.is_available())

# Check MMDetection installation
import mmdet
print(mmdet.__version__)

# Check mmcv installation
#from mmcv.ops import get_compiling_cuda_version, get_compiler_version
#print(get_compiling_cuda_version())
#print(get_compiler_version())

import os.path as osp

import mmcv
from mmcv.runner import load_checkpoint

from mmdet.apis import inference_detector, show_result_pyplot
from mmdet.models import build_detector
from mmcv import Config
from mmdet.apis import set_random_seed
from mmdet.datasets import build_dataset
from mmdet.models import build_detector
from mmdet.apis import train_detector

# cfg

cfg = Config.fromfile('./configs/mask_rcnn/mask_rcnn_r101_fpn_1x_coco.py')
#mask-rcnn_r101_fpn_1x_coco.py
#mask_rcnn_r50_caffe_fpn_mstrain-poly_1x_coco.py')

from mmdet.utils import get_device
cfg.device = get_device()

# Modify dataset type and path
cfg.dataset_type = 'COCODataset'

cfg.data.test.ann_file = 'data/weapons_2_n/val/val_new2.json'
cfg.data.test.img_prefix = 'data/weapons_2_n/val/'
cfg.data.test.classes = ('axe','cigar',)

cfg.data.train.ann_file = 'data/weapons_2_n/train/train_new2.json'
cfg.data.train.img_prefix = 'data/weapons_2_n/train/'
cfg.data.train.classes = ('axe','cigar',)

cfg.data.val.ann_file = 'data/weapons_2_n/val/val_new2.json'
cfg.data.val.img_prefix = 'data/weapons_2_n/val/'
cfg.data.val.classes = ('axe','cigar',)

# modify num classes of the model in box head and mask head
cfg.model.roi_head.bbox_head.num_classes = 2
cfg.model.roi_head.mask_head.num_classes = 2

# We can still the pre-trained Mask RCNN model to obtain a higher performance
cfg.load_from = 'checkpoints/mask_rcnn_r101_fpn_1x_coco_20200204-1efe0ed5.pth'
#mask_rcnn_r50_caffe_fpn_mstrain-poly_3x_coco_bbox_mAP-0.408__segm_mAP-0.37_20200504_163245-42aa3d00.pth'

# Set up working dir to save files and logs.
cfg.work_dir = 'experiments/Weapons_2_mask-rcnn_r101_fpn_1x_coco_120epoch_lr_rateepochs_def'

# The original learning rate (LR) is set for 8-GPU training.
# We divide it by 8 since we only use one GPU.
cfg.optimizer.lr = 0.001
cfg.lr_config.warmup = None
cfg.log_config.interval = 10

# We can set the evaluation interval to reduce the evaluation times
cfg.evaluation.interval = 40
# We can set the checkpoint saving interval to reduce the storage cost
cfg.checkpoint_config.interval = 40
cfg.runner.max_epochs = 120
cfg.total_epochs = 120

# Set seed thus the results are more reproducible
cfg.seed = 0
set_random_seed(0, deterministic=False)
cfg.gpu_ids = range(1)
#cfg.device = get_device()

# We can also use tensorboard to log the training process
cfg.log_config.hooks = [
    dict(type='TextLoggerHook'),
    dict(type='TensorboardLoggerHook')]

# We can initialize the logger for training and have a look
# at the final config used for training
print(f'Config:\n{cfg.pretty_text}')

cfg.dump('mask-rcnn_r101_fpn_1x_coco_yamlnew2pm.py')

# # Build dataset
datasets = [build_dataset(cfg.data.train)]

# # Build the detector
model = build_detector(cfg.model)

# # Add an attribute for visualization convenience
model.CLASSES = datasets[0].CLASSES

# # Create work_dir
mmcv.mkdir_or_exist(osp.abspath(cfg.work_dir))
train_detector(model, datasets, cfg, distributed=False, validate=True)

why do you have created a personal training file and don't use the
tools/train.py with good parameters ?
Sylvain Ard
0549507724
0778380991
@.***
http://sylvain-ard.fr
Entreprise individuelle SIRET :<PHONE_NUMBER>0022
Appt 26 Bât A Résidence Le Patio
83 rue de la Bugellerie
86000 Poitiers
Le mer. 31 mai 2023 à 13:14, Akash A Desai @.***> a
écrit :

below is my code for training custom masking instance segmentation model,
may i know whats wrong here? or what parameters can i add
Check Pytorch installation
import torch, torchvision
print(torch.version, torch.cuda.is_available())
Check MMDetection installation
import mmdet
print(mmdet.version)
Check mmcv installation
#from mmcv.ops import get_compiling_cuda_version, get_compiler_version
#print(get_compiling_cuda_version())
#print(get_compiler_version())
import os.path as osp
import mmcv
from mmcv.runner import load_checkpoint
from mmdet.apis import inference_detector, show_result_pyplot
from mmdet.models import build_detector
from mmcv import Config
from mmdet.apis import set_random_seed
from mmdet.datasets import build_dataset
from mmdet.models import build_detector
from mmdet.apis import train_detector
cfg
cfg = Config.fromfile('./configs/mask_rcnn/mask_rcnn_r101_fpn_1x_coco.py')
#mask-rcnn_r101_fpn_1x_coco.py
#mask_rcnn_r50_caffe_fpn_mstrain-poly_1x_coco.py')
from mmdet.utils import get_device
cfg.device = get_device()
Modify dataset type and path
cfg.dataset_type = 'COCODataset'
cfg.data.test.ann_file = 'data/weapons_2_n/val/val_new2.json'
cfg.data.test.img_prefix = 'data/weapons_2_n/val/'
cfg.data.test.classes = ('axe','cigar',)
cfg.data.train.ann_file = 'data/weapons_2_n/train/train_new2.json'
cfg.data.train.img_prefix = 'data/weapons_2_n/train/'
cfg.data.train.classes = ('axe','cigar',)
cfg.data.val.ann_file = 'data/weapons_2_n/val/val_new2.json'
cfg.data.val.img_prefix = 'data/weapons_2_n/val/'
cfg.data.val.classes = ('axe','cigar',)
modify num classes of the model in box head and mask head
cfg.model.roi_head.bbox_head.num_classes = 2
cfg.model.roi_head.mask_head.num_classes = 2
We can still the pre-trained Mask RCNN model to obtain a higher performance
cfg.load_from = 'checkpoints/mask_rcnn_r101_fpn_1x_coco_20200204-1efe0ed5.pth'
#mask_rcnn_r50_caffe_fpn_mstrain-poly_3x_coco_bbox_mAP-0.408__segm_mAP-0.37_20200504_163245-42aa3d00.pth'
Set up working dir to save files and logs.
cfg.work_dir = 'experiments/Weapons_2_mask-rcnn_r101_fpn_1x_coco_120epoch_lr_rateepochs_def'
The original learning rate (LR) is set for 8-GPU training.
We divide it by 8 since we only use one GPU.cfg.optimizer.lr = 0.001
cfg.lr_config.warmup = None
cfg.log_config.interval = 10
We can set the evaluation interval to reduce the evaluation times
cfg.evaluation.interval = 40
We can set the checkpoint saving interval to reduce the storage cost
cfg.checkpoint_config.interval = 40
cfg.runner.max_epochs = 120
cfg.total_epochs = 120
Set seed thus the results are more reproducible
cfg.seed = 0
set_random_seed(0, deterministic=False)
cfg.gpu_ids = range(1)
#cfg.device = get_device()
We can also use tensorboard to log the training process
cfg.log_config.hooks = [
dict(type='TextLoggerHook'),
dict(type='TensorboardLoggerHook')]
We can initialize the logger for training and have a look
at the final config used for training
print(f'Config:\n{cfg.pretty_text}')
cfg.dump('mask-rcnn_r101_fpn_1x_coco_yamlnew2pm.py')
# Build dataset
datasets = [build_dataset(cfg.data.train)]
# Build the detector
model = build_detector(cfg.model)
# Add an attribute for visualization convenience
model.CLASSES = datasets[0].CLASSES
# Create work_dir
mmcv.mkdir_or_exist(osp.abspath(cfg.work_dir))
train_detector(model, datasets, cfg, distributed=False, validate=True)
—
Reply to this email directly, view it on GitHub
https://github.com/open-mmlab/mmdetection/issues/10378#issuecomment-1569995226,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AEWZCR2A3SK3NOOX3XII4O3XI4RYZANCNFSM6AAAAAAYMB6A3Q
.
You are receiving this because you were mentioned.Message ID:
@.***>

@SylvainArd learninig rate code is not correct
below is correct code, here i used multistepLR, if you want to use step you can use
# training schedule for 1x
train_cfg = dict(type='EpochBasedTrainLoop', max_epochs=120, val_interval=1)
val_cfg = dict(type='ValLoop')
test_cfg = dict(type='TestLoop')

# learning rate
param_scheduler = [
    dict(
        type='MultiStepLR',
        begin=0,
        end=12000,
        by_epoch=True,
        milestones=[116, 119],
        gamma=0.1)
]

# optimizer
optim_wrapper = dict(
    type='OptimWrapper',
    optimizer=dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001))

# Default setting for scaling LR automatically
auto_scale_lr = dict(enable=True, base_batch_size=16)

also  based on epoch we need to adjust the  milestones=[116, 119], values
below is explained about the code
In machine learning, a milestone is typically a predefined point or epoch during training at which some action is taken. In the case of your MultiStepLR learning rate scheduler, the action is reducing the learning rate.

Your configuration is saying that initially, the learning rate should be 0.02 (as set in your optimizer configuration). When the number of training epochs reaches a milestone (116 and 119 in your configuration), the learning rate will be multiplied by the gamma parameter (0.1 in your configuration). Therefore, at each milestone, the learning rate will be reduced to 10% of its current value.

The motivation behind reducing the learning rate at certain points during training is that initially, when the model is far from a good solution, we can afford larger steps in the parameter space, which correspond to a larger learning rate. As we train and hopefully get closer to a good set of parameters, we want to take smaller steps, i.e., reduce the learning rate, so as not to overshoot the optimal solution.

In your current configuration, the learning rate reduction will happen very close to the end of training (max_epochs=120 and milestones at 116 and 119). This means the learning rate will stay at 0.02 for most of the training process, then decrease to 0.002 at epoch 116, and again to 0.0002 at epoch 119. You might want to adjust these values depending on the specific problem and dataset you are working with

Hello I tried this putting a milestone at  epoch 388 and end at 12000 but
passing at epoch 388 the lr is always the same (1e-4)
Sylvain Ard
0549507724
0778380991
@.***
http://sylvain-ard.fr
Entreprise individuelle SIRET :<PHONE_NUMBER>0022
Appt 26 Bât A Résidence Le Patio
83 rue de la Bugellerie
86000 Poitiers
Le jeu. 1 juin 2023 à 11:29, Akash A Desai @.***> a
écrit :

@SylvainArd https://github.com/SylvainArd learninig rate code is not
correct
below is correct code, here i used multistepLR, if you want to use step
you can use
training schedule for 1x
train_cfg = dict(type='EpochBasedTrainLoop', max_epochs=120, val_interval=1)
val_cfg = dict(type='ValLoop')
test_cfg = dict(type='TestLoop')
learning rate
param_scheduler = [
dict(
type='MultiStepLR',
begin=0,
end=12000,
by_epoch=True,
milestones=[116, 119],
gamma=0.1)
]
optimizer
optim_wrapper = dict(
type='OptimWrapper',
optimizer=dict(type='SGD', lr=0.02, momentum=0.9, weight_decay=0.0001))
Default setting for scaling LR automatically
auto_scale_lr = dict(enable=True, base_batch_size=16)
also based on epoch we need to adjust the milestones=[116, 119], values
below is explained about the code
In machine learning, a milestone is typically a predefined point or epoch during training at which some action is taken. In the case of your MultiStepLR learning rate scheduler, the action is reducing the learning rate.
Your configuration is saying that initially, the learning rate should be 0.02 (as set in your optimizer configuration). When the number of training epochs reaches a milestone (116 and 119 in your configuration), the learning rate will be multiplied by the gamma parameter (0.1 in your configuration). Therefore, at each milestone, the learning rate will be reduced to 10% of its current value.
The motivation behind reducing the learning rate at certain points during training is that initially, when the model is far from a good solution, we can afford larger steps in the parameter space, which correspond to a larger learning rate. As we train and hopefully get closer to a good set of parameters, we want to take smaller steps, i.e., reduce the learning rate, so as not to overshoot the optimal solution.
In your current configuration, the learning rate reduction will happen very close to the end of training (max_epochs=120 and milestones at 116 and 119). This means the learning rate will stay at 0.02 for most of the training process, then decrease to 0.002 at epoch 116, and again to 0.0002 at epoch 119. You might want to adjust these values depending on the specific problem and dataset you are working with
—
Reply to this email directly, view it on GitHub
https://github.com/open-mmlab/mmdetection/issues/10378#issuecomment-1571683378,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AEWZCR2P7OWPOL7VPU4K3G3XJBOF3ANCNFSM6AAAAAAYMB6A3Q
.
You are receiving this because you were mentioned.Message ID:
@.***>

my bad @SylvainArd
epoch=120 then
begin=0,
end=120,
& milestones=[116, 119],
gamma=0.1)
so at 116 epoch lr is multiplied by gamma value which is 0.1

I putted end and max_epochs at 12000 and milestones=[10,100, 200,388,420,450
,600,700,800], and when I passed from epoch 386 to 389 the lr didn't
change, I precise that I relaunched the training by resume after changing
the schedule_1x.py
Sylvain Ard
0549507724
0778380991
@.***
http://sylvain-ard.fr
Entreprise individuelle SIRET :<PHONE_NUMBER>0022
Appt 26 Bât A Résidence Le Patio
83 rue de la Bugellerie
86000 Poitiers
Le jeu. 1 juin 2023 à 12:55, Akash A Desai @.***> a
écrit :

my bad @SylvainArd https://github.com/SylvainArd
epoch=120 then
begin=0,
end=120,
& milestones=[116, 119],
gamma=0.1)
so at 116 epoch lr is multiplied by gamma value which is 0.1
—
Reply to this email directly, view it on GitHub
https://github.com/open-mmlab/mmdetection/issues/10378#issuecomment-1571821769,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AEWZCRZKQXHZHNEMCOVLGG3XJBYJDANCNFSM6AAAAAAYMB6A3Q
.
You are receiving this because you were mentioned.Message ID:
@.***>

Le jeu. 1 juin 2023 à 13:15, Akash A Desai @.***> a
écrit :

@SylvainArd https://github.com/SylvainArd are you using Tensorbord for
visualization? >> no the default visualiation program of mmdetection or
detectron2

also may I know only the same steps i need to do in order to use mask
rcnn? im right?

you talk about mmdetection or detectron 2 ?

—
Reply to this email directly, view it on GitHub
https://github.com/open-mmlab/mmdetection/issues/10378#issuecomment-1571854970,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AEWZCR63PQJIFSJIDSEVON3XJB2ULANCNFSM6AAAAAAYMB6A3Q
.
You are receiving this because you were mentioned.Message ID:
@.***>