1. The goal is to use a neural network as a kind of locally sensitive hash for images. You can use a dataset of your choice.
You will need to first divide the images into non overlapping rectangular blocks as shown below. You can choose the width and height of the blocks. The neural network will take just 1 block as input and output a hash. You can choose how many bits the hash should be.
2. Entropy coding (assigning shorter codes to more common data) is the last stage of most compression algorithms. It would be amazing if we could perform further compression on top of the output of the entropy coding. The problem is that the output of most entropy coding looks like random noise. Therefore, it usually can’t be compressed further. The only part that is not random is the length. The length in bits is actually -log(probability of the data). This equation tells us that the length is inversely related to the probability. Therefore, we get shorter codes for the more common data. The shannon source coding theorem tells us that this equation means it is optimal assuming the probabilities are correct.
Binary codes correspond to binary trees where each bit tells you which branch you take.