{"id":8123209,"url":"https://github.com/NikolasEnt/Lyft-Perception-Challenge","last_synced_at":"2025-07-25T04:30:52.839Z","repository":{"id":205011070,"uuid":"132757121","full_name":"NikolasEnt/Lyft-Perception-Challenge","owner":"NikolasEnt","description":"The 4th place and the fastest solution of the Lyft Perception Challenge (Image semantic segmentation with PyTorch)","archived":false,"fork":false,"pushed_at":"2018-08-23T22:59:49.000Z","size":9255,"stargazers_count":68,"open_issues_count":1,"forks_count":12,"subscribers_count":7,"default_branch":"master","last_synced_at":"2024-11-29T18:49:49.362Z","etag":null,"topics":["computer-vision","deep-learning","linknet","pytorch","sdcnd","self-driving-car","semantic-segmentation"],"latest_commit_sha":null,"homepage":"https://nikolasent.github.io/proj/comp2","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/NikolasEnt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2018-05-09T12:57:41.000Z","updated_at":"2024-01-04T16:22:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"c584b39c-41ab-43b6-b0b1-297d8a1aedf1","html_url":"https://github.com/NikolasEnt/Lyft-Perception-Challenge","commit_stats":null,"previous_names":["nikolasent/lyft-perception-challenge"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NikolasEnt%2FLyft-Perception-Challenge","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NikolasEnt%2FLyft-Perception-Challenge/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NikolasEnt%2FLyft-Perception-Challenge/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/NikolasEnt%2FLyft-Perception-Challenge/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/NikolasEnt","download_url":"https://codeload.github.com/NikolasEnt/Lyft-Perception-Challenge/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":227518312,"owners_count":17782963,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["computer-vision","deep-learning","linknet","pytorch","sdcnd","self-driving-car","semantic-segmentation"],"created_at":"2024-04-17T23:41:59.222Z","updated_at":"2024-12-01T08:30:33.420Z","avatar_url":"https://github.com/NikolasEnt.png","language":"Jupyter Notebook","funding_links":[],"categories":["Jupyter Notebook"],"sub_categories":[],"readme":"## The Lyft Perception Challenge\n\n### Challenge Overview\n\n![readme_img](readme_img/title.gif)\n\nYour goal in this challenge is pixel-wise identification of objects in camera images. The segmentation targets are other cars and the drivable area of the road.\nImages from the [CARLA](http://carla.org/) 0.8.2 simulator are used for training and testing in the challenge.\n\nFor details see my website: __[https://NikolasEnt.github.io](https://nikolasent.github.io/proj/comp2)__.\n\nThe solution is based on a LinkNet neural network for semantic segmentation. Loss function is based on a weighted pixel-wise F-eta scores.\nThe approach contains some inference speed up techniques as FPS was an essential part of the competition.\n\n### Requirements\n\n[PyTorch 0.4](https://pytorch.org/) framework with torchvision was used for the project. Modern Nvidia GPU with CUDA 9.1 with 3 patches installed is required for correct and fast training.\n\nPython 3.6 and several Python modules:\n```\npybase64\njoblib\nopencv-python\nnumpy\nmatplotlib\n```\n\n### How to train\n\nThe whole training pipeline is implemented in [train.py](https://github.com/NikolasEnt/Lyft-Perception-Challenge/blob/master/train.py). Just list train and val folders in the train_dirs and val_dirs lists and run ```python train.py``` to recreate the final submission model. Several sample images are provided with the repo, see [data](https://github.com/NikolasEnt/Lyft-Perception-Challenge/tree/master/data). Each dataset folder should contain \"CameraRGB\" folder with images and a \"CameraSeg\" folder with segmentation masks from the simulator.\n\n__Note:__ It may take about two days to train on 15601 images in the train dataset and 1500 images in the val dataset with a single Nvidia GTX 1080 Ti GPU.\n\nFor experiments and data visualization, use the [train.ipynb](https://github.com/NikolasEnt/Lyft-Perception-Challenge/blob/master/train.ipynb). It also may be useful to save the hood mask.\n\n### How to predict\n\nA client-server approach was used for the inferencestage, that is why one should start a server with correct [model path](https://github.com/NikolasEnt/Lyft-Perception-Challenge/blob/0c042ed05b11f31304df2e73676f2c0aaaf34382/predict-server.py#L17):\n```\npython predict-server.py\n```\n\nOne may need to adjust batch size (`batch`) and number of threads for parallel prediction encoding (`n_jobs`) for performance maximization on a given hardware setup.\n\nAnd after it is ready, the client can be used:\n\n```\n# In another terminal\npython predict-client.py path/to/the/test/video\n```\n\nIt will print out the prediction results as base64 masks encoded with png. To save the predictions as a json file, uncomment [lines 12-13](https://github.com/NikolasEnt/Lyft-Perception-Challenge/blob/0c042ed05b11f31304df2e73676f2c0aaaf34382/predict-client.py#L12) in the predict-client.py.\nCurrent implementation takes 800x600 px video as an input file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNikolasEnt%2FLyft-Perception-Challenge","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FNikolasEnt%2FLyft-Perception-Challenge","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNikolasEnt%2FLyft-Perception-Challenge/lists"}