I have downloaded a code of FCN for image segmentation and it ran well. Now I want to add a rnn layer attempting to refine the result according to the work "ReSeg: A Recurrent Neural Network-Based Model for Semantic Segmentation". My code shows as follows:
This part is for the inference:
def inference(image, keep_prob):
"""
Semantic segmentation network definition
:param image: input image. Should have values in range 0-255
:param keep_prob:
:return:
"""
print("setting up vgg initialized conv layers ...")
#model_data = utils.get_model_data(FLAGS.model_dir, MODEL_URL)
model_data = scipy.io.loadmat("H:/Deep Learning/FCN.tensorflow-master/imagenet-vgg-verydeep-19.mat")
mean = model_data['normalization'][0][0][0]
mean_pixel = np.mean(mean, axis=(0, 1))
weights = np.squeeze(model_data['layers'])
processed_image = utils.process_image(image, mean_pixel)
with tf.variable_scope("inference"):
image_net = vgg_net(weights, processed_image)
conv_final_layer = image_net["conv5_3"]
pool5 = utils.max_pool_2x2(conv_final_layer)
W6 = utils.weight_variable([7, 7, 512, 4096], name="W6")
b6 = utils.bias_variable([4096], name="b6")
conv6 = utils.conv2d_basic(pool5, W6, b6)
relu6 = tf.nn.relu(conv6, name="relu6")
if FLAGS.debug:
utils.add_activation_summary(relu6)
relu_dropout6 = tf.nn.dropout(relu6, keep_prob=keep_prob)
W7 = utils.weight_variable([1, 1, 4096, 4096], name="W7")
b7 = utils.bias_variable([4096], name="b7")
conv7 = utils.conv2d_basic(relu_dropout6, W7, b7)
relu7 = tf.nn.relu(conv7, name="relu7")
if FLAGS.debug:
utils.add_activation_summary(relu7)
relu_dropout7 = tf.nn.dropout(relu7, keep_prob=keep_prob)
W8 = utils.weight_variable([1, 1, 4096, NUM_OF_CLASSESS], name="W8")
b8 = utils.bias_variable([NUM_OF_CLASSESS], name="b8")
conv8 = utils.conv2d_basic(relu_dropout7, W8, b8)
# annotation_pred1 = tf.argmax(conv8, dimension=3, name="prediction1")
# now to upscale to actual image size
deconv_shape1 = image_net["pool4"].get_shape()
W_t1 = utils.weight_variable([4, 4, deconv_shape1[3].value, NUM_OF_CLASSESS], name="W_t1")
b_t1 = utils.bias_variable([deconv_shape1[3].value], name="b_t1")
conv_t1 = utils.conv2d_transpose_strided(conv8, W_t1, b_t1, output_shape=tf.shape(image_net["pool4"]))
#fuse_1 = tf.add(conv_t1, image_net["pool4"], name="fuse_1")
deconv_shape2 = image_net["pool3"].get_shape()
W_t2 = utils.weight_variable([4, 4, deconv_shape2[3].value, deconv_shape1[3].value], name="W_t2")
b_t2 = utils.bias_variable([deconv_shape2[3].value], name="b_t2")
conv_t2 = utils.conv2d_transpose_strided(conv_t1, W_t2, b_t2, output_shape=tf.shape(image_net["pool3"]))
#fuse_2 = tf.add(conv_t2, image_net["pool3"], name="fuse_2")
shape = tf.shape(image)
deconv_shape3 = tf.stack([shape[0], shape[1], shape[2], NUM_OF_CLASSESS])
W_t3 = utils.weight_variable([16, 16, NUM_OF_CLASSESS, deconv_shape2[3].value], name="W_t3")
b_t3 = utils.bias_variable([NUM_OF_CLASSESS], name="b_t3")
conv_t3 = utils.conv2d_transpose_strided(conv_t2, W_t3, b_t3, output_shape=deconv_shape3, stride=8)
/////////////////////////////////////////////////////this is from where i added the rnn
shape_5 = tf.shape(image)
W_a = 224
H_a = 224
p_size_a = NUM_OF_CLASSESS
# x = tf.reshape(conv_t1, [shape_5[0],H_a,W_a, p_size_a])
x = tf.transpose(conv_t3, perm=[0,2,1,3])
x = tf.reshape(x,[-1,H_a,p_size_a])
mat = tf.unstack(x, H_a, 1)
lstm_fw_cell = rnn.BasicLSTMCell(N_HIDDEN, forget_bias=1.0)
lstm_bw_cell = rnn.BasicLSTMCell(N_HIDDEN, forget_bias=1.0)
#with tf.variable_scope('rnn1_1'):
try:
outputs, _, _ = rnn.static_bidirectional_rnn(lstm_fw_cell, lstm_bw_cell, mat,
dtype=tf.float32,scope='rnn1_1')
except Exception: # Old TensorFlow version only returns outputs not states
outputs = rnn.static_bidirectional_rnn(lstm_fw_cell, lstm_bw_cell, mat,
dtype=tf.float32)
outputs1 = tf.reshape(outputs,[H_a, shape_5[0], W_a, 2 * N_HIDDEN])
outputs1 = tf.transpose(outputs1,(1,0,2,3))
x_1 = tf.reshape(outputs1,[-1,W_a,2 * N_HIDDEN])
mat_1 = tf.unstack(x_1, W_a, 1)
lstm_lw_cell = rnn.BasicLSTMCell(N_HIDDEN, forget_bias=1.0)
lstm_rw_cell = rnn.BasicLSTMCell(N_HIDDEN, forget_bias=1.0)
#with tf.variable_scope('rnn1_2'):
try:
outputs2, _, _ = rnn.static_bidirectional_rnn(lstm_lw_cell, lstm_rw_cell, mat_1,
dtype=tf.float32,scope = 'rnn1_2')
except Exception: # Old TensorFlow version only returns outputs not states
outputs2 = rnn.static_bidirectional_rnn(lstm_lw_cell, lstm_rw_cell, mat_1,
dtype=tf.float32)
outputs2 = tf.reshape(outputs,[W_a, shape_5[0], H_a, 2 * N_HIDDEN])
outputs2 = tf.transpose(outputs2,(1,2,0,3))
///////////////////////////////////////////////////till here
annotation_pred = tf.argmax(outputs2, dimension=3, name="prediction")
return tf.expand_dims(annotation_pred, dim=3), outputs2
and this part is for the training:
def train(loss_val, var_list):
optimizer = tf.train.AdamOptimizer(FLAGS.learning_rate)
grads = optimizer.compute_gradients(loss_val, var_list=var_list)
if FLAGS.debug:
# print(len(var_list))
for grad, var in grads:
utils.add_gradient_summary(grad, var)
return optimizer.apply_gradients(grads)
def main(argv=None):
keep_probability = tf.placeholder(tf.float32, name="keep_probabilty")
image = tf.placeholder(tf.float32, shape=[None, IMAGE_SIZE, IMAGE_SIZE, 3], name="input_image")
annotation = tf.placeholder(tf.int32, shape=[None, IMAGE_SIZE, IMAGE_SIZE, 1], name="annotation")
pred_annotation, logits = inference(image, keep_probability)
tf.summary.image("input_image", image, max_outputs=2)
tf.summary.image("ground_truth", tf.cast(annotation, tf.uint8), max_outputs=2)
tf.summary.image("pred_annotation", tf.cast(pred_annotation, tf.uint8), max_outputs=2)
loss = tf.reduce_mean((tf.nn.sparse_softmax_cross_entropy_with_logits(logits=logits,
labels=tf.squeeze(annotation, squeeze_dims=[3]),
name="entropy")))
tf.summary.scalar("entropy", loss)
trainable_var = tf.trainable_variables()
if FLAGS.debug:
for var in trainable_var:
utils.add_to_regularization_and_summary(var)
train_op = train(loss, trainable_var)
print("Setting up summary op...")
summary_op = tf.summary.merge_all()
print("Setting up image reader...")
train_records, valid_records = scene_parsing.read_dataset(FLAGS.data_dir)
print(len(train_records))
print(len(valid_records))
print("Setting up dataset reader")
image_options = {'resize': True, 'resize_size': IMAGE_SIZE}
if FLAGS.mode == 'train':
train_dataset_reader = dataset.BatchDatset(train_records, image_options)
validation_dataset_reader = dataset.BatchDatset(valid_records, image_options)
sess = tf.Session()
print("Setting up Saver...")
saver = tf.train.Saver()
summary_writer = tf.summary.FileWriter(FLAGS.logs_dir, sess.graph)
sess.run(tf.global_variables_initializer())
ckpt = tf.train.get_checkpoint_state(FLAGS.logs_dir)
if ckpt and ckpt.model_checkpoint_path:
saver.restore(sess, ckpt.model_checkpoint_path)
print("Model restored...")
if FLAGS.mode == "train":
for itr in xrange(MAX_ITERATION):
train_images, train_annotations = train_dataset_reader.next_batch(FLAGS.batch_size)
feed_dict = {image: train_images, annotation: train_annotations, keep_probability: 0.85}
sess.run(train_op, feed_dict=feed_dict)
if itr % 10 == 0:
train_loss, summary_str = sess.run([loss, summary_op], feed_dict=feed_dict)
print("Step: %d, Train_loss:%g" % (itr, train_loss))
summary_writer.add_summary(summary_str, itr)
if itr % 500 == 0:
valid_images, valid_annotations = validation_dataset_reader.next_batch(FLAGS.batch_size)
valid_loss = sess.run(loss, feed_dict={image: valid_images, annotation: valid_annotations,
keep_probability: 1.0})
print("%s ---> Validation_loss: %g" % (datetime.datetime.now(), valid_loss))
saver.save(sess, FLAGS.logs_dir + "model.ckpt", itr)
elif FLAGS.mode == "visualize":
valid_images, valid_annotations = validation_dataset_reader.get_random_batch(FLAGS.batch_size)
pred = sess.run(pred_annotation, feed_dict={image: valid_images, annotation: valid_annotations,
keep_probability: 1.0})
valid_annotations = np.squeeze(valid_annotations, axis=3)
pred = np.squeeze(pred, axis=3)
for itr in range(FLAGS.batch_size):
utils.save_image(valid_images[itr].astype(np.uint8), FLAGS.logs_dir, name="inp_" + str(5+itr))
utils.save_image(valid_annotations[itr].astype(np.uint8), FLAGS.logs_dir, name="gt_" + str(5+itr))
utils.save_image(pred[itr].astype(np.uint8), FLAGS.logs_dir, name="pred_" + str(5+itr))
print("Saved image: %d" % itr)
The error was described as:
Not found: Key inference/rnn1_2/fw/basic_lstm_cell/weights not found in checkpoint
So i think there must be something wrong with the variables.
I'll be very appreciate if someone could tell me how to fix it!
looking forward to your help!
I'm trying to change the application type in the veins-lte "heterogeneous" example and I get the following error (in the SUMO log):
"socket.error: [Errno 98] Address already in use"
I tried with different traffic configurations in SUMO or with different applications, but I always get the same error. I'm able to run the the example, but it stops in a few seconds without showing any errors on OMNeT++.
Here's my omnetpp.ini:
[General]
cmdenv-express-mode = true
cmdenv-autoflush = true
cmdenv-status-frequency = 10000000s
#tkenv-default-config = debug
#tkenv-default-run = 1
sim-time-limit = 30s
tkenv-image-path = bitmaps
ned-path = .
network = scenario
##########################################################
# Simulation parameters #
##########################################################
debug-on-errors = true
print-undisposed = false
**.scalar-recording = true
**.vector-recording = true
#record-eventlog = true
**.debug = false
**.coreDebug = false
*.playgroundSizeX = 20000m
*.playgroundSizeY = 20000m
*.playgroundSizeZ = 50m
##########################################################
# Annotation parameters #
##########################################################
*.annotations.draw = false
##########################################################
# Obstacle parameters #
##########################################################
*.obstacles.debug = false
##########################################################
# WorldUtility parameters #
##########################################################
*.world.useTorus = false
*.world.use2D = false
##########################################################
# TraCIScenarioManager parameters #
##########################################################
*.manager.updateInterval = 0.1s
*.manager.host = "localhost"
*.manager.port = 9999
*.manager.moduleType = "org.car2x.veins.modules.heterogeneous.HeterogeneousCar"
*.manager.moduleName = "node"
*.manager.moduleDisplayString = ""
*.manager.autoShutdown = true
*.manager.margin = 25
*.manager.launchConfig = xmldoc("heterogeneous.launchd.xml")
##########################################################
# 11p specific parameters #
# #
# NIC-Settings #
##########################################################
*.connectionManager.pMax = 20mW
*.connectionManager.sat = -89dBm
*.connectionManager.alpha = 2.0
*.connectionManager.carrierFrequency = 5.890e9 Hz
*.connectionManager.sendDirect = true
*.**.nic80211p.mac1609_4.useServiceChannel = false
*.**.nic80211p.mac1609_4.txPower = 20mW
*.**.nic80211p.mac1609_4.bitrate = 18Mbps
*.**.nic80211p.phy80211p.sensitivity = -89dBm
*.**.nic80211p.phy80211p.maxTXPower = 10mW
*.**.nic80211p.phy80211p.useThermalNoise = true
*.**.nic80211p.phy80211p.thermalNoise = -110dBm
*.**.nic80211p.phy80211p.decider = xmldoc("config.xml")
*.**.nic80211p.phy80211p.analogueModels = xmldoc("config.xml")
*.**.nic80211p.phy80211p.usePropagationDelay = true
##########################################################
# Mobility #
##########################################################
*.node[*].veinsmobilityType = "org.car2x.veins.modules.mobility.traci.TraCIMobility"
*.node[*].mobilityType = "TraCIMobility"
*.node[*].mobilityType.debug = true
*.node[*].veinsmobilityType.debug = true
*.node[*].veinsmobility.x = 0
*.node[*].veinsmobility.y = 0
*.node[*].veinsmobility.z = 1.895
*.node[*0].veinsmobility.accidentCount = 0
*.node[*0].veinsmobility.accidentStart = 75s
*.node[*0].veinsmobility.accidentDuration = 30s
###########################
# LTE specific parameters #
###########################
**.node[*].masterId = 1
**.node[*].macCellId = 1
**.eNodeB1.macCellId = 1
**.eNodeB1.macNodeId = 1
**.eNodeBCount = 1
**.configurator.config = xmldoc("topology-config.xml")
#*.server.numUdpApps = 1
#*.server.udpApp[0].typename = "SimpleServerApp"
#*.server.udpApp[0].localPort = 4242
#============= Application Setup =============
##########################################################
# WaveAppLayer #
##########################################################
*.node[*].applType = "UDPVideoStreamCli"
*.node[*].appl.serverAddress = "server" #
*.node[*].appl.localPort = 9999
*.node[*].appl.serverPort = 3088 #
*.node[*].appl.startTime = uniform(0s, 0.02s)
##########################################################
# RSU SETTINGS #
##########################################################
*.server.applType = "UDPVideoStreamSvr"
*.server.appl.videoSize = 10MiB
*.server.appl.localPort = 3088
*.server.appl.sendInterval = 20ms
*.server.appl.packetLen = ${packetLen = 1000B }
**.mtu = 10000B
##########################################################
# channel parameters #
##########################################################
**.channelControl.pMax = 10W
**.channelControl.alpha = 1.0
**.channelControl.carrierFrequency = 2100e+6Hz
################### RLC parameters #######################
#**.fragmentSize=75B
#**.timeout=50s
################### MAC parameters #######################
**.mac.queueSize = ${queue = 2MiB}
**.mac.maxBytesPerTti = ${maxBytesPerTti = 3MiB}
**.mac.macDelay.result-recording-modes = all
**.mac.macThroughput.result-recording-modes = all
# Schedulers
**.mac.schedulingDisciplineDl = ${scheduler = "MAXCI"} #MAXCI, DRR, PF
**.mac.schedulingDisciplineUl = ${scheduler}
################ PhyLayer parameters #####################
**.nic.phy.usePropagationDelay = true
**.nic.phy.channelModel=xmldoc("config_channel.xml")
################ Feedback parameters #####################
**.feedbackComputation = xmldoc("config_channel.xml")
# UEs
**.enableHandover = false
################# Deployer parameters #######################
# UEs attached to eNB
**.fbDelay = 1
# General
**.deployer.positionUpdateInterval = 0.1s
**.deployer.broadcastMessageInterval = 1s
# RUs
**.deployer.numRus = 0
**.deployer.ruRange = 50
**.deployer.ruTxPower = "50,50,50;"
**.deployer.ruStartingAngle = 0deg
**.deployer.antennaCws = "2;" # !!MACRO + RUS (numRus + 1)
# AMC
**.deployer.numRbDl = ${RB = 100}
**.deployer.numRbUl = ${RB}
**.deployer.rbyDl = 12
**.deployer.rbyUl = 12
**.deployer.rbxDl = 7
**.deployer.rbxUl = 7
**.deployer.rbPilotDl = 3
**.deployer.rbPilotUl = 0
**.deployer.signalDl = 1
**.deployer.signalUl = 1
**.deployer.numBands = 1
**.deployer.numPreferredBands = 1
############### AMC MODULE PARAMETERS ###############
**.rbAllocationType = "localized"
**.mac.amcMode = "AUTO"
**.feedbackType = "ALLBANDS"
**.feedbackGeneratorType = "IDEAL"
**.maxHarqRtx = 3
**.pfAlpha = 0.95
**.pfTmsAwareDL = false
**.numUe = ${numUEs=1000}
############### Transmission Power ##################
**.ueTxPower = 26
**.microTxPower = 20
**.eNodeBTxPower = 45
[Config nodebug]
description = "default settings"
**.debug = false
**.coreDebug = false
*.annotations.draw = false
[Config debug]
description = "(very slow!) draw and print additional debug information"
**.debug = true
**.coreDebug = true
*.annotations.draw = true
I'd appreciate any help, I really don't know how to solve it... Thanks in advance!
I get the following error (in the SUMO log):
"socket.error: [Errno 98] Address already in use"
If I am not mistaken, this is an error message from Python. It is not an OMNeT++ error, nor is it an error message that SUMO would output.
My guess is that you are getting the error message when you are trying to run sumo-launchd.py, the script that launches SUMO when needed by OMNeT++.
There are two possible reasons I can see:
You are trying to run two instances of sumo-launchd.py in parallel. This is not necessary. Having only one instance running is enough.
Some other program is using the same address and port (TCP port 9999). Independent of whether you are running this program knowingly or if it is malware, either shutting down the conflicting program or changing the sumo-launchd.py port number will help. See the sumo-launchd.py documentation for how to change its port number.
We have a postfix server running on MAC. Sometime yesterday our server stopped sending external email. We can send and receive internally, and we can receive from external. When we sent emails to other domains, though, they just disappear...
We've been working on this all day with no luck... Anyone have any thoughts?
Thanks!
--Charles
Here is our postconf -n
biff = no
command_directory = /usr/sbin
config_directory = /Library/Server/Mail/Config/postfix
content_filter =
daemon_directory = /usr/libexec/postfix
data_directory = /Library/Server/Mail/Data/mta
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin xxgdb $daemon_directory/$process_name $process_id & sleep 5
dovecot_destination_recipient_limit = 1
enable_server_options = yes
header_checks =
html_directory = /usr/share/doc/postfix/html
imap_submit_cred_file = /Library/Server/Mail/Config/postfix/submit.cred
inet_interfaces = all
inet_protocols = all
local_recipient_maps =
mail_owner = _postfix
mailbox_size_limit = 0
mailbox_transport = dovecot
mailq_path = /usr/bin/mailq
manpage_directory = /usr/share/man
message_size_limit = 20971520
mydestination =
mydomain = ourdomain.com
mydomain_fallback = localhost
myhostname = relay.ourdomain.com
mynetworks = 127.0.0.0/8 192.168.0.0/16 [::1]/128 [2001:240:587::]/64
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases
queue_directory = /Library/Server/Mail/Data/spool
readme_directory = /usr/share/doc/postfix
recipient_canonical_maps = hash:/Library/Server/Mail/Config/postfix/system_user_maps
recipient_delimiter = +
relayhost =
sample_directory = /usr/share/doc/postfix/examples
sendmail_path = /usr/sbin/sendmail
setgid_group = _postdrop
smtp_sasl_auth_enable = no
smtp_sasl_password_maps =
smtpd_client_restrictions = permit_mynetworks permit_sasl_authenticated permit
smtpd_enforce_tls = no
smtpd_helo_required = no
smtpd_helo_restrictions =
smtpd_pw_server_security_options = cram-md5,digest-md5,login,plain
smtpd_recipient_limit = 1000
smtpd_recipient_restrictions = permit_sasl_authenticated permit_mynetworks reject_unauth_destination permit
smtpd_sasl_auth_enable = yes
smtpd_tls_CAfile = /etc/certificates/relay.ourdomain.com.028E0388CA5957E50A13248BAD1711F41C84F596.chain.pem
smtpd_tls_cert_file = /etc/certificates/relay.ourdomain.com.028E0388CA5957E50A13248BAD1711F41C84F596.cert.pem
smtpd_tls_ciphers = medium
smtpd_tls_exclude_ciphers = SSLv2, aNULL, ADH, eNULL
smtpd_tls_key_file = /etc/certificates/relay.ourdomain.com.028E0388CA5957E50A13248BAD1711F41C84F596.key.pem
smtpd_use_pw_server = yes
smtpd_use_tls = yes
tls_random_source = dev:/dev/urandom
unknown_local_recipient_reject_code = 550
use_sacl_cache = yes
virtual_alias_domains = $virtual_alias_maps hash:/Library/Server/Mail/Config/postfix/virtual_domains
virtual_alias_maps = $virtual_maps hash:/Library/Server/Mail/Config/postfix/virtual_users
postconf: warning: /Library/Server/Mail/Config/postfix//main.cf: unused parameter: default_destination_recipient_limit:=1000
relay:~ localadmin$
Looks like the issue was being caused by a typo...
I kept getting the error:
unused parameter: default_destination_recipient_limit
Upon looking at the master.cf file, I found that it had:
default_destination_recipient_limit: = 1000
Note the colon in that line. Fixed an the issue has gone away.