{"id":13442632,"url":"https://github.com/ajhamdi/mvtorch","last_synced_at":"2025-07-11T02:43:20.017Z","repository":{"id":72319905,"uuid":"515688768","full_name":"ajhamdi/mvtorch","owner":"ajhamdi","description":"a Pytorch library for multi-view 3D understanding and generation","archived":false,"fork":false,"pushed_at":"2024-12-13T10:49:39.000Z","size":51706,"stargazers_count":81,"open_issues_count":3,"forks_count":5,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-03-31T15:19:14.474Z","etag":null,"topics":["3d","3d-deep-learning","deep","learning","multi-view","multi-view-geometry","multi-view-learning","nerf","pytorch","pytorch3d"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ajhamdi.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,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-19T17:53:36.000Z","updated_at":"2024-12-13T10:49:43.000Z","dependencies_parsed_at":"2025-02-24T04:20:46.374Z","dependency_job_id":null,"html_url":"https://github.com/ajhamdi/mvtorch","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajhamdi%2Fmvtorch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajhamdi%2Fmvtorch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajhamdi%2Fmvtorch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ajhamdi%2Fmvtorch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ajhamdi","download_url":"https://codeload.github.com/ajhamdi/mvtorch/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247694877,"owners_count":20980733,"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":["3d","3d-deep-learning","deep","learning","multi-view","multi-view-geometry","multi-view-learning","nerf","pytorch","pytorch3d"],"created_at":"2024-07-31T03:01:48.309Z","updated_at":"2025-04-07T17:11:38.994Z","avatar_url":"https://github.com/ajhamdi.png","language":"Python","funding_links":[],"categories":["Python"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\u003cimg src=\"./docs/misc/logomvtorch.png\" width=\"35%\"/\u003e \n\u003c!-- \u003cbr\u003e \n\u003ch2 align=\"center\" style=\"color:#e67300;font-size:40px;\"\u003eMVTorch\u003c/2\u003e  --\u003e\n\u003c/p\u003e\n\n# MVTorch [[paper](https://link.springer.com/article/10.1007/s11263-024-02283-5)]\nA modular Pytroch library for multi-view research on 3D understanding and 3D generation. It is published as part of the [MVTN IJCV Journal paper](https://link.springer.com/article/10.1007/s11263-024-02283-5)\n## Introduction\n\nMVTorch provides efficient, reusable components for 3D Computer Vision and Graphics research based on mult-view representation with [PyTorch](https://pytorch.org) and [Pytorch3D](https://github.com/facebookresearch/pytorch3d).\n\n### Key Features include:\n\n- Render differentiable multi-view images from meshes and point clouds with 3D-2D correspondances.\n- Data loaders for 3D data and multi-view images (posed or unposed )\n- Visualizations of 3D mesh,point cloud, multi-view images. \n- Modular training of multi-view networks for different 3D tasks \n- I/O 3D data and multi-view images. \n\n\n### Benifits :\n\n- Are implemented using PyTorch tensors and on top of Pytorch3D \n- Can handle minibatches of hetereogenous data\n- Can be differentiated for input gradients.\n- Can utilize GPUs for acceleration\n\n\n\n## Installation\n\n\u003c!-- ```bibtex\npip install mvtorch\n```\n --\u003e\nFor detailed instructions refer to [INSTALL.md](INSTALL.md).\n\n## Test\n\n- After installing `mvtorch`, download common 3D datasets ([ModelNet40](https://mega.nz/file/mm5FhJ7I#jGECWn-QSCLH9LLoxhZzSWnf9LCtCavV12toj9SJKPM), [ScanObjectNN](https://mega.nz/file/ampg2QyT#Exo22r-8jzgCa2MOqoqipd39HVqYKG5iykJ5bovjsuI), [ShapeNet Parts](https://shapenet.cs.stanford.edu/media/shapenet_part_seg_hdf5_data.zip), [nerf_synthetic](https://drive.google.com/drive/folders/1JDdLGDruGNXWnM1eqY1FNL9PlStjaKWi)) and unzip inside `data` directory.\n\n```bash\ncd data/\nwget https://shapenet.cs.stanford.edu/media/shapenet_part_seg_hdf5_data.zip --no-check-certificate # download ShapeNet Parts\n# download the other datasets from the browser\n```\n- Run any example from `examples` directory \n```bibtex\ncd examples/ \u0026\u0026 python classification.py \n```\n## Tutorials\n\nGet started with MVTorch by trying one of the following tutorials.\n\n\n|\u003cimg src=\"./docs/misc/cls.png\" width=\"310\" height=\"310\"/\u003e | \u003cimg src=\"./docs/misc/seg.png\" width=\"310\" height=\"310\"/\u003e|\n|:-----------------------------------------------------------------------------------------------------------:|:--------------------------------------------------:|\n| [Training MVCNN in 10 lines of code for 3D Classification](https://github.com/ajhamdi/mvtorch/blob/main/docs/tutorials/classification.ipynb)| [Training 3D Part Segmentation with Multi-View DeepLabV3](https://github.com/ajhamdi/mvtorch/blob/main/docs/tutorials/segmentation.ipynb) |\n\n\n|\u003cimg src=\"https://user-images.githubusercontent.com/7057863/78473103-9353b300-7770-11ea-98ed-6ba2d877b62c.gif\" width=\"378\" height=\"378\"/\u003e | \u003cimg src=\"https://github.com/threedle/text2mesh/blob/main/images/vases.gif\" width=\"378\"/\u003e|\n|:-----------------------------------------------------------------------------------------------------------:|:--------------------------------------------------:|\n| [               Fit A Simple Neural Radiance Field                       ](https://github.com/ajhamdi/mvtorch/blob/main/docs/tutorials/nerf.ipynb)| [              Create Textured Meshes from Text              ](https://github.com/ajhamdi/mvtorch/blob/main/docs/tutorials/text2mesh.ipynb) |\n\n\n\n### Key Classes\n- [**MVRenderer**](https://github.com/ajhamdi/mvtorch/tree/fc83d72c1f43e977b61db91984eb6731bdcaaed6/mvtorch/mvrenderer.py#L25) ( renders multi-view images of both point clouds and meshes )\n- [**MVNetwork**](https://github.com/ajhamdi/mvtorch/tree/fc83d72c1f43e977b61db91984eb6731bdcaaed6/mvtorch/networks.py#L6) ( allow to take any 2D network as input and outputs its multi-view features)\n- [**Visualizer**](https://github.com/ajhamdi/mvtorch/tree/fc83d72c1f43e977b61db91984eb6731bdcaaed6/mvtorch/visualizer.py#L4)  ( handles multi-view and 3D visualization both for server saves and interactive visualization)\n- [**data I/O**](https://github.com/ajhamdi/mvtorch/blob/main/mvtorch/data.py) ( load any dataset: modelnet, shapenet, scanobjectnn, shapenet parts, s3dis, nerf, as well as saving Multi-view datasets.)\n- [**ViewSelector**](https://github.com/ajhamdi/mvtorch/tree/fc83d72c1f43e977b61db91984eb6731bdcaaed6/mvtorch/view_selector.py#L300) ( multi-view selector to select M viewpoints to render: random, circular ,spherical, [mvtn](https://github.com/ajhamdi/MVTN)  etc ... )\n- [**MVAggregate**](https://github.com/ajhamdi/mvtorch/blob/fc83d72c1f43e977b61db91984eb6731bdcaaed6/mvtorch/mvaggregate.py#L70) ( a super model that accepts any 2D network as input and outputs the global multi-view features of input multi-view images: MeanPool, MaxPool) \n- [**MVLifting**](https://github.com/ajhamdi/mvtorch/blob/fc83d72c1f43e977b61db91984eb6731bdcaaed6/mvtorch/mvaggregate.py#L196) ( aggregates dense features from multi-view pixel features to 3D features  , eg. LabelPool, MeanPool, [Voint](https://arxiv.org/abs/2111.15363) aggregation and lifting ) \n- other useful utility functions and operations.\n\n## Development\n\nWe welcome new contributions to MVTorch by following this procedure for pull requests: \n\n- For code modifications, create an issue with tag `request` and wait for 10 days for the issue to be resolved.\n\n- If issue not resolved in 10 days, fork the repo and create a pull request on a new branch. Please make sure the main [examples](https://github.com/ajhamdi/mvtorch/tree/main/examples) can run after your adjustments on the core library.\n\n- For additional examples, just create a pull request without creating an issue. \n\n- If you can contribue regularly on the library, please contact [Abdullah](abdullah.hamdi@kaust.edu.sa) to be added to the contruters list.\n\n\n\n## Citation\n\nIf you find mvtorch useful in your research, please cite the library paper:\n\n```bibtex\n@article{Hamdi2024,\n  author    = {Abdullah Hamdi and Faisal AlZahrani and Silvio Giancola and Bernard Ghanem},\n  title     = {MVTN: Learning Multi-view Transformations for 3D Understanding},\n  journal   = {International Journal of Computer Vision},\n  year      = {2024},\n  doi       = {10.1007/s11263-024-02283-5},\n  issn      = {1573-1405}\n}\n``` \n\n## News\n\n**[July 23 2022]:**   MVTorch repo created\n\n**[December 26 2022]:**   MVTorch made public\n\n\n## Projects\nProjects that MVTorch benifited from in devlopment: [MVTN](https://arxiv.org/abs/2011.13244), [Voint Cloud](https://arxiv.org/abs/2111.15363), [Text2Mesh](https://github.com/threedle/text2mesh) and [NeRF](https://github.com/yenchenlin/nerf-pytorch)\n\n## Documentation\n\nA detailed documentation of the library should be coming soon... \n\n### Overview Video\nComing soon ...\n\n## License\n\nMVTorch is released under the [BSD License](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fajhamdi%2Fmvtorch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fajhamdi%2Fmvtorch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fajhamdi%2Fmvtorch/lists"}