Maison >développement back-end >Tutoriel Python >Gestionnaire d'erreurs productif
La tâche de classification est la plus courante en IA car elle nécessite peu de bibliothèques. J'essaie d'écrire en utilisant les ressources d'un compilateur en ligne, sans comprendre les subtilités du travail.
def rle_decode(mask_rle, shape=(1280, 1918, 1)): ''' mask_rle: run-length as string formated (start length) shape: (height,width) of array to return Returns numpy array, 1 - mask, 0 - background ''' img = np.zeros(shape[0]*shape[1], dtype=np.uint8) s = mask_rle.split() starts, lengths = [np.asarray(x, dtype=int) for x in (s[0:][::2], s[1:][::2])] starts -= 1 ends = starts + lengths for lo, hi in zip(starts, ends): img[lo:hi] = 1 img = img.reshape(shape) return img
Par exemple, en utilisant la fonction de décodage des masques 0/1, vous pouvez vous fier à leurs longueurs. Mais pour générer des paquets batch d'un réseau de neurones, vous devez toujours surveiller les résultats actuels.
def keras_generator(gen_df, batch_size): while True: x_batch = [] y_batch = [] for i in range(batch_size): img_name, mask_rle = gen_df.sample(1).values[0] img = cv2.imread('data/train/{}'.format(img_name)) mask = rle_decode(mask_rle) img = cv2.resize(img, (256, 256)) mask = cv2.resize(mask, (256, 256)) x_batch += [img] y_batch += [mask] x_batch = np.array(x_batch) / 255. y_batch = np.array(y_batch) yield x_batch, np.expand_dims(y_batch, -1)
im_id = 5 fig, axes = plt.subplots(nrows=1, ncols=2, figsize=(25, 25)) axes[0].imshow(x[im_id]) axes[1].imshow(pred[im_id, ..., 0] > 0.5) plt.show()
Sortie du résultat = contact garanti avec le code écrit. Dans ce cas, la gestion des exceptions n'est pas nécessaire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!