This is way overdue, but we've released CodeProject SenseAI Server.[^], Beta 1. Beta 2 is coming any day now, depending on Matthew's swearing and the amount of sleep I can get.
To back up a little:
At CodeProject we've been forever fascinated with the possibilities of AI. Dave has forever been the type of guy who will build, regardless of the technical obstacles, solutions that will make his life better. Matthew is up for anything as long as it involves learning and sharp, bleeding edges, and I'm addicted to data processing. Ryan (who is now Senior Content Strategist at ContentLab has a rich history in AI development and spent forever trying to get us up to speed with the latest trends and technologies in AI.
And we all found it insanely frustrating that at every step it was a mess of Terminal windows, hunting installers, reading the fine print, tweaking config files, ensuring you had just the right version of Python, except when you needed the other version of Python, and don't even get me started on library dependencies.
It often ended poorly so and we decided enough was enough and we would commit to creating a system that would allow the average developer - the one who's way too busy, with way too many things on their plate - to explore and have fun with and integrate AI into their programming life with zero fuss.
SenseAI is a standalone server you can install anywhere. (caveat: "anywhere" currently means a Windows machine, but with Release 1, due in a week or so, it'll be Windows, Linux, macOS, and anything that will take our Docker image). The code is all there for you to grab and dig through, and will build and run under VS Code.
How it works is you install it on your machine, start it up, and you have a simple little AI server that will happily run analysis on any image you throw at it using a simple REST API. We've included a very simple HTML page that demo's the current features. Face detection and recognition, scene detection and object detection are the current capabilities, but we'll be continually adding new features as we find them.
And "find" is the important point here. Our goal isn't to write AI modules from scratch. There are way too many people far smarter than us who are very good at that stuff. Our goal is to aggregate the best open source projects, wrap it all up in a safe, tested, consistent, not-breaking-because-you-forgot-an-environment-variable, documented and supported service with a single API.
The architecture is simple: There's a front end server that handles the API calls. This is a lightweight .NET app. The backend is made up of a collection of independent modules. These modules typically handle one AI task (eg object detection, sound analysis, etc). When you send a request to the server that request finds it way to the correct module, which processes it, and sends the result back to the server, and from there back to the caller of the Server's API. Each module is totally independent, can be written in any language that can run in the environment, and can use it's own AI models. As the system evolves and we come across modules that are better, faster, smaller, or more accurate, we'll swap out the previous modules for the updated modules with no change in the API. You'll just see a little notification on your server's dashboard letting you know there is new goodness to be downloaded.
We'll be publishing examples of modules we've built and added to demonstrate how we'll be including new modules, and we'll also be providing a developer SDK in multiple languages to make communication between the included modules and the server simple.
We're starting small, we have lots of rough edges, but we're committed to building something awesome here. We hope you can join us and help out.
Each year we tally the reputation points earned by those who spend their time answering questions in Quick Answers and the forums, and by those who share their code and hard fought knowledge through articles and tips.
It's these developers who make this community what it is and each year I am again humbled at the generosity, the depth of talent, and the endless patience in helping those new to the craft, or just new to a particular technology.
A heartfelt thanks go to our new batch of CodeProject MVPs for 2022. The Most Valuable Experts for helping answer questions, and our Most Valuable Authors for their incredible articles.
As part of our Diving Into AI that we've been doing at CodeProject, we found ourselves with two issues.
We didn't know Python anywhere near well enough
We didn't like any of the current Python language references. And there are lots out there.
So we made our own! Sure, it's repeating, sort of, what's already out there, and sure, it was a convenient excuse for massive procrastination when we should have been doing real work, but it was fun, and we now have a reference that we like, and that suits our short attention spans.
Plus, we got to work with @Marc-Clifton on this who did lots of the heavy lifting.
Writing the reference also helped with #1. It forced us to understand the language at a much deeper level than merely reading examples, or formulaic tutorials. It also forces you into all the nooks and crannies of a language. And there are some odd nooks and crannies.
It seems that the current state of AI is focused on the Scientists, not the Engineers. In other words, to use AI to do something like detect a package delivered to your front porch you need to understand Python, NumPy, Pandas, PyTorch, TorchVision, TensorFlow, Neural Networks and all the types of layers, Model Training, Transfer Learning, Calculus, Linear Regression, just to name a few.
To make matters worse, most of the books and articles I find seem to be geared to you getting advanced degrees in Math and Data Analysis.
I am an Engineer and Software Architect/Developer. I just want to pull in a package that either just works or helps me fall into the ‘Pit of Success’ while implementing the last mile. I do not want the users of my applications to have to suffer through complex and error prone installation and configuration. I do want easy configuration to tweak the application usage for specific optimizations for environments and use cases.
Granted, there are many repositories of Datasets, Neural Network implementations, Pre-Trained Models, but where is the tool that guides me in the selection of which to use for a particular use-case and hardware/OS combinations? Where is the package that provides or allows me easily to write a microservice for my Raspberry PI that, given a few if any pictures of raccoons, will signal my home automation system to turn on the sprinklers if a raccoon is on my garbage cans?
I have been looking at several open-source packages/repositories that attempt to tackle some aspect of this, but they are overly complex, difficult to build and test, huge, or lack extensibility.
As a result, I am looking at how I can leverage the vast collection of data, models, examples, and articles available and wrap up all the science into usable Lego® blocks to make using this amazing technology easy.
Stay tuned for ongoing progress reports, and the occasional rant, as we try and figure this out.
"Time flies like an arrow. Fruit flies like a banana."
This also made it great for Jupyter notebooks. And hacking together scripts to analyse data. And to perform operations on data. And to be the underpinning of the biggest paradigm change in computing, namely Artificial Intelligence.
See? The awkward introvert does come into his own eventually.
So we at CodeProject are finding ourselves surrounded by a sea of Python with no option but to hold our noses and jump right in.
As an ex-Environmental Engineer surrounded by FORTRAN writing physicists I still get the shivers when I see some of the Python code floating around. We can use more than 72 characters, guys, so please feel free not to name your variables x, y and z. But there's also a lot of amazing Python code out there. Incredible stuff.
This is the stuff we want to see more of so we're starting from basics and will be diving into Python, data analysis, and then some of the gnarlier Open Source Deep Learning and Artificial Intelligence packages available today. Our goal is to promote the knowledge of the field of AI but to do it by following the most treadworn path using Python. We're not trying to reinvent anything: rather, we want to present it back to the community in a form that's easily digested.
Right now we're most of the way through our initial offering which is the most basic Python Reference we could conceive. Short, code-first, simple examples, and an emphasis on explaining "why" instead of "what".
It'll be a work in progress but we hope to have the first version live before Halloween.
While you're waiting, make sure you be awesome when you code.
via Jeff Hadfield, who's at BUILD keeping an eye on things for The Code Project:
By now, and especially if you have been following @thecodeproject on Twitter, you’ve seen a lot of Tuesday’s Windows 8 developer preview news.
Microsoft billed this developer-focused launch as a “new opportunity for developers.” And that it is, but exactly what the opportunity is remains to be seen. To their credit, the Microsoft teams have certainly done a lot of work on building new UI foundations, making touch an equal partner with keyboard/mouse. And the new hardware is also impressive. But while the pieces are all there, many questions remain to be resolved between now and when Windows 8 finally ships (we’re guessing in about a year).
There’s plenty of coverage about the new UI, and a lot of it can be found on the official Windows sites. We’ve taken careful notes – and we’re happy to add any commentary if you’d like, but rather than rehash the #bldwin Twitter hashtag (re-hashtag?), a few words of perspective might be better.
Our friend David Platt reminded us of his recent MSDN Magazine article and emphasized his admonitions there – about making sure the war hasn’t moved to new fronts while Microsoft continues to fight the same battle in the same place. Has the market moved on? Maybe. Can Microsoft lead the market again? Maybe. The company has a strong history of letting others blaze the way and then stepping ahead, much like stepping in front of a parade already in process. (Which in turn reminds us of the final scenes of Animal House, but with less debauchery.)
Developer buzz is mixed – excitement about the opportunity, sure, but fears also about it being too late. Here’s the thing: Windows still has dominant market share worldwide. In today’s presentations, Microsoft claimed over 450 million Windows 7 licenses sold, making it – as of last Friday – more in use than Windows XP. That’s a lot of seats, and a lot of opportunity for line of business apps and consumer apps.
But many, including me, express some skepticism about how ubiquitous and affordable touch-based PCs will become in the short term. Will they be more than a niche product? Perhaps, but the iPad, for example, is still not affordable for most. Get a nice Windows 8 slate/convertible at the $400-$500 USD price point, though, by next fall, and you’ve got a winner.
Again: metric tonnes of great new features and tonnes of “goodness” included in the APIs and UI guidelines. We’re anxious to get to play with the bits. Unsure how they will play on today’s hardware systems – dev bits and the Windows 8 slates were not available for press, so we won’t be trying any apps on our own. Let us know how you fare.
Finally, a few useful articles: Sorry Apple, Windows 8 ushers in the post-post-PC era[^] The point here? That a capable computing device should be all things to all people, not a dumbed-down device that’s hard to do “real work” on. Agreed: I like my iPad, but as an authoring tool it’s a train wreck.
There’s also a nice post at the Windows Team blog that shows a bunch of the UI updates[^]. If you can’t spare the time to watch the keynote (two and a half hours, seriously), read this but grab a few minutes to see the UI in motion in one of the videos.
We were at Microsoft's BUILD conference keynote address today and had a chance to see (and tweet about) some of the features revealed for Windows 8. Here's a rundown of the highlights:
Starting out, Steve Sinofsky discussed WIndows 8 on ARM processors, not that it's "equally at home on ARM and x86". Hardware graphics acceleration is "baked in" to the OS.
As you've probably already heard - it wasn't a secret going into BUILD - the Metro UI introduced with Windows Phone 7 is being adopted in Windows 8. The Metro-style even extends to the remote desktop app, which supports remote touch.
Of course, you're probably interested in the developer side of things. To paraphrase a tweet from @DavidJKelley: programming becomes a life style choice in Windows 8 - HTML5, Silverlight, C++/XAML its all good. The new version of Expression Blend will now work with HTML5/CSS as well as XAML, and they demo'd converting a Silverlight app to a Win8 app by just changing some using statements.
Developers also now have acces to SkyDrive access just like local file system through APIs.
There's a lot more, and we'll be covering much of it in the Daily Insider[^] tomorrow, so make sure you're subscribed.
Finally, if you're ready to play, you can get your Widows 8 dev preview tonight at dev.windows.com. No activation needed (though no support provided, either).
Since The Code Project's privacy policies comply with the strict eTrust rules, we are now eTrust certified. This puts a strong emphasis on the fact that, when you become a member of The Code Project or subscribe to one of our email newsletters, you know how we use your presonal information and can trust we follow our rules and the guidelines established by eTrust.
Over the next few weeks we're going to be posting a series of blogs outlining what we're up to (and the how and why) to give you more insight into what goes on behind the large orange doors of CodeProject central.
Last Visit: 31-Dec-99 19:00 Last Update: 2-Feb-22 5:47