Hacker News new | past | comments | ask | show | jobs | submit login
UnrealCV (unrealcv.github.io)
242 points by sytelus on Sept 14, 2016 | hide | past | favorite | 44 comments



Aww, I don't get to create a walkthrough of my resume in Unreal? I'd love to let recruiters shoot my bosses.

(nevermind that the last Unreal I played was in 1998.)


Hahaha thought the same, some kind of 3d-ish resume.


I could actually make this, and it sounds like a cool idea. But I'm wary about putting the time into it.

My concern is how many recruiters would actually download and run a 1 or 2 GB application simply to see my resume, when they instead could visit my website and watch some quick videos.

My guess? None.


there's an experimental HTML5 feature so you could ostensibly embed it online.


This is a great example of how we (collectively) are using virtual worlds as "dreams" for Deep learning.

In the Deep Vision world we as a group are trying to segment, classify and reinforce our NN training on labeled real world data. The challenge is, it's a very manual process to label data - specifically images. The more that we can do inside the computer, for example automatically labeling pixels inside an image, without having to acquire and label real world data (or making it easier to do with real world data) the easier and faster training becomes that can be applied to real world use cases.

The trick is making the virtual world match the real world as closely as possible so that the nets we make are accurate representations of real world scenarios.


In order to transfer learnings from virtual worlds to the real world more efficiently, I imagine a module that translates real world footed to an abstract representation that is the same as for rendered footage.

In other words, you would train a NN on input from a footage of a walkthrough of a real building to output rendered footage from the same path (3D data from architects is already there). The middle layer of this quasi autoencoder then is the basis to train fully simulated tasks, e.g. autonomous vehicles. In a way, it would be similar to colorization of b/w footage. Would that scale training data?


Yea, I mean that is basically what we do with our home furnishings app - except we have to SFM to build the models.

The challenge is labeling - or autolabeling pixels.

One thing we are trying to work out is how do you label and build nets on volumes - rather than just pixels? I'm thinking it's going to be a magnitude harder.


It's not just for deep learning, it's for any computer vision research.

Synthetic datasets have been used in the past too, but this makes it much more accessible.


Indeed...

However CV is becoming more and more Deep Net based.


I was surprised, since I didn't think it would be realistic enough for this purpose, but Grand Theft Auto V is being used in this manner to train self-driving cars.

https://www.technologyreview.com/s/602317/self-driving-cars-...


I find this incredibly interesting. Do you have any more information on the subject you can point me to?


Best thing is to probably search around for "Synthetic Training"

Here are two examples of some of the research done in this area:

http://www.cv-foundation.org/openaccess/content_iccv_2015/pa...

https://arxiv.org/pdf/1503.03163.pdf


I created a project https://github.com/qiuwch/synthetic-computer-vision trying to summarize works that used synthetic data for computer vision. Might be worth to have a look.


You might want to add the ICL-NUIM dataset for SLAM/Visual Odometers: https://www.doc.ic.ac.uk/~ahanda/VaFRIC/iclnuim.html


I was hoping that this would be someone's really cool resume, but this is interesting, nonetheless.


Same, I expected it to be someones resume built in the unreal engine.


Was actually hoping for an alternative to OpenCV that wasn't created in the 90s.


Dlib has a decent set of features, a few even better to OpenCV in my opinion.

Though, at the end of the day, there is no reason why you can't use both.


libccv perhaps?


What problems do you see with opencv?


Nothing, actually, it's a quality library, just old.

I can think of a few algorithms that have changed or been created since the 1990s so I have to assume there's something that can be done to optimize it.

There's also a severe lack of "in-browser" CV solutions (which could be fun), instead opting for binding OpenCV in the server-side.


Same here. I was thinking of how long it would take us before the inflation in fancy CVs and resumés would force recruitment agencies to invest in rendering farms and full-body VR suits in order to read job applications.


I don't mean to criticise you personally, because I have done the same thing, but: Comments about what someone thought the title meant are very common and not interesting in any way.


I disagree. Most of the reason that people click on anything on this site is directly because of the title, so if I have particular expectations that the title fails to meet, then it's fair game for commenting. I don't think it's fair to assert that what you find common and uninteresting is irrelevant to someone else.


Can someone explain what this is for?

Is it so that computer vision researchers can create scenes in UE4 that can then be fed into their application?


You could use it to say, auto create large labeled data sets of images and their corresponding depth maps. Or generate large labeled data sets of objects and their segmentation masks. Or for training an autonomous agent (say self driving car) in a simulation environment


Exactly. That's the goal for this project.


Many thanks for your work, will be putting it to use! Please consider integrating it with https://gym.openai.com/ for easy reinforcement learning tasks.

Some similar efforts (though not with open source engines)

http://download.visinf.tu-darmstadt.de/data/from_games/

https://arxiv.org/abs/1608.01745


Yep, possibly. This approach has been successfully exploited in real-time SLAM for instance [1][2][3]

[1]http://link.springer.com/chapter/10.1007%2F978-3-642-33786-4... [2]http://www.doc.ic.ac.uk/~ahanda/VaFRIC/iclnuim.html [3]http://robotvault.bitbucket.org/


I thought about something like this for autonomous cars. The game engine could simulate all the sensors in a car. Then it would be possible to use this as training data. Would be fun to create a racing game out of it to let different algorithm compete against each other. Does this already exist? Google should have something like this, but probably not freely available.


AdasWorks is doing this, check the videos 'Data Generation Tool - Annotation' and 'Real-time Data Simulator' towards the bottom of this article (text is in Hungarian): http://index.hu/tech/2016/09/13/obudan_epul_az_autoipar_noki...


This is a brilliant idea, IMO, and a real game changer (in principle, not necessarily tied to the implementation). Without this, CV problems are largely only limited by how much data you can get. If you can simulate arbitrary scene configurations it's now possible to solve almost any non-human CV problem, even ones with sparse data.

For example, in security applications you have basically zero data on the sorts of anomalous events you want to trigger on. If you can simulate example cases of those things that means you can actually start applying supervised machine learning.


Many researchers have done interesting work using synthetic data (a lot of them are mentioned in this post). This tool just tries to make the creation of virtual world (which can be used by computer vision) easier.


Does anybody know if there's a plugin for unreal, like this, but supports creating geometry inside the game?

If not, is there a way of generating levels with code?


I don't think the plugin needs to directly support those features, as they are already in the engine natively.

The engine supports generating meshes dynamically at runtime: https://wiki.unrealengine.com/Procedural_Mesh_Generation

It is also fairly easy to generate random or pseudo random levels using blueprint (Unreal's visual scripting API) or C++

If you have any other questions I'd be happy to help.


Thanks for your response, great info.

The reason I ask is that I have a large dataset that I would like to visualize.

The ideal situation would be: I could use python to create a giant flat plane, and then iterate over the dataset to generate the level (which initially would just be quads on the 2d plane).

The dataset would be too large to do in-engine in realtime, and the quads are static - I would like to generate the level as a 1 off process, and then have Unreal do any optimisations that it can by "compiling" the level (e.g. frustum culling, quad tree calculation etc) I might have some of those optimizations wrong since my knowledge of engines is still stuck in the Quake 1 era, but you get the gist :)

Do you think this is possible? If this tech doesn't exist, I would pay someone to develop it for me....


anything is possible :)

How many total datapoints are you trying to represent at once, ballpark? My first instinct is that it would probably be most efficient to feed the data into Unreal and build the physical representation there VS importing a large monolithic 3D model, because then you could make use of instancing, distance culling, etc. This would also mean you could animate the objects separately as well, and manipulate scale, color and the like in realtime.

Again, probably depends heavily on the specifics. In general though, modern gaming GPU's can handle just an insane number of polygons so either way, you should be able to represent a ton of datapoints.

As far as getting data into the engine, it supports .csv importing where you can define your own row types etc: https://docs.unrealengine.com/latest/INT/Gameplay/DataDriven...

I believe there's also a SQL lite support module for the engine as well, if you want to deal with really massive sets of data, though the documentation there is sparse.

My contact info is in my profile, feel free to hit me up if you have any other questions, happy to help.


how do you want to create geometry? like loading an obj file and change its position? Unreal.js might worth a try.


This would be cool if openai would participate in it.


Anyone know of something similar for Unity? Unity has a bit of a steep learning curve of you want to do stuff like importing external data and working with outside programs


The CVC lab and Virtual KITTI use Unity in their projects. They might have some internal tools. The advantage of UE4 is open-source, so that we can fully understand what the engine is doing.


Love it. Anybody use unreal engine with OpenAI gym yet?


I, like many others most likely, thought this was gonna be a cool way to present your resume, or someone with a demo of theirs in Unreal Engine... Still, I was not disappointed by the plugin.


I thought this was going to be Unreal Curriculum Vitae, and it was going to be a playable resumé. I'm slightly disappointed.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: