首先,此庫作用為:基于Tensorflow和Keras框架的用于影像分割的神經網路庫,
安裝程式為:pip install import segmentation_models
匯入程式為:import segmentation_models as sm
作者Github地址:https://github.com/qubvel/segmentation_models
主要的優點有(翻譯自作者):
- 高級 API(只需兩行代碼即可創建分割模型)
- 用于二進制和多類影像分割的 4 種模型架構(包括Unet)
- 每個架構有 25 個可用的骨架
- 所有主干都有預訓練的權重,以便更快更好地收斂
- 常用的分割損失(Jaccard、Dice、Focal)和指標(IoU、F-score)
創建的分割模型只是 Keras 模型的一個實體,它的構建可以像這樣一樣簡單:
model = sm.Unet()
根據任務,可以通過選擇具有更少或更多引數的主干并使用預訓練的權重對其進行初始化來更改網路架構:
model = sm.Unet('resnet34', encoder_weights='imagenet')
更改模型中輸出類的數量(根據情況來選擇):
# binary segmentation (this parameters are default when you call Unet('resnet34')
model = sm.Unet('resnet34', classes=1, activation='sigmoid')
# multiclass segmentation with non overlapping class masks (your classes + background)
model = sm.Unet('resnet34', classes=3, activation='softmax')
# multiclass segmentation with independent overlapping/non-overlapping class masks
model = sm.Unet('resnet34', classes=3, activation='sigmoid')
更改模型的輸入形狀:
# if you set input channels not equal to 3, you have to set encoder_weights=None
# how to handle such case with encoder_weights='imagenet' described in docs
model = Unet('resnet34', input_shape=(None, None, 6), encoder_weights=None)
簡單的示例:
import segmentation_models as sm
BACKBONE = 'resnet34'
preprocess_input = sm.get_preprocessing(BACKBONE)
# load your data
x_train, y_train, x_val, y_val = load_data(...)
# preprocess input
x_train = preprocess_input(x_train)
x_val = preprocess_input(x_val)
# define model
model = sm.Unet(BACKBONE, encoder_weights='imagenet')
model.compile(
'Adam',
loss=sm.losses.bce_jaccard_loss,
metrics=[sm.metrics.iou_score],
)
# fit model
# if you use data generator use model.fit_generator(...) instead of model.fit(...)
# more about `fit_generator` here: https://keras.io/models/sequential/#fit_generator
model.fit(
x=x_train,
y=y_train,
batch_size=16,
epochs=100,
validation_data=(x_val, y_val),
)
后續會介紹一些關于骨架和分割網路的內容!!!!!!!!!!!!!!!!!!!!!!!!!!!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/294115.html
標籤:AI
