{"id":25933723,"url":"https://github.com/ayyucedemirbas/sign_language_classification","last_synced_at":"2026-04-20T19:33:15.111Z","repository":{"id":62835074,"uuid":"562695352","full_name":"ayyucedemirbas/Sign_Language_Classification","owner":"ayyucedemirbas","description":"We build and train a classifier model on ASL_Alphabet Dataset from scratch. And we fine-tune ResNet50 model which pretrained on imagenet.","archived":false,"fork":false,"pushed_at":"2022-11-14T03:41:06.000Z","size":27504,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-01T20:40:33.542Z","etag":null,"topics":["classification","feature-extraction","fine-tuning","residual-networks","resnet-50","sign-language","tensorflow"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ayyucedemirbas.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2022-11-07T03:46:55.000Z","updated_at":"2023-04-07T01:51:58.000Z","dependencies_parsed_at":"2023-01-22T00:51:11.405Z","dependency_job_id":null,"html_url":"https://github.com/ayyucedemirbas/Sign_Language_Classification","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ayyucedemirbas/Sign_Language_Classification","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ayyucedemirbas%2FSign_Language_Classification","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ayyucedemirbas%2FSign_Language_Classification/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ayyucedemirbas%2FSign_Language_Classification/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ayyucedemirbas%2FSign_Language_Classification/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ayyucedemirbas","download_url":"https://codeload.github.com/ayyucedemirbas/Sign_Language_Classification/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ayyucedemirbas%2FSign_Language_Classification/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32062510,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T11:35:06.609Z","status":"ssl_error","status_checked_at":"2026-04-20T11:34:48.899Z","response_time":94,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["classification","feature-extraction","fine-tuning","residual-networks","resnet-50","sign-language","tensorflow"],"created_at":"2025-03-04T00:55:18.791Z","updated_at":"2026-04-20T19:33:15.090Z","avatar_url":"https://github.com/ayyucedemirbas.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Sign_Language_Classification\n\n\nWe build and train a classifier model on [ASL_Alphabet Dataset](https://www.kaggle.com/datasets/grassknoted/asl-alphabet). We get 0.99333 accuracy on the validation set.\n\nThe  model looks like this:\n\n![image](https://user-images.githubusercontent.com/8023150/201570312-858d3fce-1f31-4657-bfa1-98bbf229ac01.png)\n\n    inputs= keras.Input(shape=(100,100,3))\n    #x = data_augmentation(inputs)\n    x = layers.experimental.preprocessing.Rescaling(1./255)(inputs)\n\n\n    #Block: 1\n    x = Conv2D(64, kernel_size=(3, 3), activation='relu',padding='SAME')(x)\n    residual = x\n    x = SeparableConv2D(64, kernel_size=(3, 3), activation='relu',padding='SAME')(x)\n    x = MaxPooling2D(pool_size=(2, 2), padding = 'same')(x)\n    residual = Conv2D(64,1, strides=2)(residual)\n    x = layers.add([x, residual])\n    x = Dropout(0.3)(x)\n    x = SeparableConv2D(32, kernel_size=(3, 3), activation='relu',padding='SAME')(x)\n    residual = x\n    x = SeparableConv2D(32, kernel_size=(3, 3), activation='relu',padding='SAME')(x)\n    x = MaxPooling2D(pool_size=(2, 2))(x)\n    residual = Conv2D(32,1, strides=2)(residual)\n    x = layers.add([x, residual])\n    x = Dropout(0.3)(x)\n\n    x = Flatten(name='flatten')(x)\n    x = Dense(units=32, activation='relu')(x)\n    outputs = Dense(units=29, activation='softmax')(x)\n    model= keras.Model(inputs=inputs, outputs=outputs)\n    \n\u003cimg width=\"386\" alt=\"image\" src=\"https://user-images.githubusercontent.com/8023150/200340107-c0f50229-3b58-469a-8021-cdf7edbdf729.png\"\u003e\n\u003cimg width=\"386\" alt=\"image\" src=\"https://user-images.githubusercontent.com/8023150/200340207-f0727382-520e-4791-8583-67d88ca92a6e.png\"\u003e\n\n\n\nWe also fine-tune ResNet50 model which pretrained on imagenet. We simply freeze all the layers except the last four layers and train those four layers instead of training the whole model.\n\nWe get the pretrained ResNet50 model, and build our model as follows:\n\n    resnet_base= tf.keras.applications.ResNet50(\n        include_top=False,\n        weights=\"imagenet\",\n        input_shape=(224, 224, 3),\n    )\n    resnet_base.trainable = True\n    \n    for layer in resnet_base.layers[: -4]:\n        layer.trainable=False\n    \n    inputs= keras.Input(shape=(224,224,3))\n    x = data_augmentation(inputs)\n    x = keras.applications.resnet50.preprocess_input(x)\n    x = resnet_base(x)\n    x = Flatten()(x)\n    x = Dense(256)(x)\n    x = Dropout(0.5)(x)\n    outputs = Dense(units=29, activation='softmax')(x)\n    model= keras.Model(inputs=inputs, outputs=outputs)\n  \n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fayyucedemirbas%2Fsign_language_classification","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fayyucedemirbas%2Fsign_language_classification","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fayyucedemirbas%2Fsign_language_classification/lists"}