Mam autodenoder, który pobiera obraz jako dane wejściowe i tworzy nowy obraz jako wynik.Rekonstrukcja obrazu po użyciu funkcji extract_image_patches
Obraz wejściowy (1x1024x1024x3) jest dzielony na łatki (1024x32x32x3) przed dostarczeniem do sieci.
Po uzyskaniu danych wyjściowych, również partii łat wielkości 1024x32x32x3, chcę odtworzyć obraz o wymiarach 1024x1024x3. Pomyślałem, że mam to sussed przez proste przekształcenie, ale oto co się stało.
Po pierwsze, obraz jako przeczytane przez Tensorflow:
I połatany obraz z następującego kodu
patch_size = [1, 32, 32, 1]
patches = tf.extract_image_patches([image],
patch_size, patch_size, [1, 1, 1, 1], 'VALID')
patches = tf.reshape(patches, [1024, 32, 32, 3])
Oto kilka plastrów z tego obrazka:
Ale to jest, gdy przekształcam dane tej poprawki z powrotem w n obraz, że rzeczy mają kształt gruszki.
reconstructed = tf.reshape(patches, [1, 1024, 1024, 3])
converted = tf.image.convert_image_dtype(reconstructed, tf.uint8)
encoded = tf.image.encode_png(converted)
W tym przykładzie, operacja nie została wykonana między łatanie i odbudowę. Zrobiłem version of the code, którego możesz użyć do przetestowania tego zachowania. Aby go użyć, należy wykonać:
echo "/path/to/test-image.png" > inputs.txt
mkdir images
python3 image_test.py inputs.txt images
Kod uczyni jeden obraz wejściowy, jeden plaster obrazu i jednego obrazu dla każdego z 1024 plastrów każdego obrazu wejściowego, więc wypowiedzieć się linie, które tworzą wejście i obrazy wyjściowe, jeśli chodzi tylko o zapisanie wszystkich poprawek.
Ktoś proszę wyjaśnić, co się stało :(
CJxD, rzucić okiem na moją odpowiedź. Możesz wydrukować łatki i zrekonstruować je w pierwszej części, aby zobaczyć błąd, który wystąpił w twoim kodzie. Mam nadzieję, że moja odpowiedź ci pomoże. – hars
"że rzeczy mają kształt gruszki". Pożyczę to wyrażenie! –