3,072 karma · joined June 28, 2013
---
X-Maps: Using a tiny laser projector and an event camera to estimate depth at 60 Hz on a laptop CPU. The algorithm is using only the time stamps of when the laser passes over the scene, not its color or intensity, so you can project any content you like. Fun for AR demos!
https://fraunhoferhhi.github.io/X-maps/
---
Self-Organizing Gaussian Grids: 3D data is awkward to compress. But there's plenty of solutions for compressing 2D data (images!). So let's organize our 3D data into a 2D grid, where grid neighbors are also close in 3D. That's a hard problem, but we can leverage novel assignment algorithms with GPU power for parallelizing that, to get the sorting done in a few seconds.
https://fraunhoferhhi.github.io/Self-Organizing-Gaussians/
---
https://www.3dgs.zip/ resources on 3D Gaussian Splatting from our research group.
https://survey.3dgs.zip/ - a comparison of different compression methods for 3D Gaussian Splatting scenes.
- Interpupillary Distance (IPD) adjustment range of 58 to 72mm
- E Ink 1.3” displays
- 256x256 per eye resolution
- Side-lit with 3000K LEDs
- Circular polarizers and transflective films
In practice, there's already a shortage of simple parking space for trucks on break along motorways. It'll be quite difficult to quickly build out a network of chargers that supply > 1 MW per truck, for many trucks at a time, all over the place.
[0]: https://youtu.be/AdgcShJJaBc
[1]: https://trans.info/en/more-aerodynamic-truck-cabins-come-to-...
edit: information on the new one can be found in the press release [0]:
- 600 kWh LFP battery
- 500 km range
- 400 kW CCS charging
- later: megawatt charging, 20 to 80 % in 30 minutes
[0]: https://media.daimlertruck.com/marsMediaSite/en/instance/ko/...
Playing the game where you have to convince the LLM to spit out the secret password[0] was great training for this content policy dance with DALL·E. Isn't it great - even though the machine is now performing the handicraft, you can still feel creative. Not by creating art yourself, but by finding new workarounds around the man-made content policy limitations.
Explaining this work and use cases can sometimes be a bit of a struggle. Maybe if “ambient computing” is established as a widely known buzzword, imma have to steal it to make that part of the job a little easier. Until now I was mostly going with mixed reality.
This leads to this weird situation where “ein Paar Socken” is exactly two socks, but “ein paar Socken” can be a few socks, like 2-7. The pronunciation is exactly the same, and both versions are in common use.
And the ability ingest images was a highlight and all the hype of the GPT-4 announcement back in March: https://openai.com/research/gpt-4
NMI skimage: ~30 seconds, 95% accuracy
NMI numba *: ~0.6 seconds, 95% accuracy
Here's the code, courtesy of ChatGPT: @njit(cache=True)
def compute_joint(img1, img2):
stacked = 2 * img1.ravel() + img2.ravel()
return np.bincount(stacked, minlength=4).reshape(2, 2)
@njit(cache=True)
def entropy(counts, total):
# Convert counts to probabilities
p = counts / total
# Only calculate for non-zero entries to avoid log(0)
return -np.sum(p[p > 0] * np.log2(p[p > 0]))
@njit(cache=True)
def normalized_mutual_information(img1, img2):
joint_counts = compute_joint(img1, img2)
total_pixels = 28*28
# Marginal counts
c1 = np.sum(joint_counts, axis=1)
c2 = np.sum(joint_counts, axis=0)
# Compute entropies directly from counts
h1 = entropy(c1, total_pixels)
h2 = entropy(c2, total_pixels)
joint_entropy = entropy(joint_counts.flatten(), total_pixels)
mutual_info = h1 + h2 - joint_entropy
return 2 * mutual_info / (h1 + h2)> On average, once every three months, there's a startup that makes a thing that they say is going to be amazing, and it's just PivotTables. They're like, "It works with Excel, and it does this amazing consolidation, and slicing and dicing of all your data, and it's amazing, and we're going to make a startup. I'm going to sell this for four hundred ninety-five dollars." And that happens at least once every three months. The trouble is, the VCs usually know about PivotTables.
Of course this product goes a little further, making suggestions what columns to analyze and chart with an LLM. But it's quite funny to me that this Microsoft Research product is reinventing the PivotTable (+PivotChart) part with Python and Pandas.
[0]: https://youtu.be/0nbkaYsR94c?si=kkfFHZ_fyGmG3Lnj&t=2988
Again, I would encourage you to read the motivation section of the PEP, which shows a multitude of frustrations with the current state. The issue is subtle enough that I'm struggling to summarize it in a single sentence.
I warmly recommend reading the motivation section of the PEP. It is incredibly well written, quoting issues from PyTorch, scikit and NumPy:
However, consider parallel data processing, a task I face so often in computer vision. In C++, I can slap a `pragma omp parallel for` onto a for loop processing a list of images/videos/meshes/csvs, increasing the speed of this section of the program by the number of CPU cores. I do this when the problem is well defined (one input, one output each), and it hasn't blown up in my face once. In Python, on the other hand, it feels cumbersome when spinning up worker processes for such tasks, not to mention harder to debug. For this kind of work, removing the GIL would be a massive relief.
It's good that people are highlighting the issues. But to add my weight to the scale, the GIL is the main barrier in Python to stand in my way to speed up my programs. So I'm very happy that they're investing their resources to build a proper way of doing thread-parallelism.
There's a book (https://metalbyexample.com/the-book/), but the author has put up a note that it's quite out of date. It seems the most up-to-date information is available in the WWDC videos (regarding e.g. Metal 3), but I'd really prefer something written. And Apple's documentation reads more like a reference material and is quite confusing when starting out.
Maybe I should have kept my expectations in check, considering not many labs will have the setup ready to go, let alone have the inclination to dabble with it. But that was a step I didn't consciously take.
There's an uncanny silence from the world when you've thrown so much of yourself into a project, and you're the only one to care about it. It really shouldn't catch you off guard if you're thinking about it rationally, especially if you're not regularly communicating about the project for more people to notice it. But it still doesn't feel great.