The graded HW2 submissions can be found in mail box #263 (Daniel Carmon) at Schreiber.

Those who sent me online have a printed version of their HW there.

Also, several students who submitted the theoretical questions didn't submit the programming assignment (or at least the automatic tester didn't receive them).

Please check your graded work to see if I wrote you that your programming assignment wasn't received, and if so contact me at:

li.ca.uat.liam|adnomrac#li.ca.uat.liam|adnomrac

Thanks,

Daniel.

Some students claimed that when completing the unobserved pixels in the picture we need to consider only the frame pixels surrounding them, because it's a Markov Network and therefore the rest of the observed pixels are separated by that frame.

I don't understand why this is correct. according to that claim the same frame from two different pictures will give us the same completion - isn't that wrong? if not - why?

and if we do take in account some more far away pixels outside of the frame, won't we get more accurate and correct results, since we take in account more information about the picture?

]]>Is it over the values of a specific \ any neighbor j?

Is it over the values of all the neigbours of i? (is so, there is a missing outer sum over j\in N(i))

Thanks ]]>

I understand from the instruction that we need to go over all unobserved nodes and update all the out-going messages from them to their observed neighbors.

All the in-going messages to the unobserved nodes are simply the pairwise function where the "from" node is an observed pixel and the "to" node is the optional value of the unobserved node.

However this way the in-going messages are never updated, and the approximate assignment is dependent only on the in-going messages of the unobserved nodes.

How are the in-going messages updated? How do we use the updated out-going messages to approximate unobserved pixels?

Thanks ]]>

it makes sense since the pairwise pseudo-marginal is defined for variables with an edge between them (at least it seems that way from the definition)

thanks in advance!

]]>In the submission guidelines it is said that our code should be run by the command 'python mrf_completion.py -outfile'

1. What is the dash before outfile for? or is it just a typo?

2. and why does outfile need to be in '.png' format if the png suffix is added automatically in the provided skeleton?

Thanks!

]]>We understood that for every G we need to characterize a specific point in time for every iteration of message passing in which for every vertex the property in the question holds. Is it so?

Or is it possible that there is a potentially different point in time for every vertex? ]]>

" Here’s a simple one you can try: choose a certain order on the variables

(say row by row in the part of the image you want to complete), and then for each node update all

messages from it to its neighbors). "

Just want to make sure that I understand well.

The messages that are outgoing from observed pixels are always 1 (or some number that we generate randomly, but for simplicity assume that I chose 1), and we are calculating only the outgoing messages of unobserved pixels, and updating only those messages while iterating.

Then the influence of the observed pixels over the unobserved pixels messages will be only by the pairwise function and not by the outgoing messages (because they are always 1).

Correct?

I have a few of questions about the description of the LBP for image completion algorithm

1. What do you mean by fixing the values of the pixels that are observed?

I don't see where that could affect the propagated messages, since for every edge we are basically going over all possible assignment (0-255)

We thought about fixing the incoming message of observed pixels to 1 if the value is the actual value and 0 otherwise but that doesn't make sense since in that way only the nodes surrounding the unobserved nodes will have an effect on them.

My question is where can we use the fact that a node is an observed pixel when iterating and updating the messages? since the equations use only phi(xi,xj) which is not affected by the actual value of the pixel (it is just a distribution over all possible values).

2. Why is it suggested to go only over the unobserved nodes and update the messages that leave from them? their MAP value depends on their incoming messages and if we don't update the messages leaving the observed nodes, how will they affect the unobserved ones?

3. Since this is a loopy BP should we initialize all the messages with a certain value (like 0)? since every node depends on another one and in order to update a message between node i to node j we need the values of the incoming messages of node i. Should we assume at first that node j has no incoming messages if our first update is from node i to node j?

thanks in advance!

]]>ui also goes like that pie, so the both r equal, no? Regardless the fix point ]]>

Thanks.

]]>1. In equation (2), the expression in the product is m_ki (x_i). Is this x_i the same x_i we are maxing over?

2. As far as I understand, the predicted pixel values will only depend on the observed pixels neighboring unobserved pixels. Is that correct?

]]>as a MAX?

or is it a sum? ]]>

I'm not sure whether to update across all the edges at once, chose one node and update across all of its edges or on just one edge, or maybe you've meant to a different configuration?

Thanks!

]]>Is it the maximum valued pixel in the grid?

Thanks!

]]>