An End-To-End Trainable Method For Generating And Detecting Fiducial Markers