GenerateNewControlProject.ps1 hits error: "Could not load file or assembly 'EnvDTE, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies.

Running tools\GenerateNewControlProject.ps1 hits an error:
Add-Type : Could not load file or assembly 'EnvDTE, Version=<IP_ADDRESS>, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified.
At D:\microsoft-ui-xaml\tools\GenerateNewControlProject.ps1:176 char:1
+ Add-Type -ReferencedAssemblies $assemblies -TypeDefinition $source -L ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Add-Type], FileNotFoundException
    + FullyQualifiedErrorId : System.IO.FileNotFoundException,Microsoft.PowerShell.Commands.AddTypeCommand

Unable to find type [SolutionHelper.SolutionRegister515533087].
At line:1 char:1
+ [SolutionHelper.SolutionRegister515533087]::Main()
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (SolutionHelper.SolutionRegister515533087:TypeName) [], RuntimeException
    + FullyQualifiedErrorId : TypeNotFound

Both myself and @chenss3 hit this when trying to run the script. I tried to workaround the issue by fully specifying the path to EnvDTE.dll and EnvDTE80.dll, but that did not resolve the problem.
This script got updated by #2145. @chingucoding would you be able to take a look?

I'll look into this.


copas 3.0.0-2 not published in luarocks.org

Any blockers for this? I'm trying to run the LuaRocks test suite with Lua 5.4 and I hit the 3.0.0-1 issue.

@Tieske thanks! I just tried the latest rockspec 3.0.0-3 and I noticed it is forcing luasocket 3.0rc2, and not the latest luasocket 3.0.0 that was recently released — is there an incompatibility somewhere?

yes, test suite fails on the new version. Hence until resolved, we're pinning to the old version to be safe.


canvas: error while reading from input stream

This happens extremely rarely, but does occur at times.
ERROR: Error: error while reading from input stream
ERROR:     at Error (native)
ERROR:     at Image.src (node_modules/canvas/lib/image.js:29:17)
ERROR:     at Object.exp.draw_model (lib/renders.js:195:13)
ERROR:     at lib/helpers.js:338:17
ERROR:     at FSReqWrap.cb [as oncomplete] (fs.js:212:19)
 INFO: GET /renders/body/ee1b30ed-336f-4003-b197-f6fc622260dd.png?helm&scale=3 500 132ms (server error)

The error is coming from canvas/lib/image.js:29:
Image.prototype.__defineSetter__('src', function(val){
  if ('string' == typeof val && 0 == val.indexOf('data:')) {
    val = val.slice(val.indexOf(',') + 1);
    this.source = new Buffer(val, 'base64');
  } else {
    this.source = val; // <------ here
  }
});

The actual 'native' error is CAIRO_STATUS_READ_ERROR which is coming from somewhere inside canvas' Image.cc, I guess that would be the one in Image::SetSource:
Nan::SetAccessor(proto, Nan::New("source").ToLocalChecked(), GetSource, SetSource);
// ...
// lots of code
// ...
NAN_SETTER(Image::SetSource) {
  Image *img = Nan::ObjectWrap::Unwrap<Image>(info.This());
  cairo_status_t status = CAIRO_STATUS_READ_ERROR;

  img->clearData();

  // url string
  if (value->IsString()) {
    String::Utf8Value src(value);
    if (img->filename) free(img->filename);
    img->filename = strdup(*src);
    status = img->load();
  // Buffer
  } else if (Buffer::HasInstance(value)) {
    uint8_t *buf = (uint8_t *) Buffer::Data(value->ToObject());
    unsigned len = Buffer::Length(value->ToObject());
    status = img->loadFromBuffer(buf, len);
  }

  // check status
  if (status) {
    img->error(Canvas::Error(status));
  } else {
    img->loaded();
  }
}

I'm no C++ ninja, but it seems quite obvious that the error is returned when the value is neither a string nor an instance of Buffer.
We call renders.draw_model either when we render a default image or when we use a freshly downloaded image. Looking at server logs, the latter seems to be the case here.
There is an open issue about this error at https://github.com/Automattic/node-canvas/issues/364 that occurs when a JPEG is passed instead of a PNG.
I noticed that we do use skins.save_image to strip meta tags / compress the image, but the result is not part of the callback, so we just use the image returned by the server which might be anything but a PNG. This is a bug that should be is fixed!
However, we would still see the error thrown by lwip if it couldn't parse the image instead of the invalid image making its way to canvas. Besides, canvas has no problem to use JPEG as image source.
There is another image at https://github.com/Automattic/node-canvas/issues/122, but the issue linked above as well as this one seem to throw the error somewhere else (i.e. not at Image::SetSource) and they're either dependency/programming problems, or they're reproducible.
There are a few more things that lead to more confusion:

I'm unable to reproduce this error (issuing the same request again works just fine)
In this case, the same skin was requested once as render (via UUID) and once as avatar (via username). That means we did not make use of our simultaneous requests queuing (We should do this for outgoing requests, too!)
The second (avatar) request was downloaded and served perfectly fine
The requested skin is a perfectly valid PNG image (at least when I tried it)
No errors coming from lwip
The error (should?) only occur when the image is not a Buffer (nor string)

The only thing I can think of that might be causing trouble is that the same skin was requested via UUID and name at the same time, which might have the effect of the skin image file being written twice at the same time. That would explain why it happens so rarely, but wouldn't explain anything else, since we don't use the skin file for rendering.
I could also imagine that Mojang's server returns errors or other crazy stuff at rare conditions, which might be a reason for request to give us something other than a Buffer (although I think it always returns a Buffer unless asked not to), but – again – we'd see errors from lwip and probably warnings from the networking module, too.
At this point I'm completely out of ideas, other than this being a bug in node-canvas or even Cairo.
Any other ideas what would cause this, or at least how to reproduce it?

Found another one where there were actually two different UUIDs

5fc215bd-8306-4396-971a-5670ff2a6529
4374362b-e8f3-43eb-8311-11db5b109fac

However, both share the same skin.
I used crafatar/mojang_fake_api to always return that texture URL (but I still used Mojang's texture server to actually download it). I then tried to reproduce the issue:
while true; do
  curl -I "http://<IP_ADDRESS>:3000/renders/body/5fc215bd-8306-4396-971a-5670ff2a6529.png" &
    curl -I "http://<IP_ADDRESS>:3000/renders/body/4374362b-e8f3-43eb-8311-11db5b109fac.png"
  fg
  redis-cli flushall
  rm -f images/*/*
done

I was able to reproduce it a few times after running it for several minutes.
I still don't have anything useful, but at least here's the (slightly modified) log with debug enabled:
000ms: ----- HEAD /renders/body/5fc215bd-8306-4396-971a-5670ff2a6529.png
001ms: ----- userId not cached
003ms: +++++ HEAD /renders/body/4374362b-e8f3-43eb-8311-11db5b109fac.png
003ms: +++++ userId not cached
005ms: ----- http://<IP_ADDRESS>:5000/session/minecraft/profile/5fc215bd83064396971a5670ff2a6529 200 OK
006ms: ----- new skin hash: 4f4e479f9d6d56de4bb75a957719903e212d17b3b90ac25ddddf74f728219
006ms: ----- caching skin:undefined cape:null
008ms: +++++ http://<IP_ADDRESS>:5000/session/minecraft/profile/4374362be8f343eb831111db5b109fac 200 OK
009ms: +++++ new skin hash: 4f4e479f9d6d56de4bb75a957719903e212d17b3b90ac25ddddf74f728219
009ms: +++++ caching skin:undefined cape:null
514ms: +++++ http://textures.minecraft.net/texture/4f4e479f9d6d56de4bb75a957719903e212d17b3b90ac25ddddf74f728219 200 OK
534ms: +++++ face extracted
541ms: +++++ helm extracted
541ms: +++++ images/helms/4f4e479f9d6d56de4bb75a957719903e212d17b3b90ac25ddddf74f728219.png
541ms: +++++ caching skin:4f4e479f9d6d56de4bb75a957719903e212d17b3b90ac25ddddf74f728219 cape:undefined
544ms: +++++ cached hash:
545ms: +++++ new hash: 4f4e479f9d6d56de4bb75a957719903e212d17b3b90ac25ddddf74f728219
548ms: ----- http://textures.minecraft.net/texture/4f4e479f9d6d56de4bb75a957719903e212d17b3b90ac25ddddf74f728219 200 OK
550ms: +++++ skin already exists, not downloading
558ms: +++++ image not found, using default.
583ms: +++++ uses new skin format
588ms: ----- face extracted
592ms: ----- helm extracted
592ms: ----- images/helms/4f4e479f9d6d56de4bb75a957719903e212d17b3b90ac25ddddf74f728219.png
592ms: ----- caching skin:4f4e479f9d6d56de4bb75a957719903e212d17b3b90ac25ddddf74f728219 cape:undefined
592ms: ----- cached hash:
592ms: ----- new hash: 4f4e479f9d6d56de4bb75a957719903e212d17b3b90ac25ddddf74f728219
593ms: ----- skin already exists, not downloading
610ms: ----- uses new skin format
618ms: +++++ Error: error while reading from input stream
618ms: +++++    at Error (native)
618ms: +++++    at Image.src (node_modules/canvas/lib/image.js:29:17)
618ms: +++++    at Object.exp.draw_model (lib/renders.js:195:13)
618ms: +++++    at lib/helpers.js:338:17
618ms: +++++    at FSReqWrap.cb [as oncomplete] (fs.js:212:19)
619ms: +++++ HEAD /renders/body/4374362b-e8f3-43eb-8311-11db5b109fac.png 500 611ms (server error)
624ms: ----- HEAD /renders/body/5fc215bd-8306-4396-971a-5670ff2a6529.png 200 623ms (downloaded)

So it's definitely caused by something requesting the same texture at the same time.
Also both requests download the skin and then claim skin already exists, not downloading, that might be an issue with logging, though. Will look into that later.

I started logging the Buffer type + length:
exp.draw_model = function(rid, img, scale, helm, body, callback) {
  var image = new Image();

  // ...

  logging.debug(rid, "typeof img", typeof img);
  logging.debug(rid, "img.constructor", img.constructor.name);
  logging.debug(rid, "img.length", img.length);

  if (!Buffer.isBuffer(img)) {
    logging.debug(img.toString());
    throw new Error("Not a Buffer!");
  }

  image.src = img;
}

and found this weird stuff (note: that is from a single request)
HEAD /renders/body/5fc215bd-8306-4396-971a-5670ff2a6529.png
userId not cached
http://<IP_ADDRESS>:5000/session/minecraft/profile/5fc215bd83064396971a5670ff2a6529 200 OK
new skin hash: 4f4e479f9d6d56de4bb75a957719903e212d17b3b90ac25ddddf74f728219
caching skin:undefined cape:null
http://textures.minecraft.net/texture/4f4e479f9d6d56de4bb75a957719903e212d17b3b90ac25ddddf74f728219 200 OK
face extracted
helm extracted
images/helms/4f4e479f9d6d56de4bb75a957719903e212d17b3b90ac25ddddf74f728219.png
caching skin:4f4e479f9d6d56de4bb75a957719903e212d17b3b90ac25ddddf74f728219 cape:undefined
cached hash:
new hash: 4f4e479f9d6d56de4bb75a957719903e212d17b3b90ac25ddddf74f728219

# everything ok until now

skin already exists, not downloading
typeof img object
img.constructor Buffer
img.length 0
image not found, using default.
typeof img object
img.constructor Buffer
img.length 997
uses new skin format
Error: error while reading from input stream
    at Error (native)
    at Image.src (node_modules/canvas/lib/image.js:29:17)
    at Object.exp.draw_model (lib/renders.js:202:13)
    at lib/helpers.js:338:17
    at FSReqWrap.cb [as oncomplete] (fs.js:212:19)
HEAD /renders/body/5fc215bd-8306-4396-971a-5670ff2a6529.png 500 281ms (server error)

So for some fucked up reason, renders.draw_model is called once with an empty Buffer and then again (!!) with a Buffer of 997 bytes.

And the mhf_alex_skin.png file is exactly 997 bytes. All good so far :+1:
But this

uses new skin format

still doesn't make any sense. That log is coming from renders.draw_body which is called in the image.onload function.
So apparently it is not thrown in Image::SetSource, but at some later point instead. All other occurrences of CAIRO_STATUS_READ_ERROR don't seem to make any sense, though :sob:
Will continue debugging some time.
/quit ragequit

After thinking about it a little, it does actually make some sense.
The error is thrown when image.src is set to an empty buffer, but it's logged much later. All the other log between img.length 0 and the error is just log coming from a default skin being rendered.
Now we only have to find out how the empty buffer gets there, because we do check for empty replies.

whew! :relieved: :sleeping:

uuid isn't stripped: 4374362b-e8f3-43eb-8311-11db5b109fac.png and there is a png this doesn't seem to work with craftar try striping the uuid and  removing the png


Using custom trained model with ROS Deep Learning

Hi @dusty-nv ,
Thank you for this amazing project. I am trying to use a re-trained YOLOV8 model (re-trained using Ultralytics Library on VisDrone Dataset) in onnx format with your ROS Deep Learning framework. I have put my model in this path: "../jetson-inference/python/training/detection/ssd/models/YOLOV8/best.onnx" and trying to run inference using the following command: "roslaunch ros_deep_learning detectnet.ros1.launch model_path:="../jetson-inference/python/training/detection/ssd/models/YOLOV8/best.onnx" input:=file://home/jrvis/Downloads/IMG_9316.mp4 output:=file://home/jrvis/Downloads/output1.mp4"
However, I am getting this error:
[TRT]    loading network plan from engine cache... ../jetson-inference/python/training/detection/ssd/models/YOLOV8/best.onnx.1.1.8201.GPU.FP16.engine
[TRT]    device GPU, loaded ../jetson-inference/python/training/detection/ssd/models/YOLOV8/best.onnx
[TRT]    [MemUsageChange] Init CUDA: CPU +0, GPU +0, now: CPU 274, GPU 3452 (MiB)
[TRT]    Loaded engine size: 23 MiB
[TRT]    Using cublas as a tactic source
[TRT]    [MemUsageChange] Init cuBLAS/cuBLASLt: CPU +158, GPU +89, now: CPU 438, GPU 3448 (MiB)
[TRT]    Using cuDNN as a tactic source
[TRT]    [MemUsageChange] Init cuDNN: CPU +240, GPU -5, now: CPU 678, GPU 3443 (MiB)
[TRT]    Deserialization required 5478886 microseconds.
[TRT]    [MemUsageChange] TensorRT-managed allocation in engine deserialization: CPU +0, GPU +22, now: CPU 0, GPU 22 (MiB)
[TRT]    Using cublas as a tactic source
[TRT]    [MemUsageChange] Init cuBLAS/cuBLASLt: CPU +0, GPU +0, now: CPU 678, GPU 3447 (MiB)
[TRT]    Using cuDNN as a tactic source
[TRT]    [MemUsageChange] Init cuDNN: CPU +0, GPU +0, now: CPU 678, GPU 3447 (MiB)
[TRT]    Total per-runner device persistent memory is 22895104
[TRT]    Total per-runner host persistent memory is 117824
[TRT]    Allocated activation device memory of size 52026880
[TRT]    [MemUsageChange] TensorRT-managed allocation in IExecutionContext creation: CPU +0, GPU +71, now: CPU 0, GPU 93 (MiB)
[TRT]
[TRT]    CUDA engine context initialized on device GPU:
[TRT]       -- layers       184
[TRT]       -- maxBatchSize 1
[TRT]       -- deviceMemory 52026880
[TRT]       -- bindings     2
[TRT]       binding 0
-- index   0
-- name    'images'
-- type    FP32
-- in/out  INPUT
-- # dims  4
-- dim #0  1
-- dim #1  3
-- dim #2  1504
-- dim #3  1504
[TRT]       binding 1
-- index   1
-- name    'output0'
-- type    FP32
-- in/out  OUTPUT
-- # dims  3
-- dim #0  1
-- dim #1  14
-- dim #2  46389
[TRT]
[TRT]    3: Cannot find binding of given name:
[TRT]    failed to find requested input layer  in network
[TRT]    device GPU, failed to create resources for CUDA engine
[TRT]    failed to create TensorRT engine for ../jetson-inference/python/training/detection/ssd/models/YOLOV8/best.onnx, device GPU
[TRT]    detectNet -- failed to initialize.
[ERROR] [1699466176.794739503]: failed to load detectNet model
Is what I am trying to achieve possible in this project? If yes, what am I doing wrong?

Hello @dusty-nv,
I appreciate the hard work you are doing on this project. I am experiencing a similar issue as @jrvis1726 above. I am using the dustynv/ros:humble-pytorch-l4t-r35.3.1 image on a Jetson Xaviar NX and an exported model from Ultralytics . Moreover, I also have the following error message in my stdout.
[detectnet-2] [TRT]    Could not register plugin creator -  ::FlattenConcat_TRT version 1

[detectnet-2] [TRT]    Could not register plugin creator -  ::FlattenConcat_TRT version 1

Hi @tiwaojo, this is just a warning you can ignore, but to run YOLO in jetson-inference you would need to adapt the pre/post-processing in jetson-inference/c/detectNet.cpp for what the particular version of YOLO you are using expects.  Or there are other projects that accelerate YOLO with TensorRT that you could use.

Hey @dusty-nv, thanks for your reply. Perhaps, I didn't provide enough context into my issue. I am using yolov8 and was able to successfully launch the detectnet executable with my yolov8 model. However, upon launching the detectnet ROS2 node with the following:
ros2 launch ros_deep_learning detectnet.ros2.launch input:=csi://0 output:=display://0 model_path:=/jetson-inference/ros/yolov8n.onnx

I get the error previously mentioned above. Furthermore, I browsed through jetson-inference/c/detectNet.cpp/preprocess() and jetson-inference/c/detectNet.cpp/postprocess() in hopes of applying your recommendations, but was unable to find adequate resources to assist me.

Or there are other projects that accelerate YOLO with TensorRT that you could use.

I had tried using Isaac ROS and its isaac_ros_yolov8 package, but its performance was less than satisfactory.

Perhaps, I didn't provide enough context into my issue. I am using yolov8 and was able to successfully launch the detectnet executable with my yolov8 model.

Are you sure?   I'm surprised that it would have worked.   If it did, then you probably need to also set these params to the detectnet ROS2 node:
input_blob
output_cvg
output_bbox

https://github.com/dusty-nv/ros_deep_learning?tab=readme-ov-file#detectnet-node-1

I had tried using Isaac ROS and its isaac_ros_yolov8 package, but its performance was less than satisfactory.

isaac_ros_yolov8 uses TensorRT, so it should already provide faster performance than you would get with just the original ultralytics repo, and probably you would not get faster from jetson-inference because TensorRT is doing the inferencing which accounts for most (if not all) of the runtime.

Thanks for the suggestion. I set the params as suggested which did not work till I imported my model into the netron web app. It provided me with the appropriate values to my launch file. Although there were no bounding boxes in my display, the topic had activity.
ros2 launch ros_deep_learning detectnet.ros2.launch input:=csi://0 output:=display://0 model_path:=/jetson-inference/ros/yolov8n.onnx output_bbox:=output0 output_cvg:=output0 input_blob:=images

Although there were no bounding boxes in my display, the topic had activity.

isaac_ros_yolov8 uses TensorRT, so it should already provide faster performance than you would get with just the original ultralytics repo, and probably you would not get faster from jetson-inference because TensorRT is doing the inferencing which accounts for most (if not all) of the runtime.

Perhaps my issue if a hardware bottleneck,. I found myself using ~6.3 GiB of 6.7GiB at ~90% CPU utilization with the isaac_ros_yolov8 package, and ~5GiB with 60% CPU utilization for the ros_deep_learning detectnet package on a single csi camera.

Hello!
I too am interested in using the ros_deep_learning package for running inference on a custom trained yolov8 / yolo-nas. would it be possible to add official guides on how to do this?
Thank you

Hi @IamShubhamGupto, jetson-inference / ros_deep_learning doesn't have built-in support for all the YOLO variants - instead please refer to the isaac_ros_yolov8 package


chore(LinearAlgebra): use maxGenEigenspace instead of iSup over genEigenspace

@jcommelin your most recent commit message is wip, and I noticed that this was never marked awaiting-author after Ruben's review, but yet all the conversations are marked resolved. What is the status here?

That wip should have been fix. This is ready for review.


Hey - does this repo work?

Looking for a node or python shim around the pandora api.
You have any experience w/ the implementations provided here: https://6xq.net/pandora-apidoc/implementations/

Yes. It does! Although we do not have many of the APIs implemented, we do have the basics. Since I never really have the free time to work on this much anymore I haven't been able to add many commits or new features, but it is in development just very very very slowly. Any new PRs to fix bugs or add features are strongly appreciated!

Oh nice - I'll take a look - wouldn't have thought such a lightweight shim was possible.

I tried my best to find APIs that did what I needed without any bull that I didn't, so imo it did turn out well.

Oh wait, I think I may have mistaken this repository for https://github.com/FireController1847/Pandora.js, and I think you may have too. This repository is currently not updated, but the one I just linked I think is what you're looking for.

Oh whoops - yeah guess I had the wrong tab open - my bad.
On Mon, Dec 17, 2018 at 7:35 PM FireController1847<EMAIL_ADDRESS>wrote:

Oh wait, I think I may have mistaken this repository for
https://github.com/FireController1847/Pandora.js, and I think you may
have too. This repository is currently not updated, but the one I just
linked I think is what you're looking for.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/FireController1847/pandora-radio-desktop/issues/1#issuecomment-448085039,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AByJ-7fzKhaNREk-9DhYWTrzq8P_8YHWks5u6GKagaJpZM4ZU9u5
.


"Import the project" doesn't work

[Enter feedback here]
I get an error when I follow the steps in the sections below.
https://docs.microsoft.com/en-us/azure/cognitive-services/custom-vision-service/copy-move-projects#import-the-project
Example:
curl -v -X POST "https://japaneast.api.cognitive.microsoft.com/customvision/v3.3/Training/projects/import?token=https://irisprodjetraining.blob.core.windows.net/prjexp-********************************/project-export-info?sv=2017-04-17&sr=b&sig=*******************************************%3D&se=2020-10-27T16%3A12%3A44Z&sp=r?name=copytest" -H "Training-key: ********************************"

Result:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN""http://www.w3.org/TR/html4/strict.dtd">
<TITLE>Length Required</TITLE>
<META HTTP-EQUIV="Content-Type" Content="text/html; charset=us-ascii">

Length Required

HTTP Error 411. The request must be chunked or have a content length.

* Closing connection 0
* schannel: shutting down SSL/TLS connection with japaneast.api.cognitive.microsoft.com port 443
* schannel: clear security context handle

Adding a Content-Length header raises another error.
Example:
curl -v -X POST "https://japaneast.api.cognitive.microsoft.com/customvision/v3.3/Training/projects/import?token=https://irisprodjetraining.blob.core.windows.net/prjexp-********************************/project-export-info?sv=2017-04-17&sr=b&sig=*******************************************%3D&se=2020-10-27T16%3A12%3A44Z&sp=r?name=copytest" -H "Training-key: ********************************"  -H "Content-Length: 1024"

Result:
* schannel: client wants to read 102400 bytes
* schannel: encdata_buffer resized 103424
* schannel: encrypted data buffer: offset 0 length 103424
* schannel: Curl_read_plain returned CURLE_RECV_ERROR
* schannel: encrypted data buffer: offset 0 length 103424
* schannel: encrypted data buffer: offset 0 length 103424
* schannel: decrypted data buffer: offset 0 length 4096
* schannel: schannel_recv cleanup
* Closing connection 0
* schannel: shutting down SSL/TLS connection with japaneast.api.cognitive.microsoft.com port 443
* Send failure: Connection was reset
* schannel: failed to send close msg: Failed sending data to the peer (bytes written: -1)
* schannel: clear security context handle
curl: (56) Send failure: Connection was reset

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 0f622e13-f8ce-e8a4-0147-ab02fddf720a
Version Independent ID: ec439e09-df9c-a81a-ff8c-5c3869106b3a
Content: Copy and move Custom Vision projects - Azure Cognitive Services
Content Source: articles/cognitive-services/Custom-Vision-Service/copy-move-projects.md
Service: cognitive-services
Sub-service: custom-vision
GitHub Login: @PatrickFarley
Microsoft Alias: pafarley

Thank you for your feedback! We will review and update as appropriate.

The following command worked fine:
curl -v -G -X POST "{endpoint}/customvision/v3.3/Training/projects/import" --data-urlencode "token={token}" --data-urlencode "name={name}" -H "Training-key: {training key}" -H "Content-Length: 0"

@damochiz As per the update I could see that the issue is fixed with the following command.
curl -v -G -X POST "{endpoint}/customvision/v3.3/Training/projects/import"
--data-urlencode "token={token}" --data-urlencode "name={name}"
-H "Training-key: {training key}" -H "Content-Length: 0"

We will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.


API for customizing the conda base environment.

Description
In this PR, we provide an API for users to customize the conda base environment during the condacolab's installation. Users will have the following options to specify:

environment_file - This can be a URL or path to an environment.yaml file.
specs - This is a list of additional specifications (packages) to install.
python_version - Python version to use in the conda base environment, eg. "3.9".
channels - Comma-separated list of channels to use in the conda base environment.
pip_args - List of additional packages to be installed using pip
extra_conda_args - This is a list of any extra conda arguments used during the installation.

You can check this example notebook demonstrating the new feature here.
Status

[x] Ready to go

We need to rebase / merge the contents of main after the recent merge. Please update @ssurbhi560 :)

Also, make sure we don't overwrite the original sys.executable as present in google colab. Check for existence in this line before renaming:
https://github.com/conda-incubator/condacolab/pull/38/files#diff-f0c65246b372c57b50f20261e427c9f066c232c42bdf51ec2d78681a0e1b1ed7R333

Hi, just stumbled on the nice blog post by @ssurbhi560 and came looking for the new features :)


Builder invalidation API

builder.invalidate('path') or builder.invalidate('some/wildcard/*')
Invalidation works in full module name space identical to the loader.
Invalidation is synchronous and returns the array of fully-normalized names invalidated - eg ['file:///path/to/project/x.js'].
Inspired by the work of @jackfranklin in https://github.com/jackfranklin/jspm-dev-builder/blob/master/index.js!

A build workflow around this would be like:
var builder = new Builder('.', 'config.js');

exports.build = function build() {
  builder.build(module, opts);
}

exports.invalidate = function invalidate(path) {
  builder.invalidate(path);
}

Awesome!


LIVERY REQUEST FOR BOEING 773-300ER: AIR INDIA (old)

Could you please  add the old Air India livery for the Boeing 777-300ER

credits: spice9


[BUG] (Windows) Access is denied on bundle extraction during setup; rename from tmp to final location

General information

OS: Windows
Hypervisor: Hyper-V
Did you run crc setup before starting it : Yes
Running CRC on: Laptop

CRC version
# Put `crc version` output here
CodeReady Containers version: 1.22.0+6faff76f
OpenShift version: 4.6.15 (embedded in executable)

CRC status
# Put `crc status --log-level debug` output here

DEBU CodeReady Containers version: 1.22.0+6faff76f
DEBU OpenShift version: 4.6.15 (embedded in executable)
DEBU Running 'crc status'
DEBU Checking file: C:\Users\xxx\.crc\machines\crc\.crc-exist
Machine does not exist. Use 'crc start' to create it

CRC config
# Put `crc config view` output here
consent-telemetry                     : yes

Host Operating System
# Put the output of `cat /etc/os-release` in case of Linux
# put the output of `sw_vers` in case of Mac
# Put the output of `systeminfo` in case of Windows

Host Name:                 LAPTOP-P3IVLEKN
OS Name:                   Microsoft Windows 10 Enterprise
OS Version:                10.0.19041 N/A Build 19041
OS Manufacturer:           Microsoft Corporation
OS Configuration:          Standalone Workstation
OS Build Type:             Multiprocessor Free
Registered Owner:          Windows User
Registered Organization:
Product ID:                00330-80000-00000-AA885
Original Install Date:     9/30/2020, 10:03:41 AM
System Boot Time:          2/13/2021, 7:05:04 PM
System Manufacturer:       LENOVO
System Model:              20EQS3B400
System Type:               x64-based PC
Processor(s):              1 Processor(s) Installed.
                           [01]: Intel64 Family 6 Model 94 Stepping 3 GenuineIntel ~2712 Mhz
BIOS Version:              LENOVO N1EET62W (1.35 ), 11/10/2016
Windows Directory:         C:\WINDOWS
System Directory:          C:\WINDOWS\system32
Boot Device:               \Device\HarddiskVolume1
System Locale:             en-us;English (United States)
Input Locale:              en-us;English (United States)
Time Zone:                 (UTC-05:00) Eastern Time (US & Canada)
Total Physical Memory:     32,602 MB
Available Physical Memory: 18,472 MB
Virtual Memory: Max Size:  37,466 MB
Virtual Memory: Available: 20,946 MB
Virtual Memory: In Use:    16,520 MB
Page File Location(s):     C:\pagefile.sys
Domain:                    WORKGROUP
Logon Server:              \\LAPTOP-P3IVLEKN
Hotfix(s):                 9 Hotfix(s) Installed.
                           [01]: KB4578968
                           [02]: KB4601050
                           [03]: KB4561600
                           [04]: KB4577266
                           [05]: KB4580325
                           [06]: KB4586864
                           [07]: KB4593175
                           [08]: KB4598481
                           [09]: KB4601319
Network Card(s):           6 NIC(s) Installed.
                           [01]: Cisco AnyConnect Secure Mobility Client Virtual Miniport Adapter for Windows x64
                                 Connection Name: Ethernet 2
                                 DHCP Enabled:    No
                                 IP address(es)
                                 [01]: <IP_ADDRESS>
                                 [02]: fe80::742c:3013:b419:85a7
                           [02]: Intel(R) Ethernet Connection (2) I219-LM
                                 Connection Name: Ethernet
                                 Status:          Media disconnected
                           [03]: Intel(R) Dual Band Wireless-AC 8260
                                 Connection Name: Wi-Fi
                                 DHCP Enabled:    Yes
                                 DHCP Server:     <IP_ADDRESS>
                                 IP address(es)
                                 [01]: <IP_ADDRESS>
                                 [02]: fe80::4df:b592:2c12:dd4a
                           [04]: Hyper-V Virtual Ethernet Adapter
                                 Connection Name: vEthernet (Default Switch) 2
                                 DHCP Enabled:    No
                                 IP address(es)
                                 [01]: <IP_ADDRESS>
                                 [02]: fe80::31bf:a33f:8820:233e
                           [05]: Bluetooth Device (Personal Area Network)
                                 Connection Name: Bluetooth Network Connection
                                 Status:          Media disconnected
                           [06]: Hyper-V Virtual Ethernet Adapter
                                 Connection Name: vEthernet (WSL)
                                 DHCP Enabled:    No
                                 IP address(es)
                                 [01]: <IP_ADDRESS>
                                 [02]: fe80::1cf8:a3fb:8c8b:d0d5
Hyper-V Requirements:      A hypervisor has been detected. Features required for Hyper-V will not be displayed.

Steps to reproduce

crc setup

Expected
crc setup should have worked fine
Actual
(base) PS C:\WINDOWS\system32> crc setup
INFO Checking if podman remote executable is cached
INFO Checking if admin-helper executable is cached
INFO Checking if CRC bundle is extracted in '$HOME/.crc'
INFO Checking if C:\Users\xxx.crc\cache\crc_hyperv_4.6.15.crcbundle exists
INFO Extracting bundle from the CRC executable
INFO Ensuring directory C:\Users\xxx.crc\cache exists
INFO Uncompressing crc_hyperv_4.6.15.crcbundle
crc.vhdx: 12.52 GiB / 12.52 GiB [-----------------------------------------------------------------------------] 100.00%
rename C:\Users\xxx.crc\cache\tmp-extract\crc_hyperv_4.6.15 C:\Users\xxxx.crc\cache\crc_hyperv_4.6.15: Access is denied.
Logs
Before gather the logs try following if that fix your issue
$ crc delete -f
$ crc cleanup
$ crc setup
$ crc start --log-level debug

Please consider posting the output of crc start --log-level debug  on http://gist.github.com/ and post the link in the issue.

C:\Users\xxxx.crc\cache\crc_hyperv_4.6.15: Access is denied.

please check if you have permission to write or read from the here?
we have not seen this error before.
At least Enterprise has bene tested to work

Hi @gbraad , Yes, this folder is automatically created during the extraction process when I run crc setup
Extracting embedded bundle crc_hyperv_4.6.15.crcbundle to C:\Users\xxx.crc\cache

Can you rename it by hand?
And run setup again after this to confirm

Hi @gbraad , I tried that.. but during the extraction process the folder is locked (tmp-extract) and right after that it shows the message and the folder (tmp-extract) is deleted by the setup process.  It happens so quickly that I am unable to do that.

Perhaps something else interferes, like a virus scanner?
I believe the is access denied due to the folder being locked by another process

I am not very sure.. No other process is accessing that folder.  Also, the virus protection is managed by our corporate team and we cannot turn it off ..

What might happen here is that the folder gets accessed to inspect the file operations and integrity of the file (by the antivirus) and when we do the rename it gets denied as the file is accessed. You could try to copy the file over from another machine or extract this manually; the .crcbundle is essentially an archive,

Thanks @gbraad.  How do I extract the .crcbundle manually ?

The crcbundle is a zstd compressed tarball; a tool like https://github.com/mcmilk/7-Zip-zstd can be decompressed.

I experienced a similar error and had to combine the 7zip codec steps with cygwin's zstd command:
From the .crc\cache folder:
zstd --decompress crc_hyperv_4.6.15.crcbundle -o crc_hyperv_4.6.15.zst
7z x crc_hyperv_4.6.15.zst
...

@wwwild can you describe more about your environment?

I guess it goes wrong here: https://github.com/code-ready/crc/blob/f148ddc8687689a97c9b7e6baac4697c17b3547b/pkg/crc/machine/bundle/repository.go#L110

I experienced a similar error and had to combine the 7zip codec steps with cygwin's zstd command:
From the .crc\cache folder:
zstd --decompress crc_hyperv_4.6.15.crcbundle -o crc_hyperv_4.6.15.zst
7z x crc_hyperv_4.6.15.zst
...

Thanks, that helped.  To clarify, is this rename effectively the last step in this 'crc setup' execution then?   Just wondering if the suggested manual extraction is all that is needed to overcome this current access issue now.

Hi @gbraad , Yes, this folder is automatically created during the extraction process when I run crc setup
Extracting embedded bundle crc_hyperv_4.6.15.crcbundle to C:\Users\xxx.crc\cache
Error happens when it tries to rename:
rename C:\Users\xxx.crc\cache\tmp-extract\crc_hyperv_4.6.15 C:\Users\xxx.crc\cache\crc_hyperv_4.6.15: Access is denied.

Just to be sure since this was edited. Are the paths in the error message starting with C:\Users\xxx.crc\cache or are they C:\Users\xxx\.crc\cache (with a \ between xxx and .crc)? I noticed the same pattern in #2087.

Perhaps an error with the environment variables

Same problem.

Are you using an antivirus? If yes, what is the name of the antivirus?

I use windows security (company policy)

I had the same error too, on my corporate windows10 system. I ended up unzipping with the tools mentioned here and that worked fine.

SOLVED: you need to exclude the C:\Users\xxx.crc directory from antivirus (i.e. in Windows Security).

This code changed recently. Previously, if the user hits ctrl+c during bundle extraction, the bundle directory could be corrupted. Now we unpack to a temporary directory and then rename.
It seems that we are unpacking and renaming the content of the bundle too fast for the antivirus.
A quick fix on crc side is maybe to add a retry loop. Long term, we should unpack at the right location.

I made a PR with a workaround. Can you give it a try? http://artifacts.ci.centos.org/minishift/crc/pr/2102/windows-amd64/
How to test:

Delete the bundle directory in ~/.crc/cache
Run crc start -b <path to the .crcbundle file - it should be in ~/.crc/cache>

@serenamarie125 @juhanevalainen @ClaudioRetico Can you folks try https://github.com/code-ready/crc/issues/2004#issuecomment-800034547 and let us know if that solve issue for you without any other workaround?

Yes sure, this is what happens..., do I need to grab a new copy of that bundle first right?
**D:\openshift\crc>crc start -b c:\Users\JuhaNevalainen.crc\cache --log-level debug
DEBU CodeReady Containers version: 1.23.1+4d63a261
DEBU OpenShift version: 4.7.1 (not embedded in executable)
DEBU Running 'crc start'
DEBU Total memory of system is<PHONE_NUMBER>8 bytes
WARN Using unsupported bundle cache
DEBU No new version available. The latest version is 1.23.1
DEBU [executing ==>] : C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive ( Hyper-V\Get-VM crc ).state
] : Running
DEBU [stderr =====>] :
DEBU Checking file: C:\Users\JuhaNevalainen.crc\machines\crc.crc-exist
Error loading bundle metadata: could not find cached bundle info in C:\Users\JuhaNevalainen.crc\cache\crc_hyperv_4.6.15: CreateFile C:\Users\JuhaNevalainen.crc\cache\crc_hyperv_4.6.15: The system cannot find the file specified.
D:\openshift\crc>dir c:\users\JuhaNevalainen.crc\cache
Volume in drive C is Windows
Volume Serial Number is D019-D1C8**
Directory of c:\users\JuhaNevalainen.crc\cache
17/03/2021  15.10              .
17/03/2021  15.10              ..
03/03/2021  13.09     2 596 738 289 crc_hyperv_4.6.15.crcbundle
1 File(s)  2 596 738 289 bytes
2 Dir(s)  92 692 717 568 bytes free
D:\openshift\crc>

Still the same result:
D:\openshift\crc>crc start -b c:\Users\JuhaNevalainen\.crc\cache\crc_hyperv_4.6.15.crcbundle --log-level debug
DEBU CodeReady Containers version: 1.23.1+4d63a261
DEBU OpenShift version: 4.7.1 (not embedded in executable)
DEBU Running 'crc start'
DEBU Total memory of system is<PHONE_NUMBER>8 bytes
WARN Using unsupported bundle crc_hyperv_4.6.15.crcbundle
DEBU No new version available. The latest version is 1.23.1
DEBU [executing ==>] : C:\WINDOWS\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive ( Hyper-V\Get-VM crc ).state
                   ] : Running
DEBU [stderr =====>] :
DEBU Checking file: C:\Users\JuhaNevalainen\.crc\machines\crc\.crc-exist
Error loading bundle metadata: could not find cached bundle info in C:\Users\JuhaNevalainen\.crc\cache\crc_hyperv_4.6.15: CreateFile C:\Users\JuhaNevalainen\.crc\cache\crc_hyperv_4.6.15: The system cannot find the file specified.

You need to delete the running VM. Do crc delete -f before.

Error loading bundle metadata: could not find cached bundle info in C:\Users\JuhaNevalainen.crc\cache\crc_hyperv_4.6.15: CreateFile C:\Users\JuhaNevalainen.crc\cache\crc_hyperv_4.6.15: The system cannot find the file specified.

@juhanevalainen can you check what bundle is present in your C:\Users\JuhaNevalainen\.crc\cache\  and use that with -b option after deleting existing VM.

@guillaumerose many thanks, that helped.  Its going well beyond those errors now...we will know soon.

Was the bundle extracted correctly during the crc start ? I guess yes.
If you can confirm that, I merge the quick fix for the next release.

Yes that cache subfolder now exists there and it seemed all fine in the debugger output too.

I had the same error too, on my corporate windows10 system. I ended up unzipping with the tools mentioned here and that worked fine.

Could you post please, which tools and commands did u use?

I had the same error too, on my corporate windows10 system. I ended up unzipping with the tools mentioned here and that worked fine.

@juhanevalainen
Could you post please, which tools and commands did u use?

I recommend to use the WSL and the codecs for 7z to solve the problem
In your wsl linux shell:
sudo apt install zstd
cd | wslpath "$(wslvar USERPROFILE)/.crc/cache"
zstd --decompress crc_hyperv_4.7.2.crcbundle -o crc_hyperv_4.7.2.zst or whatever the version will be, when you do this
Now in windows create the folder Codecs in your 7-zip install directory like so:
C:\Program Files\7-Zip\Codecs
Grab this archive or newer: https://github.com/mcmilk/7-Zip-zstd/releases/download/19.00-v1.4.9-R2/Codecs-x64.7z
When you extract it you'll also find a Codecs folder. Copy paste only the dlls into the folder you created before.
In a new cmd/powershell window:
cd C:\Users\$env:UserName\.crc\cache\
7z x .\crc_hyperv_4.7.2.zst
After that you should be able to:
crc setup
crc start

@3nigm4 yes sure so I used this zstd that I got form links above and then ran 7z afterwards.
However note that with the new bundle fix now released none of that should be needed anymore.
zstd.zip

The code talked about in this commit has been merged in https://github.com/code-ready/crc/commit/2e89ea8f3903bee58187e35600516331447ac854 and this hasn't been reported recently, closing this.


Support Ceylon single-function interfaces like done with Java SAM

Ceylon also has single-function interfaces, like Iterator, Summable etc.
If a function takes such why not to pass anonymous function or reference?
Moreover, Iterable is relied on iterator() only. Passing function reference to any function which takes Iterable is also possible extension.

No, we discussed this at length when implementing the support for Java SAMs. I'm very much against introducing implicit type conversions into Ceylon, and the support for Java SAMs is not based on implicit type conversions!
Furthermore, pure Ceylon code should not really even involve single-method interfaces! (It was an ancient design mistake that Ceylon has a single-method Iterator interface, and we should not encourage future mistakes like that.)
Implementing Iterable should look like this:
object satisfies Iterable<String> { iterator()() => ... ; }

And if we redesigned Ceylon today, that is what it would look like. Unfortunately it's a bit too late to fix that mistake now.


Unified nav bar for explorer

This ticket captures the work to add the navigation bar to explorer and related changes.
Figma design
Work includes:

[ ] Adding unified nav bar to explorer
[ ] Removing the question mark icon in the lower right (users can now click on Help and Documentation in nav bar)
[ ] Adding Collections link to bottom of main viz page
[ ] Adding dataset selector to bottom of main viz page
[ ] Update explorer favicon to new icon, should match portal favicon

Duplicate here: https://app.zenhub.com/workspaces/single-cell-5e2a191dad828d52cc78b028/issues/chanzuckerberg/single-cell-explorer/383


Friend from the past

xp4xbox ii dont know if u remmeber me i dont even have a name ,we have chatted on email with another guy from here tried to test/develop puffadder i was too busy to continue testing it (even now) but maybe u can help me and i can help, its about Python programming/make files encrypted(FUD-100%) ..
contact me<EMAIL_ADDRESS>

I don't have any experience with encrypting files.

So u know coding in python, do u have any idea how can i make my
base64(string) execute without using exec() built in function?
cause exec() returns None and i need a return value to be able to convert
it to exe..
??
http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail
Virus-free.
www.avg.com
http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail
<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
On Fri, Jun 7, 2019 at 3:49 PM xp4xbox<EMAIL_ADDRESS>wrote:

I don't have any experience with encrypting files.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/xp4xbox/Puffader/issues/72?email_source=notifications&email_token=AIPFU7476UICIARDNL42XNTPZJKMBA5CNFSM4HTVGJDKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXFXBGA#issuecomment-499871896,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AIPFU7YTE7IXP4VFRXM3OVLPZJKMBANCNFSM4HTVGJDA
.

Take a look at this. https://github.com/xp4xbox/PyEvade

Sorry for sharing my problems, I have already base64("string") your github
project deals with a shellcode from msfvenom i see in your code that you
are encoding the shellcode and then decoding it while set it up in a
payload that will be converted to exe...
but i dont have a shellcode....
http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail
Virus-free.
www.avg.com
http://www.avg.com/email-signature?utm_medium=email&utm_source=link&utm_campaign=sig-email&utm_content=webmail
<#DAB4FAD8-2DD7-40BB-A1B8-4E2AA1F9FDF2>
On Fri, Jun 7, 2019 at 6:00 PM xp4xbox<EMAIL_ADDRESS>wrote:

Take a look at this. https://github.com/xp4xbox/PyEvade
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/xp4xbox/Puffader/issues/72?email_source=notifications&email_token=AIPFU7YUEIATXNTF7436N5DPZJZ2XA5CNFSM4HTVGJDKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODXGCTUA#issuecomment-499919312,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AIPFU752IMPUUONJQ7LULQLPZJZ2XANCNFSM4HTVGJDA
.

I don't know what ur trying to do then.


exit 1 cannot find reader with Mario Kart Wii [RMCP01]

This project is very handy :) but I found that with some games it crash into "cannot find reader" error.

Converting the same RVZ image with Dolphin works without problems.

I won't ask you to attach the image here for obvious reasons but can you possibly link or at least describe where I could find this image so I can test locally?

I won't ask you to attach the image here for obvious reasons but can you possibly link or at least describe where I could find this image so I can test locally?

I've now got a Mario Kart Wii (USA) (En,Fr,Es).rvz image that triggers the behaviour so I'll see if I can figure out why it isn't working.


Garden EOL

Part of https://github.com/gazebo-tooling/release-tools/issues/1165.
Since it will be possible to install Garden packages after EOL, I simply added footnotes on the rows that have EOLs. I also removed Garden from one of the suggested releases to install.

https://github.com/Mergifyio backport jazzy humble


launcher error detect and notification

Which threads fail to initialize are tracked, and corresponding threads are not started.
If recovery board is properly initialized, either success message or error code is direct message to APRS recipiant.
Addresses #25, and #68 points 3 and 5

Upon further investigation, not starting threads cause additional major issues. Closing PR in favor of approach in dev/v2_3/improved_error_logging branch.


[FLOC-4324] Caching json serialization

This modifies our JSON serialization to not use the JSONEncoder scheme, and instead turns the entire Pyrsistent object into something that is serializable outside of the realm of the JSONEncoder.
This enabled us to be able to add a cache that stores the values of the encoding at the subtree level, which should lead to great speedups when serializing the configuration or the state inside flocker.

I'm going to wait for another full run of the tests (This code is pretty essential to the way flocker works).
Thanks for the reviews! Much nicer on the eyes and actually faster now :)


Ultrasonic C++ example doesn't compile

the last line is erroneous, and should be removed. then it is correct

Shouldn't the samples get compiled as part of some test to make sure this sort of thing doesn't happen?

Agree, but apparently they don't...
On Tue, Sep 19, 2017 at 1:56 PM Jonathan Leitschuh<EMAIL_ADDRESS>wrote:

Shouldn't the samples get compiled as part of some test to make sure this
sort of thing doesn't happen?
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/wpilibsuite/EclipsePlugins/issues/119#issuecomment-330620550,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AD0zEkSumdnac8NS0oitxODCUe0Wly7vks5skABQgaJpZM4PbphL
.

Duplicate of #106
Take a look at https://github.com/wpilibsuite/allwpilib/pull/569 for the java version.
The C++ version was started in https://github.com/wpilibsuite/allwpilib/commit/9c804c13519dc94e82c6a4dc275153d8149190d0

Should be fixed thanks to #142.


Wasmtime: fix stack walking across frames from different stores

We were previously implicitly assuming that all Wasm frames in a stack used the same VMRuntimeLimits as the previous frame's CallThreadState, but this is not true when Wasm in store A calls into the host which then calls into Wasm in store B:
| ...             |
| Host            |  |
+-----------------+  | stack
| Wasm in store A |  | grows
+-----------------+  | down
| Host            |  |
+-----------------+  |
| Wasm in store B |  V
+-----------------+

Trying to walk this stack would previously result in a runtime panic.
The solution is to push the maintenance of our list of saved Wasm FP/SP/PC registers that allow us to identify contiguous regions of Wasm frames on the stack deeper into CallThreadState. The saved registers list is now maintained whenever updating the CallThreadState linked list by making the CallThreadState::prev field private and only accessible via a getter and setter, where the setter always maintains our invariants.
Thanks to @bnjbvr for reporting this bug!
@cfallin do you feel familiar enough with this stuff that you'd be comfortable reviewing it? If not, I can totally wait for Alex to come back from PTO.

FYI this is being backported to the 0.40.X release branch in https://github.com/bytecodealliance/wasmtime/pull/4834


Require BAND members to review

Instructions for reviewing surmise v0.2.0:

(Local) Follow installation and testing sections under https://surmise.readthedocs.io/en/latest/introduction.html#installation.
(Colab environment) Run the colab notebook.

Let us know if any step needs editing or clarifying.
Thanks!

Good News: Google Colab works great!
Bad News: pip install surmise did not work for me on Windows or Ubuntu. Error messages are attached. It appears there is a wheel building issue. This could very well be a "me problem" but I wonder if there is a dependency issue within surmise. Let me know if I can provide any assistance or more information.
surmise_pip_install_error_ubuntu.txt
surmise_pip_install_error_windows.txt

Good News: Google Colab works great!
Bad News: pip install surmise did not work for me on Windows or Ubuntu. Error messages are attached. It appears there is a wheel building issue. This could very well be a "me problem" but I wonder if there is a dependency issue within surmise. Let me know if I can provide any assistance or more information.
surmise_pip_install_error_ubuntu.txt surmise_pip_install_error_windows.txt

Thank you John!  That's a great catch.
Upon looking at the errors, it seems to be the Cython build that requires the Microsoft C build tools.
Meanwhile can you give a compatible Windows .whl a shot? pip install XXX.whl. (https://github.com/bandframework/surmise/releases/tag/v0.2.0)

Good News: Google Colab works great!
Bad News: pip install surmise did not work for me on Windows or Ubuntu. Error messages are attached. It appears there is a wheel building issue. This could very well be a "me problem" but I wonder if there is a dependency issue within surmise. Let me know if I can provide any assistance or more information.
surmise_pip_install_error_ubuntu.txt surmise_pip_install_error_windows.txt

Thank you John! That's a great catch. Upon looking at the errors, it seems to be the Cython build that requires the Microsoft C build tools.
Meanwhile can you give a compatible Windows .whl a shot? pip install XXX.whl. (https://github.com/bandframework/surmise/releases/tag/v0.2.0)

Okay I have manually downloaded the .whl file and it has successfully installed. I will proceed with testing. You may want to add a line in the documentation that covers this under the installation section.

Update: The ./run-tests.sh does not appear to be working correctly.
Attempt 1: after a successful "pip install surmise" I get this error
`jcyannotty@LAPTOP-L6H5TSSB:/mnt/c/Users/johny/appdata/roaming/python/python311/site-packages/tests$ bash ./run-tests.sh
./run-tests.sh: line 1: $'\r': command not found
./run-tests.sh: line 3: $'\r': command not found
./run-tests.sh: line 8: $'\r': command not found
./run-tests.sh: line 9: $'\r': command not found
./run-tests.sh: line 14: $'\r': command not found
./run-tests.sh: line 15: syntax error near unexpected token `$'{\r''
'/run-tests.sh: line 15: usage() {
Attempt 2: Now cloning surmise -- see attached (tried using a virtual env as well)

Any ideas as to what is going wrong?

Note, in the above screen shot, you'll see the pip install pytest command below the error just to verify it was already installed

Update: The ./run-tests.sh does not appear to be working correctly.
Attempt 1: after a successful "pip install surmise" I get this error `jcyannotty@LAPTOP-L6H5TSSB:/mnt/c/Users/johny/appdata/roaming/python/python311/site-packages/tests$ bash ./run-tests.sh
./run-tests.sh: line 1: $'\r': command not found
./run-tests.sh: line 3: $'\r': command not found
./run-tests.sh: line 8: $'\r': command not found
./run-tests.sh: line 9: $'\r': command not found
./run-tests.sh: line 14: $'\r': command not found
./run-tests.sh: line 15: syntax error near unexpected token `$'{\r''
'/run-tests.sh: line 15: usage() {
Attempt 2: Now cloning surmise -- see attached (tried using a virtual env as well)
Any ideas as to what is going wrong?

An updated solution to this pytest issue....
In the run-tests.sh file, you can replace pytest $COV_LINE_SERIAL -k 'not new' with python -m pytest $COV_LINE_SERIAL -k 'not new'. Note, this replacement should be done in 5 spots (lines 125, 135, 145, 158, and 168). Once changing this, I was able to successfully complete the tests.
Here is a reference for the issue I was having: https://stackoverflow.com/questions/35998992/py-test-command-not-found-but-library-is-installed
I think  this is a bash issue, i.e. my version of bash did not like the pytest command and needed python -m pytest. Not sure how you want to approach this going forward. A naive suggestion I can offer is to have two separate run-tests.sh files -- one that uses pytest (i.e. the current version) and then a new version which makes the python -m pytest replacement. You can add a line in the readme and docs describing the differences.
There might be better ways to handle this - but unfortunately this seems more of a bash issue that is local to the user.

Thank you John - #90 solves the pytest not found issue by replacing pytest with python -m pytest.

Since a pull request is created for the v03/surmise branch in bandframework, I am closing this issue and reassigning reviewers in that pull request, which will contain all updates from this issue.
@kylegodbey, @jcyannotty, @furnstahl: Would it be okay if I still assign you for that review?  If not, feel free to unassign yourself.


docs: Add instructions to generate sphinx reference docs to CONTRIBUTING guide

Description
Updated the contributing guide to include instructions on how to generate sphinx reference documentation locally
Fixes #(issue) - N/A
Why is the change necessary?
Sphinx reference docs can't be rendered directly in your IDE and it is useful to be able to generate the docs locally to visualize your changes before merging them. For example, we use autodoc to document classes - these instructions will make it possible to visualize the documentation locally (including docstrings)
Solution
Provide instructions to generate the documentation in /doc locally based on PyCharm's Generating Reference Documentation Using Sphinx
Note: We don't need to do Tools | Sphinx quickstart since we already have a conf.py file in the /doc directory
Also in this PR:

Fixed docstring links in sagemaker.py and service.py
Added checklist item to PR template to generate sphinx documentation

Testing
Generated the documentation locally following the added instructions

Pull Request Checklist
Please check all boxes (including N/A items)
Testing

[X] Unit tests added - N/A
[X] Integration test added - N/A
[X] Manual testing - why was it necessary? could it be automated? - N/A

Documentation

[X] docs: All relevant docs updated
[X] docstrings: All public APIs documented

Title and description

[X] Change type: Title is prefixed with change type: and follows conventional commits
[X] References: Indicate issues fixed via: Fixes #xxx - N/A

By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license.

AWS CodeBuild CI Report

CodeBuild project: AutoBuildProject6AEA49D1-sEHrOdk7acJc
Commit ID: 3644601d143e398d1aa5a32a3faa8056554b92d4
Result: FAILED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

AWS CodeBuild CI Report

CodeBuild project: AutoBuildProject6AEA49D1-sEHrOdk7acJc
Commit ID: 237c8d8bfb7dc8b9c9afb311a207157f10a7b6c3
Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

AWS CodeBuild CI Report

CodeBuild project: AutoBuildProject6AEA49D1-sEHrOdk7acJc
Commit ID: 7c79a6bfc5a18910be07fe4d2fcb913e0a8f3403
Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository

AWS CodeBuild CI Report

CodeBuild project: AutoBuildProject6AEA49D1-sEHrOdk7acJc
Commit ID: 3d725c56eebd72e0dc43316a62e5a0dbbc440cd8
Result: SUCCEEDED
Build Logs (available for 30 days)

Powered by github-codebuild-logs, available on the AWS Serverless Application Repository


ruff: Fix FURB180 Use of metaclass=abc.ABCMeta

This is a preview rule, not yet enabled by default.
https://docs.astral.sh/ruff/rules/meta-class-abc-meta/

Merged, thanks @andersk!


Calling RefreshTokenAsyncthrows exception

How is the RefreshTokenAsync method supposed to be used?
When I instantiate a new instance of OidcClient and call the RefreshTokenAsync method with a previously saved refresh_token, I get a NullReferenceException with the following stack trace relevant to OidcClient
at IdentityModel.OidcClient.Infrastructure.TokenClientFactory.Create(OidcClientOptions options)
at IdentityModel.OidcClient.OidcClient.<RefreshTokenAsync>d__12.MoveNext()

It would seem that TokenClientFactory.Create depends on the ProviderInformation being initialized (see https://github.com/IdentityModel/IdentityModel.OidcClient2/blob/dev/src/IdentityModel.OidcClient/Infrastructure/TokenClientFactory.cs#L10-L21).
When I first call LoginAsync and then RefreshTokenAsync, all works fine, because EnsureConfigurationAsync was called in that case (https://github.com/IdentityModel/IdentityModel.OidcClient2/blob/dev/src/IdentityModel.OidcClient/OidcClient.cs#L61), which will load the information from the discovery document.
Am I misunderstanding the use case. Surely I must be able to initialize an instance of OidcClient at a later stage and use it to refresh a token which was previously saved when a user authenticated?

yes that's a bug. fixing it now.
Another way to use refresh tokens is via the RefreshTokenHandler. Have you tried that?

done

@leastprivilege  How to use RefreshTokenHandler in xamarin client?


Add gcc-analyzer & clang-analyzer to CI

Fixes https://github.com/ruby/yarp/issues/842, gcc added just because why not.
Both are failing, so need to be fixed to make them required checks
Test run

This workflow requires approval from a maintainer.

sending to review

Also coverity find something, cannot view what exactly because project is not approved for me [yet?], maybe makes sense for some maintainer to register & setup it (pretty simple, https://github.com/ojab/yarp/commit/a3539e5c564a941d3e14ef49545c067dad425acf)

One for ruby, rstring.h (should be filtered out)

and one for YARP, compile.c

Hey @ojab this is great work! Sorry I haven't gotten a chance to dig in too much to this, but I just wanted to drop by and say I'm leaving it open because I intend to merge it at some point.

Changed gcc-analyzer to use CFLAGS since it's supported after switch to autotools.

@ojab I finally got around to fixing all these warnings. If you wouldn't mind, could you rebase off https://github.com/ruby/yarp/pull/1212? That should fix everything and then we can get these merged.

@kddnewton rebased

Thanks @ojab!


Null check operator during textDocument completion

Received the following error when working on some Dart code:
[Error - 2:13:02 PM] Request textDocument/completion failed.
  Message: An error occurred while handling textDocument/completion request
  Code: -32001
[Error - 2:13:02 PM] An error occurred while handling textDocument/completion request: Null check operator used on a null value
#0      DartCompletionRequestImpl.targetPrefix (package:analysis_server/src/services/completion/dart/completion_manager.dart:371:33)
#1      CompletionHandler._getServerDartItems.<anonymous closure> (package:analysis_server/src/lsp/handlers/handler_completion.dart:372:52)
<asynchronous suspension>
#2      CompletionPerformance.runRequestOperation.<anonymous closure> (package:analysis_server/src/services/completion/completion_performance.dart:62:16)
<asynchronous suspension>
#3      OperationPerformanceImpl.runAsync (package:analyzer/src/util/performance/operation_performance.dart:160:14)
<asynchronous suspension>
#4      CompletionHandler._getServerDartItems (package:analysis_server/src/lsp/handlers/handler_completion.dart:199:12)
<asynchronous suspension>
#5      Future.wait.<anonymous closure> (dart:async/future.dart)
<asynchronous suspension>
#6      CompletionHandler.handle.<anonymous closure> (package:analysis_server/src/lsp/handlers/handler_completion.dart:110:11)
<asynchronous suspension>
#7      ServerStateMessageHandler.handleMessage (package:analysis_server/src/lsp/handlers/handlers.dart:187:22)
<asynchronous suspension>
#8      LspAnalysisServer.handleMessage.<anonymous closure> (package:analysis_server/src/lsp/lsp_analysis_server.dart:302:26)
<asynchronous suspension>

Steps to reproduce the issue always help. 😊

I believe that this was fixed by https://dart-review.googlesource.com/c/sdk/+/195504.


fix issue adop-sonar#11

Fix for #25

@nickdgriffin @anton-kasperovich @SachinKSingh28
Hi team, we validated this fix partially - line 71 location ^~ /sonar { does make sonar work. Though, changes on lines 45..72 are being checked by @mlushpenko
@m4m51m can you please comment why 45..72 are present in the fix? Also, can you please split the PR to two, one for SonarQube actual fix another for 45..72? I believe we can merge it faster if looks good for the team.
Thank you.

Ok, we checked second part of the PR and status page is not working (at least on existing stable platform), maybe if @m4m51m can comment what 45..72 is there for it will be more clear.
@m4m51m can you pls split the "fix" in two PRs?

@m4m51m  My bad, it is working - it fixes status page

I have tested this changes and issue is fixed.
Steps below -

Created a new image from feature/fix_issues_11_sonar branch on m4m51m/adop-nginx
Updated docker compose file from adop-docker-compose repository with new tag for adop-nginx image used adop-sonar image 0.3.4
Launched ADOP stack.

Thanks, @SachinKSingh28


Zero values for segmentation metrics (SEGM) calculation on COCO type custom dataset

Describe the bug
When using a custom dataset that trains adequately using Mask R-CNN architectures, evaluation of the test images results in 0.0 values for Segmentation Metrics (SEGM). I use a test script based on the example from the COCO documentation. There are no issues with the data training, with reasonable values for all losses.
Also the COCO evaluation metrics report reasonable numbers for the BBOX metrics.
The training was performed using 4 Tesla P40 GPUs in parallel.
The inference was undertaken on a single P40. The BBOX metrics of the final iteration for the evaluation are the same as those produced during the model training.
The resulting output from the evaluation call are shown below.
Evaluation Script Results
[INFO] Loading inference of test set from file...output/mixed_NANs/cuboidal_square_images_v1p2A_4XGPU_MaskRCNN_ResNet101_FPN_01092020_202857/test_set_inf_epoch_72_results.pkl

Evaluating bbox...
Loading and preparing results...
DONE (t=4.10s)
creating index...
index created!
Running per image evaluation...
Evaluate annotation type *bbox*
DONE (t=573.38s).
Accumulating evaluation results...
DONE (t=1.49s).
Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.186
Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.366
Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.165
Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.134
Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.361
Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.277
Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.003
Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.032
Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.222
Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.134
Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.427
Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.420

Evaluating segm...
Loading and preparing results...
DONE (t=3.64s)
creating index...
index created!
Running per image evaluation...
Evaluate annotation type *segm*
DONE (t=578.00s).
Accumulating evaluation results...
DONE (t=1.14s).
Average Precision  (AP) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.000
Average Precision  (AP) @[ IoU=0.50      | area=   all | maxDets=100 ] = 0.000
Average Precision  (AP) @[ IoU=0.75      | area=   all | maxDets=100 ] = 0.000
Average Precision  (AP) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000
Average Precision  (AP) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.000
Average Precision  (AP) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.000
Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=  1 ] = 0.000
Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets= 10 ] = 0.000
Average Recall     (AR) @[ IoU=0.50:0.95 | area=   all | maxDets=100 ] = 0.000
Average Recall     (AR) @[ IoU=0.50:0.95 | area= small | maxDets=100 ] = 0.000
Average Recall     (AR) @[ IoU=0.50:0.95 | area=medium | maxDets=100 ] = 0.000
Average Recall     (AR) @[ IoU=0.50:0.95 | area= large | maxDets=100 ] = 0.000

Steps taken so far
I have made many checks on the quality of my custom COCO dataset including making sure of the following:

Bounding box and polygon vertices are all within the image frame.
No zero size bounding boxes.
No 0 pixel masks.

The custom COCO dataset JSON uses the single array for mask description [[x1,y1,x2,y2,...,xn,yn]].
The example output from running the evaluation script can be seen below.
The model was trained and evaluated with MMDET version V2.0.0 and MMCV v0.5.3.
Environment for training and evaluation
sys.platform: linux
Python: 3.7.6 | packaged by conda-forge | (default, Mar  5 2020, 15:27:18) [GCC 7.3.0]
CUDA available: True
CUDA_HOME: /usr/local/cuda
NVCC: Cuda compilation tools, release 10.1, V10.1.243
GPU 0,1,2,3: Tesla P40
GCC: gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
PyTorch: 1.4.0
PyTorch compiling details: PyTorch built with:
  - GCC 7.3
  - Intel(R) Math Kernel Library Version 2020.0.0 Product Build 20191122 for Intel(R) 64 architecture applications
  - Intel(R) MKL-DNN v0.21.1 (Git Hash 7d2fd500bc78936d1d648ca713b901012f470dbc)
  - OpenMP 201511 (a.k.a. OpenMP 4.5)
  - NNPACK is enabled
  - CUDA Runtime 10.1
  - NVCC architecture flags: -gencode;arch=compute_37,code=sm_37;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_61,code=sm_61;-gencode;arch=compute_70,code=sm_70;-gencode;arch=compute_75,code=sm_75;-gencode;arch=compute_37,code=compute_37
  - CuDNN 7.6.3
  - Magma 2.5.1
  - Build settings: BLAS=MKL, BUILD_NAMEDTENSOR=OFF, BUILD_TYPE=Release, CXX_FLAGS= -Wno-deprecated -fvisibility-inlines-hidden -fopenmp -DUSE_FBGEMM -DUSE_QNNPACK -DUSE_PYTORCH_QNNPACK -O2 -fPIC -Wno-narrowing -Wall -Wextra -Wno-missing-field-initializers -Wno-type-limits -Wno-array-bounds -Wno-unknown-pragmas -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wno-unused-result -Wno-strict-overflow -Wno-strict-aliasing -Wno-error=deprecated-declarations -Wno-stringop-overflow -Wno-error=pedantic -Wno-error=redundant-decls -Wno-error=old-style-cast -fdiagnostics-color=always -faligned-new -Wno-unused-but-set-variable -Wno-maybe-uninitialized -fno-math-errno -fno-trapping-math -Wno-stringop-overflow, DISABLE_NUMA=1, PERF_WITH_AVX=1, PERF_WITH_AVX2=1, PERF_WITH_AVX512=1, USE_CUDA=ON, USE_EXCEPTION_PTR=1, USE_GFLAGS=OFF, USE_GLOG=OFF, USE_MKL=ON, USE_MKLDNN=ON, USE_MPI=OFF, USE_NCCL=ON, USE_NNPACK=ON, USE_OPENMP=ON, USE_STATIC_DISPATCH=OFF,

TorchVision: 0.5.0
OpenCV: 4.2.0
MMCV: 0.5.1
MMDetection: 2.0.0+6603790
MMDetection Compiler: GCC 7.5
MMDetection CUDA Compiler: 10.1

I have since loaded the model weights into MMDET V2.3.0 and performed the same test, only to get the same results with BBOX metrics, and 0.0's for SEGM metrics.
Additional environment for testing
sys.platform: linux
Python: 3.7.8 | packaged by conda-forge | (default, Jul 31 2020, 02:25:08) [GCC 7.5.0]
CUDA available: True
CUDA_HOME: /usr/local/cuda
NVCC: Cuda compilation tools, release 10.1, V10.1.243
GPU 0,1,2,3: Tesla P40
GCC: gcc (Ubuntu 7.5.0-3ubuntu1~18.04) 7.5.0
PyTorch: 1.5.1
PyTorch compiling details: PyTorch built with:
  - GCC 7.3
  - C++ Version: 201402
  - Intel(R) Math Kernel Library Version 2020.0.1 Product Build 20200208 for Intel(R) 64 architecture applications
  - Intel(R) MKL-DNN v0.21.1 (Git Hash 7d2fd500bc78936d1d648ca713b901012f470dbc)
  - OpenMP 201511 (a.k.a. OpenMP 4.5)
  - NNPACK is enabled
  - CPU capability usage: AVX2
  - CUDA Runtime 10.1
  - NVCC architecture flags: -gencode;arch=compute_37,code=sm_37;-gencode;arch=compute_50,code=sm_50;-gencode;arch=compute_60,code=sm_60;-gencode;arch=compute_61,code=sm_61;-gencode;arch=compute_70,code=sm_70;-gencode;arch=compute_75,code=sm_75;-gencode;arch=compute_37,code=compute_37
  - CuDNN 7.6.3
  - Magma 2.5.2
  - Build settings: BLAS=MKL, BUILD_TYPE=Release, CXX_FLAGS= -Wno-deprecated -fvisibility-inlines-hidden -fopenmp -DNDEBUG -DUSE_FBGEMM -DUSE_QNNPACK -DUSE_PYTORCH_QNNPACK -DUSE_XNNPACK -DUSE_INTERNAL_THREADPOOL_IMPL -O2 -fPIC -Wno-narrowing -Wall -Wextra -Werror=return-type -Wno-missing-field-initializers -Wno-type-limits -Wno-array-bounds -Wno-unknown-pragmas -Wno-sign-compare -Wno-unused-parameter -Wno-unused-variable -Wno-unused-function -Wno-unused-result -Wno-strict-overflow -Wno-strict-aliasing -Wno-error=deprecated-declarations -Wno-stringop-overflow -Wno-error=pedantic -Wno-error=redundant-decls -Wno-error=old-style-cast -fdiagnostics-color=always -faligned-new -Wno-unused-but-set-variable -Wno-maybe-uninitialized -fno-math-errno -fno-trapping-math -Werror=format -Wno-stringop-overflow, PERF_WITH_AVX=1, PERF_WITH_AVX2=1, PERF_WITH_AVX512=1, USE_CUDA=ON, USE_EXCEPTION_PTR=1, USE_GFLAGS=OFF, USE_GLOG=OFF, USE_MKL=ON, USE_MKLDNN=ON, USE_MPI=OFF, USE_NCCL=ON, USE_NNPACK=ON, USE_OPENMP=ON, USE_STATIC_DISPATCH=OFF,

TorchVision: 0.6.0a0+35d732a
OpenCV: 4.4.0
MMCV: 1.0.5
MMDetection: 2.3.0+68d860d
MMDetection Compiler: GCC 7.5
MMDetection CUDA Compiler: 10.1

Reproduction
This is the evaluation script, which uses the evaluation method of the COCO dataset class to perform the metrics evaluation.
The custom dataset class written for the custom dataset only merely changes the CLASSES class attributes to align with the custom dataset. All other methods are inherited unchanged from the CocoDataset class.
Evaluation Script with Test Set
import argparse
import os

import mmcv
import torch
from mmcv.parallel import MMDataParallel, MMDistributedDataParallel
from mmcv.runner import get_dist_info, init_dist, load_checkpoint

from mmdet.apis import multi_gpu_test, single_gpu_test
from mmdet.core import wrap_fp16_model
from mmdet.datasets import build_dataloader, build_dataset
from mmdet.models import build_detector

from mmdetection_morphologi_pipelines import LoadMorphologiSynImage
from mmdetection_morphologi_datasets import MorphologiDataset

BASE_DIR = ''
MODEL_BASE_DIR = 'output/mixed_NANs/cuboidal_square_images_v1p2A_4XGPU_MaskRCNN_ResNet101_FPN_01092020_202857' #cuboidal_square_images_v1p2_MaskRCNN_ResNeXt101_FPN_14082020_161334'
CONFIG = os.path.join(BASE_DIR,'configs_morph/mmdetection_morphologi_mask_rcnn_r101_fpn_1x.py')
CHECKPOINT = os.path.join(BASE_DIR,MODEL_BASE_DIR,'epoch_72.pth')
TMP_DIR = os.path.join(BASE_DIR,MODEL_BASE_DIR)
LAUNCHER = 'none' # choices ['none', 'pytorch', 'slurm', 'mpi']
GPU_COLLECT = False # Only matters in distributed mode (multiple GPUs)
N_GPUS = 1
DEVICE = 'cuda:0'
SHOW_RESULTS = False # True causes things to crash due to X server issues.
FORMAT_ONLY = False
EVAL = ['bbox','segm'] # Overide the evaluation metrics from the config file. List of options ["bbox", "segm", "proposal"], can be all or some or one.
OPTIONS = None
RUN_EVALS = False # (True) Run the inference with the test set or (False) load from file

OUT = os.path.join(MODEL_BASE_DIR,'test_set_inf_'+CHECKPOINT.split('/')[-1][:-4]+'_results.pkl')

cfg = mmcv.Config.fromfile(CONFIG)

if cfg.get('cudnn_benchmark', False):
        torch.backends.cudnn.benchmark = True
cfg.model.pretrained = None
cfg.data.test.test_mode = True

if EVAL is not None:
    print('[CFG] Over-riding the configuration file evaluation metrics: {}'.format(cfg.evaluation.metric))
    cfg.evaluation.metric = EVAL
    print('[CFG] New evaluation metric(s): {}'.format(cfg.evaluation.metric))

if cfg.gpus > N_GPUS:
    print('[CFG] Number of GPUs set higher than specified ({}). Setting to specified ({})'.format(cfg.gpus,N_GPUS))
    cfg.gpus = N_GPUS

# init distributed env first, since logger depends on the dist info.
if LAUNCHER == 'none':
    distributed = False
else:
    distributed = True
    init_dist(LAUNCHER, **cfg.dist_params)

# build the dataloader
# TODO: support multiple images per gpu (only minor changes are needed)
dataset = build_dataset(cfg.data.test)

data_loader = build_dataloader(
    dataset,
    samples_per_gpu=1,
    workers_per_gpu=cfg.data.workers_per_gpu,
    dist=distributed,
    shuffle=False)

# Build the model and run inference on the test set
if RUN_EVALS:
    # build the model and load checkpoint
    model = build_detector(cfg.model, train_cfg=None, test_cfg=cfg.test_cfg)
    fp16_cfg = cfg.get('fp16', None)
    if fp16_cfg is not None:
        wrap_fp16_model(model)
    checkpoint = load_checkpoint(model, CHECKPOINT, map_location=DEVICE)

    # old versions did not save class info in checkpoints, this walkaround is
    # for backward compatibility
    if 'CLASSES' in checkpoint['meta']:
        model.CLASSES = checkpoint['meta']['CLASSES']
    else:
        model.CLASSES = dataset.CLASSES

    if not distributed:
        model = MMDataParallel(model, device_ids=[0])
        outputs = single_gpu_test(model, data_loader, SHOW_RESULTS)
    else:
        model = MMDistributedDataParallel(
            model.cuda(),
            device_ids=[torch.cuda.current_device()],
            broadcast_buffers=False)
        outputs = multi_gpu_test(model, data_loader, TMP_DIR,
                                 GPU_COLLECT)

    rank, _ = get_dist_info()
    if rank == 0:
        if OUT:
            print('\nwriting results to {}'.format(OUT))
            mmcv.dump(outputs, OUT)
        kwargs = {} if OPTIONS is None else OPTIONS
        if FORMAT_ONLY:
            dataset.format_results(outputs, **kwargs)
        if EVAL:
            dataset.evaluate(outputs, EVAL, **kwargs)

# Load the previously inferred results from file
else:
    print('[INFO] Loading inference of test set from file...{}'.format(OUT))
    outputs = mmcv.load(file=OUT)
    kwargs = {} if OPTIONS is None else OPTIONS
    rank, _ = get_dist_info()
    if rank == 0:
        dataset.evaluate(outputs, EVAL, **kwargs)

Training Script
The model was trained using a custom training script based on the COCO example, and uses a custom modified COCO class dataset type.
import mmcv
from mmcv import Config, DictAction
from mmcv.runner import init_dist
import torch

from mmdet import __version__
#from mmdet.apis import set_random_seed, train_detector
from mmdet.datasets import build_dataset
from mmdet.models import build_detector
from mmdet.utils import collect_env, get_root_logger

# import __main__ as main
import os
import random
import datetime
import shutil
import copy
import time
from glob import glob
#from sklearn.model_selection import train_test_split
import albumentations as A
import numpy as np
import argparse

from mmdetection_morphologi_pipelines import LoadMorphologiSynImage
from mmdetection_morphologi_datasets import MorphologiDataset
from mmdetection_morphologi_train import set_random_seed, train_detector
from mmdetection_morphologi_hooks import ValidationCheckpointHook, TensorboardLoggerWithImagesHook
from mmdetection_morphologi_utils import save_pickle

BASE_DIR = '' # 'advanced_seg/MMDetection_experiments' # Base DIR specification for executing in debug mode
TESTING = False

def parse_args():
    parser = argparse.ArgumentParser(description='Train a detector')
    parser.add_argument('--config', help='train config file path', default=os.path.join(BASE_DIR,'configs_morph/mmdetection_morphologi_mask_rcnn_x101_32x4d_fpn_1x.py')) # mmdetection_morphologi_mask_rcnn_x101_32x4d_fpn_1x.py'configs_morph/mmdetection_morphologi_mask_rcnn_r50_fpn_1x.py'
    parser.add_argument('--work_dir', help='the dir to save logs and models', default=os.path.join(BASE_DIR,'output/SGD'))
    parser.add_argument('--workflow', type=int, help='Workflow type [1] train only, [2] train and validate every epoch', default=2)
    parser.add_argument('--job_name', help='name for output files and dirs', default='cuboidal_square_images_v1p3_4XGPU_DODParsV1_') #'spherical_v1_cuboidal_square_images_v1p1_combined_500_125_4536_')
    parser.add_argument(
        '--resume-from', help='the checkpoint file to resume from')
    parser.add_argument(
        '--validate',
        action='store_true',
        help='whether to evaluate the checkpoint during training', default=True)
    group_gpus = parser.add_mutually_exclusive_group()
    group_gpus.add_argument(
        '--gpus',
        type=int,
        help='number of gpus to use '
        '(only applicable to non-distributed training)')
    group_gpus.add_argument(
        '--gpu-ids',
        type=int,
        nargs='+',
        help='ids of gpus to use '
        '(only applicable to non-distributed training)')
    parser.add_argument('--seed', type=int, default=42, help='random seed') # Default is usually 42
    parser.add_argument(
        '--deterministic',
        action='store_true',
        help='whether to set deterministic options for CUDNN backend.')
    parser.add_argument(
        '--options', nargs='+', action=DictAction, help='arguments in dict')
    parser.add_argument(
        '--launcher',
        choices=['none', 'pytorch', 'slurm', 'mpi'],
        default='none',
        help='job launcher')
    parser.add_argument('--local_rank', type=int, default=0)
    parser.add_argument(
        '--autoscale-lr',
        action='store_true',
        help='automatically scale lr with the number of gpus',
        default=True) #Added by ECM as this should [always be used
    args = parser.parse_args()
    if 'LOCAL_RANK' not in os.environ:
        os.environ['LOCAL_RANK'] = str(args.local_rank)

    return args

def main():

    args = parse_args()

    # Output dir and job details
    if args.job_name[-1] == '_':
        job_name_preamble = args.job_name
    else:
        job_name_preamble = args.job_name + '_'

    #### CONFIG
    ## Get the Base Config
    cfg = Config.fromfile(args.config)

    ## Set up Config

    # Get additional keyword arguments for configuration
    if args.options is not None:
        cfg.merge_from_dict(args.options)

    # set cudnn_benchmark
    if cfg.get('cudnn_benchmark', False):
        torch.backends.cudnn.benchmark = True

    # Setup output dir and copy over the exection script, save copy of config and input arguments
    if args.work_dir is not None:
        if TESTING:
            output_base_dir = os.path.join(args.work_dir,'testing')
        else:
            output_base_dir = args.work_dir
    elif cfg.get('work_dir', None) is None:
        if TESTING:
            output_base_dir = os.path.join(args.work_dir,'output/testing')
        else:
            output_base_dir = os.path.join(BASE_DIR,'output')
    cfg.work_dir = os.path.join(output_base_dir,job_name_preamble+cfg.model.type+'_'+cfg.model.backbone.type+str(cfg.model.backbone.depth)+'_'+cfg.model.neck.type+'_'+datetime.datetime.now().strftime('%d%m%Y_%H%M%S'))
    os.makedirs(cfg.work_dir, exist_ok=True)
    # Save this file
    shutil.copyfile(__file__, os.path.join(cfg.work_dir,__file__.split('/')[-1]))
    # Save the input arguments
    args_out_path = os.path.join(cfg.work_dir,'args_in_dict.pkl')
    save_pickle(pkl_object=args.__dict__, fname=args_out_path)
    # Save the config to file
    cfg_out_path = os.path.join(cfg.work_dir,cfg.work_dir.split('/')[-1]+'.cfg')
    cfg_out = open(cfg_out_path, 'w')
    cfg_out.writelines(cfg.text)
    cfg_out.close()

    # init the logger before other steps
    timestamp = time.strftime('%Y%m%d_%H%M%S', time.localtime())
    log_file = os.path.join(cfg.work_dir, '{}.log'.format(timestamp))
    logger = get_root_logger(log_file=log_file, log_level=cfg.log_level)
    logger.info('Created output directory: {}'.format(cfg.work_dir))

    logger.info('Command line arguments passed to training script: ')
    for arg_key,arg_value in args.__dict__.items():
        logger.info('{} :: {}'.format(arg_key, arg_value))

    # Resume from previous iteration
    if args.resume_from is not None:
        cfg.resume_from = args.resume_from

    # Update the default number of GPUs if different from config.
    if args.gpu_ids is not None:
        cfg.gpu_ids = args.gpu_ids
    else:
        cfg.gpu_ids = range(1) if args.gpus is None else range(args.gpus)

    # Update the autoscaler with the number of GPUs if changed from default 8 gpus.
    # ECM Modified so it takes into account the actual mini-batch size, which is dependent on the number of gpus and the images per gpu.
    # It now scales with the default mini-batch of 8 gpus and 2 images per gpu (16), and changes in response to changes in both gpus and/or images per gpu.
    if args.autoscale_lr:
        _old_lr = cfg.optimizer['lr']
        # Custom LR modification
        cfg.optimizer['lr'] =cfg.optimizer['lr'] * (len(cfg.gpu_ids) * cfg.data.imgs_per_gpu) / (16)
        # Example LR modification
        #cfg.optimizer['lr'] = cfg.optimizer['lr'] * len(cfg.gpu_ids) / 8
        logger.info('Applying linear Learning Rate correction. LR changed from {} to {}'.format(_old_lr, cfg.optimizer['lr']))

    # init distributed env first, since logger depends on the dist info.
    if args.launcher == 'none':
        logger.info('Distributed environment has not been initialized.')
        distributed = False
    else:
        logger.info('Distributed environment initialised.')
        distributed = True
        init_dist(args.launcher, **cfg.dist_params)

    ## Set workflow overide
    # Just training or validation will be done through the evaluation hook.
    if (args.workflow == 1):# or (args.validate):
        cfg.workflow = [('train', 1)]
        logger.info('Setting workflow to train only {}'.format(cfg.workflow))
    # Run validation through the val() function.
    elif args.workflow == 2:
        cfg.workflow = [('train', 1), ('val', 1)]
        logger.info('Setting workflow to train and validate {}'.format(cfg.workflow))
    # Report if using COCO validation metrics.
    if args.validate:
        logger.info('COCO Validation will be performed after every {} training epoch(s) using metrics {}'.format(cfg.evaluation.interval, cfg.evaluation.metric))

    # init the meta dict to record some important information such as
    # environment info and seed, which will be logged
    meta = dict()
    # log env info
    env_info_dict = collect_env()
    env_info = '\n'.join([('{}: {}'.format(k, v))
                            for k, v in env_info_dict.items()])
    dash_line = '-' * 60 + '\n'
    logger.info('Environment info:\n' + dash_line + env_info + '\n' +
                dash_line)
    meta['env_info'] = env_info

    # log some basic info
    logger.info('Distributed training: {}'.format(distributed))
    logger.info('Config:\n{}'.format(cfg.text))

    # set random seeds
    if args.seed is not None:
        logger.info(f'Set random seed to {args.seed}, '
                    f'deterministic: {args.deterministic}')
        set_random_seed(args.seed, deterministic=args.deterministic)
    cfg.seed = args.seed
    meta['seed'] = args.seed

    model = build_detector(cfg.model, train_cfg=cfg.train_cfg, test_cfg=cfg.test_cfg)

    datasets = [build_dataset(cfg.data.train)] #, build_dataset(cfg.data.val)]

    if len(cfg.workflow) == 2:
        val_dataset = copy.deepcopy(cfg.data.val)
        val_dataset.pipeline = cfg.data.train.pipeline
        datasets.append(build_dataset(val_dataset))
    if cfg.checkpoint_config is not None:
        # save mmdet version, config file content and class names in
        # checkpoints as meta data
        cfg.checkpoint_config.meta = dict(
            mmdet_version=__version__,
            config=cfg.text,
            CLASSES=datasets[0].CLASSES)

    # add an attribute for visualization convenience
    model.CLASSES = datasets[0].CLASSES
    train_detector(
        model,
        datasets,
        cfg,
        distributed=distributed,
        validate=args.validate,
        timestamp=timestamp,
        meta=meta)

if __name__ == '__main__':

    main()

Hi, did you have the correct format of ground-truth mask annotation for evaluation?

Hi @v-qjqs,
Thanks for you reply.
The format for the validation dataset is identical to that of the training set, and produced at the same time using the same algorithm.
All checks and tests for quality are performed on both datasets, so my feeling is that if the training is performing correctly, and the loss functions for the different parts of the network are reporting what look to be sensible values, then this indicates that the format is being read correctly by the network during training?
Here are example loss functions for each part of the network for a model that trained well. This produced 0.0 values for SEGM metrics when tested.

Specifically, the loss_mask is defined for both the training and validation datasets.

So, given that the validation loss functions are well defined, this then suggests that the format of the label data is correct, doesn't it?

Here's an example entry for an object annotation in my JSON file for the validation dataset.
A couple of things I have noticed whilst producing these plots and example annotation file:

As the polygon coordinates have been rounded, there are duplicate points in the polygon list, would this cause issues with the evaluation metrics?

For overlapping particles, I have not occluded the particle mask where overlap occurs. Should the particle masks be modified to remove the parts that are covered by another object?

{'id': 5153,
 'image_id': 25,
 'category_id': 1,
 'bbox': [1052, 258, 19, 15],
 'area':<PHONE_NUMBER>8633487,
 'segmentation': [[1071,
   265,
   1071,
   266,
   1070,
   266,
   1069,
   267,
   1069,
   267,
   1068,
   267,
   1068,
   267,
   1067,
   268,
   1067,
   268,
   1066,
   268,
   1065,
   268,
   1065,
   269,
   1064,
   268,
   1063,
   268,
   1061,
   269,
   1061,
   269,
   1060,
   268,
   1059,
   269,
   1059,
   269,
   1058,
   269,
   1057,
   270,
   1057,
   270,
   1056,
   269,
   1055,
   269,
   1055,
   269,
   1054,
   268,
   1054,
   268,
   1055,
   267,
   1054,
   266,
   1054,
   266,
   1053,
   264,
   1053,
   264,
   1053,
   264,
   1054,
   264,
   1054,
   264,
   1056,
   263,
   1056,
   263,
   1057,
   263,
   1058,
   262,
   1058,
   262,
   1059,
   262,
   1059,
   262,
   1060,
   262,
   1061,
   262,
   1062,
   262,
   1062,
   262,
   1063,
   262,
   1064,
   261,
   1064,
   261,
   1065,
   261,
   1066,
   262,
   1068,
   261,
   1068,
   261,
   1069,
   261,
   1070,
   261,
   1070,
   262,
   1069,
   263,
   1070,
   264,
   1070,
   264,
   1071,
   265,
   1071,
   265]],
 'iscrowd': 0}

For completeness, here's an example image from the validation dataset, showing both the bounding boxes and polygons.
These have been loaded from the JSON annotations file using the COCO API.

Anybody have ideas what might be causing the 0.0 values in the SEGM metrics?

Very late but I am getting a similar issue when training my bbox-only model. The training loss decays nicely but all evaluation metrics are zero. It goes away when I switch around some operations in the training and testing pipelines, so I believe it's a data pipeline issue (i.e. an inconsistency between the training and testing data format). I opened a new issue here because I couldn't figure out what causes it to work or not work. I couldn't find much documentation on data augmentation that indicated there should be any issue like this.


Performance Glossary

Glossary of Terms for web performance

[X] Time to interactive
[X] Speed Index
[ ] Perceptual speed index
[X] First Contentfule Paint
[ ] Critical Respons Path
[X] Time To Interactive
[X] HTTP2
[X] Time to first byte
[X] First Interactive
[X] First CPU Idle
[X] First Input Delay
[X] The Main Thread
[X] First Meaningful Paint
[X] Brotli Compression
[X] Speed Index
[X] minification
[ ] lossless
[ ] lossy
[ ] source maps
[ ] RUM
[ ] scheduling
[X] jank
[X] long task
[X] first paint
[ ] first contentful paint
[ ] service delivery/service design
[ ] lazy load
[X] latency

AC: Pages for all of the above are edited if they exist or created if they don't.

https://developer.mozilla.org/en-US/docs/Glossary/beacon A web beacon is a small object, such as a 1 pixel gif, embedded in markup, used to communicate...
https://developer.mozilla.org/en-US/docs/Glossary/brotli_compression Brotli is a generic-purpose lossless compression algorithm that compresses data using a...
https://developer.mozilla.org/en-US/docs/Glossary/Client_hints Client Hints are a set of HTTP request header fields for proactive content negotiation allowing...
https://developer.mozilla.org/en-US/docs/Glossary/Domain_sharding Browsers limit the number of active connections for each domain. To enable concurrent downloads...
https://developer.mozilla.org/en-US/docs/Glossary/First_contentful_paint First Contentful Paint (FCP) is when the browser renders the first bit of content from the DOM,...
https://developer.mozilla.org/en-US/docs/Glossary/First_CPU_idle First CPU Idle measures when a page is minimally interactive, or when the window is quiet enough...
https://developer.mozilla.org/en-US/docs/Glossary/First_input_delay First input delay (FID) measures the time from when a user first interacts with your site (i.e....
https://developer.mozilla.org/en-US/docs/Glossary/First_interactive First Interactive, also known as first CPU idle, is a non-standard web performance metric that...
https://developer.mozilla.org/en-US/docs/Glossary/first_meaningful_paint First Meaningful Paint (FMP) is the paint after which the biggest above-the-fold layout change...
https://developer.mozilla.org/en-US/docs/Glossary/First_paint First Paint, party of the Paint Timing API, is the time between navigation and when the browser...
https://developer.mozilla.org/en-US/docs/Glossary/HTTP The HyperText Transfer Protocol (HTTP) is the underlying network protocol that enables transfer...
https://developer.mozilla.org/en-US/docs/Glossary/HTTP_2 HTTP/2 is a major revision of the HTTP network protocol. It leaves most of HTTP 1.1's high-level...
https://developer.mozilla.org/en-US/docs/Glossary/Jank Jank refers to sluggishness in a user interface, usually caused by executing long tasks on the...
https://developer.mozilla.org/en-US/docs/Glossary/Latency Latency is the network time it takes for a resources to reach its destination. Low latency is...
https://developer.mozilla.org/en-US/docs/Glossary/Lazy_load Lazy loading is a stretegic delay of loading some assets until they are needed, usually based on...
https://developer.mozilla.org/en-US/docs/Glossary/Long_task A long task  is a task that takes more than 50ms to complete.
https://developer.mozilla.org/en-US/docs/Glossary/Main_thread The main thread is where a browser processes user events and paints. By default the browser uses...
https://developer.mozilla.org/en-US/docs/Glossary/minification Minification is the process of removing unnecessary or redundant data without affecting how a...
https://developer.mozilla.org/en-US/docs/Glossary/Page_prediction Page Prediction is a browser feature or script which, when enabled, tells the browser to...
https://developer.mozilla.org/en-US/docs/Glossary/Perceived_performance Perceived performance is how fast a website seems to the user. It is a subjective "feeling" of...
https://developer.mozilla.org/en-US/docs/Glossary/Prefetch Prefetching is when content is downloaded in the background, based on assumptions that the...
https://developer.mozilla.org/en-US/docs/Glossary/prerender With prerendering, the content is prefetched and then the browser renders the content in the...
https://developer.mozilla.org/en-US/docs/Glossary/QUIC Quick UDP Internet Connection, or QUIC,  is an experimental multiplexed transport protocol...
https://developer.mozilla.org/en-US/docs/Glossary/RAIL RAIL, an acronym for Response, Animation, Idle and Load, is a performance model originated by...
https://developer.mozilla.org/en-US/docs/Glossary/Real_User_Monitoring Real User Monitoring or RUM measures the performance of a page from real users' machines....
https://developer.mozilla.org/en-US/docs/Glossary/Resource_Timing Diagnosing performance issues requires performance data at the granularity of a resource. The...
https://developer.mozilla.org/en-US/docs/Glossary/Round_Trip_Time_(RTT) Round Trip Time (RTT) is the length of time it takes for a data packet to be sent plus the...
https://developer.mozilla.org/en-US/docs/Glossary/Server_Timing The Server Timing specification enables the server to communicate performance metrics about the...
https://developer.mozilla.org/en-US/docs/Glossary/Speed_index Speed Index (SI) is a page load performance metric that shows you how quickly the contents of a...
https://developer.mozilla.org/en-US/docs/Glossary/SSL SSL (Secure Sockets Layer) is a standard protocol that ensures communication sent between two...
https://developer.mozilla.org/en-US/docs/Glossary/Synthetic_monitoring Synthetic monitoring involves monitoring the performance of a page in a 'laboratory'...
https://developer.mozilla.org/en-US/docs/Glossary/time_to_first_byte Time to First Byte (TTFB) refers to the time between the browser requesting a page and when it...
https://developer.mozilla.org/en-US/docs/Glossary/Time_to_interactive Time to Interactive (TTI) is a non-standardized web performance 'progress' metric defined as the...
https://developer.mozilla.org/en-US/docs/Glossary/TLS Transport Layer Security (TLS), short for Transport Layer Security Protocol, is a replacement...

To see all the glossary terms, visit https://developer.mozilla.org/en-US/docs/tag/Web Performance. 39 of the 41 entries between glossary/beacon and glossary/Tree_shaking are new


Migrate to Chef Vault

Played with Chef Vault vs. data bags and prefer the former so I've refactored accordingly.  Always lean toward sharing with others so let me know if there's interest and I'll submit the change I've made to my fork. It's not quite ready yet only because I've replaced the latter with the former (in the interest of time), rather than coding to support both options.  Also need to update unit tests and, full disclosure, I'm not much of a unit test guy.  Only really write integration tests.  I'm willing to change though ;-)

We're probably going to remove the data bags in favour of custom resource blocks as they're version-able and way easier to write/maintain.
You should still be able to feed the data from vault though!


Update manage.md for GA

Removed "preview" and updated freshness date

@awaadhwa : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#sign-off


Optimize building time without sidecar

Background
Now, even if sidecar is not used, the builder will analyze vmlinux, which costs extra time of building.
Task
Don't deal with sidecar when the scheduler module do not use the sidecar.

#12 will be a superset of this issue. So close this one.