Add DataView Type Register (supporting loading in-memory image and other in-memory custom types) - #3263

Merged
wschin merged 25 commits into
dotnet:masterfrom
wschin:support-image
May 28, 2019
Merged

Add DataView Type Register (supporting loading in-memory image and other in-memory custom types)#3263
wschin merged 25 commits into
dotnet:masterfrom
wschin:support-image

Conversation

@wschin

@wschinwschin commented Apr 9, 2019

Copy link
Copy Markdown
Contributor

Fix#3162 by considering image type in our bridge code. Also fix#3723, fix#3369, fix#3274, fix#445, fix#3460, fix#2121, fix#2495, fix#3784.

@wschinwschin self-assigned this Apr 9, 2019
@wschinwschin added the bug Something isn't working label Apr 9, 2019
@wschin
wschin requested review from Ivanidzo4ka and eerhardt and removed request for eerhardtApril 9, 2019 21:29
Comment threadtest/Microsoft.ML.Tests/ImagesTests.cs Outdated
Comment threadsrc/Microsoft.ML.Core/Microsoft.ML.Core.csproj Outdated
@codecov

codecovBot commented Apr 9, 2019

Copy link
Copy Markdown

Codecov Report

❗ No coverage uploaded for pull request base (master@51b10fc). Click here to learn what that means.
The diff coverage is 84.84%.

@@ Coverage Diff @@## master #3263 +/- ##
=========================================
Coverage ? 72.64% =========================================
Files ? 807 Lines ? 145126 Branches ? 16220 =========================================
Hits ? 105424 Misses ? 35281 Partials ? 4421
FlagCoverage Δ
#Debug72.64% <84.84%> (?)
#production68.19% <72.72%> (?)
#test88.93% <96.96%> (?)
Impacted FilesCoverage Δ
src/Microsoft.ML.DataView/ImageDataViewType.cs70.96% <ø> (ø)
...osoft.ML.Data/DataView/InternalSchemaDefinition.cs57.53% <100%> (ø)
src/Microsoft.ML.Data/Utils/ApiUtils.cs91.74% <100%> (ø)
src/Microsoft.ML.Data/Data/SchemaDefinition.cs70.93% <68%> (ø)
src/Microsoft.ML.Data/DataView/TypedCursor.cs83.38% <75%> (ø)
test/Microsoft.ML.Tests/ImagesTests.cs98.6% <96.96%> (ø)

Comment threadsrc/Microsoft.ML.DataView/ImageDataViewType.cs Outdated
Comment threadsrc/Microsoft.ML.Core/Microsoft.ML.Core.csproj
Comment threadsrc/Microsoft.ML.DataView/ImageDataViewType.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/Microsoft.ML.DataView.csproj Outdated
TomFinley
TomFinley previously requested changes Apr 10, 2019

@TomFinleyTomFinley left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Hi @wschin, thanks for working on this!

I do not consider it acceptable that our answer to the problem of what prediction engine does with its reflection based mechanism is that this core assembly has to have a direct, actual dependence on the type -- quite apart from the already excellent objections raised by @Ivanidzo4ka and @eerhardt, this is incompatible with IDataView's own principle as having an extensible type system.

I will post more details on what I'd consider at least a more correct alternative in the existing thread.

@wschinwschin changed the title Get back images as C# objectsDataView Type Register and Image Type RegisterMay 16, 2019
Comment threadsrc/Microsoft.ML.Data/Utils/ApiUtils.cs
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated

@eerhardteerhardt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

:shipit:

@wschinwschin changed the title DataView Type Register and Image Type RegisterAdd DataView Type Register (supporting loading in-memory image and other in-memory custom types)May 24, 2019
@yaeldekelyaeldekel mentioned this pull request May 28, 2019
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated
@artidoro

artidoro commented May 28, 2019

Copy link
Copy Markdown
Contributor

The PR looks great, but we will need a sample for this work. It's fine if it comes in another PR. Could you adapt a test and make it a sample? #Resolved

@artidoro

artidoro commented May 28, 2019

Copy link
Copy Markdown
Contributor

Also would it be useful to surface the DataViewTypeManager in MLContext? Or some of it's methods? #Pending

@wschin

Copy link
Copy Markdown
ContributorAuthor

For this advanced functionality, I'd keep it as is for now. If we add an alias for it, we will have to support it for years.


In reply to: 496640481 [](ancestors = 496640481)

@wschin

Copy link
Copy Markdown
ContributorAuthor

Added two samples.


In reply to: 496639086 [](ancestors = 496639086)

@artidoroartidoro left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

:shipit:

@wschin
wschin merged commit 02a857a into dotnet:masterMay 28, 2019
@wschin
wschin deleted the support-image branch May 28, 2019 23:17
@ADD-eNavarro

Copy link
Copy Markdown

Hi!
Is there a date for this to make it into ML.NET? I really could use this feature, but it seems a little stuck.
Thanks!

@johncalvowtg

Copy link
Copy Markdown

Hello!
We have actually the same problem here at Wisetech. I am trying to consume a TensorFlow model with multiple multi-dimensional inputs . Same message and no workaround on this.

I've tried some of your examples, but none of them worked for me.

Please let us know if you manage to fully support TensorFlow integration with ML.NET.

Regards,
John Calvo-Martinez Ph.D.

@jamsoft

Copy link
Copy Markdown

Phew, it's not just me going mad. I've been trying to use in memory images all day and have so far failed to get any of this to work. I have SO question open as well in case anyone wants to follow.

@Webreaper

Copy link
Copy Markdown

@jamsoft Did you remove the SO question? I'm also looking for an ML.Net sample for image classification that takes a bitmap directly rather than a folder of images. Seems sad that so many people are asking for this and MSFT's ML.Net team still haven't put together a useful sample.

@michaelgsharp

Copy link
Copy Markdown
Contributor

@Webreaper I thought we had a sample or documentation about it, but I just went and looked and couldn't find anything myself. I'll make sure we have something. The basic idea is that you have 2 pipelines. 1 pipeline loads the images and stops when it has the images loaded as bytes, and the second pipeline starts from where you would use these image bytes already.

I can' upload a zip file here since its not a github issue, but I do have a sample interactive notebook that shows it. If you can create a new issue I can get attach it for you there.

@Webreaper

Copy link
Copy Markdown

Thanks @michaelgsharp. Hopefully this should be sufficient? #5980

@ghostghost locked as resolved and limited conversation to collaborators Mar 22, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

bugSomething isn't working

Projects

None yet

13 participants

@wschin@glebuk@artidoro@ADD-eNavarro@johncalvowtg@jamsoft@Webreaper@michaelgsharp@Ivanidzo4ka@eerhardt@TomFinley@ericstj@shmoradims
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks"); } } catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); } })(); (function(){ try { var __m = "github.com"; var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Add DataView Type Register (supporting loading in-memory image and other in-memory custom types) - #3263

Merged
wschin merged 25 commits into
dotnet:masterfrom
wschin:support-image
May 28, 2019
Merged

Add DataView Type Register (supporting loading in-memory image and other in-memory custom types)#3263
wschin merged 25 commits into
dotnet:masterfrom
wschin:support-image

Conversation

@wschin

@wschinwschin commented Apr 9, 2019

Copy link
Copy Markdown
Contributor

Fix#3162 by considering image type in our bridge code. Also fix#3723, fix#3369, fix#3274, fix#445, fix#3460, fix#2121, fix#2495, fix#3784.

@wschinwschin self-assigned this Apr 9, 2019
@wschinwschin added the bug Something isn't working label Apr 9, 2019
@wschin
wschin requested review from Ivanidzo4ka and eerhardt and removed request for eerhardtApril 9, 2019 21:29
Comment threadtest/Microsoft.ML.Tests/ImagesTests.cs Outdated
Comment threadsrc/Microsoft.ML.Core/Microsoft.ML.Core.csproj Outdated
@codecov

codecovBot commented Apr 9, 2019

Copy link
Copy Markdown

Codecov Report

❗ No coverage uploaded for pull request base (master@51b10fc). Click here to learn what that means.
The diff coverage is 84.84%.

@@ Coverage Diff @@## master #3263 +/- ##
=========================================
Coverage ? 72.64% =========================================
Files ? 807 Lines ? 145126 Branches ? 16220 =========================================
Hits ? 105424 Misses ? 35281 Partials ? 4421
FlagCoverage Δ
#Debug72.64% <84.84%> (?)
#production68.19% <72.72%> (?)
#test88.93% <96.96%> (?)
Impacted FilesCoverage Δ
src/Microsoft.ML.DataView/ImageDataViewType.cs70.96% <ø> (ø)
...osoft.ML.Data/DataView/InternalSchemaDefinition.cs57.53% <100%> (ø)
src/Microsoft.ML.Data/Utils/ApiUtils.cs91.74% <100%> (ø)
src/Microsoft.ML.Data/Data/SchemaDefinition.cs70.93% <68%> (ø)
src/Microsoft.ML.Data/DataView/TypedCursor.cs83.38% <75%> (ø)
test/Microsoft.ML.Tests/ImagesTests.cs98.6% <96.96%> (ø)

Comment threadsrc/Microsoft.ML.DataView/ImageDataViewType.cs Outdated
Comment threadsrc/Microsoft.ML.Core/Microsoft.ML.Core.csproj
Comment threadsrc/Microsoft.ML.DataView/ImageDataViewType.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/Microsoft.ML.DataView.csproj Outdated
TomFinley
TomFinley previously requested changes Apr 10, 2019

@TomFinleyTomFinley left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Hi @wschin, thanks for working on this!

I do not consider it acceptable that our answer to the problem of what prediction engine does with its reflection based mechanism is that this core assembly has to have a direct, actual dependence on the type -- quite apart from the already excellent objections raised by @Ivanidzo4ka and @eerhardt, this is incompatible with IDataView's own principle as having an extensible type system.

I will post more details on what I'd consider at least a more correct alternative in the existing thread.

@wschinwschin changed the title Get back images as C# objectsDataView Type Register and Image Type RegisterMay 16, 2019
Comment threadsrc/Microsoft.ML.Data/Utils/ApiUtils.cs
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated

@eerhardteerhardt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

:shipit:

@wschinwschin changed the title DataView Type Register and Image Type RegisterAdd DataView Type Register (supporting loading in-memory image and other in-memory custom types)May 24, 2019
@yaeldekelyaeldekel mentioned this pull request May 28, 2019
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated
@artidoro

artidoro commented May 28, 2019

Copy link
Copy Markdown
Contributor

The PR looks great, but we will need a sample for this work. It's fine if it comes in another PR. Could you adapt a test and make it a sample? #Resolved

@artidoro

artidoro commented May 28, 2019

Copy link
Copy Markdown
Contributor

Also would it be useful to surface the DataViewTypeManager in MLContext? Or some of it's methods? #Pending

@wschin

Copy link
Copy Markdown
ContributorAuthor

For this advanced functionality, I'd keep it as is for now. If we add an alias for it, we will have to support it for years.


In reply to: 496640481 [](ancestors = 496640481)

@wschin

Copy link
Copy Markdown
ContributorAuthor

Added two samples.


In reply to: 496639086 [](ancestors = 496639086)

@artidoroartidoro left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

:shipit:

@wschin
wschin merged commit 02a857a into dotnet:masterMay 28, 2019
@wschin
wschin deleted the support-image branch May 28, 2019 23:17
@ADD-eNavarro

Copy link
Copy Markdown

Hi!
Is there a date for this to make it into ML.NET? I really could use this feature, but it seems a little stuck.
Thanks!

@johncalvowtg

Copy link
Copy Markdown

Hello!
We have actually the same problem here at Wisetech. I am trying to consume a TensorFlow model with multiple multi-dimensional inputs . Same message and no workaround on this.

I've tried some of your examples, but none of them worked for me.

Please let us know if you manage to fully support TensorFlow integration with ML.NET.

Regards,
John Calvo-Martinez Ph.D.

@jamsoft

Copy link
Copy Markdown

Phew, it's not just me going mad. I've been trying to use in memory images all day and have so far failed to get any of this to work. I have SO question open as well in case anyone wants to follow.

@Webreaper

Copy link
Copy Markdown

@jamsoft Did you remove the SO question? I'm also looking for an ML.Net sample for image classification that takes a bitmap directly rather than a folder of images. Seems sad that so many people are asking for this and MSFT's ML.Net team still haven't put together a useful sample.

@michaelgsharp

Copy link
Copy Markdown
Contributor

@Webreaper I thought we had a sample or documentation about it, but I just went and looked and couldn't find anything myself. I'll make sure we have something. The basic idea is that you have 2 pipelines. 1 pipeline loads the images and stops when it has the images loaded as bytes, and the second pipeline starts from where you would use these image bytes already.

I can' upload a zip file here since its not a github issue, but I do have a sample interactive notebook that shows it. If you can create a new issue I can get attach it for you there.

@Webreaper

Copy link
Copy Markdown

Thanks @michaelgsharp. Hopefully this should be sufficient? #5980

@ghostghost locked as resolved and limited conversation to collaborators Mar 22, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

bugSomething isn't working

Projects

None yet

13 participants

@wschin@glebuk@artidoro@ADD-eNavarro@johncalvowtg@jamsoft@Webreaper@michaelgsharp@Ivanidzo4ka@eerhardt@TomFinley@ericstj@shmoradims
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add DataView Type Register (supporting loading in-memory image and other in-memory custom types) - #3263

Merged
wschin merged 25 commits into
dotnet:masterfrom
wschin:support-image
May 28, 2019
Merged

Add DataView Type Register (supporting loading in-memory image and other in-memory custom types)#3263
wschin merged 25 commits into
dotnet:masterfrom
wschin:support-image

Conversation

@wschin

@wschinwschin commented Apr 9, 2019

Copy link
Copy Markdown
Contributor

Fix#3162 by considering image type in our bridge code. Also fix#3723, fix#3369, fix#3274, fix#445, fix#3460, fix#2121, fix#2495, fix#3784.

@wschinwschin self-assigned this Apr 9, 2019
@wschinwschin added the bug Something isn't working label Apr 9, 2019
@wschin
wschin requested review from Ivanidzo4ka and eerhardt and removed request for eerhardtApril 9, 2019 21:29
Comment threadtest/Microsoft.ML.Tests/ImagesTests.cs Outdated
Comment threadsrc/Microsoft.ML.Core/Microsoft.ML.Core.csproj Outdated
@codecov

codecovBot commented Apr 9, 2019

Copy link
Copy Markdown

Codecov Report

❗ No coverage uploaded for pull request base (master@51b10fc). Click here to learn what that means.
The diff coverage is 84.84%.

@@ Coverage Diff @@## master #3263 +/- ##
=========================================
Coverage ? 72.64% =========================================
Files ? 807 Lines ? 145126 Branches ? 16220 =========================================
Hits ? 105424 Misses ? 35281 Partials ? 4421
FlagCoverage Δ
#Debug72.64% <84.84%> (?)
#production68.19% <72.72%> (?)
#test88.93% <96.96%> (?)
Impacted FilesCoverage Δ
src/Microsoft.ML.DataView/ImageDataViewType.cs70.96% <ø> (ø)
...osoft.ML.Data/DataView/InternalSchemaDefinition.cs57.53% <100%> (ø)
src/Microsoft.ML.Data/Utils/ApiUtils.cs91.74% <100%> (ø)
src/Microsoft.ML.Data/Data/SchemaDefinition.cs70.93% <68%> (ø)
src/Microsoft.ML.Data/DataView/TypedCursor.cs83.38% <75%> (ø)
test/Microsoft.ML.Tests/ImagesTests.cs98.6% <96.96%> (ø)

Comment threadsrc/Microsoft.ML.DataView/ImageDataViewType.cs Outdated
Comment threadsrc/Microsoft.ML.Core/Microsoft.ML.Core.csproj
Comment threadsrc/Microsoft.ML.DataView/ImageDataViewType.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/Microsoft.ML.DataView.csproj Outdated
TomFinley
TomFinley previously requested changes Apr 10, 2019

@TomFinleyTomFinley left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Hi @wschin, thanks for working on this!

I do not consider it acceptable that our answer to the problem of what prediction engine does with its reflection based mechanism is that this core assembly has to have a direct, actual dependence on the type -- quite apart from the already excellent objections raised by @Ivanidzo4ka and @eerhardt, this is incompatible with IDataView's own principle as having an extensible type system.

I will post more details on what I'd consider at least a more correct alternative in the existing thread.

@wschinwschin changed the title Get back images as C# objectsDataView Type Register and Image Type RegisterMay 16, 2019
Comment threadsrc/Microsoft.ML.Data/Utils/ApiUtils.cs
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated

@eerhardteerhardt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

:shipit:

@wschinwschin changed the title DataView Type Register and Image Type RegisterAdd DataView Type Register (supporting loading in-memory image and other in-memory custom types)May 24, 2019
@yaeldekelyaeldekel mentioned this pull request May 28, 2019
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated
@artidoro

artidoro commented May 28, 2019

Copy link
Copy Markdown
Contributor

The PR looks great, but we will need a sample for this work. It's fine if it comes in another PR. Could you adapt a test and make it a sample? #Resolved

@artidoro

artidoro commented May 28, 2019

Copy link
Copy Markdown
Contributor

Also would it be useful to surface the DataViewTypeManager in MLContext? Or some of it's methods? #Pending

@wschin

Copy link
Copy Markdown
ContributorAuthor

For this advanced functionality, I'd keep it as is for now. If we add an alias for it, we will have to support it for years.


In reply to: 496640481 [](ancestors = 496640481)

@wschin

Copy link
Copy Markdown
ContributorAuthor

Added two samples.


In reply to: 496639086 [](ancestors = 496639086)

@artidoroartidoro left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

:shipit:

@wschin
wschin merged commit 02a857a into dotnet:masterMay 28, 2019
@wschin
wschin deleted the support-image branch May 28, 2019 23:17
@ADD-eNavarro

Copy link
Copy Markdown

Hi!
Is there a date for this to make it into ML.NET? I really could use this feature, but it seems a little stuck.
Thanks!

@johncalvowtg

Copy link
Copy Markdown

Hello!
We have actually the same problem here at Wisetech. I am trying to consume a TensorFlow model with multiple multi-dimensional inputs . Same message and no workaround on this.

I've tried some of your examples, but none of them worked for me.

Please let us know if you manage to fully support TensorFlow integration with ML.NET.

Regards,
John Calvo-Martinez Ph.D.

@jamsoft

Copy link
Copy Markdown

Phew, it's not just me going mad. I've been trying to use in memory images all day and have so far failed to get any of this to work. I have SO question open as well in case anyone wants to follow.

@Webreaper

Copy link
Copy Markdown

@jamsoft Did you remove the SO question? I'm also looking for an ML.Net sample for image classification that takes a bitmap directly rather than a folder of images. Seems sad that so many people are asking for this and MSFT's ML.Net team still haven't put together a useful sample.

@michaelgsharp

Copy link
Copy Markdown
Contributor

@Webreaper I thought we had a sample or documentation about it, but I just went and looked and couldn't find anything myself. I'll make sure we have something. The basic idea is that you have 2 pipelines. 1 pipeline loads the images and stops when it has the images loaded as bytes, and the second pipeline starts from where you would use these image bytes already.

I can' upload a zip file here since its not a github issue, but I do have a sample interactive notebook that shows it. If you can create a new issue I can get attach it for you there.

@Webreaper

Copy link
Copy Markdown

Thanks @michaelgsharp. Hopefully this should be sufficient? #5980

@ghostghost locked as resolved and limited conversation to collaborators Mar 22, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

bugSomething isn't working

Projects

None yet

13 participants

@wschin@glebuk@artidoro@ADD-eNavarro@johncalvowtg@jamsoft@Webreaper@michaelgsharp@Ivanidzo4ka@eerhardt@TomFinley@ericstj@shmoradims
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length \u003e 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add DataView Type Register (supporting loading in-memory image and other in-memory custom types) - #3263

Merged
wschin merged 25 commits into
dotnet:masterfrom
wschin:support-image
May 28, 2019
Merged

Add DataView Type Register (supporting loading in-memory image and other in-memory custom types)#3263
wschin merged 25 commits into
dotnet:masterfrom
wschin:support-image

Conversation

@wschin

@wschinwschin commented Apr 9, 2019

Copy link
Copy Markdown
Contributor

Fix#3162 by considering image type in our bridge code. Also fix#3723, fix#3369, fix#3274, fix#445, fix#3460, fix#2121, fix#2495, fix#3784.

@wschinwschin self-assigned this Apr 9, 2019
@wschinwschin added the bug Something isn't working label Apr 9, 2019
@wschin
wschin requested review from Ivanidzo4ka and eerhardt and removed request for eerhardtApril 9, 2019 21:29
Comment threadtest/Microsoft.ML.Tests/ImagesTests.cs Outdated
Comment threadsrc/Microsoft.ML.Core/Microsoft.ML.Core.csproj Outdated
@codecov

codecovBot commented Apr 9, 2019

Copy link
Copy Markdown

Codecov Report

❗ No coverage uploaded for pull request base (master@51b10fc). Click here to learn what that means.
The diff coverage is 84.84%.

@@ Coverage Diff @@## master #3263 +/- ##
=========================================
Coverage ? 72.64% =========================================
Files ? 807 Lines ? 145126 Branches ? 16220 =========================================
Hits ? 105424 Misses ? 35281 Partials ? 4421
FlagCoverage Δ
#Debug72.64% <84.84%> (?)
#production68.19% <72.72%> (?)
#test88.93% <96.96%> (?)
Impacted FilesCoverage Δ
src/Microsoft.ML.DataView/ImageDataViewType.cs70.96% <ø> (ø)
...osoft.ML.Data/DataView/InternalSchemaDefinition.cs57.53% <100%> (ø)
src/Microsoft.ML.Data/Utils/ApiUtils.cs91.74% <100%> (ø)
src/Microsoft.ML.Data/Data/SchemaDefinition.cs70.93% <68%> (ø)
src/Microsoft.ML.Data/DataView/TypedCursor.cs83.38% <75%> (ø)
test/Microsoft.ML.Tests/ImagesTests.cs98.6% <96.96%> (ø)

Comment threadsrc/Microsoft.ML.DataView/ImageDataViewType.cs Outdated
Comment threadsrc/Microsoft.ML.Core/Microsoft.ML.Core.csproj
Comment threadsrc/Microsoft.ML.DataView/ImageDataViewType.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/Microsoft.ML.DataView.csproj Outdated
TomFinley
TomFinley previously requested changes Apr 10, 2019

@TomFinleyTomFinley left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Hi @wschin, thanks for working on this!

I do not consider it acceptable that our answer to the problem of what prediction engine does with its reflection based mechanism is that this core assembly has to have a direct, actual dependence on the type -- quite apart from the already excellent objections raised by @Ivanidzo4ka and @eerhardt, this is incompatible with IDataView's own principle as having an extensible type system.

I will post more details on what I'd consider at least a more correct alternative in the existing thread.

@wschinwschin changed the title Get back images as C# objectsDataView Type Register and Image Type RegisterMay 16, 2019
Comment threadsrc/Microsoft.ML.Data/Utils/ApiUtils.cs
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated

@eerhardteerhardt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

:shipit:

@wschinwschin changed the title DataView Type Register and Image Type RegisterAdd DataView Type Register (supporting loading in-memory image and other in-memory custom types)May 24, 2019
@yaeldekelyaeldekel mentioned this pull request May 28, 2019
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated
@artidoro

artidoro commented May 28, 2019

Copy link
Copy Markdown
Contributor

The PR looks great, but we will need a sample for this work. It's fine if it comes in another PR. Could you adapt a test and make it a sample? #Resolved

@artidoro

artidoro commented May 28, 2019

Copy link
Copy Markdown
Contributor

Also would it be useful to surface the DataViewTypeManager in MLContext? Or some of it's methods? #Pending

@wschin

Copy link
Copy Markdown
ContributorAuthor

For this advanced functionality, I'd keep it as is for now. If we add an alias for it, we will have to support it for years.


In reply to: 496640481 [](ancestors = 496640481)

@wschin

Copy link
Copy Markdown
ContributorAuthor

Added two samples.


In reply to: 496639086 [](ancestors = 496639086)

@artidoroartidoro left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

:shipit:

@wschin
wschin merged commit 02a857a into dotnet:masterMay 28, 2019
@wschin
wschin deleted the support-image branch May 28, 2019 23:17
@ADD-eNavarro

Copy link
Copy Markdown

Hi!
Is there a date for this to make it into ML.NET? I really could use this feature, but it seems a little stuck.
Thanks!

@johncalvowtg

Copy link
Copy Markdown

Hello!
We have actually the same problem here at Wisetech. I am trying to consume a TensorFlow model with multiple multi-dimensional inputs . Same message and no workaround on this.

I've tried some of your examples, but none of them worked for me.

Please let us know if you manage to fully support TensorFlow integration with ML.NET.

Regards,
John Calvo-Martinez Ph.D.

@jamsoft

Copy link
Copy Markdown

Phew, it's not just me going mad. I've been trying to use in memory images all day and have so far failed to get any of this to work. I have SO question open as well in case anyone wants to follow.

@Webreaper

Copy link
Copy Markdown

@jamsoft Did you remove the SO question? I'm also looking for an ML.Net sample for image classification that takes a bitmap directly rather than a folder of images. Seems sad that so many people are asking for this and MSFT's ML.Net team still haven't put together a useful sample.

@michaelgsharp

Copy link
Copy Markdown
Contributor

@Webreaper I thought we had a sample or documentation about it, but I just went and looked and couldn't find anything myself. I'll make sure we have something. The basic idea is that you have 2 pipelines. 1 pipeline loads the images and stops when it has the images loaded as bytes, and the second pipeline starts from where you would use these image bytes already.

I can' upload a zip file here since its not a github issue, but I do have a sample interactive notebook that shows it. If you can create a new issue I can get attach it for you there.

@Webreaper

Copy link
Copy Markdown

Thanks @michaelgsharp. Hopefully this should be sufficient? #5980

@ghostghost locked as resolved and limited conversation to collaborators Mar 22, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

bugSomething isn't working

Projects

None yet

13 participants

@wschin@glebuk@artidoro@ADD-eNavarro@johncalvowtg@jamsoft@Webreaper@michaelgsharp@Ivanidzo4ka@eerhardt@TomFinley@ericstj@shmoradims
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Add DataView Type Register (supporting loading in-memory image and other in-memory custom types) - #3263

Merged
wschin merged 25 commits into
dotnet:masterfrom
wschin:support-image
May 28, 2019
Merged

Add DataView Type Register (supporting loading in-memory image and other in-memory custom types)#3263
wschin merged 25 commits into
dotnet:masterfrom
wschin:support-image

Conversation

@wschin

@wschinwschin commented Apr 9, 2019

Copy link
Copy Markdown
Contributor

Fix#3162 by considering image type in our bridge code. Also fix#3723, fix#3369, fix#3274, fix#445, fix#3460, fix#2121, fix#2495, fix#3784.

@wschinwschin self-assigned this Apr 9, 2019
@wschinwschin added the bug Something isn't working label Apr 9, 2019
@wschin
wschin requested review from Ivanidzo4ka and eerhardt and removed request for eerhardtApril 9, 2019 21:29
Comment threadtest/Microsoft.ML.Tests/ImagesTests.cs Outdated
Comment threadsrc/Microsoft.ML.Core/Microsoft.ML.Core.csproj Outdated
@codecov

codecovBot commented Apr 9, 2019

Copy link
Copy Markdown

Codecov Report

❗ No coverage uploaded for pull request base (master@51b10fc). Click here to learn what that means.
The diff coverage is 84.84%.

@@ Coverage Diff @@## master #3263 +/- ##
=========================================
Coverage ? 72.64% =========================================
Files ? 807 Lines ? 145126 Branches ? 16220 =========================================
Hits ? 105424 Misses ? 35281 Partials ? 4421
FlagCoverage Δ
#Debug72.64% <84.84%> (?)
#production68.19% <72.72%> (?)
#test88.93% <96.96%> (?)
Impacted FilesCoverage Δ
src/Microsoft.ML.DataView/ImageDataViewType.cs70.96% <ø> (ø)
...osoft.ML.Data/DataView/InternalSchemaDefinition.cs57.53% <100%> (ø)
src/Microsoft.ML.Data/Utils/ApiUtils.cs91.74% <100%> (ø)
src/Microsoft.ML.Data/Data/SchemaDefinition.cs70.93% <68%> (ø)
src/Microsoft.ML.Data/DataView/TypedCursor.cs83.38% <75%> (ø)
test/Microsoft.ML.Tests/ImagesTests.cs98.6% <96.96%> (ø)

Comment threadsrc/Microsoft.ML.DataView/ImageDataViewType.cs Outdated
Comment threadsrc/Microsoft.ML.Core/Microsoft.ML.Core.csproj
Comment threadsrc/Microsoft.ML.DataView/ImageDataViewType.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/Microsoft.ML.DataView.csproj Outdated
TomFinley
TomFinley previously requested changes Apr 10, 2019

@TomFinleyTomFinley left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Hi @wschin, thanks for working on this!

I do not consider it acceptable that our answer to the problem of what prediction engine does with its reflection based mechanism is that this core assembly has to have a direct, actual dependence on the type -- quite apart from the already excellent objections raised by @Ivanidzo4ka and @eerhardt, this is incompatible with IDataView's own principle as having an extensible type system.

I will post more details on what I'd consider at least a more correct alternative in the existing thread.

@wschinwschin changed the title Get back images as C# objectsDataView Type Register and Image Type RegisterMay 16, 2019
Comment threadsrc/Microsoft.ML.Data/Utils/ApiUtils.cs
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated

@eerhardteerhardt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

:shipit:

@wschinwschin changed the title DataView Type Register and Image Type RegisterAdd DataView Type Register (supporting loading in-memory image and other in-memory custom types)May 24, 2019
@yaeldekelyaeldekel mentioned this pull request May 28, 2019
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated
@artidoro

artidoro commented May 28, 2019

Copy link
Copy Markdown
Contributor

The PR looks great, but we will need a sample for this work. It's fine if it comes in another PR. Could you adapt a test and make it a sample? #Resolved

@artidoro

artidoro commented May 28, 2019

Copy link
Copy Markdown
Contributor

Also would it be useful to surface the DataViewTypeManager in MLContext? Or some of it's methods? #Pending

@wschin

Copy link
Copy Markdown
ContributorAuthor

For this advanced functionality, I'd keep it as is for now. If we add an alias for it, we will have to support it for years.


In reply to: 496640481 [](ancestors = 496640481)

@wschin

Copy link
Copy Markdown
ContributorAuthor

Added two samples.


In reply to: 496639086 [](ancestors = 496639086)

@artidoroartidoro left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

:shipit:

@wschin
wschin merged commit 02a857a into dotnet:masterMay 28, 2019
@wschin
wschin deleted the support-image branch May 28, 2019 23:17
@ADD-eNavarro

Copy link
Copy Markdown

Hi!
Is there a date for this to make it into ML.NET? I really could use this feature, but it seems a little stuck.
Thanks!

@johncalvowtg

Copy link
Copy Markdown

Hello!
We have actually the same problem here at Wisetech. I am trying to consume a TensorFlow model with multiple multi-dimensional inputs . Same message and no workaround on this.

I've tried some of your examples, but none of them worked for me.

Please let us know if you manage to fully support TensorFlow integration with ML.NET.

Regards,
John Calvo-Martinez Ph.D.

@jamsoft

Copy link
Copy Markdown

Phew, it's not just me going mad. I've been trying to use in memory images all day and have so far failed to get any of this to work. I have SO question open as well in case anyone wants to follow.

@Webreaper

Copy link
Copy Markdown

@jamsoft Did you remove the SO question? I'm also looking for an ML.Net sample for image classification that takes a bitmap directly rather than a folder of images. Seems sad that so many people are asking for this and MSFT's ML.Net team still haven't put together a useful sample.

@michaelgsharp

Copy link
Copy Markdown
Contributor

@Webreaper I thought we had a sample or documentation about it, but I just went and looked and couldn't find anything myself. I'll make sure we have something. The basic idea is that you have 2 pipelines. 1 pipeline loads the images and stops when it has the images loaded as bytes, and the second pipeline starts from where you would use these image bytes already.

I can' upload a zip file here since its not a github issue, but I do have a sample interactive notebook that shows it. If you can create a new issue I can get attach it for you there.

@Webreaper

Copy link
Copy Markdown

Thanks @michaelgsharp. Hopefully this should be sufficient? #5980

@ghostghost locked as resolved and limited conversation to collaborators Mar 22, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

bugSomething isn't working

Projects

None yet

13 participants

@wschin@glebuk@artidoro@ADD-eNavarro@johncalvowtg@jamsoft@Webreaper@michaelgsharp@Ivanidzo4ka@eerhardt@TomFinley@ericstj@shmoradims
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add DataView Type Register (supporting loading in-memory image and other in-memory custom types) - #3263

Merged
wschin merged 25 commits into
dotnet:masterfrom
wschin:support-image
May 28, 2019
Merged

Add DataView Type Register (supporting loading in-memory image and other in-memory custom types)#3263
wschin merged 25 commits into
dotnet:masterfrom
wschin:support-image

Conversation

@wschin

@wschinwschin commented Apr 9, 2019

Copy link
Copy Markdown
Contributor

Fix#3162 by considering image type in our bridge code. Also fix#3723, fix#3369, fix#3274, fix#445, fix#3460, fix#2121, fix#2495, fix#3784.

@wschinwschin self-assigned this Apr 9, 2019
@wschinwschin added the bug Something isn't working label Apr 9, 2019
@wschin
wschin requested review from Ivanidzo4ka and eerhardt and removed request for eerhardtApril 9, 2019 21:29
Comment threadtest/Microsoft.ML.Tests/ImagesTests.cs Outdated
Comment threadsrc/Microsoft.ML.Core/Microsoft.ML.Core.csproj Outdated
@codecov

codecovBot commented Apr 9, 2019

Copy link
Copy Markdown

Codecov Report

❗ No coverage uploaded for pull request base (master@51b10fc). Click here to learn what that means.
The diff coverage is 84.84%.

@@ Coverage Diff @@## master #3263 +/- ##
=========================================
Coverage ? 72.64% =========================================
Files ? 807 Lines ? 145126 Branches ? 16220 =========================================
Hits ? 105424 Misses ? 35281 Partials ? 4421
FlagCoverage Δ
#Debug72.64% <84.84%> (?)
#production68.19% <72.72%> (?)
#test88.93% <96.96%> (?)
Impacted FilesCoverage Δ
src/Microsoft.ML.DataView/ImageDataViewType.cs70.96% <ø> (ø)
...osoft.ML.Data/DataView/InternalSchemaDefinition.cs57.53% <100%> (ø)
src/Microsoft.ML.Data/Utils/ApiUtils.cs91.74% <100%> (ø)
src/Microsoft.ML.Data/Data/SchemaDefinition.cs70.93% <68%> (ø)
src/Microsoft.ML.Data/DataView/TypedCursor.cs83.38% <75%> (ø)
test/Microsoft.ML.Tests/ImagesTests.cs98.6% <96.96%> (ø)

Comment threadsrc/Microsoft.ML.DataView/ImageDataViewType.cs Outdated
Comment threadsrc/Microsoft.ML.Core/Microsoft.ML.Core.csproj
Comment threadsrc/Microsoft.ML.DataView/ImageDataViewType.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/Microsoft.ML.DataView.csproj Outdated
TomFinley
TomFinley previously requested changes Apr 10, 2019

@TomFinleyTomFinley left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Hi @wschin, thanks for working on this!

I do not consider it acceptable that our answer to the problem of what prediction engine does with its reflection based mechanism is that this core assembly has to have a direct, actual dependence on the type -- quite apart from the already excellent objections raised by @Ivanidzo4ka and @eerhardt, this is incompatible with IDataView's own principle as having an extensible type system.

I will post more details on what I'd consider at least a more correct alternative in the existing thread.

@wschinwschin changed the title Get back images as C# objectsDataView Type Register and Image Type RegisterMay 16, 2019
Comment threadsrc/Microsoft.ML.Data/Utils/ApiUtils.cs
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated

@eerhardteerhardt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

:shipit:

@wschinwschin changed the title DataView Type Register and Image Type RegisterAdd DataView Type Register (supporting loading in-memory image and other in-memory custom types)May 24, 2019
@yaeldekelyaeldekel mentioned this pull request May 28, 2019
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated
@artidoro

artidoro commented May 28, 2019

Copy link
Copy Markdown
Contributor

The PR looks great, but we will need a sample for this work. It's fine if it comes in another PR. Could you adapt a test and make it a sample? #Resolved

@artidoro

artidoro commented May 28, 2019

Copy link
Copy Markdown
Contributor

Also would it be useful to surface the DataViewTypeManager in MLContext? Or some of it's methods? #Pending

@wschin

Copy link
Copy Markdown
ContributorAuthor

For this advanced functionality, I'd keep it as is for now. If we add an alias for it, we will have to support it for years.


In reply to: 496640481 [](ancestors = 496640481)

@wschin

Copy link
Copy Markdown
ContributorAuthor

Added two samples.


In reply to: 496639086 [](ancestors = 496639086)

@artidoroartidoro left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

:shipit:

@wschin
wschin merged commit 02a857a into dotnet:masterMay 28, 2019
@wschin
wschin deleted the support-image branch May 28, 2019 23:17
@ADD-eNavarro

Copy link
Copy Markdown

Hi!
Is there a date for this to make it into ML.NET? I really could use this feature, but it seems a little stuck.
Thanks!

@johncalvowtg

Copy link
Copy Markdown

Hello!
We have actually the same problem here at Wisetech. I am trying to consume a TensorFlow model with multiple multi-dimensional inputs . Same message and no workaround on this.

I've tried some of your examples, but none of them worked for me.

Please let us know if you manage to fully support TensorFlow integration with ML.NET.

Regards,
John Calvo-Martinez Ph.D.

@jamsoft

Copy link
Copy Markdown

Phew, it's not just me going mad. I've been trying to use in memory images all day and have so far failed to get any of this to work. I have SO question open as well in case anyone wants to follow.

@Webreaper

Copy link
Copy Markdown

@jamsoft Did you remove the SO question? I'm also looking for an ML.Net sample for image classification that takes a bitmap directly rather than a folder of images. Seems sad that so many people are asking for this and MSFT's ML.Net team still haven't put together a useful sample.

@michaelgsharp

Copy link
Copy Markdown
Contributor

@Webreaper I thought we had a sample or documentation about it, but I just went and looked and couldn't find anything myself. I'll make sure we have something. The basic idea is that you have 2 pipelines. 1 pipeline loads the images and stops when it has the images loaded as bytes, and the second pipeline starts from where you would use these image bytes already.

I can' upload a zip file here since its not a github issue, but I do have a sample interactive notebook that shows it. If you can create a new issue I can get attach it for you there.

@Webreaper

Copy link
Copy Markdown

Thanks @michaelgsharp. Hopefully this should be sufficient? #5980

@ghostghost locked as resolved and limited conversation to collaborators Mar 22, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

bugSomething isn't working

Projects

None yet

13 participants

@wschin@glebuk@artidoro@ADD-eNavarro@johncalvowtg@jamsoft@Webreaper@michaelgsharp@Ivanidzo4ka@eerhardt@TomFinley@ericstj@shmoradims
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Add DataView Type Register (supporting loading in-memory image and other in-memory custom types) - #3263

Merged
wschin merged 25 commits into
dotnet:masterfrom
wschin:support-image
May 28, 2019
Merged

Add DataView Type Register (supporting loading in-memory image and other in-memory custom types)#3263
wschin merged 25 commits into
dotnet:masterfrom
wschin:support-image

Conversation

@wschin

@wschinwschin commented Apr 9, 2019

Copy link
Copy Markdown
Contributor

Fix#3162 by considering image type in our bridge code. Also fix#3723, fix#3369, fix#3274, fix#445, fix#3460, fix#2121, fix#2495, fix#3784.

@wschinwschin self-assigned this Apr 9, 2019
@wschinwschin added the bug Something isn't working label Apr 9, 2019
@wschin
wschin requested review from Ivanidzo4ka and eerhardt and removed request for eerhardtApril 9, 2019 21:29
Comment threadtest/Microsoft.ML.Tests/ImagesTests.cs Outdated
Comment threadsrc/Microsoft.ML.Core/Microsoft.ML.Core.csproj Outdated
@codecov

codecovBot commented Apr 9, 2019

Copy link
Copy Markdown

Codecov Report

❗ No coverage uploaded for pull request base (master@51b10fc). Click here to learn what that means.
The diff coverage is 84.84%.

@@ Coverage Diff @@## master #3263 +/- ##
=========================================
Coverage ? 72.64% =========================================
Files ? 807 Lines ? 145126 Branches ? 16220 =========================================
Hits ? 105424 Misses ? 35281 Partials ? 4421
FlagCoverage Δ
#Debug72.64% <84.84%> (?)
#production68.19% <72.72%> (?)
#test88.93% <96.96%> (?)
Impacted FilesCoverage Δ
src/Microsoft.ML.DataView/ImageDataViewType.cs70.96% <ø> (ø)
...osoft.ML.Data/DataView/InternalSchemaDefinition.cs57.53% <100%> (ø)
src/Microsoft.ML.Data/Utils/ApiUtils.cs91.74% <100%> (ø)
src/Microsoft.ML.Data/Data/SchemaDefinition.cs70.93% <68%> (ø)
src/Microsoft.ML.Data/DataView/TypedCursor.cs83.38% <75%> (ø)
test/Microsoft.ML.Tests/ImagesTests.cs98.6% <96.96%> (ø)

Comment threadsrc/Microsoft.ML.DataView/ImageDataViewType.cs Outdated
Comment threadsrc/Microsoft.ML.Core/Microsoft.ML.Core.csproj
Comment threadsrc/Microsoft.ML.DataView/ImageDataViewType.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/Microsoft.ML.DataView.csproj Outdated
TomFinley
TomFinley previously requested changes Apr 10, 2019

@TomFinleyTomFinley left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Hi @wschin, thanks for working on this!

I do not consider it acceptable that our answer to the problem of what prediction engine does with its reflection based mechanism is that this core assembly has to have a direct, actual dependence on the type -- quite apart from the already excellent objections raised by @Ivanidzo4ka and @eerhardt, this is incompatible with IDataView's own principle as having an extensible type system.

I will post more details on what I'd consider at least a more correct alternative in the existing thread.

@wschinwschin changed the title Get back images as C# objectsDataView Type Register and Image Type RegisterMay 16, 2019
Comment threadsrc/Microsoft.ML.Data/Utils/ApiUtils.cs
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated

@eerhardteerhardt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

:shipit:

@wschinwschin changed the title DataView Type Register and Image Type RegisterAdd DataView Type Register (supporting loading in-memory image and other in-memory custom types)May 24, 2019
@yaeldekelyaeldekel mentioned this pull request May 28, 2019
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated
@artidoro

artidoro commented May 28, 2019

Copy link
Copy Markdown
Contributor

The PR looks great, but we will need a sample for this work. It's fine if it comes in another PR. Could you adapt a test and make it a sample? #Resolved

@artidoro

artidoro commented May 28, 2019

Copy link
Copy Markdown
Contributor

Also would it be useful to surface the DataViewTypeManager in MLContext? Or some of it's methods? #Pending

@wschin

Copy link
Copy Markdown
ContributorAuthor

For this advanced functionality, I'd keep it as is for now. If we add an alias for it, we will have to support it for years.


In reply to: 496640481 [](ancestors = 496640481)

@wschin

Copy link
Copy Markdown
ContributorAuthor

Added two samples.


In reply to: 496639086 [](ancestors = 496639086)

@artidoroartidoro left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

:shipit:

@wschin
wschin merged commit 02a857a into dotnet:masterMay 28, 2019
@wschin
wschin deleted the support-image branch May 28, 2019 23:17
@ADD-eNavarro

Copy link
Copy Markdown

Hi!
Is there a date for this to make it into ML.NET? I really could use this feature, but it seems a little stuck.
Thanks!

@johncalvowtg

Copy link
Copy Markdown

Hello!
We have actually the same problem here at Wisetech. I am trying to consume a TensorFlow model with multiple multi-dimensional inputs . Same message and no workaround on this.

I've tried some of your examples, but none of them worked for me.

Please let us know if you manage to fully support TensorFlow integration with ML.NET.

Regards,
John Calvo-Martinez Ph.D.

@jamsoft

Copy link
Copy Markdown

Phew, it's not just me going mad. I've been trying to use in memory images all day and have so far failed to get any of this to work. I have SO question open as well in case anyone wants to follow.

@Webreaper

Copy link
Copy Markdown

@jamsoft Did you remove the SO question? I'm also looking for an ML.Net sample for image classification that takes a bitmap directly rather than a folder of images. Seems sad that so many people are asking for this and MSFT's ML.Net team still haven't put together a useful sample.

@michaelgsharp

Copy link
Copy Markdown
Contributor

@Webreaper I thought we had a sample or documentation about it, but I just went and looked and couldn't find anything myself. I'll make sure we have something. The basic idea is that you have 2 pipelines. 1 pipeline loads the images and stops when it has the images loaded as bytes, and the second pipeline starts from where you would use these image bytes already.

I can' upload a zip file here since its not a github issue, but I do have a sample interactive notebook that shows it. If you can create a new issue I can get attach it for you there.

@Webreaper

Copy link
Copy Markdown

Thanks @michaelgsharp. Hopefully this should be sufficient? #5980

@ghostghost locked as resolved and limited conversation to collaborators Mar 22, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

bugSomething isn't working

Projects

None yet

13 participants

@wschin@glebuk@artidoro@ADD-eNavarro@johncalvowtg@jamsoft@Webreaper@michaelgsharp@Ivanidzo4ka@eerhardt@TomFinley@ericstj@shmoradims
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Add DataView Type Register (supporting loading in-memory image and other in-memory custom types) - #3263

Merged
wschin merged 25 commits into
dotnet:masterfrom
wschin:support-image
May 28, 2019
Merged

Add DataView Type Register (supporting loading in-memory image and other in-memory custom types)#3263
wschin merged 25 commits into
dotnet:masterfrom
wschin:support-image

Conversation

@wschin

@wschinwschin commented Apr 9, 2019

Copy link
Copy Markdown
Contributor

Fix#3162 by considering image type in our bridge code. Also fix#3723, fix#3369, fix#3274, fix#445, fix#3460, fix#2121, fix#2495, fix#3784.

@wschinwschin self-assigned this Apr 9, 2019
@wschinwschin added the bug Something isn't working label Apr 9, 2019
@wschin
wschin requested review from Ivanidzo4ka and eerhardt and removed request for eerhardtApril 9, 2019 21:29
Comment threadtest/Microsoft.ML.Tests/ImagesTests.cs Outdated
Comment threadsrc/Microsoft.ML.Core/Microsoft.ML.Core.csproj Outdated
@codecov

codecovBot commented Apr 9, 2019

Copy link
Copy Markdown

Codecov Report

❗ No coverage uploaded for pull request base (master@51b10fc). Click here to learn what that means.
The diff coverage is 84.84%.

@@ Coverage Diff @@## master #3263 +/- ##
=========================================
Coverage ? 72.64% =========================================
Files ? 807 Lines ? 145126 Branches ? 16220 =========================================
Hits ? 105424 Misses ? 35281 Partials ? 4421
FlagCoverage Δ
#Debug72.64% <84.84%> (?)
#production68.19% <72.72%> (?)
#test88.93% <96.96%> (?)
Impacted FilesCoverage Δ
src/Microsoft.ML.DataView/ImageDataViewType.cs70.96% <ø> (ø)
...osoft.ML.Data/DataView/InternalSchemaDefinition.cs57.53% <100%> (ø)
src/Microsoft.ML.Data/Utils/ApiUtils.cs91.74% <100%> (ø)
src/Microsoft.ML.Data/Data/SchemaDefinition.cs70.93% <68%> (ø)
src/Microsoft.ML.Data/DataView/TypedCursor.cs83.38% <75%> (ø)
test/Microsoft.ML.Tests/ImagesTests.cs98.6% <96.96%> (ø)

Comment threadsrc/Microsoft.ML.DataView/ImageDataViewType.cs Outdated
Comment threadsrc/Microsoft.ML.Core/Microsoft.ML.Core.csproj
Comment threadsrc/Microsoft.ML.DataView/ImageDataViewType.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/Microsoft.ML.DataView.csproj Outdated
TomFinley
TomFinley previously requested changes Apr 10, 2019

@TomFinleyTomFinley left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Hi @wschin, thanks for working on this!

I do not consider it acceptable that our answer to the problem of what prediction engine does with its reflection based mechanism is that this core assembly has to have a direct, actual dependence on the type -- quite apart from the already excellent objections raised by @Ivanidzo4ka and @eerhardt, this is incompatible with IDataView's own principle as having an extensible type system.

I will post more details on what I'd consider at least a more correct alternative in the existing thread.

@wschinwschin changed the title Get back images as C# objectsDataView Type Register and Image Type RegisterMay 16, 2019
Comment threadsrc/Microsoft.ML.Data/Utils/ApiUtils.cs
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/TypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated

@eerhardteerhardt left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

:shipit:

@wschinwschin changed the title DataView Type Register and Image Type RegisterAdd DataView Type Register (supporting loading in-memory image and other in-memory custom types)May 24, 2019
@yaeldekelyaeldekel mentioned this pull request May 28, 2019
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated
Comment threadsrc/Microsoft.ML.DataView/DataViewTypeManager.cs Outdated
@artidoro

artidoro commented May 28, 2019

Copy link
Copy Markdown
Contributor

The PR looks great, but we will need a sample for this work. It's fine if it comes in another PR. Could you adapt a test and make it a sample? #Resolved

@artidoro

artidoro commented May 28, 2019

Copy link
Copy Markdown
Contributor

Also would it be useful to surface the DataViewTypeManager in MLContext? Or some of it's methods? #Pending

@wschin

Copy link
Copy Markdown
ContributorAuthor

For this advanced functionality, I'd keep it as is for now. If we add an alias for it, we will have to support it for years.


In reply to: 496640481 [](ancestors = 496640481)

@wschin

Copy link
Copy Markdown
ContributorAuthor

Added two samples.


In reply to: 496639086 [](ancestors = 496639086)

@artidoroartidoro left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

:shipit:

@wschin
wschin merged commit 02a857a into dotnet:masterMay 28, 2019
@wschin
wschin deleted the support-image branch May 28, 2019 23:17
@ADD-eNavarro

Copy link
Copy Markdown

Hi!
Is there a date for this to make it into ML.NET? I really could use this feature, but it seems a little stuck.
Thanks!

@johncalvowtg

Copy link
Copy Markdown

Hello!
We have actually the same problem here at Wisetech. I am trying to consume a TensorFlow model with multiple multi-dimensional inputs . Same message and no workaround on this.

I've tried some of your examples, but none of them worked for me.

Please let us know if you manage to fully support TensorFlow integration with ML.NET.

Regards,
John Calvo-Martinez Ph.D.

@jamsoft

Copy link
Copy Markdown

Phew, it's not just me going mad. I've been trying to use in memory images all day and have so far failed to get any of this to work. I have SO question open as well in case anyone wants to follow.

@Webreaper

Copy link
Copy Markdown

@jamsoft Did you remove the SO question? I'm also looking for an ML.Net sample for image classification that takes a bitmap directly rather than a folder of images. Seems sad that so many people are asking for this and MSFT's ML.Net team still haven't put together a useful sample.

@michaelgsharp

Copy link
Copy Markdown
Contributor

@Webreaper I thought we had a sample or documentation about it, but I just went and looked and couldn't find anything myself. I'll make sure we have something. The basic idea is that you have 2 pipelines. 1 pipeline loads the images and stops when it has the images loaded as bytes, and the second pipeline starts from where you would use these image bytes already.

I can' upload a zip file here since its not a github issue, but I do have a sample interactive notebook that shows it. If you can create a new issue I can get attach it for you there.

@Webreaper

Copy link
Copy Markdown

Thanks @michaelgsharp. Hopefully this should be sufficient? #5980

@ghostghost locked as resolved and limited conversation to collaborators Mar 22, 2022
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

bugSomething isn't working

Projects

None yet

13 participants

@wschin@glebuk@artidoro@ADD-eNavarro@johncalvowtg@jamsoft@Webreaper@michaelgsharp@Ivanidzo4ka@eerhardt@TomFinley@ericstj@shmoradims