diff --git a/.gitattributes b/.gitattributes index a6344aac8c09253b3b630fb776ae94478aa0275b..a3c1d090c5a37d407bd268a76dcf0d19e9ccb5d9 100644 --- a/.gitattributes +++ b/.gitattributes @@ -33,3 +33,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text *.zip filter=lfs diff=lfs merge=lfs -text *.zst filter=lfs diff=lfs merge=lfs -text *tfevents* filter=lfs diff=lfs merge=lfs -text +brain-tumor-train.csv filter=lfs diff=lfs merge=lfs -text diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..944dc2ff22d8f869502e1d0c52a6ea13f2cd2afc --- /dev/null +++ b/Dockerfile @@ -0,0 +1,10 @@ +# Use the official TensorFlow Docker image as the base image +FROM tensorflow/tensorflow:latest + +WORKDIR / + +# Copy all files from the current directory to the Docker image +COPY . . + +# Install any additional dependencies (you can add more if needed) +RUN pip install --no-cache-dir Pillow argparse pandas numpy scikit-learn \ No newline at end of file diff --git a/README b/README new file mode 100644 index 0000000000000000000000000000000000000000..dfee103fa0a6f9739d10a2adc948193bf82f9003 --- /dev/null +++ b/README @@ -0,0 +1,11 @@ +# Train +python train.py --dataset_path brain-tumor-train.csv --model_save_path model.h5 + +# Generate GRadients +python gen_gradients.py --image_dir /brain_tumor_classifier_dataset --gradients_save_path /gradients --model_path model.h5 + +# Update Model +python update_model.py --model_path model.h5 --saved_gradients gradients --dataset_path brain-tumor-train.csv + +# Inference +python inference.py --model_path model.h5 --image_dir brain_tumor_classifier_dataset --output_json outputs.json \ No newline at end of file diff --git a/brain-tumor-train.csv b/brain-tumor-train.csv new file mode 100644 index 0000000000000000000000000000000000000000..14d53ec1ede34dce54e62adf065ffc7a3f204040 --- /dev/null +++ b/brain-tumor-train.csv @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d41020860e13cda2c900e4f7c2294b3b4f0e54295fcf621b584318ea465aca41 +size 199028317 diff --git a/brain_tumor_classifier.h5 b/brain_tumor_classifier.h5 new file mode 100644 index 0000000000000000000000000000000000000000..a182c3db70881a4ab468b6d8d9006222b26e8201 --- /dev/null +++ b/brain_tumor_classifier.h5 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c18c9f8e6229690995ba23905be9f8ae1eda625d81f31fee92ddca28c078885 +size 25564344 diff --git a/brain_tumor_classifier_dataset/1 no.jpeg b/brain_tumor_classifier_dataset/1 no.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..4b6b6abd08ee46e5eb9b78db8a20754e35e93765 Binary files /dev/null and b/brain_tumor_classifier_dataset/1 no.jpeg differ diff --git a/brain_tumor_classifier_dataset/10 no.jpg b/brain_tumor_classifier_dataset/10 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d820352f59a309b3715e25936b9b31ca7c28cd5b Binary files /dev/null and b/brain_tumor_classifier_dataset/10 no.jpg differ diff --git a/brain_tumor_classifier_dataset/11 no.jpg b/brain_tumor_classifier_dataset/11 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f61ec937ba7f881ab5d767b7683256c0e658b79c Binary files /dev/null and b/brain_tumor_classifier_dataset/11 no.jpg differ diff --git a/brain_tumor_classifier_dataset/12 no.jpg b/brain_tumor_classifier_dataset/12 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d792d25f5f8648ddf46183ceab7c6781f8950c73 Binary files /dev/null and b/brain_tumor_classifier_dataset/12 no.jpg differ diff --git a/brain_tumor_classifier_dataset/13 no.jpg b/brain_tumor_classifier_dataset/13 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..45e37683745a289394791c1bb81fec9c6fdb3e21 Binary files /dev/null and b/brain_tumor_classifier_dataset/13 no.jpg differ diff --git a/brain_tumor_classifier_dataset/14 no.jpg b/brain_tumor_classifier_dataset/14 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0f72f2b4edd428a3aa8ea3b71552b16f1e9c765e Binary files /dev/null and b/brain_tumor_classifier_dataset/14 no.jpg differ diff --git a/brain_tumor_classifier_dataset/15 no.jpg b/brain_tumor_classifier_dataset/15 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ca1b6b69e643504fd15afc3e30ecec1bd3f23731 Binary files /dev/null and b/brain_tumor_classifier_dataset/15 no.jpg differ diff --git a/brain_tumor_classifier_dataset/17 no.jpg b/brain_tumor_classifier_dataset/17 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b98124ea120b08a788dd4a81750a68ac0bb4beb9 Binary files /dev/null and b/brain_tumor_classifier_dataset/17 no.jpg differ diff --git a/brain_tumor_classifier_dataset/18 no.jpg b/brain_tumor_classifier_dataset/18 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8a4c8921b917250134368eb57eb7e4d76693ab16 Binary files /dev/null and b/brain_tumor_classifier_dataset/18 no.jpg differ diff --git a/brain_tumor_classifier_dataset/19 no.jpg b/brain_tumor_classifier_dataset/19 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d37f629e7ed9df0ce785542242a319c784b59b5e Binary files /dev/null and b/brain_tumor_classifier_dataset/19 no.jpg differ diff --git a/brain_tumor_classifier_dataset/2 no.jpeg b/brain_tumor_classifier_dataset/2 no.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..05a88786953625011f73dec237cd76f94b9f8ce6 Binary files /dev/null and b/brain_tumor_classifier_dataset/2 no.jpeg differ diff --git a/brain_tumor_classifier_dataset/20 no.jpg b/brain_tumor_classifier_dataset/20 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a3569a977d19aa5c08a27ae4e73c4dd16afa9e3c Binary files /dev/null and b/brain_tumor_classifier_dataset/20 no.jpg differ diff --git a/brain_tumor_classifier_dataset/21 no.jpg b/brain_tumor_classifier_dataset/21 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a5dc62ab355f18747d3a63b4f9397661962d7fbc Binary files /dev/null and b/brain_tumor_classifier_dataset/21 no.jpg differ diff --git a/brain_tumor_classifier_dataset/22 no.jpg b/brain_tumor_classifier_dataset/22 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..525c5ddc66cd828b670bec8d040051220f15cea6 Binary files /dev/null and b/brain_tumor_classifier_dataset/22 no.jpg differ diff --git a/brain_tumor_classifier_dataset/23 no.jpg b/brain_tumor_classifier_dataset/23 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c85fb39fa8eee3fac74e35df75dbe42c11791fc8 Binary files /dev/null and b/brain_tumor_classifier_dataset/23 no.jpg differ diff --git a/brain_tumor_classifier_dataset/24 no.jpg b/brain_tumor_classifier_dataset/24 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d335bf6dac4361adb0fade3310d4e48b94f1d747 Binary files /dev/null and b/brain_tumor_classifier_dataset/24 no.jpg differ diff --git a/brain_tumor_classifier_dataset/25 no.jpg b/brain_tumor_classifier_dataset/25 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a2447e149819c3ba49783c5b318b3bd1f6fb7598 Binary files /dev/null and b/brain_tumor_classifier_dataset/25 no.jpg differ diff --git a/brain_tumor_classifier_dataset/26 no.jpg b/brain_tumor_classifier_dataset/26 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b6df0b0fcb97ddbd3e92a1098cb1cad371699796 Binary files /dev/null and b/brain_tumor_classifier_dataset/26 no.jpg differ diff --git a/brain_tumor_classifier_dataset/27 no.jpg b/brain_tumor_classifier_dataset/27 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b98124ea120b08a788dd4a81750a68ac0bb4beb9 Binary files /dev/null and b/brain_tumor_classifier_dataset/27 no.jpg differ diff --git a/brain_tumor_classifier_dataset/28 no.jpg b/brain_tumor_classifier_dataset/28 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0ba523adc31c01ef355c08a1709ed1969d1f83d7 Binary files /dev/null and b/brain_tumor_classifier_dataset/28 no.jpg differ diff --git a/brain_tumor_classifier_dataset/29 no.jpg b/brain_tumor_classifier_dataset/29 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..283916ca57c715db428d7eb8341b2bd60b1fecd3 Binary files /dev/null and b/brain_tumor_classifier_dataset/29 no.jpg differ diff --git a/brain_tumor_classifier_dataset/3 no.jpg b/brain_tumor_classifier_dataset/3 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..a5617dd1991cfe58a1f048be2641b8630f81f9ca Binary files /dev/null and b/brain_tumor_classifier_dataset/3 no.jpg differ diff --git a/brain_tumor_classifier_dataset/30 no.jpg b/brain_tumor_classifier_dataset/30 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..dbfe48911cc3eb218278c7760f717dd2bd2bfed0 Binary files /dev/null and b/brain_tumor_classifier_dataset/30 no.jpg differ diff --git a/brain_tumor_classifier_dataset/31 no.jpg b/brain_tumor_classifier_dataset/31 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ec0f8e1669e9cb91bcdd2d794519f264b8280bb0 Binary files /dev/null and b/brain_tumor_classifier_dataset/31 no.jpg differ diff --git a/brain_tumor_classifier_dataset/32 no.jpg b/brain_tumor_classifier_dataset/32 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fd4feb5b923c0ada479951882ac77549743deee0 Binary files /dev/null and b/brain_tumor_classifier_dataset/32 no.jpg differ diff --git a/brain_tumor_classifier_dataset/33 no.jpg b/brain_tumor_classifier_dataset/33 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5f4e54ae3e2d0e10b59d7646b2f093472d756925 Binary files /dev/null and b/brain_tumor_classifier_dataset/33 no.jpg differ diff --git a/brain_tumor_classifier_dataset/34 no.jpg b/brain_tumor_classifier_dataset/34 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b83340c9d2e2146372c2bb6f042e998dff986cdb Binary files /dev/null and b/brain_tumor_classifier_dataset/34 no.jpg differ diff --git a/brain_tumor_classifier_dataset/35 no.jpg b/brain_tumor_classifier_dataset/35 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0bcac515a5db904eae5b0cab084c5af8f3e19e05 Binary files /dev/null and b/brain_tumor_classifier_dataset/35 no.jpg differ diff --git a/brain_tumor_classifier_dataset/36 no.jpg b/brain_tumor_classifier_dataset/36 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8e1df7147a32e103671199ad03928dd7fde4aba9 Binary files /dev/null and b/brain_tumor_classifier_dataset/36 no.jpg differ diff --git a/brain_tumor_classifier_dataset/37 no.jpg b/brain_tumor_classifier_dataset/37 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c64348cd2e9751eb3d7c8a1f7c5a589b5d61498f Binary files /dev/null and b/brain_tumor_classifier_dataset/37 no.jpg differ diff --git a/brain_tumor_classifier_dataset/38 no.jpg b/brain_tumor_classifier_dataset/38 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..25b5e8626e1790b2cdc1fd7d4d479bdf579fc0ae Binary files /dev/null and b/brain_tumor_classifier_dataset/38 no.jpg differ diff --git a/brain_tumor_classifier_dataset/39 no.jpg b/brain_tumor_classifier_dataset/39 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f691023188fe0d2087d581c791c26cf8fc199938 Binary files /dev/null and b/brain_tumor_classifier_dataset/39 no.jpg differ diff --git a/brain_tumor_classifier_dataset/4 no.jpg b/brain_tumor_classifier_dataset/4 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..daf56786527e3d94f7db5056b4550c12867ec8ac Binary files /dev/null and b/brain_tumor_classifier_dataset/4 no.jpg differ diff --git a/brain_tumor_classifier_dataset/40 no.jpg b/brain_tumor_classifier_dataset/40 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c8cc5e75d80d73e07e1baa671ef2f531b0e1cf2b Binary files /dev/null and b/brain_tumor_classifier_dataset/40 no.jpg differ diff --git a/brain_tumor_classifier_dataset/41 no.jpg b/brain_tumor_classifier_dataset/41 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c8cc5e75d80d73e07e1baa671ef2f531b0e1cf2b Binary files /dev/null and b/brain_tumor_classifier_dataset/41 no.jpg differ diff --git a/brain_tumor_classifier_dataset/42 no.jpg b/brain_tumor_classifier_dataset/42 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..45e37683745a289394791c1bb81fec9c6fdb3e21 Binary files /dev/null and b/brain_tumor_classifier_dataset/42 no.jpg differ diff --git a/brain_tumor_classifier_dataset/43 no.jpg b/brain_tumor_classifier_dataset/43 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..07383795bb20a1c137a1224186b3ba910bd8cc5d Binary files /dev/null and b/brain_tumor_classifier_dataset/43 no.jpg differ diff --git a/brain_tumor_classifier_dataset/44no.jpg b/brain_tumor_classifier_dataset/44no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..909d150da65cd717dee21372c3b1514321be99a6 Binary files /dev/null and b/brain_tumor_classifier_dataset/44no.jpg differ diff --git a/brain_tumor_classifier_dataset/45 no.jpg b/brain_tumor_classifier_dataset/45 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..aa7dcb210e1818906b27a77d5a5bd348c69987f8 Binary files /dev/null and b/brain_tumor_classifier_dataset/45 no.jpg differ diff --git a/brain_tumor_classifier_dataset/46 no.jpg b/brain_tumor_classifier_dataset/46 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7ad4b441557234a1375e8a6b15d463348e0c45a9 Binary files /dev/null and b/brain_tumor_classifier_dataset/46 no.jpg differ diff --git a/brain_tumor_classifier_dataset/47 no.jpg b/brain_tumor_classifier_dataset/47 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..efcce8be39d40e75f75236b76258e1e00363ca07 Binary files /dev/null and b/brain_tumor_classifier_dataset/47 no.jpg differ diff --git a/brain_tumor_classifier_dataset/48 no.jpeg b/brain_tumor_classifier_dataset/48 no.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..48cc3353b7c096b534d02b51409be1ad5dc331dc Binary files /dev/null and b/brain_tumor_classifier_dataset/48 no.jpeg differ diff --git a/brain_tumor_classifier_dataset/49 no.jpg b/brain_tumor_classifier_dataset/49 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c0fcbfb49df23fe2122cb48ccd19a85778cf61fa Binary files /dev/null and b/brain_tumor_classifier_dataset/49 no.jpg differ diff --git a/brain_tumor_classifier_dataset/5 no.jpg b/brain_tumor_classifier_dataset/5 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..16c3482cb5cab2b85d1f3b602d9d6664d8216a1d Binary files /dev/null and b/brain_tumor_classifier_dataset/5 no.jpg differ diff --git a/brain_tumor_classifier_dataset/50 no.jpg b/brain_tumor_classifier_dataset/50 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..23bcfb24b19f33e6fa8e27a33be2e593f6cc2f6f Binary files /dev/null and b/brain_tumor_classifier_dataset/50 no.jpg differ diff --git a/brain_tumor_classifier_dataset/6 no.jpg b/brain_tumor_classifier_dataset/6 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..63821b87628788dad865085c1d88c3460a5c14de Binary files /dev/null and b/brain_tumor_classifier_dataset/6 no.jpg differ diff --git a/brain_tumor_classifier_dataset/7 no.jpg b/brain_tumor_classifier_dataset/7 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..653f577c52981630a09d2c92973e6ad46f4d7d99 Binary files /dev/null and b/brain_tumor_classifier_dataset/7 no.jpg differ diff --git a/brain_tumor_classifier_dataset/8 no.jpg b/brain_tumor_classifier_dataset/8 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..25b5e8626e1790b2cdc1fd7d4d479bdf579fc0ae Binary files /dev/null and b/brain_tumor_classifier_dataset/8 no.jpg differ diff --git a/brain_tumor_classifier_dataset/9 no.jpg b/brain_tumor_classifier_dataset/9 no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d820352f59a309b3715e25936b9b31ca7c28cd5b Binary files /dev/null and b/brain_tumor_classifier_dataset/9 no.jpg differ diff --git a/brain_tumor_classifier_dataset/N1.JPG b/brain_tumor_classifier_dataset/N1.JPG new file mode 100644 index 0000000000000000000000000000000000000000..e14d29beb48515b1bb18efd41153f4620de09eb8 Binary files /dev/null and b/brain_tumor_classifier_dataset/N1.JPG differ diff --git a/brain_tumor_classifier_dataset/N11.jpg b/brain_tumor_classifier_dataset/N11.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f59fab0f77c03b67bea6b855aba5416d0d90869c Binary files /dev/null and b/brain_tumor_classifier_dataset/N11.jpg differ diff --git a/brain_tumor_classifier_dataset/N15.jpg b/brain_tumor_classifier_dataset/N15.jpg new file mode 100644 index 0000000000000000000000000000000000000000..83afabcd2c40c9440462a1d6e7cc17bd1996f5c0 Binary files /dev/null and b/brain_tumor_classifier_dataset/N15.jpg differ diff --git a/brain_tumor_classifier_dataset/N16.jpg b/brain_tumor_classifier_dataset/N16.jpg new file mode 100644 index 0000000000000000000000000000000000000000..922d4475330d35cf8de1a403fd08eaad4c982785 Binary files /dev/null and b/brain_tumor_classifier_dataset/N16.jpg differ diff --git a/brain_tumor_classifier_dataset/N17.jpg b/brain_tumor_classifier_dataset/N17.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5d18069b090cbd675416ad9ec4445168971a77f2 Binary files /dev/null and b/brain_tumor_classifier_dataset/N17.jpg differ diff --git a/brain_tumor_classifier_dataset/N19.JPG b/brain_tumor_classifier_dataset/N19.JPG new file mode 100644 index 0000000000000000000000000000000000000000..0bb816529a734bb4066686966a538f369fe720c7 Binary files /dev/null and b/brain_tumor_classifier_dataset/N19.JPG differ diff --git a/brain_tumor_classifier_dataset/N2.JPG b/brain_tumor_classifier_dataset/N2.JPG new file mode 100644 index 0000000000000000000000000000000000000000..ff65b2c8b38d1ddc12500468be734b6a40fde49d Binary files /dev/null and b/brain_tumor_classifier_dataset/N2.JPG differ diff --git a/brain_tumor_classifier_dataset/N20.JPG b/brain_tumor_classifier_dataset/N20.JPG new file mode 100644 index 0000000000000000000000000000000000000000..a43452ece718cbe44d7679c62c93731bc2cadddd Binary files /dev/null and b/brain_tumor_classifier_dataset/N20.JPG differ diff --git a/brain_tumor_classifier_dataset/N21.jpg b/brain_tumor_classifier_dataset/N21.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4ee1e7bd3c442c09095f1dc35d37cdd022920bc8 Binary files /dev/null and b/brain_tumor_classifier_dataset/N21.jpg differ diff --git a/brain_tumor_classifier_dataset/N22.JPG b/brain_tumor_classifier_dataset/N22.JPG new file mode 100644 index 0000000000000000000000000000000000000000..00d57703c5f03666a727f603ad907a9bf27db7d0 Binary files /dev/null and b/brain_tumor_classifier_dataset/N22.JPG differ diff --git a/brain_tumor_classifier_dataset/N26.JPG b/brain_tumor_classifier_dataset/N26.JPG new file mode 100644 index 0000000000000000000000000000000000000000..9f0deec64487f2ea6eda4dca51050a278c3f44b2 Binary files /dev/null and b/brain_tumor_classifier_dataset/N26.JPG differ diff --git a/brain_tumor_classifier_dataset/N3.jpg b/brain_tumor_classifier_dataset/N3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6d463fc5af2c4a08771aa6ff53c1a9baa6c89b9a Binary files /dev/null and b/brain_tumor_classifier_dataset/N3.jpg differ diff --git a/brain_tumor_classifier_dataset/N5.jpg b/brain_tumor_classifier_dataset/N5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..daf56786527e3d94f7db5056b4550c12867ec8ac Binary files /dev/null and b/brain_tumor_classifier_dataset/N5.jpg differ diff --git a/brain_tumor_classifier_dataset/N6.jpg b/brain_tumor_classifier_dataset/N6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c6340e08e186c8f485b493b8e71ae9eae7abf342 Binary files /dev/null and b/brain_tumor_classifier_dataset/N6.jpg differ diff --git a/brain_tumor_classifier_dataset/No11.jpg b/brain_tumor_classifier_dataset/No11.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6b572f218a0ba333388841202aec6e8fa4b98bfe Binary files /dev/null and b/brain_tumor_classifier_dataset/No11.jpg differ diff --git a/brain_tumor_classifier_dataset/No12.jpg b/brain_tumor_classifier_dataset/No12.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b9ec71c6e45b536d04106f48dad6f5716460da9e Binary files /dev/null and b/brain_tumor_classifier_dataset/No12.jpg differ diff --git a/brain_tumor_classifier_dataset/No13.jpg b/brain_tumor_classifier_dataset/No13.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ac746ab827de9b095139eb749b378807a1ba4171 Binary files /dev/null and b/brain_tumor_classifier_dataset/No13.jpg differ diff --git a/brain_tumor_classifier_dataset/No14.jpg b/brain_tumor_classifier_dataset/No14.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c99939d514b218f3680aa59972d5c580b194834b Binary files /dev/null and b/brain_tumor_classifier_dataset/No14.jpg differ diff --git a/brain_tumor_classifier_dataset/No15.jpg b/brain_tumor_classifier_dataset/No15.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f712592d237d09f9587ce078247ad62f1be9e34d Binary files /dev/null and b/brain_tumor_classifier_dataset/No15.jpg differ diff --git a/brain_tumor_classifier_dataset/No16.jpg b/brain_tumor_classifier_dataset/No16.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3ba29adc077cdf789e7c90f27589661d0655752a Binary files /dev/null and b/brain_tumor_classifier_dataset/No16.jpg differ diff --git a/brain_tumor_classifier_dataset/No17.jpg b/brain_tumor_classifier_dataset/No17.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f712592d237d09f9587ce078247ad62f1be9e34d Binary files /dev/null and b/brain_tumor_classifier_dataset/No17.jpg differ diff --git a/brain_tumor_classifier_dataset/No18.jpg b/brain_tumor_classifier_dataset/No18.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d9bb9fcc9fe961ea2e986c79c0cefdaa2acba514 Binary files /dev/null and b/brain_tumor_classifier_dataset/No18.jpg differ diff --git a/brain_tumor_classifier_dataset/No19.jpg b/brain_tumor_classifier_dataset/No19.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0b4bc3308484028b4d91a25c84b2dfdf6626459b Binary files /dev/null and b/brain_tumor_classifier_dataset/No19.jpg differ diff --git a/brain_tumor_classifier_dataset/No20.jpg b/brain_tumor_classifier_dataset/No20.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ee26f6251bdffbf2be9a3b4de4a9d40a3f564d38 Binary files /dev/null and b/brain_tumor_classifier_dataset/No20.jpg differ diff --git a/brain_tumor_classifier_dataset/No21.jpg b/brain_tumor_classifier_dataset/No21.jpg new file mode 100644 index 0000000000000000000000000000000000000000..95f5ca180efed0d5ba1d1c1887f451de0795f1f5 Binary files /dev/null and b/brain_tumor_classifier_dataset/No21.jpg differ diff --git a/brain_tumor_classifier_dataset/No22.jpg b/brain_tumor_classifier_dataset/No22.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d646107d0e03836b8232da9d046aa1b9e14c9ac2 Binary files /dev/null and b/brain_tumor_classifier_dataset/No22.jpg differ diff --git a/brain_tumor_classifier_dataset/Y1.jpg b/brain_tumor_classifier_dataset/Y1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d248b6280eb37257a8c96105cc8e5df1ce80a6e2 Binary files /dev/null and b/brain_tumor_classifier_dataset/Y1.jpg differ diff --git a/brain_tumor_classifier_dataset/Y10.jpg b/brain_tumor_classifier_dataset/Y10.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d945f3ced9aa88365864bedca6bb42a6471b9f63 Binary files /dev/null and b/brain_tumor_classifier_dataset/Y10.jpg differ diff --git a/brain_tumor_classifier_dataset/no 1.jpg b/brain_tumor_classifier_dataset/no 1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c0fcbfb49df23fe2122cb48ccd19a85778cf61fa Binary files /dev/null and b/brain_tumor_classifier_dataset/no 1.jpg differ diff --git a/brain_tumor_classifier_dataset/no 10.jpg b/brain_tumor_classifier_dataset/no 10.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b8003e6f4614b1b8c2a041797cbc64d3af5d17f9 Binary files /dev/null and b/brain_tumor_classifier_dataset/no 10.jpg differ diff --git a/brain_tumor_classifier_dataset/no 100.jpg b/brain_tumor_classifier_dataset/no 100.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ccf156bc570947fe1cf6a6a2cf6cbd511432c1b1 Binary files /dev/null and b/brain_tumor_classifier_dataset/no 100.jpg differ diff --git a/brain_tumor_classifier_dataset/no 2.jpg b/brain_tumor_classifier_dataset/no 2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8c19ff113969eb2c66174f91d967a17e6036e5a0 Binary files /dev/null and b/brain_tumor_classifier_dataset/no 2.jpg differ diff --git a/brain_tumor_classifier_dataset/no 3.jpg b/brain_tumor_classifier_dataset/no 3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5c8997716136a28b20bbb110fec821477ccbb04a Binary files /dev/null and b/brain_tumor_classifier_dataset/no 3.jpg differ diff --git a/brain_tumor_classifier_dataset/no 4.jpg b/brain_tumor_classifier_dataset/no 4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..6d463fc5af2c4a08771aa6ff53c1a9baa6c89b9a Binary files /dev/null and b/brain_tumor_classifier_dataset/no 4.jpg differ diff --git a/brain_tumor_classifier_dataset/no 5.jpeg b/brain_tumor_classifier_dataset/no 5.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..647f52e0d786584ecf3b3cf03ce92d90113cf26c Binary files /dev/null and b/brain_tumor_classifier_dataset/no 5.jpeg differ diff --git a/brain_tumor_classifier_dataset/no 6.jpg b/brain_tumor_classifier_dataset/no 6.jpg new file mode 100644 index 0000000000000000000000000000000000000000..157b16a9d4c8e9a5f66c09468e7e0e76ac74451e Binary files /dev/null and b/brain_tumor_classifier_dataset/no 6.jpg differ diff --git a/brain_tumor_classifier_dataset/no 7.jpeg b/brain_tumor_classifier_dataset/no 7.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..6b572f218a0ba333388841202aec6e8fa4b98bfe Binary files /dev/null and b/brain_tumor_classifier_dataset/no 7.jpeg differ diff --git a/brain_tumor_classifier_dataset/no 8.jpg b/brain_tumor_classifier_dataset/no 8.jpg new file mode 100644 index 0000000000000000000000000000000000000000..51230e7f1ec9f3be95b6988075f8db533639008a Binary files /dev/null and b/brain_tumor_classifier_dataset/no 8.jpg differ diff --git a/brain_tumor_classifier_dataset/no 89.jpg b/brain_tumor_classifier_dataset/no 89.jpg new file mode 100644 index 0000000000000000000000000000000000000000..42b87882bf041e3fba157a770320885da3c9047d Binary files /dev/null and b/brain_tumor_classifier_dataset/no 89.jpg differ diff --git a/brain_tumor_classifier_dataset/no 9.png b/brain_tumor_classifier_dataset/no 9.png new file mode 100644 index 0000000000000000000000000000000000000000..fa2fd1400afa037936114535fc610420f87f43d4 Binary files /dev/null and b/brain_tumor_classifier_dataset/no 9.png differ diff --git a/brain_tumor_classifier_dataset/no 90.jpg b/brain_tumor_classifier_dataset/no 90.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ec63fe6d48ebf15e9f4b757af2b32b3ac6de673e Binary files /dev/null and b/brain_tumor_classifier_dataset/no 90.jpg differ diff --git a/brain_tumor_classifier_dataset/no 91.jpeg b/brain_tumor_classifier_dataset/no 91.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..fd065e344a7e0dcbcd82886ff7117be8f3c06499 Binary files /dev/null and b/brain_tumor_classifier_dataset/no 91.jpeg differ diff --git a/brain_tumor_classifier_dataset/no 92.jpg b/brain_tumor_classifier_dataset/no 92.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4b97853631a439d74e034cf127a1dbdcd4fa9912 Binary files /dev/null and b/brain_tumor_classifier_dataset/no 92.jpg differ diff --git a/brain_tumor_classifier_dataset/no 923.jpg b/brain_tumor_classifier_dataset/no 923.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1e244021922377bf0842e36853972991e0c70d07 Binary files /dev/null and b/brain_tumor_classifier_dataset/no 923.jpg differ diff --git a/brain_tumor_classifier_dataset/no 94.jpg b/brain_tumor_classifier_dataset/no 94.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4b6b6abd08ee46e5eb9b78db8a20754e35e93765 Binary files /dev/null and b/brain_tumor_classifier_dataset/no 94.jpg differ diff --git a/brain_tumor_classifier_dataset/no 95.jpg b/brain_tumor_classifier_dataset/no 95.jpg new file mode 100644 index 0000000000000000000000000000000000000000..3edd8205b5eb53e44e842068001526deafbcdc21 Binary files /dev/null and b/brain_tumor_classifier_dataset/no 95.jpg differ diff --git a/brain_tumor_classifier_dataset/no 96.jpg b/brain_tumor_classifier_dataset/no 96.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d8abea12608f33ae7810c0fd474eac86ad5e484c Binary files /dev/null and b/brain_tumor_classifier_dataset/no 96.jpg differ diff --git a/brain_tumor_classifier_dataset/no 97.jpg b/brain_tumor_classifier_dataset/no 97.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bb8c97661f3e65f4619c00a4abc620b7fdba5404 Binary files /dev/null and b/brain_tumor_classifier_dataset/no 97.jpg differ diff --git a/brain_tumor_classifier_dataset/no 98.jpg b/brain_tumor_classifier_dataset/no 98.jpg new file mode 100644 index 0000000000000000000000000000000000000000..87a311bdfaae2b24faac8007896348e57dc3b3fd Binary files /dev/null and b/brain_tumor_classifier_dataset/no 98.jpg differ diff --git a/brain_tumor_classifier_dataset/no 99.jpg b/brain_tumor_classifier_dataset/no 99.jpg new file mode 100644 index 0000000000000000000000000000000000000000..38b817d054137285f7138ef69b486336ea2ba41f Binary files /dev/null and b/brain_tumor_classifier_dataset/no 99.jpg differ diff --git a/brain_tumor_classifier_dataset/no.jpg b/brain_tumor_classifier_dataset/no.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c218072977a61cde318e461456b434d7a7be6aa5 Binary files /dev/null and b/brain_tumor_classifier_dataset/no.jpg differ diff --git a/gen_gradients.py b/gen_gradients.py new file mode 100644 index 0000000000000000000000000000000000000000..4406354f8ff2d1ab42b2d6e3eaebdbdfbfdd4a2d --- /dev/null +++ b/gen_gradients.py @@ -0,0 +1,55 @@ +import argparse +import tensorflow as tf +from tensorflow.keras.preprocessing.image import load_img, img_to_array +import os +import numpy as np +import uuid + +def main(image_dir, model_path, gradients_save_path): + # Load all images from directory into a list + target_size = (32, 32) + images_list = [] + for img_path in os.listdir(image_dir): + full_path = os.path.join(image_dir, img_path) + if os.path.isfile(full_path): + image = load_img(full_path, target_size=(64, 64), color_mode='grayscale') + image_arr = img_to_array(image) / 255.0 + images_list.append(image_arr) + + data = np.array(images_list) + + # Load the model + model = tf.keras.models.load_model(model_path) + model.summary() + + # Check if data is available and is not empty + if data is not None and len(data) > 0: + pseudo_labels = model.predict(data) + else: + print("The data variable is empty!") + + def compute_gradients(model, data, labels): + with tf.GradientTape() as tape: + predictions = model(data, training=True) + loss = tf.keras.losses.categorical_crossentropy(labels, predictions) + gradients = tape.gradient(loss, model.trainable_variables) + return gradients + + gradients = compute_gradients(model, data, pseudo_labels) + + # Serialize gradients and save to files + os.makedirs(gradients_save_path, exist_ok=True) + + for grad in gradients: + gradient_id = uuid.uuid4() + path = os.path.join(gradients_save_path, f'gradient_{gradient_id}.npy') + np.save(path, grad.numpy()) + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Load images, use model to predict and compute gradients.') + parser.add_argument('--image_dir', type=str, default='/content/brain_tumor_dataset', help='Directory where images are located.') + parser.add_argument('--model_path', type=str, default='/content/brain_tumor_classifier.h5', help='Path to the model file.') + parser.add_argument('--gradients_save_path', type=str, default='saved_gradients', help='Directory where gradients will be saved.') + + args = parser.parse_args() + main(args.image_dir, args.model_path, args.gradients_save_path) diff --git a/inference.py b/inference.py new file mode 100644 index 0000000000000000000000000000000000000000..0c091009da2c778a81cdb56d39c0b4d54f1cbcac --- /dev/null +++ b/inference.py @@ -0,0 +1,50 @@ +import argparse +import os +import tensorflow as tf +import numpy as np +from tensorflow.keras.preprocessing.image import load_img, img_to_array +import json + +def load_images(image_dir, target_size=(64, 64)): + images_list = [] + filenames = [] + for img_name in os.listdir(image_dir): + img_path = os.path.join(image_dir, img_name) + if os.path.isfile(img_path): + image = load_img(img_path, target_size=target_size, color_mode='grayscale') + image_arr = img_to_array(image) / 255.0 + images_list.append(image_arr) + filenames.append(img_name) + return np.array(images_list), filenames + +def main(model_path, image_dir, output_json_path): + # Load the model + model = tf.keras.models.load_model(model_path) + + # Load images + images, filenames = load_images(image_dir) + images = images.reshape(images.shape[0], 64, 64, 1) + + # Make predictions + predictions = model.predict(images) + + # Assuming binary classification; converting the sigmoid output to binary labels + binary_predictions = [1 if pred[0] > 0.5 else 0 for pred in predictions] + + # Create a dictionary with filenames as keys and predictions as values + output_dict = dict(zip(filenames, binary_predictions)) + + # Save predictions to a JSON file + with open(output_json_path, 'w') as outfile: + json.dump(output_dict, outfile) + + print(f"Predictions saved to: {output_json_path}") + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Perform inference and save outputs to a JSON file.') + parser.add_argument('--model_path', type=str, required=True, help='Path to the model file.') + parser.add_argument('--image_dir', type=str, required=True, help='Directory containing images for inference.') + parser.add_argument('--output_json', type=str, default='predictions.json', help='Path to save predictions in JSON format.') + + args = parser.parse_args() + main(args.model_path, args.image_dir, args.output_json) diff --git a/train.py b/train.py new file mode 100644 index 0000000000000000000000000000000000000000..79365cabf85d7dea02c59c83cf1732c09d9e04d2 --- /dev/null +++ b/train.py @@ -0,0 +1,76 @@ +import argparse +import tensorflow as tf +from tensorflow.keras import Sequential +from tensorflow.keras.layers import InputLayer +from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense, Dropout, BatchNormalization +import pandas as pd +import numpy as np +from PIL import Image +import io +from sklearn.model_selection import train_test_split + +def main(dataset_path, model_save_path): + # Load the CSV dataset + data_csv = pd.read_csv(dataset_path) + + # Function to convert byte strings back to numpy arrays + def bytes_to_image(byte_str): + image = Image.open(io.BytesIO(byte_str)) + return np.array(image) + + # Extracting byte strings and converting to images + images = [bytes_to_image(eval(row['image'])['bytes']) for _, row in data_csv.iterrows()] + labels = data_csv['label'].values + + # Function to resize images and convert them to grayscale + def resize_and_gray_image(image, target_size=(64, 64)): + """Resizes the input image to the target size and converts to grayscale.""" + image = Image.fromarray((image * 255).astype(np.uint8)) + image = image.convert('L') # Convert to grayscale + return np.array(image.resize(target_size)) + + # Resize and convert images to grayscale + images_processed = [resize_and_gray_image(img) for img in images] + + # Convert list to numpy arrays for compatibility with TensorFlow/Keras + images_processed = np.array(images_processed).astype('float32') / 255.0 + + # Ensure that grayscale images have a single channel dimension + images_processed = images_processed.reshape(images_processed.shape[0], 64, 64, 1) + + # Splitting the data into training and validation sets + X_train, X_val, y_train, y_val = train_test_split(images_processed, labels, test_size=0.2, random_state=42) + + model = Sequential() + model.add(InputLayer(input_shape=(64, 64, 1))) + model.add(Conv2D(filters=32, kernel_size=3, activation="relu", padding="same")) + model.add(MaxPooling2D()) + model.add(Conv2D(filters=64, kernel_size=3, activation="relu", padding="same")) + model.add(MaxPooling2D()) + model.add(Flatten()) + model.add(Dense(128, activation='relu')) + model.add(BatchNormalization()) + model.add(Dropout(rate=0.3)) + model.add(Dense(64, activation="relu")) + model.add(BatchNormalization()) + model.add(Dropout(rate=0.3)) + model.add(Dense(1, activation="sigmoid")) + + model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy']) + + history = model.fit(X_train, y_train, epochs=9, batch_size=32, validation_data=(X_val, y_val)) + + # Evaluate the model + val_loss, val_accuracy = model.evaluate(X_val, y_val) + print(f"Validation Accuracy: {val_accuracy * 100:.2f}%") + + # Save the model + model.save(model_save_path) + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Train a model using provided dataset and save the model.') + parser.add_argument('--dataset_path', type=str, default='yes-no-brain-tumor-train.csv', help='Path to the dataset.') + parser.add_argument('--model_save_path', type=str, default='brain_tumor_classifier.h5', help='Path to save the trained model.') + + args = parser.parse_args() + main(args.dataset_path, args.model_save_path) diff --git a/update_model.py b/update_model.py new file mode 100644 index 0000000000000000000000000000000000000000..8981396226f3934cbf272c71ea5ec9242f97f79d --- /dev/null +++ b/update_model.py @@ -0,0 +1,72 @@ +import argparse +import tensorflow as tf +import os +import pandas as pd +import numpy as np +from PIL import Image +import io +from sklearn.model_selection import train_test_split + +def load_and_preprocess_data(dataset_path, target_size=(64, 64)): + data_csv = pd.read_csv(dataset_path) + + def bytes_to_image(byte_str): + image = Image.open(io.BytesIO(byte_str)) + return np.array(image) + + images = [bytes_to_image(eval(row['image'])['bytes']) for _, row in data_csv.iterrows()] + labels = data_csv['label'].values + + def resize_and_gray_image(image): + image = Image.fromarray((image * 255).astype(np.uint8)) + image = image.convert('L') + return np.array(image.resize(target_size)) + + images_processed = [resize_and_gray_image(img) for img in images] + images_processed = np.array(images_processed).astype('float32') / 255.0 + images_processed = images_processed.reshape(images_processed.shape[0], 64, 64, 1) + + return images_processed, labels + +def main(model_path, saved_gradients_dir, dataset_path, save_path): + # Load the data + X, y = load_and_preprocess_data(dataset_path) + X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42) + + # Load the model + model = tf.keras.models.load_model(model_path) + optimizer = tf.keras.optimizers.Adam() + + # Load gradients from saved files + gradient_files = sorted(os.listdir(saved_gradients_dir)) + loaded_gradients = [np.load(os.path.join(saved_gradients_dir, file)) for file in gradient_files if file.startswith("gradient_")] + + # Convert gradients to tensors + loaded_gradients = [tf.convert_to_tensor(grad) for grad in loaded_gradients] + + # Check compatibility of shapes and apply gradients + compatible_shapes = all([tf_var.shape == grad.shape for tf_var, grad in zip(model.trainable_variables, loaded_gradients)]) + + if compatible_shapes: + optimizer.apply_gradients(zip(loaded_gradients, model.trainable_variables)) + print("Gradients applied successfully!") + else: + print("Mismatch in shapes detected! Gradients were not applied.") + + # Evaluate the model + val_loss, val_accuracy = model.evaluate(X_val, y_val) + print(f"Validation Accuracy: {val_accuracy * 100:.2f}%") + + # Save the model + model.save(save_path) + print(f"Model saved to {save_path}") + +if __name__ == '__main__': + parser = argparse.ArgumentParser(description='Load a model, apply gradients from saved files, evaluate and save the model.') + parser.add_argument('--model_path', type=str, default='/brain_tumor_classifier.h5', help='Path to the model file.') + parser.add_argument('--saved_gradients', type=str, default='/saved_gradients', help='Directory where gradient files are saved.') + parser.add_argument('--dataset_path', type=str, default='yes-no-brain-tumor-train.csv', help='Path to the dataset.') + parser.add_argument('--save_path', type=str, default='/outputs/brain_tumor_classifier_updated.h5', help='Path to save the updated model.') + + args = parser.parse_args() + main(args.model_path, args.saved_gradients, args.dataset_path, args.save_path)