Skip to main content
GameDev.net gamedev.net
🔒 Locked

Machine Learning in Graphics

Started by Thomas M Nov 8, 2011 at 10:30 PM 3 replies 1.9k views
Original Post
Thomas M
Thomas M
I'm taking a machine learning course this semester, and we have to do a final project at the end of the semester. The final project allows us to work in depth on a specific aspect of machine learning that we are interested in. I came up with the idea to do something computer graphics related, but haven't found anything good yet. I would appreciate some brain-storming action from your side. =)

Basically I'm just looking for some cool ideas or inspirations how to apply machine learning techniques to a computer graphics problem.Browsing the internet I found most topics related to this are about "synthesis-by-example" (given an exemplar, make more stuff similar to it, for example motion or texture synthesis).
Wandering Relic
Wandering Relic
You can apply machine learning to anything that requires optimization of a set of parameters or functions controlling the transformation of data. Generally, it's used in cases where searching the entire space of solutions has non-trivial complexity, and you simply want to find a good enough solution that isn't obvious.

I can think of at least one area within real-time computers graphics that might bear fruit. Occlusion culling often uses general purpose hard-coded heuristics to determine "good" objects or surfaces for use as occluders, and may rely on input from content designers or programmers to flag which objects should be used for occlusion or to generate acceptable bounding volumes or primitives to use when rendering into the occlusion buffer. Using machine learning, you could have the system do all of the hard work for you in determining good heuristics that are custom tailored for a specific scene, level, or sub-region/sector within a level, and for generating better occlusion geometry for static (occluder planes) or dynamic (optimal LOD for an occluder mesh) datasets, duration of time before reconsidering an object as an occluder in implementing temporal coherence, etc. There's probably an endless number of things you could optimize for.

A starting point would probably involve simulating the contribution of various objects as occluders across the different regions of a level as a preprocessing step, generating feature vectors that capture the camera position & orientation, a measure of contribution from objects into the occlusion buffer, perhaps some other information, and then performing clustering analysis of the feature vectors and optimizing for least amount of over-draw and least cost of performing the occlusion culling pass. Note that your feature vectors will be very large as they have to account for every possible occluder in a given level data set, and so you they will be n-dimensional where n is probably in the thousands or tens of thousands. You could probably implement a lot of this to run on a GPU using DirectCompute or OpenCL.

Alternatively, you could record a number play throughs and use the play-back for your simulation and analysis phase and combine the results. Think of it as profile-guided optimization for occlusion culling.

I'm not sure how much of this kind of stuff is already done in COTS occlusion systems like Umbra, but I seem to recall the original paper on it used simple heuristics and statistical geometric methods to generate occluder sets and the like.
cignox1
cignox1
Once I thought that it would have been nice to create a program capable of identifying the author of a painting, by teaching him to detect important features.

Could that fit your assignment?
Krypt0n
Krypt0n
it's quite commonly used for OCR, as scans are never 1:1 to the source, and sometimes you have fonts that are unkown, but as a human can read it, OCR software also tries to handle unknown fonts.

the ++ version would be captcha decoding, but that's challenging for sure.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.