Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Deep Learning sample programs using PyTorch in C++

License

NotificationsYou must be signed in to change notification settings

koba-jon/pytorch_cpp

Repository files navigation

🚀 Quick Start (Details:Library,Run)

Requirements:LibTorch,OpenCV,OpenMP,Boost,Gnuplot,libpng/png++/zlib

1. Git Clone

$ git clone https://github.com/koba-jon/pytorch_cpp.git$ cd pytorch_cpp$ sudo apt install g++-8

2. Run

(1) Change Directory (Model:AE1d)

$ cd Dimensionality_Reduction/AE1d

(2) Build

$ mkdir build$ cd build$ cmake ..$ make -j4$ cd ..

(3) Dataset Setting (Dataset:Normal Distribution Dataset)

$ cd datasets$ git clone https://huggingface.co/datasets/koba-jon/normal_distribution_dataset$ ln -s normal_distribution_dataset/NormalDistribution ./NormalDistribution$ cd ..

(4) Training

$ sh scripts/train.sh

(5) Test

$ sh scripts/test.sh

🔄 Updates (MM/DD/YYYY)

12/06/2025: Release ofv2.9.1.4
12/01/2025: Release ofv2.9.1.3
12/01/2025: Implementation ofPatchCore
11/29/2025: Release ofv2.9.1.2
11/29/2025: Implementation ofPaDiM
11/27/2025: Implementation ofWideResNet
11/27/2025: Release ofv2.9.1.1
11/24/2025: Implementation ofESRGAN
11/21/2025: Implementation ofSRGAN
11/19/2025: Implementation ofDiT

See more...

11/14/2025: Release ofv2.9.1
11/01/2025: Implementation ofNeRF and3DGS
10/16/2025: Release ofv2.9.0
10/16/2025: Implementation ofPixelSNAIL-Gray andPixelSNAIL-RGB
10/14/2025: Implementation ofYOLOv8
10/13/2025: Implementation ofYOLOv5
10/09/2025: Implementation ofRF2d
10/08/2025: Implementation ofFM2d
10/08/2025: Implementation ofLDM
10/04/2025: Implementation ofGlow
10/01/2025: Implementation ofReal-NVP2d
09/28/2025: Implementation ofPlanar-Flow2d andRadial-Flow2d
09/25/2025: Release ofv2.8.0.2
09/22/2025: Implementation ofPixelCNN-Gray andPixelCNN-RGB
09/18/2025: Implementation ofVQ-VAE-2
09/16/2025: Implementation ofVQ-VAE
09/14/2025: Implementation ofPNDM2d
09/14/2025: Release ofv2.8.0.1
09/12/2025: Implementation ofSimCLR
09/11/2025: Implementation ofMAE
09/10/2025: Implementation of EMA forDDPM2d andDDIM2d
09/08/2025: Implementation ofEfficientNet
09/07/2025: Implementation ofCycleGAN
09/05/2025: Implementation ofViT
09/04/2025: Release ofv2.8.0
09/04/2025: Implementation ofDDIM2d
09/04/2025: Implementation ofDDPM2d
06/27/2023: Release ofv2.0.1
06/27/2023: Create the heatmap for Anomaly Detection
05/07/2023: Release ofv2.0.0
03/01/2023: Release ofv1.13.1
09/12/2022: Release ofv1.12.1
08/04/2022: Release ofv1.12.0
03/18/2022: Release ofv1.11.0
02/10/2022: Release ofv1.10.2
02/09/2022: Implementation ofYOLOv3
01/09/2022: Release ofv1.10.1
01/09/2022: Fixed execution error in test on CPU package
11/12/2021: Release ofv1.10.0
09/27/2021: Release ofv1.9.1
09/27/2021: Support for using different devices between training and test
09/06/2021: Improved accuracy of time measurement using GPU
06/19/2021: Release ofv1.9.0
03/29/2021: Release ofv1.8.1
03/18/2021: Implementation ofDiscriminator from DCGAN
03/17/2021: Implementation ofAE1d
03/16/2021: Release ofv1.8.0
03/15/2021: Implementation ofYOLOv2
02/11/2021: Implementation ofYOLOv1
01/21/2021: Release ofv1.7.1
10/30/2020: Release ofv1.7.0
10/04/2020: Implementation ofSkip-GANomaly2d
10/03/2020: Implementation ofGANomaly2d
09/29/2020: Implementation ofEGBAD2d
09/28/2020: Implementation ofAnoGAN2d
09/27/2020: Implementation ofSegNet
09/26/2020: Implementation ofDAE2d
09/13/2020: Implementation ofResNet
09/07/2020: Implementation ofVGGNet
09/05/2020: Implementation ofAlexNet
09/02/2020: Implementation ofWAE2d GAN andWAE2d MMD
08/30/2020: Release ofv1.6.0
06/26/2020: Implementation ofDAGMM2d
06/26/2020: Release ofv1.5.1
06/26/2020: Implementation ofVAE2d andDCGAN
06/01/2020: Implementation ofPix2Pix
05/29/2020: Implementation ofU-Net Classification
05/26/2020: Implementation ofU-Net Regression
04/24/2020: Release ofv1.5.0
03/23/2020: Implementation ofAE2d

🏗️ Implementation

📊 Multiclass Classification

CategoryModelPaperConference/JournalCode
CNNsAlexNetA. Krizhevsky et al.NeurIPS 2012AlexNet
VGGNetK. Simonyan et al.ICLR 2015VGGNet
ResNetK. He et al.CVPR 2016ResNet
WideResNetS. Zagoruyko et al.arXiv 2016WideResNet
DiscriminatorA. Radford et al.ICLR 2016Discriminator
EfficientNetM. Tan et al.ICML 2019EfficientNet
TransformersVision TransformerA. Dosovitskiy et al.ICLR 2021ViT

🔽 Dimensionality Reduction

ModelPaperConference/JournalCode
AutoencoderG. E. Hinton et al.Science 2006AE1d
AE2d
Denoising AutoencoderP. Vincent et al.ICML 2008DAE2d

🎨 Generative Modeling

CategoryModelPaperConference/JournalCode
VAEsVariational AutoencoderD. P. Kingma et al.ICLR 2014VAE2d
Wasserstein AutoencoderI. Tolstikhin et al.ICLR 2018WAE2d GAN
WAE2d MMD
VQ-VAEA. v. d. Oord et al.NeurIPS 2017VQ-VAE
VQ-VAE-2A. Razavi et al.NeurIPS 2019VQ-VAE-2
GANsDCGANA. Radford et al.ICLR 2016DCGAN
FlowsPlanar FlowD. Rezende et al.ICML 2015Planar-Flow2d
Radial FlowD. Rezende et al.ICML 2015Radial-Flow2d
Real NVPL. Dinh et al.ICLR 2017Real-NVP2d
GlowD. P. Kingma et al.NeurIPS 2018Glow
Diffusion ModelsDDPMJ. Ho et al.NeurIPS 2020DDPM2d
DDIMJ. Song et al.ICLR 2021DDIM2d
PNDML. Liu et al.ICLR 2022PNDM2d
LDMR. Rombach et al.CVPR 2022LDM
Diffusion TransformerW. Peebles et al.ICCV 2023DiT
Flow MatchingFlow MatchingY. Lipman et al.ICLR 2023FM2d
Rectified FlowX. Liu et al.ICLR 2023RF2d
Autoregressive ModelsPixelCNNA. v. d. Oord et al.ICML 2016PixelCNN-Gray
PixelCNN-RGB
PixelSNAILX. Chen et al.ICML 2018PixelSNAIL-Gray
PixelSNAIL-RGB

🖼️ Image-to-Image Translation

ModelPaperConference/JournalCode
U-NetO. Ronneberger et al.MICCAI 2015U-Net Regression
Pix2PixP. Isola et al.CVPR 2017Pix2Pix
CycleGANJ.-Y. Zhu et al.ICCV 2017CycleGAN

🔍 Super Resolution

ModelPaperConference/JournalCode
SRGANC. Ledig et al.CVPR 2017SRGAN
ESRGANX. Wang et al.ECCV 2018ESRGAN

🧩 Semantic Segmentation

ModelPaperConference/JournalCode
SegNetV. Badrinarayanan et al.CVPR 2015SegNet
U-NetO. Ronneberger et al.MICCAI 2015U-Net Classification

🎯 Object Detection

ModelPaperConference/JournalCode
YOLOv1J. Redmon et al.CVPR 2016YOLOv1
YOLOv2J. Redmon et al.CVPR 2017YOLOv2
YOLOv3J. Redmon et al.arXiv 2018YOLOv3
YOLOv5Ultralytics-YOLOv5
YOLOv8Ultralytics-YOLOv8

🧠 Representation Learning

ModelPaperConference/JournalCode
SimCLRT. Chen et al.ICML 2020SimCLR
Masked AutoencoderK. He et al.CVPR 2022MAE

🌐 View Synthesis

ModelPaperConference/JournalCode
Neural Radiance FieldB. Mildenhall et al.ECCV 2020NeRF
3D Gaussian SplattingB. Kerbl et al.SIGGRAPH 20233DGS

🚨 Anomaly Detection

ModelPaperConference/JournalCode
AnoGANT. Schlegl et al.IPMI 2017AnoGAN2d
DAGMMB. Zong et al.ICLR 2018DAGMM2d
EGBADH. Zenati et al.ICLR Workshop 2018EGBAD2d
GANomalyS. Akçay et al.ACCV 2018GANomaly2d
Skip-GANomalyS. Akçay et al.IJCNN 2019Skip-GANomaly2d
PaDiMT. Defard et al.ICPR Workshops 2020PaDiM
PatchCoreK. Roth et al.CVPR 2022PatchCore

📦 Requirement (Library)

Details

1. PyTorch C++

Please select the environment to use as follows on PyTorch official.
PyTorch official :https://pytorch.org/


PyTorch Build : Stable (2.9.1)
Your OS : Linux
Package : LibTorch
Language : C++ / Java
Run this Command : Download here (cxx11 ABI)
CUDA 12.6 :https://download.pytorch.org/libtorch/cu126/libtorch-shared-with-deps-2.9.1%2Bcu126.zip
CUDA 12.8 :https://download.pytorch.org/libtorch/cu128/libtorch-shared-with-deps-2.9.1%2Bcu128.zip
CUDA 13.0 :https://download.pytorch.org/libtorch/cu130/libtorch-shared-with-deps-2.9.1%2Bcu130.zip
CPU :https://download.pytorch.org/libtorch/cpu/libtorch-shared-with-deps-2.9.1%2Bcpu.zip


2. OpenCV

version : 3.0.0 or more
This is used for pre-processing and post-processing.
Please refer to other sites for more detailed installation method.

3. OpenMP

This is used to load data in parallel.
(It may be installed on standard Linux OS.)

4. Boost

This is used for command line arguments, etc.

$ sudo apt install libboost-dev libboost-all-dev

5. Gnuplot

This is used to display loss graph.

$ sudo apt install gnuplot

6. libpng/png++/zlib

This is used to load and save index-color image in semantic segmentation.

$ sudo apt install libpng-dev libpng++-dev zlib1g-dev

🏃 Preparation (Run)

Details

1. Git Clone

$ git clone https://github.com/koba-jon/pytorch_cpp.git$ cd pytorch_cpp

2. Path Setting

$ vi utils/CMakeLists.txt

Please change the 4th line of "CMakeLists.txt" according to the path of the directory "libtorch".
The following is an example where the directory "libtorch" is located directly under the directory "HOME".

3: # LibTorch4: set(LIBTORCH_DIR $ENV{HOME}/libtorch)5: list(APPEND CMAKE_PREFIX_PATH ${LIBTORCH_DIR})

3. Compiler Install

If you don't have g++ version 8 or above, install it.

$ sudo apt install g++-8

4. Execution

Please move to the directory of each model and refer to "README.md".

🛠️ Utility

Details

1. Making Original Dataset

Please create a link for the original dataset.
The following is an example of "AE2d" using "celebA" Dataset.

$ cd Dimensionality_Reduction/AE2d/datasets$ ln -s <dataset_path> ./celebA_org

You should substitute the path of dataset for "<dataset_path>".
Please make sure you have training or test data directly under "<dataset_path>".

$ vi ../../../scripts/hold_out.sh

Please edit the file for original dataset.

#!/bin/bashSCRIPT_DIR=$(cd $(dirname $0); pwd)python3 ${SCRIPT_DIR}/hold_out.py \    --input_dir "celebA_org" \    --output_dir "celebA" \    --train_rate 9 \    --valid_rate 1

By running this file, you can split it into training and validation data.

$ sudo apt install python3 python3-pip$ pip3 install natsort$ sh ../../../scripts/hold_out.sh$ cd ../../..

2. Data Input System

There are transform, dataset and dataloader for data input in this repository.
It corresponds to the following source code in the directory, and we can add new function to the source code below.

  • transforms.cpp
  • transforms.hpp
  • datasets.cpp
  • datasets.hpp
  • dataloader.cpp
  • dataloader.hpp

3. Check Progress

There are a feature to check progress for training in this repository.
We can watch the number of epoch, loss, time and speed in training.
util1
It corresponds to the following source code in the directory.

  • progress.cpp
  • progress.hpp

4. Monitoring System

There are monitoring system for training in this repository.
We can watch output image and loss graph.
The feature to watch output image is in the "samples" in the directory "checkpoints" created during training.
The feature to watch loss graph is in the "graph" in the directory "checkpoints" created during training.
util2
It corresponds to the following source code in the directory.

  • visualizer.cpp
  • visualizer.hpp

⚖️ License

Details

You can feel free to use all source code in this repository.
(Clickhere for details.)

But if you exploit external libraries (e.g. redistribution), you should be careful.
At a minimum, the license notation at the following URL is required.
In addition, third party copyrights belong to their respective owners.

🎉 Conclusion

PyTorch is famous as a kind of Deep Learning Frameworks.
Among them, Python source code is overflowing on the Web, so we can easily write the source code of Deep Learning in Python.
However, there is very little source code written in C++ of compiler language.
I hope this repository will help many programmers by providing PyTorch sample programs written in C++.
If you have any problems with the source code of this repository, please feel free to "issue".
Let's have a good development and research life!


[8]ページ先頭

©2009-2025 Movatter.jp