问题描述
我创建了一个 25 x 20 的空间矩形,我只想在绘制时标记四肢 (0,X) 和 (0,Y)。
当 coord_sf(expand=T) 时它工作正常,但如果 expand=F,我会收到一条错误消息。
矩形定义为
Using resnet101 as network backbone For Mask R-CNN model
Applying Default Augmentation on Dataset
Train 48 images
Validate 0 images
Checkpoint Path: /content/mask_rcnn_models
Selecting layers to train
Epoch 1/300
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-6-c2bd46bd70ab> in <module>()
7 train_maskrcnn.load_pretrained_model("/content/drive/MyDrive/AI ML Trainee/damage Detection/pix/mask_rcnn_coco.h5")
8 train_maskrcnn.load_dataset("/content/drive/MyDrive/AI ML Trainee/damage Detection/pix/Dataset")
----> 9 train_maskrcnn.train_model(num_epochs = 300,augmentation=True,path_trained_models = "mask_rcnn_models")
8 frames
/usr/local/lib/python3.7/dist-packages/pixellib/custom_train.py in train_model(self,num_epochs,path_trained_models,layers,augmentation)
122
123 self.model.train(self.dataset_train,self.dataset_test,models = path_trained_models,augmentation = augmentation,--> 124 epochs=num_epochs,layers=layers)
125
126
/usr/local/lib/python3.7/dist-packages/pixellib/mask_rcnn.py in train(self,train_dataset,val_dataset,epochs,models,augmentation,no_augmentation_sources)
2316 max_queue_size=100,2317 workers=workers,-> 2318 verbose = 1
2319
2320 )
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training_v1.py in fit(self,x,y,batch_size,verbose,callbacks,validation_split,validation_data,shuffle,class_weight,sample_weight,initial_epoch,steps_per_epoch,validation_steps,validation_freq,max_queue_size,workers,use_multiprocessing,**kwargs)
806 max_queue_size=max_queue_size,807 workers=workers,--> 808 use_multiprocessing=use_multiprocessing)
809
810 def evaluate(self,/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training_generator_v1.py in fit(self,model,use_multiprocessing)
591 shuffle=shuffle,592 initial_epoch=initial_epoch,--> 593 steps_name='steps_per_epoch')
594
595 def evaluate(self,/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training_generator_v1.py in model_iteration(model,data,mode,steps_name,**kwargs)
257
258 is_deferred = not model._is_compiled
--> 259 batch_outs = batch_function(*batch_data)
260 if not isinstance(batch_outs,list):
261 batch_outs = [batch_outs]
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training_v1.py in train_on_batch(self,reset_metrics)
1061 x,sample_weights = self._standardize_user_data(
1062 x,sample_weight=sample_weight,class_weight=class_weight,-> 1063 extract_tensors_from_dataset=True)
1064
1065 # If `self._distribution_strategy` is True,then we are in a replica context
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training_v1.py in _standardize_user_data(self,check_steps,steps,extract_tensors_from_dataset)
2334 is_dataset=is_dataset,2335 class_weight=class_weight,-> 2336 batch_size=batch_size)
2337
2338 def _standardize_tensors(self,run_eagerly,dict_inputs,/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training_v1.py in _standardize_tensors(self,is_dataset,batch_size)
2361 Feed_input_shapes,2362 check_batch_axis=False,# Don't enforce the batch size.
-> 2363 exception_prefix='input')
2364
2365 # Get typespecs for the input data and sanitize it if necessary.
/usr/local/lib/python3.7/dist-packages/tensorflow/python/keras/engine/training_utils_v1.py in standardize_input_data(data,names,shapes,check_batch_axis,exception_prefix)
538 ': expected ' + names[i] + ' to have shape ' +
539 str(shape) + ' but got array with shape ' +
--> 540 str(data_shape))
541 return data
542
ValueError: Error when checking input: expected input_image_Meta to have shape (15,) but got array with shape (14,)
下图效果很好
library(sf)
x <- c(0,25,0)
y <- c(0,20,0)
poly.sf <- st_sf(geometry = st_sfc(st_polygon(list(matrix(c(x1,y1),ncol=2)))))
但是因为我不想要四肢前后的空间,所以我添加
library(ggplot)
ggplot() +
geom_sf(data=poly.sf) +
scale_y_continuous(breaks=c(0,20),labels=c("0","Y")) +
scale_x_continuous(breaks=c(0,25),"X"))
我收到以下错误:
“错误:沿 x 方向的断点和标签长度不同”
这对我来说毫无意义。
如何获得标有 (0,Y) 轴且前后没有空格的图 四肢?
解决方法
我尝试为标签创建自定义函数,试试这个:
library(sf)
x <- c(0,25,0)
y <- c(0,20,0)
poly.sf <- st_sf(geometry = st_sfc(st_polygon(list(matrix(c(x,y),ncol = 2)))))
library(ggplot2)
# Custom labelling functions
labsy <- function(y) {
y[y != 0] <- "Y"
paste0(y,"")
}
labsx <- function(x) {
x[x != 0] <- "X"
paste0(x,"")
}
ggplot() +
geom_sf(data = poly.sf) +
scale_y_continuous(breaks = c(0,20),labels = labsy) +
scale_x_continuous(breaks = c(0,25),labels = labsx) +
coord_sf(expand = FALSE)