The present invention relates to the technical field of fuzzy boundary image processing, and in particular to a method for automatic segmentation of a fuzzy boundary image based on active contour and deep learning.
The difficulty of fuzzy image segmentation lies in the difficulty of accurately locating complex boundaries and correctly segmenting tiny isolated targets. Complex boundaries include situations of fuzzy boundaries, boundary disappearance, complex boundary interactions, and variable shapes. Ultrasonic images are a common kind of fuzzy images, and their low contrast and noisy characteristics tend to make the target edges fuzzy or even disappear, so the actual boundaries of the target are susceptible to artifacts, or even partially obscured by a large number of artifacts. Accurate segmentation of fuzzy boundary images becomes a challenge nowadays.
In recent years, deep convolutional neural network models have achieved remarkable results in semantic segmentation and remarkable results in low-contrast image processing. Fuzzy boundaries have certain ambiguity and are prone to noise in the training stage, which makes the deep model still have the problem of insufficient fuzzy boundary segmentation capability in the application of fuzzy boundary image segmentation. Among the traditional ultrasonic image segmentation methods, the active contour model based on level sets has the advantages of being insensitive to noise, being able to evolve the contour on the fuzzy boundary of the target and keeping the contour close to the target boundary. However, the active contour model needs to initialize the contour, and is thus difficult to cope with complex images. The deep convolutional neural network model has been able to achieve better fuzzy boundary image segmentation results, and applying the active contour model on such segmentation results can effectively alleviate the limitation of the initialized contour on the active contour model, and can further improve the fuzzy boundary segmentation capability and the accuracy of boundary segmentation results after the fine tuning of local regions.
The method for automatic segmentation of a fuzzy boundary image based on active contour and deep learning proposed in the present invention, in combination with an active contour model and a deep convolutional neural network model, is able to segment a fuzzy boundary image accurately.
The method for automatic segmentation of a fuzzy boundary image based on active contour and deep learning of the present invention, while realizing automatic segmentation of a fuzzy boundary image, further improves the accuracy of fuzzy boundary segmentation, thus realizing accurate segmentation of a target with fuzzy boundaries in the image Firstly, a fuzzy boundary image is segmented using a deep learning model to obtain an initialized target segmentation result; and the segmentation result of the model is then fine-tuned using an active contour model to obtain a more accurate normal boundary and fuzzy boundary segmentation result. The deep active contour model proposed in the present invention uses the method of local evolution of contour points to drive the contour to move towards a target boundary, and at the same time, uses the initialized contour to constrain over-evolution of the contour.
The purpose of the present invention is achieved by at least one of the following technical schemes.
A method for automatic segmentation of a fuzzy boundary image based on active contour and deep learning, includes the following steps:
S1, segmenting a fuzzy boundary image using a deep learning model to obtain an initialized target segmentation result; and
S2, fine-tuning the segmentation result of the model using an active contour model to obtain a more accurate normal boundary and fuzzy boundary segmentation result, the step specifically comprising:
S2.1, initializing the active contour model using a region boundary in the initialized target segmentation result obtained in S1 to construct an initial level set;
S2.2, using the level set to represent an energy function, and obtaining a partial differential equation for curve evolution through the energy function;
S2.3, performing a judgment of a region in which a contour point is located; and
S2.4, after determining a region in which each contour point is located, calculating a value of the partial differential equation and evolving a contour through iterations until a maximum number of iterations is reached or the contour changes slightly or does not change, and then completing the segmentation.
Further, in step S2.1, the initial level set ϕ1(x,y) of the active contour model is constructed from the segmentation result of the deep learning model, and the initial level set is defined as follows:
where R(x,y)={0,1} is the segmentation result of the deep learning model, R(x,y)=0 indicates that a point (x,y) belongs to a target region, and R(x,y)=1 indicates that the point (x,y) belongs to a non-target region; and points at a demarcation between the target region and the non-target region form a target boundary B, and D(x,y) is the shortest distance between each point (x,y) on the image and the target boundary B.
Further, in step S2.2, a total of three parts are included in the energy function: 1) the perimeter and area of the contour; 2) a contour local region energy; and 3) a contour constraint energy; and
the whole energy function is defined as follows:
where C denotes a current segmentation contour, C0 denotes an initialized segmentation contour, Length (C) denotes the perimeter of the contour C, Area(inside(C)) denotes the area of a region inside the contour C, μ0(x,y) is a pixel intensity of a source image I at (x,y), c1 is a pixel intensity average inside the contour C, c2 is a pixel intensity average outside the contour C, p is a point on the contour C, p ∈N(C) indicates that the contour point p is in a target edge region, p ∈F(C) indicates that the contour point p is in a foreground (target) region, p ∈B(C) indicates that the contour point p is in a background region, ia(p) is a point that is in the surrounding of the contour point p and inside the contour C, oa(p) is a point that is in the surrounding of the contour point p and outside the contour C, cip is a pixel intensity average of points that satisfy ia(p), c, is a pixel intensity average of points that satisfy oa(p), the surrounding of the contour point p refers to being in the range of a circle with P as the center and R as the radius; and a first term and a second term in the energy function denote the perimeter and area of the contour and serve to keep the contour continuous and smooth and are related only to the size and shape of the contour itself; a third term and a fourth term in the energy function denote a contour local region energy and serve to cause the contour to evolve towards a target boundary and is related to image data; and a fifth term in the energy function denotes a contour constraint energy and serves to limit the evolution of a current contour towards a region that greatly deviates from the initialized contour, and u, v, λ1, λ2, λ3 are coefficients of the corresponding energy terms.
Further, in the energy function F, a level set method is used to denote the contour C as well as the inside and outside of the contour; and in the level set method, the contour C in an image domain Ω is denoted as a zero level set, i.e., ϕ=0, which is defined as follows:
the zero level set, i.e., ϕ=0, is used to denote the contour C; a Heaviside function H and a Dirac function δ0 are defined as follows:
H is used to denote the inside and outside of the contour C:
the level set ϕ, the function 11, and the function δ0 are used to denote the perimeter and area of the contour:
the contour constraint energy is the difference between the current contour C and the initialized contour C0 and is denoted using the level set ϕ, the function H, and ϕ1, and the contour constraint energy is denoted as the difference between the current level set ϕ and the initialized level set ϕ1:
(C−C0)2=∫Ω(H(ϕ(x,y)))−H(ϕ1(x,y))2dxdy;
the contour local region energy is the sum of energies inside and outside the surrounding of all contour points; an energy of surrounding regions of the contour is calculated by calculating, separately for each contour point, energies inside and outside the contour in a local region of the contour point using a local calculation method and then superimposing the energies to obtain an overall energy; and after being denoted using the level set ϕ and the function H, terms in the energy of the surrounding regions of the contour are defined as follows:
where for a point p(xp,yp) on the contour point C, ϕ(p)=0 a(p) indicates a point that is in the surrounding of the contour point p, the surrounding of the contour point p referring to being in the range of a circle with P as the center and R as the radius; ia(p) denotes a point that is in the surrounding of the contour point p and inside the contour C and for a point a(xa, ya) satisfying ia(p), ϕ(xa, ya)>0 and √{square root over ((xa−xp)2+(ya−yp)2)}≤R; and oa(p) denotes a point that is in the surrounding of the contour point p and outside the contour C, and for a point a(xa, ya) satisfying oa(p), ϕ(xa,ya)<0 and √{square root over ((xa−xp)2+(ya−yp)2)}≤R.
Further, after denoting the energy terms using the level set method, the energy function F is defined as:
where c1 is the pixel intensity average inside the contour C, and c2 is the pixel intensity average outside the contour C, which satisfy, respectively: c1(ϕ)=average (u0) in {ϕ≥0}, c2(ϕ)=average (u0) in {ϕ<0}; and c1 and c2 are defined through the level set ϕ as follows:
where cip is a pixel intensity average of points satisfying ia(p) and cop is a pixel intensity average of points satisfying oa(p); and cip(φ)=average(μ0) in {a(p) and φ≥0} and cop(φ)=average(μ0) in {a(p) and φ<0} are defined as follows:
and
a partial differential equation for curve evolution is obtained from the energy function F by means of a Euler-Lagrange variational method and a gradient descent flow as follows:
where
and (x,y)∈a(p) indicates that the point (x y) is in the surrounding of the contour point p, the surrounding of the contour point p referring to being in the range of a circle with P as the center and R as the radius; and in the process of curve evolution, the level set of the nth iteration is ϕn and the level set of the (n+1)th iteration is
and partial derivatives in the horizontal direction and
the vertical direction of a two-dimensional image are calculated using a finite difference approach.
Further, in step S2.3, it is judged whether the contour point p is in a target edge region or a non-target edge region by the difference between pixel intensities inside and outside the contour, and the specific method is as follows: in the fuzzy boundary image, the difference between the pixel intensity averages inside and outside the surrounding of the contour is larger in the target edge region, while the difference between the pixel intensity averages inside and outside the surrounding of the contour is smaller in the non-target edge region; and when the contour point P is in the non-target edge region, the values of cip and cop are close to each other, i.e., cip≈cop, |cip−cop|≤cd, cd being a threshold for judging whether cip is close to cop and the judgment is performed through the following steps:
S2.3.1, calculating the difference dp between cip and cop for each contour point on the contour in counterclockwise order, and constructing a closed-loop queue D in an order obtained through dp;
S2.3.2, smoothing the closed-loop queue D using a Gaussian filter of width R;
S2.3.3, searching for a fragment ΔC that is longer than 2R and satisfies dp≤cd in the closed-loop queue D; and
S2.3.4, if there exists a fragment satisfying step S2.3.3, all contour points in the fragment are in the non-target edge region and the other contour points are in the target edge region; and
the sum of energies inside the contour in local regions of contour points in the target edge region is as follows:
the sum of energies outside the contour in local regions of contour points in the target edge region is as follows:
Further, in response to the contour point p being in the non-target edge region, it is further determined whether the contour point p is in a foreground region or a background region; and since the characteristics of a surrounding region of a contour point are similar to those of a region in which the contour point is located, the fuzzy boundary image is divided into several subregions according to image characteristics, and then, for these subregions, it is determined whether the contour point p is in the foreground region or the background region, and the specific method is as follows:
S2.3.5, firstly, dividing the fuzzy boundary image into several subregions according to image characteristics, and determining a subregion O in which the contour fragment ΔC is located;
S2.3.6, establishing a two-dimensional coordinate system in the image subregion O with the coordinate position of a contour point in the middle of the contour fragment ΔC as the center point center (x0, y0) of a two-dimensional Gaussian function ƒ(x,y), with ⅙ of the maximum distance of x0 from a boundary of the subregion as the standard deviation σx of the X-axis portion of the Gaussian function, and with ⅙ of the maximum distance of y, from the boundary of the subregion as the standard deviation σy of the Y-axis portion of the Gaussian function; and assigning a weight wij to each point in the subregion using the two-dimensional Gaussian function and normalizing weights wij for the inside and outside of the contour, respectively, to obtain normalized weights wij_in for the inside of the contour and normalized weights wij_out for the outside of the contour;
S2.3.7, calculating averages co1 and co2 for the inside and outside of the contour in the subregion O using the normalized weights wij_in and wij_out and a pixel intensity μ0(i,j), wherein when the point (i,j) is inside the contour in the subregion O
N being the number of points inside the contour in the subregion O; and when the point (i,j) is outside the contour in the subregion O,
M being the number of points outside the contour in the subregion O; and
S2.3.8, calculating a pixel intensity average mΔc of surrounding regions of all contour points in the contour fragment ΔC, and comparing the differences between mΔc and co1 and co2, wherein if |mΔc−co1|≤|mΔc−co2|, the contour points in the contour fragment ΔC are in the foreground region, and otherwise in the background region.
Further, if the contour point p is in the foreground region, the direction of evolution of the contour point p is towards the outside of the contour, wherein in the energy function, the correction of the direction of evolution is embodied in increasing the energy of the outside of the contour in a local region of the foreground contour point, with the increased energy being defined as:
if the contour point p is in the background region, the direction of evolution ofthe contour point p is towards the inside of the contour, wherein in the energy function, the correction of the direction of evolution is embodied in increasing the energy of the inside of the contour in a local region of the background contour point, with the increased energy being defined as:
Further, in step S2.4 the contour is evolved through iterations of
until a maximum number of iterations iter is reached or the contour changes slightly or does not change, where 200≤iter≤10000; and a contour change
which indicates changing of the contour, and the iteration stops in response to a plurality of successive slight changes of the contour.
Compared with the prior art, the present invention has the advantages:
The present invention applies an active contour model to the field of fuzzy boundary image segmentation, and further optimizes the segmentation result of a deep convolutional neural network model. During construction of the energy function, firstly, the energy associated with image pixels is obtained by superposing and calculating the characteristics of a surrounding region of each contour point, and at the same time, the judgment of a region in which the contour point is located and the correction of the direction of evolution of the contour point are introduced, thus causing this method to be capable of segmenting fuzzy boundaries and improving the accuracy of boundary segmentation.
The specific implementation of the present invention will be further described with reference to the drawings and embodiments below, which, however, should not be construed as a limitation on the implementation and scope of protection of the present invention. It should be noted that details which are not set forth below can be implemented by those skilled in the art with reference to the prior art.
A method for automatic segmentation of a fuzzy boundary image based on active contour and deep learning, as shown in
In S1, for a fuzzy boundary image, such as a thyroid ultrasonic image shown in
In S2, the segmentation result of the model is fine-tuned using an active contour model to obtain a more accurate normal boundary and fuzzy boundary segmentation result, as shown in
In S2.1, the active contour model is initialized using a boundary of the thyroid region in
where R(x,y)={0,1} is the segmentation result of the deep learning model, R(x,y)=0 indicates that a point (x,y) belongs to a target region, and R(x,y)=1 indicates that the point (x,y) belongs to a non-target region; and points at a demarcation between the target region and the non-target region form a target boundary B, and D(x,y) is the shortest distance between each point (x,y) on the image and the target boundary B.
In S2.2, the level set is used to represent an energy function, and a partial differential equation for curve evolution is obtained through the energy function, where
a total of three parts are included in the energy function: 1) the perimeter and area of the contour; 2) a contour local region energy; and 3) a contour constraint energy; and
the whole energy function is defined as follows:
where C denotes a current segmentation contour, C0 denotes an initialized segmentation contour, Length (C) denotes the perimeter of the contour C, Area(inside(C)) denotes the area of a region inside the contour C, μ0(x,y) is a pixel intensity of a source image I at (x,y), c1 is a pixel intensity average inside the contour C, c2 is a pixel intensity average outside the contour C, p is a point on the contour C, p ∈N(C) indicates that the contour point p is in a target edge region, p ∈F(C) indicates that the contour point p is in a foreground (target) region, p ∈B(C) indicates that the contour point p is in a background region, ia(p) is a point that is in the surrounding of the contour point p and inside the contour C, oa(p) is a point that is in the surrounding of the contour point p and outside the contour C, cip is a pixel intensity average of points that satisfy ia(p), cop is a pixel intensity average of points that satisfy oa(p), the surrounding of the contour point p refers to being in the range of a circle with P as the center and R as the radius; and a first term and a second term in the energy function denote the perimeter and area of the contour and serve to keep the contour continuous and smooth and are related only to the size and shape of the contour itself; a third term and a fourth term in the energy function denote a contour local region energy and serve to cause the contour to evolve towards a target boundary and is related to image data; and a fifth term in the energy function denotes a contour constraint energy and serves to limit the evolution of a current contour towards a region that greatly deviates from the initialized contour, and u, v, λ1, λ2, λ3 are coefficients of the corresponding energy terms.
Further, in the energy function F, a level set method is used to denote the contour C as well as the inside and outside of the contour; and in the level set method, the contour C in an image domain Ω is denoted as a zero level set, i e., ϕ=0, which is defined as follows:
the zero level set, i.e., ϕ=0, is used to denote the contour C;
a Heaviside function H and a Dirac function δ0 are defined as follows:
H is used to denote the inside and outside of the contour C
the level set ϕ, the function H and the function δ0 are used to denote the perimeter and area of the contour:
the contour constraint energy is the difference between the current contour C and the initialized contour C0, and is denoted using the level set ϕ, the function H, and ϕ1, and the contour constraint energy is denoted as the difference between the current level set ϕ and the initialized level set ϕ1:
(C−C0)2=∫Ω(H(ϕ(x,y)))−H(ϕ1(x,y))2dxdy;
the contour local region energy is the sum of energies inside and outside the surrounding of all contour points; an energy of surrounding regions of the contour is calculated by calculating, separately for each contour point, energies inside and outside the contour in a local region of the contour point using a local calculation method and then superimposing the energies to obtain an overall energy; and after being denoted using the level set ϕ and the function H, terms in the energy of the surrounding regions of the contour are defined as follows:
where for a point p(xp,yp) on the contour point C, ϕ(p)=0 a(p) indicates a point that is in the surrounding of the contour point p, the surrounding of the contour point p referring to being in the range of a circle with P as the center and R as the radius; ia(p) denotes a point that is in the surrounding of the contour point p and inside the contour C and for a point a(xa, ya) satisfying ia(p), ϕ(xa,ya)>0 and √{square root over ((xa−xp)2+(ya−yp)2)}≤R, and oa(p) denotes a point that is in the surrounding of the contour point p and outside the contour C and for a point al(xa,ya) satisfying oa(p), ϕ(xa,ya)≤0 and √{square root over ((xa−xp)2+(ya−yp)2)}≤R.
Further, after denoting the energy terms using the level set method, the energy function F is defined as:
where c1 is the pixel intensity average inside the contour C, and c2 is the pixel intensity average outside the contour C, which satisfy, respectively: c1(ϕ)=average (μ0) in {ϕ≥0}, c2 (ϕ)=average (μ0) in {ϕ<0 } and c1 and c2 are defined through the level set ϕ as follows:
where cip is a pixel intensity average of points satisfying ia(p) and cop is a pixel intensity average of points satisfying oa(p); and cip average(μ0) in {a(p) and φ≥0} and cop(φ)=average(μ0) in {a(p) and φ<0} are defined as follows:
a partial differential equation for curve evolution is obtained from the energy function F by means of a Euler-Lagrange variational method and a gradient descent flow as follows:
where
and (x,y)∈a(p) indicates that the point (x,y) is in the surrounding of the contour point p, the surrounding of the contour point p referring to being in the range of a circle with P as the center and R as the radius; and in the process of curve evolution, the level set of the nth iteration is ϕ″ and the level set of the (n+1)th iteration is
and partial derivatives in the horizontal direction and the vertical direction of a two-dimensional image are calculated using a finite difference approach.
In S2.3, a judgment of a region in which a contour point is located is performed. As shown in
It is judged whether the contour point p is in a target edge region or a non-target edge region by the difference between pixel intensities inside and outside the contour, and the specific method is as follows: in the fuzzy boundary image, the difference between the pixel intensity averages inside and outside the surrounding of the contour is larger in the target edge region, while the difference between the pixel intensity averages inside and outside the surrounding of the contour is smaller in the non-target edge region; and when the contour point p is in the non-target edge region, the values of cip and cop, are close to each other, i.e., cip˜cop, |cip−cp|≤cd, cd being a threshold for judging whether cip is close to cop, and as shown in
in S2.3.1, the difference dp between cip, and cop for each contour point on the contour is calculated in counterclockwise order, and a closed-loop queue D is constructed in an order obtained through dp;
in S2.3.2, the closed-loop queue D is smoothed using a Gaussian filter of width R;
in S2.3.3, a fragment ΔC that is longer than 2R and satisfies dp≤cd is searched for in the closed-loop queue D; and
in S2.3.4, if there exists a fragment satisfying step S2.3.3, all contour points in the fragment are in the non-target edge region and the other contour points are in the target edge region; and the sum of energies inside the contour in local regions of contour points in the target edge region is as follows:
the sum of energies outside the contour in local regions of contour points in the target edge region is as follows:
Further, in response to the contour point p being in the non-target edge region, it is further determined whether the contour point p is in a foreground region or a background region; and since the characteristics of a surrounding region of a contour point are similar to those of a region in which the contour point is located, the fuzzy boundary image is divided into several subregions according to image characteristics, and then, for these subregions, it is determined whether the contour point p is in the foreground region or the background region. In this embodiment, thyroid ultrasonic images are used as test images. The thyroid ultrasonic images are classified into a transverse scanned image and a longitudinal scanned image, as shown in
in S2.3.5, firstly, the fuzzy boundary image is divided into several subregions according to image characteristics, and a subregion O ∈{A, B, C, D} in which the contour fragment ΔC is located is determined;
in S23.6, a two-dimensional coordinate system is established in the image subregion O with the coordinate position of a contour point in the middle of the contour fragment ΔC as the center point center(x0,y0), thus obtaining a two-dimensional Gaussian function
with ⅙ of the maximum distance of x0 from a boundary of the subregion as the standard deviation a, of the X-axis portion of the Gaussian function, and with ⅙ of the maximum distance of y, from the boundary of the subregion as the standard deviation σy of the Y-axis portion of the Gaussian function; and a weight IV, is assigned to each point in the subregion using the two-dimensional Gaussian function and weights W, for the inside and outside of the contour are normalized, respectively, to obtain normalized weights wij_in for the inside of the contour and normalized weights wij_out for the outside of the contour;
in S2.3.7, averages co1 and co2 for the inside and outside of the contour in the subregion O are calculated using the normalized weights wij_in and wij_out and a pixel intensity μ0(i,j), where when the point (i,j) is inside the contour in the subregion O,
N being the number of points inside the contour in the subregion O; and when the point (I,j) is outside the contour in the subregion O,
M being the number of points outside the contour in the subregion O; and
in S2.3.8, a pixel intensity average mA of surrounding regions of all contour points in the contour fragment ΔC is calculated, and the differences between mΔc and co1 and co2 are compared, where if mA|mΔc−co1|≤|mΔc−co2| the contour points in the contour fragment ΔC are in the foreground region, and otherwise the contour points are in the background region; and
if the contour point p is in the foreground region, the direction of evolution of the contour point p is towards the outside of the contour, wherein in the energy function, the correction of the direction of evolution is embodied in increasing the energy of the outside of the contour in a local region of the foreground contour point, with the increased energy being defined as:
if the contour point p is in the background region, the direction of evolution of the contour point p is towards the inside of the contour, wherein in the energy function, the correction of the direction of evolution is embodied in increasing the energy of the inside of the contour in a local region of the background contour point, with the increased energy being defined as:
In S2.4, after determining a region in which each contour point is located, a value of the partial differential equation is calculated, and a contour is evolved through iterations of
until a maximum number of iterations iter 1000 is reached or the contour changes slightly or does not change, and then the segmentation is completed, where a contour change
which indicates changing of the contour, and the iteration stops in response to a plurality of successive slight changes of the contour.
In this embodiment,
The purpose of the method for automatic segmentation of a fuzzy boundary image based on active contour and deep learning is to enable the segmentation model to segment fuzzy boundary regions while fine-tuning the segmentation contour so that the segmentation contour is as close to the target boundary as possible. The present invention adopts a combination of a deep convolutional network model and an active contour model to enable the model to achieve accurate segmentation results. The experimental data of the present invention are thyroid ultrasonic images, and the data set contains 309 images, of which 150 are used as the training set and the remaining 159 are used as the test set. The U-Net model is trained using the 150 training images, and the trained model segments the 159 test images, and then the U-Net segmentation results are further fine-tuned using the active contour model. The quantitative indexes of the segmentation results are as follows:
where TP, TN, FP, FN, Ap,and AN denote True Positive, True Negative, False Positive, False Negative, All Positive, and All Negative, respectively. The average quantitative indexes obtained after segmentation of the 159 images are as shown in Table 1.
As can be seen from the above table, the present invention combines the U-Net model and the active contour model, and achieves a higher accuracy of pixel classification in terms of fine-grained segmentation compared to the approach in which only the U-Net model is used, where Accuracy reaches 0.9933; 0.9278 of the region segmented as the thyroid is the correct thyroid region, with an improvement of 2.78% in accuracy; and the intersection over union of the region that is divided as the thyroid versus the true thyroid region is 0,9026, with an improvement of 1.54% compared to the approach in which only the U-Net model is used. The improvements of the present invention regarding the quantitative indexes Accuracy, PPV, and IOU indicate that the present invention can further improve the accuracy of target segmentation in fuzzy images and can yield fine and accurate segmentation results for fuzzy boundaries. In the present invention, the use of an active contour model based on U-Net leads to better fuzzy boundary image segmentation results. The method for automatic segmentation of a fuzzy boundary image based on active contour and deep learning has the capability of segmenting a fuzzy boundary in a fuzzy boundary image while fine-tuning the segmentation contour to cause the contour to move close to the target boundary.
Number | Date | Country | Kind |
---|---|---|---|
201910846367.8 | Sep 2019 | CN | national |
Filing Document | Filing Date | Country | Kind |
---|---|---|---|
PCT/CN2020/125703 | 10/31/2020 | WO |