Skip to content

Commit 2e658f0

Browse files
authored
Add image-captioning tutorial (#59)
1 parent 1fdd697 commit 2e658f0

27 files changed

+1978
-62
lines changed

.gitignore

+3-2
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333

3434
# PyTorch
3535
libtorch/
36-
build/
3736

3837
# Datasets
3938
data/
@@ -56,6 +55,8 @@ install_manifest.txt
5655
compile_commands.json
5756
CTestTestfile.cmake
5857
_deps
58+
build/
59+
cmake-build-*/
5960

6061
# Other
6162
.DS_Store
@@ -66,4 +67,4 @@ _deps
6667

6768
# extern
6869
extern/*
69-
!extern/CMakeLists.txt
70+
!extern/CMakeLists.txt

CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ add_subdirectory("tutorials/intermediate/language_model")
5757
add_subdirectory("tutorials/advanced/generative_adversarial_network")
5858
add_subdirectory("tutorials/advanced/variational_autoencoder")
5959
add_subdirectory("tutorials/advanced/neural_style_transfer")
60+
add_subdirectory("tutorials/advanced/image_captioning")
6061

6162
if(MSVC)
6263
include(copy_torch_dlls)

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ cmake --build build
120120
* [Generative Adversarial Networks](tutorials/advanced/generative_adversarial_network/main.cpp)
121121
* [Variational Auto-Encoder](tutorials/advanced/variational_autoencoder/src/main.cpp)
122122
* [Neural Style Transfer](tutorials/advanced/neural_style_transfer/src/main.cpp)
123-
* [Image Captioning (CNN-RNN)]()
123+
* [Image Captioning (CNN-AttentionRNN)](tutorials/advanced/image_captioning/src/main.cpp)
124124

125125
### 4. Interactive Tutorials
126126
* [Tensor Slicing](notebooks/tensor_slicing.ipynb)

cmake/cpplint.cmake

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ endif()
2121
execute_process(COMMAND ${CPPLINT_COMMAND}
2222
"--linelength=120"
2323
"--recursive"
24-
"--filter=-build/include_subdir,-build/include_what_you_use"
24+
"--filter=-build/include_subdir,-build/include_what_you_use,-build/c++11,-runtime/references"
2525
"main.cpp"
2626
"tutorials"
2727
"utils"
28-
WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/..")
28+
WORKING_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/..")

cmake/download_datasets.cmake

+1
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@ include(download_mnist)
55
include(download_cifar10)
66
include(download_penntreebank)
77
include(download_neural_style_transfer_images)
8+
include(download_flickr8k)
89
message(STATUS "Fetching datasets - done")

cmake/download_flickr8k.cmake

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
cmake_minimum_required(VERSION 3.14 FATAL_ERROR)
2+
3+
include(FetchContent)
4+
5+
set(FLICKR8K_DIR "${CMAKE_SOURCE_DIR}/data/flickr_8k")
6+
7+
set(FLICKR8K_DATA_URL "https://github.com/jbrownlee/Datasets/releases/download/Flickr8k/Flickr8k_Dataset.zip")
8+
set(FLICKR8K_TEXT_URL "https://github.com/jbrownlee/Datasets/releases/download/Flickr8k/Flickr8k_text.zip")
9+
10+
set(FLICKR8k_DATA_SOURCE_DIR "${FLICKR8K_DIR}/Flickr8k_Dataset")
11+
set(FLICKR8k_TEXT_SOURCE_DIR "${FLICKR8K_DIR}/Flickr8k_text")
12+
13+
if(NOT EXISTS ${FLICKR8k_TEXT_SOURCE_DIR} OR NOT EXISTS ${FLICKR8k_DATA_SOURCE_DIR})
14+
message(STATUS "Fetching Flickr8k dataset...")
15+
16+
FetchContent_Declare(
17+
flickr_8k_text
18+
DOWNLOAD_DIR ${FLICKR8K_DIR}/download
19+
SOURCE_DIR ${FLICKR8k_TEXT_SOURCE_DIR}
20+
URL ${FLICKR8K_TEXT_URL}
21+
)
22+
23+
FetchContent_MakeAvailable(flickr_8k_text)
24+
25+
FetchContent_Declare(
26+
flickr_8k_data
27+
DOWNLOAD_DIR ${FLICKR8K_DIR}/download
28+
SOURCE_DIR ${FLICKR8k_DATA_SOURCE_DIR}
29+
URL ${FLICKR8K_DATA_URL}
30+
)
31+
32+
FetchContent_MakeAvailable(flickr_8k_data)
33+
34+
file(REMOVE_RECURSE "${FLICKR8K_DIR}/download")
35+
36+
message(STATUS "Fetching Flickr8k dataset - done")
37+
else()
38+
message(STATUS "Flickr8k dataset already present, skipping...")
39+
endif()

cmake/download_libtorch.cmake

+1-1
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,4 @@ FetchContent_MakeAvailable(libtorch)
5353

5454
message(STATUS "Downloading libtorch - done")
5555

56-
find_package(Torch REQUIRED PATHS "${CMAKE_SOURCE_DIR}/libtorch")
56+
find_package(Torch REQUIRED PATHS "${CMAKE_SOURCE_DIR}/libtorch")

0 commit comments

Comments
 (0)