[New Feature] Support SAM 2.1 (#59)
* support sam 2.1 * refine config path and ckpt path * update README
This commit is contained in:
105
demo/frontend/schemas/inference-api-schema.graphql
Normal file
105
demo/frontend/schemas/inference-api-schema.graphql
Normal file
@@ -0,0 +1,105 @@
|
||||
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
input AddPointsInput {
|
||||
sessionId: String!
|
||||
frameIndex: Int!
|
||||
clearOldPoints: Boolean!
|
||||
objectId: Int!
|
||||
labels: [Int!]!
|
||||
points: [[Float!]!]!
|
||||
}
|
||||
|
||||
type CancelPropagateInVideo {
|
||||
success: Boolean!
|
||||
}
|
||||
|
||||
input CancelPropagateInVideoInput {
|
||||
sessionId: String!
|
||||
}
|
||||
|
||||
input ClearPointsInFrameInput {
|
||||
sessionId: String!
|
||||
frameIndex: Int!
|
||||
objectId: Int!
|
||||
}
|
||||
|
||||
type ClearPointsInVideo {
|
||||
success: Boolean!
|
||||
}
|
||||
|
||||
input ClearPointsInVideoInput {
|
||||
sessionId: String!
|
||||
}
|
||||
|
||||
type CloseSession {
|
||||
success: Boolean!
|
||||
}
|
||||
|
||||
input CloseSessionInput {
|
||||
sessionId: String!
|
||||
}
|
||||
|
||||
type Mutation {
|
||||
startSession(input: StartSessionInput!): StartSession!
|
||||
closeSession(input: CloseSessionInput!): CloseSession!
|
||||
addPoints(input: AddPointsInput!): RLEMaskListOnFrame!
|
||||
clearPointsInFrame(input: ClearPointsInFrameInput!): RLEMaskListOnFrame!
|
||||
clearPointsInVideo(input: ClearPointsInVideoInput!): ClearPointsInVideo!
|
||||
removeObject(input: RemoveObjectInput!): [RLEMaskListOnFrame!]!
|
||||
cancelPropagateInVideo(
|
||||
input: CancelPropagateInVideoInput!
|
||||
): CancelPropagateInVideo!
|
||||
}
|
||||
|
||||
input PingInput {
|
||||
sessionId: String!
|
||||
}
|
||||
|
||||
type Pong {
|
||||
success: Boolean!
|
||||
}
|
||||
|
||||
type Query {
|
||||
ping(input: PingInput!): Pong!
|
||||
}
|
||||
|
||||
type RLEMask {
|
||||
size: [Int!]!
|
||||
counts: String!
|
||||
order: String!
|
||||
}
|
||||
|
||||
type RLEMaskForObject {
|
||||
objectId: Int!
|
||||
rleMask: RLEMask!
|
||||
}
|
||||
|
||||
type RLEMaskListOnFrame {
|
||||
frameIndex: Int!
|
||||
rleMaskList: [RLEMaskForObject!]!
|
||||
}
|
||||
|
||||
input RemoveObjectInput {
|
||||
sessionId: String!
|
||||
objectId: Int!
|
||||
}
|
||||
|
||||
type StartSession {
|
||||
sessionId: String!
|
||||
}
|
||||
|
||||
input StartSessionInput {
|
||||
path: String!
|
||||
}
|
33
demo/frontend/schemas/merge-schemas.ts
Normal file
33
demo/frontend/schemas/merge-schemas.ts
Normal file
@@ -0,0 +1,33 @@
|
||||
/**
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
import {loadFilesSync} from '@graphql-tools/load-files';
|
||||
import {mergeTypeDefs} from '@graphql-tools/merge';
|
||||
import fs from 'fs';
|
||||
import {print} from 'graphql';
|
||||
import path from 'path';
|
||||
import * as prettier from 'prettier';
|
||||
import {fileURLToPath} from 'url';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = path.dirname(__filename);
|
||||
|
||||
const loadedFiles = loadFilesSync(`${__dirname}/*.graphql`);
|
||||
const typeDefs = mergeTypeDefs(loadedFiles);
|
||||
const printedTypeDefs = print(typeDefs);
|
||||
const prettyTypeDefs = await prettier.format(printedTypeDefs, {
|
||||
parser: 'graphql',
|
||||
});
|
||||
fs.writeFileSync('schema.graphql', prettyTypeDefs);
|
143
demo/frontend/schemas/video-api-schema.graphql
Normal file
143
demo/frontend/schemas/video-api-schema.graphql
Normal file
@@ -0,0 +1,143 @@
|
||||
# Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
"""
|
||||
The `ID` scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as `"4"`) or integer (such as `4`) input value will be accepted as an ID.
|
||||
"""
|
||||
scalar GlobalID
|
||||
@specifiedBy(url: "https://relay.dev/graphql/objectidentification.htm")
|
||||
|
||||
type Mutation {
|
||||
createDeletionId: String!
|
||||
acceptTos: Boolean!
|
||||
acceptTermsOfService: String!
|
||||
uploadVideo(
|
||||
file: Upload!
|
||||
startTimeSec: Float = null
|
||||
durationTimeSec: Float = null
|
||||
): Video!
|
||||
uploadSharedVideo(file: Upload!): SharedVideo!
|
||||
uploadAnnotations(file: Upload!): Boolean!
|
||||
}
|
||||
|
||||
"""
|
||||
An object with a Globally Unique ID
|
||||
"""
|
||||
interface Node {
|
||||
"""
|
||||
The Globally Unique ID of this object
|
||||
"""
|
||||
id: GlobalID!
|
||||
}
|
||||
|
||||
"""
|
||||
Information to aid in pagination.
|
||||
"""
|
||||
type PageInfo {
|
||||
"""
|
||||
When paginating forwards, are there more items?
|
||||
"""
|
||||
hasNextPage: Boolean!
|
||||
|
||||
"""
|
||||
When paginating backwards, are there more items?
|
||||
"""
|
||||
hasPreviousPage: Boolean!
|
||||
|
||||
"""
|
||||
When paginating backwards, the cursor to continue.
|
||||
"""
|
||||
startCursor: String
|
||||
|
||||
"""
|
||||
When paginating forwards, the cursor to continue.
|
||||
"""
|
||||
endCursor: String
|
||||
}
|
||||
|
||||
type Query {
|
||||
defaultVideo: Video!
|
||||
videos(
|
||||
"""
|
||||
Returns the items in the list that come before the specified cursor.
|
||||
"""
|
||||
before: String = null
|
||||
|
||||
"""
|
||||
Returns the items in the list that come after the specified cursor.
|
||||
"""
|
||||
after: String = null
|
||||
|
||||
"""
|
||||
Returns the first n items from the list.
|
||||
"""
|
||||
first: Int = null
|
||||
|
||||
"""
|
||||
Returns the items in the list that come after the specified cursor.
|
||||
"""
|
||||
last: Int = null
|
||||
): VideoConnection!
|
||||
sharedVideo(path: String!): SharedVideo!
|
||||
}
|
||||
|
||||
type SharedVideo {
|
||||
path: String!
|
||||
url: String!
|
||||
}
|
||||
|
||||
scalar Upload
|
||||
|
||||
type Video implements Node {
|
||||
"""
|
||||
The Globally Unique ID of this object
|
||||
"""
|
||||
id: GlobalID!
|
||||
path: String!
|
||||
posterPath: String
|
||||
width: Int!
|
||||
height: Int!
|
||||
url: String!
|
||||
posterUrl: String!
|
||||
}
|
||||
|
||||
"""
|
||||
A connection to a list of items.
|
||||
"""
|
||||
type VideoConnection {
|
||||
"""
|
||||
Pagination data for this connection
|
||||
"""
|
||||
pageInfo: PageInfo!
|
||||
|
||||
"""
|
||||
Contains the nodes in this connection
|
||||
"""
|
||||
edges: [VideoEdge!]!
|
||||
}
|
||||
|
||||
"""
|
||||
An edge in a connection.
|
||||
"""
|
||||
type VideoEdge {
|
||||
"""
|
||||
A cursor for use in pagination
|
||||
"""
|
||||
cursor: String!
|
||||
|
||||
"""
|
||||
The item at the end of the edge
|
||||
"""
|
||||
node: Video!
|
||||
}
|
Reference in New Issue
Block a user