logo_recognize's People
logo_recognize's Issues
图片格式处理
local function findClasses(dir)
local dirs = paths.dir(dir)
table.sort(dirs)
local classList = {}
local classToIdx = {}
for _ ,class in ipairs(dirs) do
if not classToIdx[class] and class ~= '.' and class ~= '..' then
table.insert(classList, class)
classToIdx[class] = #classList
end
end
-- assert(#classList == 1000, 'expected 1000 ImageNet classes')
return classList, classToIdx
end
local function findImages(dir, classToIdx)
local imagePath = torch.CharTensor()
local imageClass = torch.LongTensor()
----------------------------------------------------------------------
-- Options for the GNU and BSD find command
local extensionList = {'jpg', 'png', 'jpeg', 'JPG', 'PNG', 'JPEG', 'ppm', 'PPM', 'bmp', 'BMP'}
local findOptions = ' -iname "*.' .. extensionList[1] .. '"'
for i=2,#extensionList do
findOptions = findOptions .. ' -o -iname "*.' .. extensionList[i] .. '"'
end
-- Find all the images using the find command
local f = io.popen('find -L ' .. dir .. findOptions)
local maxLength = -1
local imagePaths = {}
local imageClasses = {}
-- Generate a list of all the images and their class
while true do
local line = f:read('*line')
if not line then break end
local className = paths.basename(paths.dirname(line))
local filename = paths.basename(line)
local path = className .. '/' .. filename
local classId = classToIdx[className]
assert(classId, 'class not found: ' .. className)
table.insert(imagePaths, path)
table.insert(imageClasses, classId)
maxLength = math.max(maxLength, #path + 1)
end
f:close()
-- Convert the generated list to a tensor for faster loading
local nImages = #imagePaths
local imagePath = torch.CharTensor(nImages, maxLength):zero()
for i, path in ipairs(imagePaths) do
ffi.copy(imagePath[i]:data(), path)
end
local imageClass = torch.LongTensor(imageClasses)
return imagePath, imageClass
end
function M.exec(opt, cacheFile)
-- find the image path names
local imagePath = torch.CharTensor() -- path to each image in dataset
local imageClass = torch.LongTensor() -- class index of each image (class index in self.classes)
local trainDir = paths.concat(opt.data, 'train')
local valDir = paths.concat(opt.data, 'val')
assert(paths.dirp(trainDir), 'train directory not found: ' .. trainDir)
assert(paths.dirp(valDir), 'val directory not found: ' .. valDir)
print("=> Generating list of images")
local classList, classToIdx = findClasses(trainDir)
print(" | finding all validation images")
local valImagePath, valImageClass = findImages(valDir, classToIdx)
print(" | finding all training images")
local trainImagePath, trainImageClass = findImages(trainDir, classToIdx)
local info = {
basedir = opt.data,
classList = classList,
train = {
imagePath = trainImagePath,
imageClass = trainImageClass,
},
val = {
imagePath = valImagePath,
imageClass = valImageClass,
},
}
print(" | saving list of images to " .. cacheFile)
torch.save(cacheFile, info)
return info
end
return M
判断路径下的图片是否损坏
lua
for _, file in ipairs(list_of_filenames) do
local sid = os.execute('identify -quiet ' .. file)
if sid ~= true then
print('remove image ' .. file)
os.execute('rm -rf ' .. file)
end
end
ipairs()有两个返回值,我们只需要后一个,故第一个用_表示
list_of_filenames是list类型,此项目提前将文件夹下所有图片路径读取后存放在list_of_filenames中
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.