मैं टेन्सफोर्लो में एक अर्थपूर्ण विभाजन नेटवर्क को लागू करने पर काम कर रहा हूं, और मैं यह जानने का प्रयास कर रहा हूं कि प्रशिक्षण के दौरान लेबल की सारांश छवियां कैसे लिखें। मैं पास्कल वीओसी डेटासेट में उपयोग की जाने वाली class segmentation annotations पर समान शैली में छवियों को एन्कोड करना चाहता हूं।टेन्सफोर्लो: पास्कल वीओसी शैली छवि कैसे बनाएं
उदाहरण के लिए, मान लें कि मेरे पास एक नेटवर्क है जो 4 वर्गों के साथ 1 के बैच आकार पर ट्रेन करता है।
[[[0, 1, 3],
[2, 0, 1],
[3, 1, 2]]]
एनोटेट छवियों: नेटवर्क अंतिम भविष्यवाणियों को आकार [1, 3, 3, 4]
अनिवार्य रूप से मैं उत्पादन भविष्यवाणियों लेने के लिए और एक टेन्सर उत्पादन के प्रत्येक बिंदु पर सबसे अधिक संभावना क्लास वाली पाने के लिए argmin
के माध्यम से इसे चलाने के लिए चाहते हैं लेबल को एन्कोड करने के लिए 255 रंगों के रंग पैलेट का उपयोग करें।
[[ 0, 0, 0],
[128, 0, 0],
[ 0, 128, 0],
[128, 128, 0],
[ 0, 0, 128],
...
[224, 224, 192]]
मैं आकार [1, 3, 3, 3]
(एक 3x3 रंग छवि) के एक टेन्सर कैसे प्राप्त कर सकता है कि मूल्यों argmin
से प्राप्त का उपयोग कर रंग पैलेट में अनुक्रमित: मैं एक टेन्सर सभी रंग ट्रिपल युक्त है?
[[palette[0], palette[1], palette[3]],
[palette[2], palette[0], palette[1]],
[palette[3], palette[1], palette[2]]]
मैं आसानी से tf.py_func
में कुछ numpy और जनहित याचिका कोड लपेट सकता है, लेकिन अगर कोई इस परिणाम प्राप्त करने का एक शुद्ध Tensorflow तरीका है मैं सोच रहा हूँ।
संपादित करें: उन उत्सुक लोगों के लिए, यह समाधान है जो मुझे केवल नमस्ते का उपयोग करके मिला है। यह काफी अच्छी तरह से काम करता है, लेकिन मैं अभी भी tf.py_func
के उपयोग नापसंद:
import numpy as np
import tensorflow as tf
def voc_colormap(N=256):
bitget = lambda val, idx: ((val & (1 << idx)) != 0)
cmap = np.zeros((N, 3), dtype=np.uint8)
for i in range(N):
r = g = b = 0
c = i
for j in range(8):
r |= (bitget(c, 0) << 7 - j)
g |= (bitget(c, 1) << 7 - j)
b |= (bitget(c, 2) << 7 - j)
c >>= 3
cmap[i, :] = [r, g, b]
return cmap
VOC_COLORMAP = voc_colormap()
def grayscale_to_voc(input, name="grayscale_to_voc"):
return tf.py_func(grayscale_to_voc_impl, [input], tf.uint8, stateful=False, name=name)
def grayscale_to_voc_impl(input):
return np.squeeze(VOC_COLORMAP[input])