Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitbaa43ea

Browse files
committed
added malaria cell classification tutorial
1 parent987aa3e commitbaa43ea

File tree

4 files changed

+121
-0
lines changed

4 files changed

+121
-0
lines changed

‎README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ This is a repository of all the tutorials of [The Python Code](https://www.thepy
4646
-[How to Perform YOLO Object Detection using OpenCV and PyTorch in Python](https://www.thepythoncode.com/article/yolo-object-detection-with-opencv-and-pytorch-in-python). ([code](machine-learning/object-detection))
4747
-[How to Blur Faces in Images using OpenCV in Python](https://www.thepythoncode.com/article/blur-faces-in-images-using-opencv-in-python). ([code](machine-learning/blur-faces))
4848
-[Skin Cancer Detection using TensorFlow in Python](https://www.thepythoncode.com/article/skin-cancer-detection-using-tensorflow-in-python). ([code](machine-learning/skin-cancer-detection))
49+
-[How to Perform Malaria Cells Classification using TensorFlow 2 and Keras in Python](https://www.thepythoncode.com/article/malaria-cells-classification). ([code](machine-learning/malaria-classification))
4950
-[Building a Speech Emotion Recognizer using Scikit-learn](https://www.thepythoncode.com/article/building-a-speech-emotion-recognizer-using-sklearn). ([code](machine-learning/speech-emotion-recognition))
5051
-[How to Convert Speech to Text in Python](https://www.thepythoncode.com/article/using-speech-recognition-to-convert-speech-to-text-python). ([code](machine-learning/speech-recognition))
5152
-[Top 8 Python Libraries For Data Scientists and Machine Learning Engineers](https://www.thepythoncode.com/article/top-python-libraries-for-data-scientists).
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#[How to Perform Malaria Cells Classification using TensorFlow 2 and Keras in Python](https://www.thepythoncode.com/article/malaria-cells-classification)
2+
To run this:
3+
-`pip3 install -r requirements.txt`
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
importcv2
2+
importtensorflowastf
3+
fromtensorflow.keras.modelsimportSequential
4+
fromtensorflow.keras.layersimportDense,Conv2D,MaxPool2D,Flatten,Activation
5+
fromsklearn.model_selectionimporttrain_test_split
6+
importnumpyasnp
7+
importmatplotlib.pyplotasplt
8+
9+
importglob
10+
importos
11+
12+
# after you extract the dataset,
13+
# put cell_images folder in the working directory
14+
img_dir="cell_images"
15+
img_size=70
16+
17+
defload_img_data(path):
18+
image_files=glob.glob(os.path.join(path,"Parasitized/*.png"))+ \
19+
glob.glob(os.path.join(path,"Uninfected/*.png"))
20+
X,y= [], []
21+
forimage_fileinimage_files:
22+
# 0 for uninfected and 1 for infected
23+
label=0if"Uninfected"inimage_fileelse1
24+
# load the image in gray scale
25+
img_arr=cv2.imread(image_file,cv2.IMREAD_GRAYSCALE)
26+
# resize the image to (70x70)
27+
img_resized=cv2.resize(img_arr, (img_size,img_size))
28+
X.append(img_resized)
29+
y.append(label)
30+
returnX,y
31+
32+
# load the data
33+
X,y=load_img_data(img_dir)
34+
# reshape to (n_samples, 70, 70, 1) (to fit the NN)
35+
X=np.array(X).reshape(-1,img_size,img_size,1)
36+
# scale pixels from the range [0, 255] to [0, 1]
37+
# to help the neural network learn much faster
38+
X=X/255
39+
40+
# shuffle & split the dataset
41+
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.1,stratify=y)
42+
print("Total training samples:",X_train.shape)
43+
print("Total validation samples:",X_test.shape[0])
44+
45+
model=Sequential()
46+
model.add(Conv2D(64, (3,3),input_shape=X_train.shape[1:]))
47+
model.add(Activation("relu"))
48+
model.add(MaxPool2D(pool_size=(2,2)))
49+
50+
model.add(Conv2D(64, (3,3)))
51+
model.add(Activation("relu"))
52+
model.add(MaxPool2D(pool_size=(2,2)))
53+
54+
model.add(Conv2D(64, (3,3)))
55+
model.add(Activation("relu"))
56+
model.add(MaxPool2D(pool_size=(2,2)))
57+
58+
model.add(Flatten())
59+
60+
model.add(Dense(64))
61+
model.add(Activation("relu"))
62+
63+
model.add(Dense(64))
64+
model.add(Activation("relu"))
65+
66+
model.add(Dense(1))
67+
model.add(Activation("sigmoid"))
68+
69+
model.compile(loss="binary_crossentropy",optimizer="adam",metrics=["accuracy"])
70+
71+
# train the model with 3 epochs, 64 batch size
72+
model.fit(X_train,np.array(y_train),batch_size=64,epochs=3,validation_split=0.2)
73+
# if you already trained the model, uncomment below and comment above
74+
# so you can only load the previously trained model
75+
# model.load_weights("malaria-cell-cnn.h5")
76+
77+
loss,accuracy=model.evaluate(X_test,np.array(y_test),verbose=0)
78+
print(f"Testing on{len(X_test)} images, the results are\n Accuracy:{accuracy} | Loss:{loss}")
79+
80+
# save the model & weights
81+
model.save("malaria-cell-cnn.h5")
82+
83+
# testing some images
84+
uninfected_cell="cell_images/testing-samples/C1_thinF_IMG_20150604_104919_cell_82.png"
85+
infected_cell="cell_images/testing-samples/C38P3thinF_original_IMG_20150621_112116_cell_204.png"
86+
87+
_,ax=plt.subplots(1,2)
88+
ax[0].imshow(plt.imread(uninfected_cell))
89+
ax[0].title.set_text("Uninfected Cell")
90+
ax[1].imshow(plt.imread(infected_cell))
91+
ax[1].title.set_text("Parasitized Cell")
92+
plt.show()
93+
94+
img_arr_uninfected=cv2.imread(uninfected_cell,cv2.IMREAD_GRAYSCALE)
95+
img_arr_infected=cv2.imread(infected_cell,cv2.IMREAD_GRAYSCALE)
96+
# resize the images to (70x70)
97+
img_arr_uninfected=cv2.resize(img_arr_uninfected, (img_size,img_size))
98+
img_arr_infected=cv2.resize(img_arr_infected, (img_size,img_size))
99+
# scale to [0, 1]
100+
img_arr_infected=img_arr_infected/255
101+
img_arr_uninfected=img_arr_uninfected/255
102+
# reshape to fit the neural network dimensions
103+
# (changing shape from (70, 70) to (1, 70, 70, 1))
104+
img_arr_infected=img_arr_infected.reshape(1,*img_arr_infected.shape)
105+
img_arr_infected=np.expand_dims(img_arr_infected,axis=3)
106+
img_arr_uninfected=img_arr_uninfected.reshape(1,*img_arr_uninfected.shape)
107+
img_arr_uninfected=np.expand_dims(img_arr_uninfected,axis=3)
108+
# perform inference
109+
infected_result=model.predict(img_arr_infected)[0][0]
110+
uninfected_result=model.predict(img_arr_uninfected)[0][0]
111+
print(f"Infected:{infected_result}")
112+
print(f"Uninfected:{uninfected_result}")
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
tensorflow
2+
sklearn
3+
numpy
4+
matplotlib
5+
opencv-python

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp