Python භාවිතයෙන් මොලයේ පිළිකා වර්ගීකරණය | Brain Tumor Classification using Python
මේ project එකේ ප්රධානම අරමුණ මොලයේ MRI scan image එකක් අරගෙන, ඒකේ තියෙන tumor එකේ වර්ගය identify කරන එක. මේකට අපි Deep Learning technique එකක් වෙන image classification use කරනවා. image classification සඳහා බහුලවම භාවිතා වන Deep Learning Models වර්ගයක් තමයි Convolutional Neural Networks, නැත්නම් CNNs කියලා කියන්නේ. ResNet-50 කියන්නේ ඒකේ advanced version එකක්. Specifically, අපි ResNet-50 කියන pre-trained model එක fine-tune කරනවා, මොකද ඒක මේ වගේ task එකකට ගොඩක් effective. මේ project එකේදී අපි Flask framework එක භාවිත කරලා web UI එකක් හදලා, predict කරන process එක online expose කරනවා. ඒ කියන්නේ, image එකක් upload කරලා, result එක බලන්න පුළුවන්.
මේ project එක පටන් ගත්ත විදිය ගැන අපි පියවරෙන් පියවර කතා කරමු.
Step 1 : Project Setup
මේකට මම බාවිතා කරන්නේ Pycharm IDE එක. මේකෙදි අපි මුලින්ම Files Tab ඔස්සේ New Project එකක් Create කරගන්න ඕනේ. මම මෙතනදි Project Name එකට “Brain_Cancer” ලෙස දීලා Environment එකට මම කලින් setup කරගත්ත Environment එක selected කරගත්තා “webapp”. ඊට පස්සෙ Create කරගන්න.
හරි මෙතනදි ඔයාලට ප්රශ්නයක් ඒවි කොහොමද setup කරගන්න වගේ දේවල්. මම එ ගැන ඇතුලත් කරලා Articale එකක් ඊලගට ගෙන්නම්.
Create කරගත්තම ඔයාට Empty Project එකක් open වේවි.
Step 2: Download Dataset
දැන් අපි Model එක train කරන්න අවශය කරන Dataset එක Download කරගෙන ඉමු. මේ Link ගිහින් Dataset එක Download කරගෙන Extract කරගන්න.
Download Dataset – Brain Cancer – MRI dataset
Step 3 : Project Structure එක හදාගැනීම
මේ තමයි Final File Structure එක ඔයාල මෙතන ඔයාලගේ Empty Project එකේ File විදියට Create කරගන්න ඕනේ index.html , Net.py , server.py සහා train.py files පමනයි. ඔයාලට මේ Files පහසුවෙන් create කරගන්න පුලුවන් Project name එක උඩ Right Click කරලා New – ඔස්සේ py formate එකේ files සියල්ලම Python File කියන Option එකෙන් create කරගන්න. ඒ විදියටම index.html file එක HTML File selected කරගෙන Structure එකේ විදියට Create කරගන්න.
දැන් අපි Download කරගත්ත Dataset එක Project එකට upload කරගෙන ඉමු. මෙත්න ඔයා File එක Rename කරගන්න ඕනේ “data” විදියට සහා ඒ Folder එක ඇතුලේ Dataset 3න තියෙන්න ඕනේ. මේ විදියට File setup කරගෙන එය Copy කරගෙන Project name Right Click කරලා එතනට Past කරගන්න.
Step 4: Model Training Code (train.py)
Note – ඔයට මේකේ Full code එක Full Sinhala explanation comment එක්කම මගෙ Github Repo එකේ තියෙනවා ඔයාලට පුලුවන් Code download කරලා Comment කියවල හොද idea එකක් ගන්න.
train.py file එකේ තියෙන්නේ model එක train කරන logic එක.
train.py Code – Ashankavi/Brain_Cancer/train.py
-
Libraries Import කිරීම:
torch,torchvision,matplotlibවගේ libraries import කරගන්නවා. -
Data Transformation: Images train කරන්න කලින් normalize කරලා, resize කරලා, data augmentation කරනවා. මේකෙන් model එකට හොඳට images හඳුනාගන්න පුළුවන් වෙනවා.
-
Dataset Loading:
ImageFolderකියන function එකෙන් ඔයාගේ data folder එකේ images load කරගන්නවා. -
Model එක හදාගැනීම: Pre-trained model එකක් වෙන
ResNet50_Weightsuse කරලාresnet50model එක load කරගන්නවා. මේක transfer learning කියන method එක. -
Training Loop: Epochs ගණනාවක් පුරා images දීලා model එක train කරනවා. Loss එක අඩු වෙනවද, accuracy එක වැඩි වෙනවද කියලා බලනවා.
-
Early Stopping: Validation accuracy එක improve වෙන්නේ නැති වුණොත් training එක නවත්වනවා. මේකෙන් over-fitting එක වළක්වනවා.
-
Model Saving: හොඳම model එක
brain_cancer_model.pthනමින් save කරනවා. save කරගත්ත model එක ඔයාලට Files වල බලාගන්න පුලුවන්.
Note – Code add කරලා Model එක Run කරන්න මේකට වෙලාවක් ගතවේවි අවසානයේ ඔබගේ Terminal එකේ accuracy එකත් Folder එකේ save උන model එකත් බලාගන්න පුලුවන්.
Step 5: Backend Code (server.py) Flask
server.py Code – Ashankavi/Brain_Cancer/server.py
server.py file එකේ තියෙන්නේ project එක web app එකක් විදියට run කරන්න අවශ්ය code එක.
The server.py file contains the code needed to run the project as a web app.
-
Flask Setup:
Flasklibrary එක import කරලා web app එක හදනවා. -
Model Loading:
brain_cancer_model.pthfile එකෙන් train කරපු model එක load කරගන්නවා. -
Prediction Route (
/predict): මේක API endpoint එක. මේකට POST request එකකින් image එකක් ආවම, ඒකpredictfunction එකට යවනවා. -
Image Processing: Upload කරපු image එක transform කරලා tensor එකක් බවට පත් කරනවා.
-
Prediction: Model එකෙන් prediction එක අරගෙන, result එක JSON format එකෙන් web UI එකට යවනවා.
Note – Server එක Run කරන්න කලින් Net.py file එකත් set කර මුලින් Net.py Start කර පසුව Run කරන්න ඔබට බලාගන්න පුලුවන් Terminal එකේ Server එක start වෙනවා.
Step 6: Model Architecture (Net.py)
Net.py Code – Ashankavi/Brain_Cancer/Net.py
Net.py ගොනුවෙන් කරන්නේ model එකේ ස්වභාවය විස්තර කරන එකයි. මේක train.py ගොනුවේ තියෙන model එකට වඩා වෙනස්. මෙහිදී CNN model එකක ස්ථර (layers) සහ ඒවායේ ක්රියාකාරිත්වය පැහැදිලි කරනවා.
Step 7: Frontend UI (index.html)
index.html Code – Ashankavi/Brain_Cancer/index.html
මේක තමයි user කෙනෙක්ට project එක එක්ක interact කරන්න තියෙන interface එක. This is the interface a user has to interact with the project.
-
File input field එකක් තියෙනවා image එකක් upload කරන්න.
-
Predict button එකක් තියෙනවා prediction process එක trigger කරන්න.
-
Prediction result එක display කරන්න section එකක් තියෙනවා.
Note – අවසානයේ Index file එක setup කරගෙන පසුව Run කරගන්න ඔයාගේ Browser එකේ Auto Open වේවි.
භාවිතා කළ Technologies
මේ project එක develop කරන්න භාවිතා කරපු ප්රධාන Technologies පහතින් තියෙනවා.
Backend Technologies
-
Python: Programming language එක. මේ project එකේ core language එක තමයි Python.
-
PyTorch: Deep learning model එක train කරන්න සහ inference කරන්න භාවිතා කරන library එක.
-
Flask: Lightweight web framework එකක්. මේකෙන් තමයි web server එක හදලා front-end එකට predict කරන්න API එකක් expose කරන්නේ.
-
Flask-CORS: මේක Flask extension එකක්. Front-end එකේ ඉඳන් API එකට request යවද්දි ඇතිවෙන security issues විසඳන්න මේක උදව් වෙනවා.
Model & Data Technologies
-
ResNet-50: මේක Deep Learning model එකක්. Image classification වලට ගොඩක් successful. අපි මේක pre-trained model එකක් විදියට අරගෙන අපේ task එකට අනුව fine-tune කරනවා (Transfer Learning).
-
Torchvision: PyTorch library එකේම කොටසක්. මේකෙන් image datasets, model architectures සහ image transformations handle කරනවා.
Other Technologies
-
HTML, CSS, JavaScript: Web UI එක හදන්න භාවිතා කරන languages. Simple UI එකක් හදලා Python backend එකට connect කරන්න මේවා use කරනවා.
-
Matplotlib: Model training එකේදී loss graph, accuracy graph වගේ දේවල් visualize කරන්න භාවිතා කරන library එක.
Project Open කරන හැම වරක්ම Model Train කිරීමට අවශය නැත. train.py Run කරන්නේ Model Train කර save කිරීමට පමනයි. ඔබ කල යුත්තේ Server.py , Net.py සහා අවසානයේ Index.html file Run කිරීම පමනයි.
ඔබට මේ article එකෙන් අලුත් දෙයක් ඉගෙන ගන්න ලැබුණා නම්, කරුණාකරලා ඒ ගැන comment එකක් දාගෙන යන්න. ඒ වගේම මේ project එක ගැන ඔබට අලුත් අදහසක් තියෙනවා නම්, ඒකත් අපිත් එක්ක බෙදාගන්න.
ඔබට ඔබේ උපාධි අවසන් ව්යාපෘතිය (Degree final project) සඳහාත් මේ project එක භාවිතා කරන්න පුළුවන්. ඔබට අවශ්ය පරිදි මේක තව දියුණු කරලා වෙනත් දේවල් සඳහාත් implement කරන්න පුළුවන්.
අපේ ඊළඟ ලිපියෙන්, Python සහ conda environment එකක් setup කරගන්න විදිය ගැන කතා කරමු.