def __init__(self):
        super(self.__class__, self).__init__()

        # set target_names
        self.target_names = ['background'] + \
            [datum['name']
             for datum in jsk_apc2016_common.get_object_data()]
        n_class = len(self.target_names)
        assert n_class == 40

        # load model
        self.gpu = rospy.get_param('~gpu', 0)
        chainermodel = rospy.get_param('~chainermodel')
        self.model = FCN32s(n_class=n_class)
        S.load_hdf5(chainermodel, self.model)
        if self.gpu != -1:
            self.model.to_gpu(self.gpu)
        jsk_logwarn('>> Model is loaded <<')

        while True:
            self.tote_contents = rospy.get_param('~tote_contents', None)
            if self.tote_contents is not None:
                break
            logwarn_throttle(10, 'param ~tote_contents is not set. Waiting..')
            rospy.sleep(0.1)
        self.label_names = rospy.get_param('~label_names')
        jsk_logwarn('>> Param is set <<')

        self.pub = self.advertise('~output', Image, queue_size=1)
        self.pub_debug = self.advertise('~debug', Image, queue_size=1)