Click here to Skip to main content
14,644,624 members
Rate this:
Please Sign up or sign in to vote.
See more:
def decode(self, conv_output, anchors, stride):
        """
        return tensor of shape [batch_size, output_size, output_size, anchor_per_scale, 5 + num_classes]
               contains (x, y, w, h, score, probability)
        """

        conv_shape       = tf.shape(conv_output)
        batch_size       = conv_shape[0]
        output_size      = conv_shape[1]
        anchor_per_scale = len(anchors)

        conv_output = tf.reshape(conv_output, (batch_size, output_size, output_size, anchor_per_scale, 5 + self.num_class))

        conv_raw_dxdy = conv_output[:, :, :, :, 0:2]
        conv_raw_dwdh = conv_output[:, :, :, :, 2:4]
        conv_raw_conf = conv_output[:, :, :, :, 4:5]
        conv_raw_prob = conv_output[:, :, :, :, 5: ]

        y = tf.tile(tf.range(output_size, dtype=tf.int32)[:, tf.newaxis], [1, output_size])
        x = tf.tile(tf.range(output_size, dtype=tf.int32)[tf.newaxis, :], [output_size, 1])

        xy_grid = tf.concat([x[:, :, tf.newaxis], y[:, :, tf.newaxis]], axis=-1)
        xy_grid = tf.tile(xy_grid[tf.newaxis, :, :, tf.newaxis, :], [batch_size, 1, 1, anchor_per_scale, 1])
        xy_grid = tf.cast(xy_grid, tf.float32)

        pred_xy = (tf.sigmoid(conv_raw_dxdy) + xy_grid) * stride
        pred_wh = (tf.exp(conv_raw_dwdh) * anchors) * stride
        pred_xywh = tf.concat([pred_xy, pred_wh], axis=-1)

        pred_conf = tf.sigmoid(conv_raw_conf)
        pred_prob = tf.sigmoid(conv_raw_prob)

        return tf.concat([pred_xywh, pred_conf, pred_prob], axis=-1)


What I have tried:

Converting object oriented code to c program is difficult for me. Someone please guide me
Posted
Updated 24-Dec-19 21:17pm
v2

1 solution

Rate this:
Please Sign up or sign in to vote.

Solution 1

Basically don't.
That code isn't particularly object oriented, but it does rely on a lot of Python framework features which aren't directly available in C. So to "convert the code" you'd have to start by replicating those features first, and that a lot of work.

Instead, work out what it's doing, and how it does it, and use that as a specification for your C code. It'll be a lot, lot quicker and easier than trying to convert it.
   
Comments
Thịnh Nguyễn Minh 25-Dec-19 3:31am
   
https://github.com/YunYang1994/tensorflow-yolov3/blob/master/core/yolov3.py
This is all the code I have and I want to rewrite the other python code into C code. There is really no way to convert that code to C code?

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)




CodeProject, 503-250 Ferrand Drive Toronto Ontario, M3C 3G8 Canada +1 416-849-8900 x 100